От машинного кода до высокоуровневых инструментов общения с компьютерами. Менее чем за век существования языки программирования прошли колоссальный путь эволюции, и темпы их развития только нарастают. Каковы основные этапы? И что ожидать в будущем? Об этом рассказал и. о. заведующего кафедрой программной инженерии ПГУТИ Игорь Макаров.
С чего всё началось
"Языки программирования создали, чтобы научиться общаться с машиной и заставлять ее выполнять необходимые команды", — объясняет эксперт.
Начался процесс в 1940-х годах с появления машинного кода. Его применяли для первых электронных и электромеханических вычислительных машин, используемых для научных и инженерных расчетов:
"Машинный код — самый низкоуровневый язык. Это последовательность нулей и единиц (битов), которую процессор исполняет напрямую. Но его использование требует больших мыслительных усилий со стороны человека. Поэтому возник запрос на упрощение".
Знаковым событием в стремлении удовлетворить этот запрос стало появление в конце 1940-х годов ассемблера. Он служит "переводчиком" между понятным человеку текстом и машинным кодом. Команды записывают не как нули и единицы, а в виде мнемоник (коротких понятных обозначений) и регистров (быстрых ячеек памяти процессора):
"Ассемблер — штука суровая и сложная. Но его изучение дает понимание архитектуры компьютера на низком уровне: что происходит внутри процессора, как функционируют регистры и так далее. То есть мы взаимодействуем с компьютером на уровне аппаратной части".
Самые влиятельные языки
Однако ассемблер не закрыл потребность в упрощении и ускорении работы с машинами. Поэтому начали появляться высокоуровневые языки — те, что более приближены к человеческому. В зависимости от задач и по мере развития техники, интернета, мобильных устройств специалисты создавали все новые и новые виды. По мнению Игоря Макарова, одним из важнейших для развития программирования стал BASIC:
"Моя история начиналась именно с него. Мы изучали BASIC в школе, и я до сих пор считаю, что если человек хочет научиться мыслить программистски и общаться с машиной, нужно начинать именно с этого языка. Он прост для понимания, есть привязка к сетке монитора, простым функциям. От него легко протоптать дорожку и к ассемблеру вниз, и к чему-нибудь более высокоуровневому. BASIC дает чувствование машины".
В области системного программирования наибольшее влияние оказал язык C, созданный в 70-х годах прошлого века для написания ОС UNIX. Он сочетал в себе высокую производительность и простоту кода (по сравнению с ассемблером):
"С хорош тем, что у него есть выход на низкий уровень: работу со стеками, функциями. Он считается универсальным языком, существенно повлиявшим на создание С++ и С#, а также на Java, Go, PHP и другие. Порог вхождения у С высокий, как и у С++, а вот на С# уже можно за 5 минут собрать рабочее приложение. На С и его прямых потомках много что написано — тот же Windows".
Продолжает расти популярность Python. Он был создан еще в 1990-х годах, но со временем оброс огромным количеством библиотек, где можно найти решения для различных областей. При этом его легко изучить — синтаксис похож на обычный текст:
"У Python такое большое комьюнити и столько библиотек, что если необходимо отправить ракету на Марс, то скорее всего, вы там найдете нужный алгоритм. С его помощью делают и игры, и роботов, и научные расчеты, и анализ больших данных, и нейросети. Уровень владения оценивается именно по количеству изученных библиотек".
В приоритете — скорость
Игорь Макаров отмечает, что развитие языков программирования обусловлено коммерческой составляющей индустрии. Важнейшим фактором является скорость выполнения задач бизнеса:
"Поэтому на передний план выходят языки программирования, которые позволяют вести разработку быстро, на верхнем уровне. Сейчас в выполнении этой задачи помогает искусственный интеллект. Он хорошо умеет писать шаблонные коды, избавляя программистов от рутины. Сам ИИ создавать новые языки не может. Он лишь повторяет то, что в него заложили".
Впрочем, для использования ИИ требуются языки для описания цепочек рассуждений, формирования промптов. Остается запрос на безопасное системное программирование, ускорение вычислений, в том числе квантовых, и работы с большими данными:
"Продолжит развиваться лоу-код, позволяющий писать программы на уровне языка, очень похожем на человеческий. Возможно, он объединится с ИИ, и ты просто будешь говорить, что нужно, а он сформирует готовую программу. Ведь теперь машины участся понимать язык человека. Конечно, это не убьет классическое программирование, потому что ИИ тоже надо кому-то писать, но изменит рынок, запустив туда специалистов, не связанных с классическим программированием".
В цене — полиглоты
Эксперт ПГУТИ констатирует, что роль разработчика на рынке уже меняется. Сейчас важнее понимать архитектуру данных, а уже на каком языке ты будешь ее реализовывать — второй вопрос. Поэтому в цене — инженерное мышление.
В то же время имеет место тренд на полиглотность. По мнению Игоря Макарова, на его появление повлиял человеческий фактор. По мере развития индустрии разработчики осваивают всё новые и новые языки, опасаясь, что их знания устаревают, и они будут не нужны рынку. Однако такая полиглотность стала востребована в больших проектах.
"Появилось такое понятие, как Fullstack-разработчик, который знает все группы языков, необходимых для выполнения поставленной задачи. Они высоко ценятся. В целом же для рынка нормально, если программист знает 2-4 языка. Однако нужно понимать, что в плане образования уже нет универсальных программ подготовки. Студентов обучают языкам по направлениям, базе, и чтобы не терять время, лучше в параллели изучать и другие языки программирования", — советует эксперт.
Материал подготовлен при поддержке гранта Минобрнауки России в рамках Десятилетия науки и технологий.