Языки программирования: что это такое, зачем нужны и какой выбрать новичку
Разбираемся, как устроены языки программирования, почему их так много и чем они отличаются от алгоритмов.


vlada_maestro / shutterstock
Что такое язык программирования
Язык программирования — это набор формальных правил, по которым пишут программы. Обычный язык нужен для общения людей, а язык программирования — для общения с компьютером. Как и в любом естественном языке, тут есть лексика — слова, функции и операторы, из которых по правилам синтаксиса составляются выражения. Они имеют чёткий, вполне определённый смысл, понятный компьютеру, — семантику.
Вот, например, программа на языке JavaScript:
<script>
alert( 'Это программа на JavaScript' );
</script>
Здесь слово alert — лексика, один из принятых в языке методов обработки текста. Текст в одинарных кавычках, скобки, точка с запятой — правила синтаксиса. А то, что нужно сделать в итоге, — семантика. Получив эти инструкции, компьютер выведет на экран всплывающее окно с кнопкой и сообщением: «Это программа на JavaScript».

Чем языки программирования отличаются от алгоритмов
Программы нужны для того, чтобы машина сделала что-то полезное. Это невозможно, если нет чёткого порядка действий и правил их выполнения — алгоритма.
Алгоритм работает как маршрут в навигаторе: «Из пункта А едем в пункт Б, поворот через 150 метров». Англичанин понимает его по-английски, китаец —
по-китайски, а мы с вами — по-русски. Языки разные, а порядок действий один и все должны добраться до нужного места.
Любая программа начинается с алгоритма, но на разных языках это может выглядеть по-разному. Например, вот эта — на языке С — проверяет, чтобы делитель не был нулём, а затем делит одно число на другое. Или пишет, что так делать нельзя.
if (b != 0) {
printf (("a / b = %lg\n"), a / b);
}
else {
printf ("На ноль делить нельзя");
}
То же самое, но на Python.
if b != 0:
print(‘a / b = ’ + a / b)
else:
print(‘На ноль делить нельзя’)
В программе на Python нет фигурных скобок и точек с запятой, но алгоритм и результат работы такой же, как у программы на C, да и слова похожи.
Перейти с одного языка программирования на другой легко: если знаешь Java — быстро начнёшь кодить, например, на Python или C#.
Как компьютер понимает разные языки программирования
На самом деле язык программирования — это не язык компьютера. Машина понимает последовательности нулей и единичек: есть напряжение в цепи — единица, нет — ноль. Поэтому любую программу сначала надо перевести в набор таких машинных команд.
Для этого есть два инструмента — компилятор и интерпретатор. Компилятор работает как бюро переводов: вы отдаёте ему весь текст программы, а он превращает его в исполняемый код, набор команд для процессора. Интерпретатор больше похож на переводчика-синхрониста: сказали фразу — синхронист тут же её перевёл, а компьютер выполнил.
Внутри компиляторов и интерпретаторов — сложные наборы правил по превращению языка программирования в машинный код, понятный компьютеру. Это тоже программы. Их пишут создатели нового языка — на каком-то другом, уже существующем. Например, интерпретатор Python написан на C, а сам C — на ассемблере, практически машинном коде.
Что такое библиотеки
Библиотеки — наборы функций, готовых шаблонов, написанных на каком-то из языков программирования. Это удобно и похоже на книги в обычной библиотеке: на них можно ссылаться внутри программ и сразу получать результат без необходимости каждый раз писать много кода.
Например, в Python есть модуль — библиотека yandex_translate, которая переводит тексты на разные языки. Программистам не надо создавать программу-переводчик с нуля, достаточно подключить этот модуль и обратиться к нему из любой точки кода.
# подключаем модуль
from yandex_translate import YandexTranslate
# вводим ключ из настроек Яндекс.Переводчика
YANDEX_API_KEY = ‘Ваш API KEI'
try:
# проверяем, что ключ правильный
translate_obj = YandexTranslate(YANDEX_API_KEY)
# вызываем модуль, и он переводит текст из string на нужный язык.
t = translator_class.translate(string, 'en-ru')
Зачем нужны новые языки, если есть много старых
Существует уже несколько тысяч языков программирования, но всё равно продолжают создавать новые. Обычно это делается для решения каких-то конкретных задач, но иногда и для одного-единственного станка с ЧПУ или нового устройства. Так происходит, когда имеющийся язык почему-то стало неудобно использовать.
Так появился, например, гибкий и мощный язык программирования С, который сейчас используют повсеместно. По одной из легенд — языку уже около 50 лет, — программисты из AT& T Керниган и Ритчи захотели перенести любимую игру с главного сервера компании на офисный компьютер. Но там не было операционной системы, а переписать имеющуюся показалось слишком сложно, потому что она была полностью на ассемблере. Тогда они решили создать свой язык программирования, который назвали C (си).
Сколько живут языки программирования
Языки живут, пока люди пользуются написанными на них программами. Поэтому старички, такие как COBOL, Ada или Fortran, всё ещё в деле.
На языках Ada и Fortran написана часть кода операционных систем семейства Unix, а для COBOL, похоже, вовсе наступил ренессанс: из-за кризиса, связанного с пандемией, приходится вносить изменения в старые бизнес-системы и программы для службы соцобеспечения, которые написаны именно на нём. Кроме того, по данным Reuters, 43% банковских систем и 95% банкоматов США так или иначе используют COBOL. Так что Америка ищет программистов-ветеранов.
А вот Алголу повезло меньше. Он практически мёртв, хотя и был когда-то не менее популярен, чем COBOL.
Что лучше учить новичку
Если интересуют красивые эффекты для веба — попробуйте начать с простейшего набора из JavaScript, CSS и HTML. Со временем подтянете PHP и сможете создавать на нём полноценные сайты. Если же вам интереснее программы, сервисы и скрипты — посмотрите в сторону Python, Java или С#. Для новичка может быть сложновато, зато это мощные универсальные языки, которые подходят практически для любых задач. Под мобильную разработку учите Swift для iOS и Java/Kotlin для Android. Но с ними придется попотеть и лучше, чтобы был хоть какой-то опыт в программировании.