Зачем нам знать, что такое программное обеспечение?
Всем привет, меня зовут Максим, эта статья попытка объяснить, что такое программирование и программное обеспечение простыми словами.
Для большинства людей процесс разработки программного обеспечения непонятен, неизвестен, и честно говоря, неинтересен — главное, чтобы программа работала.
Под программным обеспечением (ПО, программы, приложения, софт) в данной статье подразумевается ПО, имеющие пользовательский интерфейс.
Насколько важны и нужны для нас программы?
Давайте для начала посчитаем сколько программ мы используем в течение дня!
Утром мы просыпаемся - от (1) будильника на смартфоне.
Смартфон вообще “ящик пандоры” с программами (приложениями): запишем минимум: (2) операционная система (Android, IOS), (3) магазин приложений, (4) веб-браузер, (5) соцсеть, (6) мессенджер, (7) камера, (8) голосовой помощник (Google, Siri, Алиса), (9) файловый менеджер, (10) приложение для видеоконференций.
Даже контакты, звонки, сообщения, клавиатура, калькулятор — это отдельные программы!!!
Каждая иконка — это программа, а зачастую и не одна, ведь чтобы работала ваша программа кто-то работает по ту сторону с другими программами.
Завтракаем в тишине и спокойствии, — ладно включим что-нибудь для фона, если у вас не радиоточка, то телевизор, они в основном (11) смарт ТВ — т.е. тоже с программами.
Внимание: статья написана в апреле-мае 2020 в Беларуси, где не было карантина и можно свободно передвигаться — наконец то, мы самая свободная страна Европы!
Перед тем одеться проверим (12) прогноз погоды (в смартфоне точный прогноз расписан по часам и конкретно для нашего местоположения) — пора бы уже прекращать показывать прогнозы по телевизору.
Если едем на работу на машине включаем (13) навигатор и (14) любимую музыку или подкаст, книгу.
Если на общественном транспорте — (14) музыка, (15) игры, (16) видео, вебсерфинг – а ведь каждый сайт в интернете — это тоже отдельная программа. Что мы смотрим в интернете? — пару новостных сайтов (17-20).
Если сидим/работаем дома - тот же обряд утреннего пробуждения, только навигатор не нужен.
На работе у нас есть компьютер, а в нем: (21) операционная система (Windows, MacOS), (22) интернет браузер, (23) мессенджер, (24) ПО веб конференции, (25-27) пакет офисных программ (текст, таблицы, презентации), (28-30) профессиональные программы (мало кто работает в одной).
Что делаем после работы? — ведем здоровую и интересную жизнь, без гаджетов! А в этом нам помогают приложения — кто-нибудь бегает без смартфона?
(31) Спорт, (32) обучение, (34) хобби, (35) увлечения — для всего есть приложения и сайты.
А для этого у нас еще есть фитнес-браслеты и смарт-часы и на них есть своя (36) операционная система и могут быть свои приложения.
У вас есть дети? — для них тоже есть приложения, программы и сайты — (37) развитие, (38) обучение, (39) развлечения.
Книга перед сном? — (40) электронная.
Мы с вами посчитали только программы с интерфейсами, а сколько еще системных программ, программ в оборудовании.
Вывод — разнообразие используемых программ в жизни человека превышает другие продукты!!! Мы едим куда меньше продуктов и используем куда меньше вещей, приборов, чем используем программ.
Хотел написать почему важно понимать как вообще устроен мир и объекты, которые нас окружают. Что-то типа того, что булочки не растут на деревьях, но понял, что в целом это нормально не знать — как сделать булочку, холодильник, смартфон, построить дом.
Все-таки, в эпоху урбанизации, если вы знаете, как добывают полезные ископаемые, производятся сельскохозяйственные работы, функционирует производство, проводят строительство — вы эрудированный человек, даже если вы это смотрели на National Geographic.
Ведь на самом деле мало кому нужны все эти подробные знания о том, как это устроено, в эпоху информационной перегрузки. Польза от таких знаний нужна только героям Таинственного острова и Марсианина, это факт.
Что-такое программное обеспечение?
Если по сложному — программное обеспечение — это программа или множество программ, используемых для управления компьютером, такое определение дано в Википедии, а оно взято из международного стандарта ISO.
Если совсем по-простому, то программное обеспечение — это инструкция, в которой написано, что делать компьютеру (смартфону, иному оборудованию). Эта инструкция называется программным кодом. Программный код бывает исходный и исполняемый.
Исходный код — это код, который пишет программист на каком-нибудь языке программирования — Java, Python, С, PHP и др., это так называемые высокоуровневые языки программирования, которые близки к натуральным языкам (английский и др.).
Исполняемый код — это код который, понимает виртуальная машина, контроллер, процессор и т.п., обычно появляется в результате преобразования исходного кода.
По мере преобразования (компиляции и интерпретации) исходный код преобразуется сначала в объектный код, байт-код, машинный код, микрокод.
Когда нибудь я напишу по этому вопросу подробнее, — но это не точно.
В инструкции для компьютера (программном коде) требуется написать все — что можно сделать с программой, какие варианты возможны, потому что программа исполнит только то, что написано в программе, не больше.
В инструкции для людей можно не писать многие вещи, особенно отклонения и исключения, описывают только основной процесс, если произойдет какое-нибудь отклонение, человек сам поймет, что это отклонение и сам вернется назад к требуемому процессу.
Программа, а следовательно компьютер или смартфон не смогут сами этого сделать - так появляются баги, - мы делаем с программой, то что мы можем, а она не может.
Чтобы понять разницу между инструкцией человеку и инструкцией для компьютера давайте рассмотрим одну задачу — сделать медицинскую маску.
Одну инструкцию напишем для человека, а другую для 3D принтера.
Инструкция для человека
Шаг 1. Найти видео-инструкцию как сделать маску.
Шаг 2. Посмотреть видео как сделать маску.
Шаг 3. Найти подходящие материалы или их аналоги.
Шаг 4. Сделать маску.
4 строки и 99% людей смогут сделать маску по этой инструкциию
Например, здесь несколько инструкций от 2 до 10 шагов
Инструкция для 3D принтера
Это файл в формате x3d, который содержит описание трехмерное описание маски, в данном случае в XML. XML это язык разметки, применяемый для передачи различных данных в виде файла. XML как язык примечателен тем, что считается и человеко-читаемым и машино-читаемым.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' profile='Full' version='3.0' xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.0.xsd'>
<Scene>
<NavigationInfo avatarSize='0.25 1.75 0.75' type='"EXAMINE" "ANY"'/>
<Background DEF='WO_World' groundColor='1 1 1' skyColor='1 1 1'/>
<Transform DEF='_16215-0_TRANSFORM' rotation='0 0.707107 0.707107 3.14159'>
<Transform DEF='_16215-0_ifs_TRANSFORM'>
<Group DEF='group_ME_16215-0'>
<Shape>
<Appearance>
<Material DEF='MA_NIH_blue2' ambientIntensity='0.333' diffuseColor='0.2 0.38 0.6' shininess='0.098' specularColor='0.401 0.401 0.401'/>
</Appearance>
<IndexedFaceSet coordIndex='
0 1 2 -1 3 4 5 -1 6 7 8 -1 8 7 9 -1 10 11
...
Здесь пропущено 12 000 строк кода
...
27.7798 -18.6887 31.3858 31.06 -18.6887 31.3858 27.7798'/>
</IndexedFaceSet>
</Shape>
</Group>
</Transform>
</Transform>
<Transform DEF='Camera_TRANSFORM' rotation='-0.098233 -0.968789 -0.227591 2.34949' translation='-151.698 109.585 -144.697'/>
<Viewpoint DEF='AOPT_CAM' centerOfRotation='0.163052 0.0671387 2.98624' position='0.163052 0.0671387 194.108'/>
</Scene>
</X3D>
Итого более 12 000 !!!!!!!!! строк.
Инструкции для компьютера должны быть очень-очень подробные, в этом и есть сложность программ и программирования. После этого сравнения, возможно кто-нибудь захочет сравнить программистов с писателями. Можно, но ненужно — программирование, это самостоятельная сфера, которая не похожа ни на одну другую, давайте это поймем, примем и запомним, пожалуйста.
Давайте подведем итоги.
1. Программное обеспечение - это самый популярные и используемые продукты (товары) в нашей жизни и их будет становиться все больше и больше.
2. Программное обеспечение (ПО, программа, приложение, софт) - это очень подробная инструкция, которая описывает все варианты поведения программного обеспечения.
3. Программирование - это самостоятельная сфера, которая не похожа ни на одну другую!
P.S. Это статья попытка объяснить про программирование “сверху-вниз” от пользователя, если вы хотите разобраться в программировании с целью “Войти в IT”, то вам нужен другой подход “снизу-вверх” от информатики к программам и системам, например — Гарвардский курс “CS50. Основы программирования”.
P.S. С 25 по 27 минуты про основы программирования рассказывают Билл Гейтс и Марк Цукерберг.
Про туалетную бумагу лучше расскажи. Доступно-простыми словами.
А где ответ на вопрос в заголовке?
Радиотехника, например.
А как обстоит дело с электричеством?