August 26, 2020

Что такое язык программирования и зачем он нужен?

Простая аналогия. Компьютер — это как тело человека. У тела есть органы, без которых человек и не человек вовсе. Точно также у компьютера есть органы, которые и делают его компьютером. Это не просто коробка под столом, точно также как человек — это не просто внешняя оболочка из кожи и костей.

"Органы" компьютера:

  • процессор (мозг, если угодно)
  • материнская плата (нервная система)
  • оперативная память (то, что мы держим в памяти прямо сейчас)
  • жесткий диск / ssd (то, что мы держим в глубинах нашего сознания)
  • видеопамять (то, что мы обрабатываем глазами)
  • звуковая карта (то, что мы обрабатываем ушами)
  • и так далее

Все эти компьютерные органы установлены на материнской плате — она словно нервная система, которая проникает во все органы нашего тела и обеспечивает их "общение" друг с другом. Также и в компьютере — материнская плата обеспечивает “общение” разных частей компьютера между собой. Она представляет собой большую бандуру, на которую крепится процессор, видеокарты, жесткий диск, оперативная память и все остальное.

Материнская плата вполне осязаема, ее можно потрогать, можно собрать или разобрать. Но как "органы" платы между собой взаимодействуют? Физически мы этого не видим — потому что это происходит посредством электрических импульсов, которые нельзя увидеть человеческому глазу. Но вы можете легко увидеть результат этого взаимодействия. Простой пример: попробуйте нажать на выключатель, который находится вблизи вас. Вы сразу увидите результат — загорелась лампочка, включился прибор. Это происходит почти мгновенно, потому что электрический импульс обладает скоростью, сопоставимой со скоростью света (300 тысяч километров в секунду!). К примеру, если представить, что Москву и Сидней (Австралия) соединяет прямой провод (15000 км), то если мы на одном конце этого провода нажмем выключатель (например в Москве), то на другом конце провода (в Сиднее) свет зажжется через t = S / V = 15000 / 300 000 = 0,05 секунды, то есть через 50 миллисекунд. Для сравнения, это сопоставимо с одним морганием человеческого глаза. То есть вы буквально моргнуть не успеете, как свет зажжется в Сиднее.

А теперь представьте, что на материнской плате таких импульсов в момент происходит сотни тысяч — между разными компонентами компьютера. С помощью этих импульсов может быть закодирована информация. Но как? Очень просто — двоичным кодом. Как в азбуке морзе — точка, тире — так и здесь, присутствием-отсутствием импульса можно кодировать последовательности, состоящие из 0 и 1 (0 — нет сигнала, 1 — есть сигнал). Таким двоичным алфавитом можно закодировать все что угодно. Слова в этом алфавите тоже будут двоичными. Этот двоичный язык является самым базовым языком программирования, и безусловно самым сложным для восприятия и реализации. Чтобы написать инструкции или программы на двоичном языке потребуется очень много сил и времени, поэтому с тех пор как в 1940-х появились компьютеры, программисты начали создавать более "дружелюбные" (по отношению к программисту) языки, которые соотносились бы с этим исходным двоичным языком, но помогли бы при этом значительно увеличить скорость программирования. Один из первых таких языков — ассемблер — был придуман 70 лет назад. Сейчас мы называем его низкоуровневым языком, потому что программировать на нем крайне неудобно. Но в те времена (70 лет назад) он считался очень даже удобным. Около 50 лет назад появился язык Си — на нем и на его современной объектно-ориентированной версии C++ программируют сейчас операционные системы и различные высоконагруженные сервисы. Почти 30 лет назад появился Питон, на котором сейчас могут программировать даже дети. Таким образом, с годами языки программирования становились доступнее не только для программистов, но и для людей не связанных с программированием. А сфера применения языков программирования стала расширяться.

Язык программирования, по аналогии с человеком, это не язык коммуникации между людьми, а "язык", на котором наш мозг передает через нервную систему команды нашим тканям и органам. Только в нашем организме роль условного программиста выполняет не какой-то человек или господь Бог, а генетический и эпигенетический коды, вместе с многоликой внутриклеточной машинерией и различными химическими элементами.

Итак, мы немного разобрались с понятием языка программирования и поняли, для чего он в конечном счете вообще нужен. Понятно, что для нас с вами цель программирования состоит вовсе не в том чтобы заставить разные части компьютера обсчитать нашу задачу, выполнить нашу программу — это все уже с успехом делают программы операционной системы. Наша цель состоит в том, чтобы написать программу, которая решала бы какую-то насущную задачу. Собственно этим мы и будем с вами заниматься на мини-курсе по Питону — писать "программы", которые будут помогать нам решать разнообразные задачи.