Языки программирования - бесконечная тема. Ну, а для обывателей - так вообще тема для фантазий и диких выдумок. Сбацаем-ка мы небольшой ликбез для непрограммистов о программистах. Глядишь и станет яснее откуда корни современного интернета или на чем, помимо реактивных двигателей, летал советский аналог Шаттлов - Буран.
Здесь трём за всё, что связано с IT-сферой. И, да, у нас есть печеньки. Так что велком на темную сторону!
Вначале был машинный код
Гнусавым голосом Володарского. Первые ЭВМ программировали…
Шутим. Итак, компьютеры (ПК) или ЭВМ (электронные вычислительные машины) программировали при помощи машинного кода. То есть это набор команд на электронной схеме устройства.
Естественно, что у каждой ЭВМ был различный список команд. Однако были и базовые моменты:
- Арифметические операции;
- Побитовые операции;
- Обращение к ячейке памяти и т. п.
Программист в те далекие времена по меркам информатики ограничивался вот такими простейшими операциями.
Схема была простой, как инфузория туфелька: программа сразу передавалась напрямую на процессор. При этом проц “переваривал” только набор, массив чисел - обычно двоичных. Но в начале эволюции (как и везде во Вселенной) могли быть и ответвления. Например, семейство ЭВМ “Сетунь” там были другие системы счисления.
Но в машинном коде уже изначально было заложена ограниченность и невозможность дальнейшего развития. А ведь объемы данных для обработки, а вместе с ними и сложность задач росли не по дням, а по часам. Требовалось нечто новое. Да и специалистов явно не хватало, процесс обучения машинным кодам был долгим. А время- деньги.
Ничего не напоминает? Верно, если до изобретения печатного станка книги были уделом элиты и создавали их в буквальном смысле долго, муторно и вручную. То книгопечатание и сам принцип наборного шрифта совершил переворот. Также и тут!
Выход из тупика - ассемблер
Перечня команд для ЦП явно не хватало. Спецы часто переписывали друг у друга и сохраняли наиболее часто повторяющиеся действия, например, извлечение квадратного корня. Таких постоянных повторяшек становилось все больше и больше. Добавим двоичный код и нервный срыв тем спецам “каменного века” информатики был обеспечен.
Так как технари - люди системные и структурные, то они быстро накидали 2 своих главных болячки:
- Нужна унифицированная библиотека подпрограмм, но не простая, а с автоматической настройкой и размещением сразу в памяти машины;
- Мнемоник. Что? Мнемоник. Нет, это не фильм с К.Ривзом, это будет позже.
Что такое мнемоники? Вкратце - способ легче запомнить информацию. Во времена, когда армию набирали из крестьян, чтобы сынам полей и огородов было легче запомнить, где право, а где лево им привязывали сено и солому к сапогам. На правой ноге - сено, на левой- солома. Так и шагали.
Вот и мнемоники в программировании - это сено-солома цифрового мира. И первым вариантом стала замена двоичных кодов на буквенные обозначения. Так, 01 стала выглядеть как ADD. Еще было внедрение “переменной” вместо адреса или ячейки памяти.
Тогда-то и появился термин “ассемблер” - транслятор для перевода команд в двоичный код. Не путать языком программирования assembly language. В те дремучие времена ассемблеры были строго индивидуальными, и не подходили ко всем ЭВМ. Только к конкретной машине.
Высокий уровень - новый виток развития
Итак, развитие ассемблеров привело к тому, что с одной стороны процесс программирования упростился. Но с другой - их (ассемблеров) стало, как грибов нерезаных. Ведь моделей ЭВМ много, бум электроники. Все логично. Да не все!
В общем, прогресс потребовал появления высокоуровневых языков программирования. Ибо в карете ассемблера далеко не уедешь. Тут можно было бы убить сразу 2 зайцев (цифровых): писать программы для разных машин и повысить читаемость кода.
На помощь специалистам пришли компиляторы и интерпретаторы. Эти ребятки позволили начать создание программ на одном языке для разных марок ЭВМ. Но к компиляторам было недоверие. Как это так? Разве можно доверять ЭВМ, которая сама себе пишет программу? Да и где тут место человеку, вдруг он не поймет каракуль ЭВМ?
Голосом Володарского: И восстали машины из пепла ядерной зимы… Шутим!
Первые языки
Со скрипом, но в конце 50-х гг. ХХ века мир почтили своим присутствием:
- FORTRAN (от FORmula TRANslation) 1957 год — язык программирования, для сложных математических вычислений. Он оперировал: циклами, условными операторами, массивами, подпрограммами;
- LISP ( от LISt Processing Language) 1958 год - разработанный в MIT и изначально предназначавшийся для создания ИИ. Стал первым функциональным языком программирования. “Ветеран” еще в строю и сегодня!;
- ALGOL 58, 1958 год — «алгоритмический язык», послужил источником идей для создания языков - Pascal, C, C++ и т. п.
Первая проблема - Читабельность
Мало написать, мало быть работоспособным - это еще надо быстро прочитать. А с этим были проблемы. Программисты тех лет писали слабо (и это еще мягко сказано) и очень запутанные программы. Эдакие портянки с линейным текстом, без разбивки на блоки и многочисленными операторами безусловного перехода — GOTO.
Это назвали спагетти-кодом. А что, спагетти-вестерны же были!
Время - деньги. А тратить его по блужданию в лабиринтах из GOTO для профи было адски некомфортно. Поэтому энтузиасты выдвинули идею - А что если применять управляющие конструкции:
- Последовательность;
- Ветвление;
- Цикл.
А заодно (гулять, так гулять) разбить ВСЕ на подпрограммы и отказаться от GOTO. К счастью, цифровой инквизиции тогда не было.
В 1966 году итальянские математики, Коррадо Бём и Джузеппе Якопини, доказали теорему, что ЛЮБОЙ алгоритм (порядок действий) состоит из 3 структур - последовательность, ветвление, цикл.
Этим воспользовался программист Эдсгер Дейкстра, который в 1968 году написал знаменитую статью Go To Statement Considered Harmful («О вреде оператора goto»). И тренд получил одобрение большинства в сообществе.
Хотя еретики имеются до сих пор, например, Дональд Кнут. Этот консерватор до сих пор не согласен с тотальной отменой GOTO.
Продолжение следует…
Всем высоких скоростей и удачи!
Кстати, по поводу железа, ПО и прочих услуг. Если загляните на официальный сайт нашей компании, то найдете много чего интересного.
Друзья, в связи с нововведениями Дзена выживут лишь те каналы, где есть подписки. Если наш канал Вам интересен, мы попросим вас подписаться и порекомендовать его другим подписчикам! Спасибо за понимание!