tgoop.com/sysblok/1111
Last Update:
Языки программирования vs естественный язык: сходства и отличия
Почему Python, Java и даже C++ гораздо ближе к естественным языкам, чем принято считать? Чем языки программирования отличаются от машинного кода, который на самом деле исполняет процессор? Какие языки программирования особенно близки к человеку? Разбираемся с Борисом Ореховым, который написал об этом пост и записал видеоролик 🎞
Что происходит под капотом компьютера?
Компьютеры не думают на языках программирования. Все вычислительные операции происходят с помощью очень формализованных инструкций процессора, которые называются машинным кодом. Выглядит это, например, так:BB 11 01 B9 0D 00 B4 0E 8A
Эти коды заставляют процессор выполнять арифметические операции — взять число, прибавить к нему другое, умножить число и т.п. Обычный пользователь не знает или быстро забывает об этом: если на экране открыт мессенджер или текстовый редактор, мы считаем, что работаем с текстом, а не с числами. Но процессор в конечном счете всегда оперирует числами, даже когда вы смотрите видео с Борисом Ореховым на ютубе 🙂
Что же такое языки программирования?
Языки программирования придуманы, чтобы обобщать куски машинного кода в инструкции, которыми может оперировать человек. То есть сделаны людьми и для людей. В языках программирования, в отличие от машинного кода, есть слова — обычно из английского (run, do, for, in, while…), хотя и не всегда. И уже под этими — понятными человеку — словами скрываются (через множество дополнительных прослоек) наборы команд машинного кода.
Какие языки программирования особенно близки к человеческим?
Языков программирования много и они все разные. Например, некоторые называются языками низкого уровня, а некоторые — высокого. Это не значит, что одни для крестьян, а другие для аристократов. За этим стоит самовлюбленное представление человека о том, что он находится наверху пищевой цепи, а компьютер — внизу. Если язык в этой схеме ближе к компьютеру, ориентируется на схемы описания задачи по-компьютерному, требует детализации каждого шага — откуда взять число, как его сложить с другим числом, то такой язык внизу, низкого уровня. А если язык ориентирован на человека, не закапывается в мелочах, и человек с помощью этого языка может просто написать что-то вроде «сделай мне красиво, а как ты это сделаешь, меня не волнует», то язык этот — высокого уровня. Типичный пример — Python, о котором часто говорят, что с его помощью можно «программировать на английском», настолько он близок к естественному языку (но, конечно, только на фоне других языков программирования).
В чем сходства языков программирования с естественными?
В языках программирования тоже есть аналог слов, причем это не только имена переменных, это и операторы, и числа. Плюс, больше или равно — тоже слова. В языках обоих типов есть грамматика, правила соединения слов вместе. Языки программирования, как и естественные языки, нужны для коммуникации, в которой участвует человек.
А в чем отличия?
Естественные языки универсальны: на них можно высказываться о мире, описывать несуществующие вещи, создавать совершенно новые фантастические миры, говорить о психологии, религии, философии и т.п. Языки программирования гораздо более узкие и приземленные: все, что на них можно сказать, должно в итоге быть конвертируемо в команды машинного кода процессора, ведь они имеют конкретную цель — отдавать приказы компьютеру. Несмотря на это, отдельные люди пытаются применять языки программирования для литературного творчества, например, писали на них стихи.
Подробнее читайте в блоге Бориса Орехова или смотрите его видео