Найти тему

Английский в программировании, обязательно или нет.

Зри в корень © Козьма Прутков

Незнание правил легко замещается знанием принципов.

В период несколькодневного вынужденного безделья, чтобы хоть как-то занять себя, размышлял на различные темы, и решил поделиться мыслями на одну из них. Касается она использования языка в языках (тавтология) программирования, или, если более точно, то следует ли припрограммировании использовать только латинский набор текстовых символов.

Заявление о том, что в программировании обязательно нужно применять только латинский шрифт — это фикция, не более. Использование латиницы в программировании является всего лишь традицией. ТРАДИЦИЯ. Всё. Точка.

Вообще, на мой характер, можно было ограничиться этим заявлением, сказать «живите с этим», отправить всех несогласных куда подальше и продолжать заниматься своими делами. Но выше я сказал, что временно являюсь бездельником, мне хочется себя как-то занять, да и самое главное — до сих пор я ещё не видел ещё ни одного апологета латиницы в программировании, который можетвнятно объяснитьпочему женужно следовать их утверждению. В отличии от них, я могу привести аргументы.

Любое утверждение нужно обосновывать, иначе оно ничтожно.

Итак, обоснования - «их есть у меня».

Начну издалека, немного истории.Электронные вычислительные системы (ЭВС). Если не углубляться до механических арифмометров и счётных палочек, то первые ЭВС можно считать прародителями современных компьютеров, поскольку ключевое слово здесь — электронные. В начале своего рождения ЭВС использовались для сугубо специфических целей, научных, проектных или других специальных задач, но постепенно всё больше и больше эти системы стали находить прикладное применение, и постепенно увеличивались их вычислительные мощности.Вследствие чего мы теперь имеем персональные компьютеры, мобильные телефоны, не уступающие по своей вычислительной мощности компьютерам, игровые приставки и многое другое. И все эти устройства имеют в основе своей так называемый процессор — основное устройство современных ЭВС.

(Далее, для простоты, семейство современных ЭВС я буду называть «компьютер»)

По сути, процессор это и есть компьютер, а всё остальное (ОЗУ, ПЗУ, клавиатура, монитор, мышь, видеокарта и т. д.) - это периферия, обеспечивающая нам (людям) взаимодействие с процессором.

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

Команды процессору можно подать только одним способом — электрическими сигналами, и процессор может «понимать» только две команды: есть электричество и нет электричества.

Всё, только две команды: «ДА» и «НЕТ», логическая единица и логический ноль. В программировании эти команды называют битами, которые, в свою очередь могут складываться в полубайты и байты, а байты могут складываться в «слова» и т. д.

Итак, основным тезисом вышесказанного является то, что всё «общение» с процессором происходит на уровне наличия или отсутствия электричества на процессоре (на одном или нескольких входах процессора).

Эти команды или инструкции можно подавать на процессор последовательно, в течении компактного отрезка времени, это будет программа для процессора, набор команд, которые процессор будет выполнять последовательно, одну за другой.

На заре развития ЭВС команды процессору подавались практически вручную, с некоторой долей автоматизации в виде применения электромеханических реле.

Постепенно, с ростом скорости работы процессоров, возникла необходимость записывать команды для хранения и возможности более быстрой их подачи на процессор, так появились перфокарты и перфоленты. Скорость работы несколько выросла, но суть работы не изменилась: оптическая информация (отверстия в бумажном листе или ленте) преобразовывалась в электрические сигналы. Есть отверстие или нет отверстия = есть электрический сигнал или нет электрического сигнала. Набор (написание) этих наборов команд тоже происходит чуть ли не вручную.

Прогресс не стоит на месте, скорость работы процессоров растёт, появляются устройства хранения команд на магнитных носителях, наборы команд (программы) для процессора растут в размерах, написание программ для процессора в виде команд «1» и «0» становится трудоёмким и утомительным занятием. Для облегчения работы программиста был создан ассемблер — язык программирования низкого уровня.

Здесь стоит, наверное, пояснить, что словосочетание «низкого уровня» не говорит о слабости или маленьких возможностях этого языка программирования. «Низкий уровень» означает, что команды из интерпретатора языка передаются напрямую на процессор, без посредников. Программисты говорят, что ЯНУ напрямую «общается с железом». Следовательно, у языка низкого уровня выше скорость работы, и, как следствие, больше возможностей, но ЯНУ требует значительно больше времени для создания программы.

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

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

Это же касается и языков программирования высокого уровня (ЯВУ), исторически так сложилось, что большинство из них придумано в англоязычных странах, и снова вполне логично, что все команды языка, операторы и прочее создатели (группа создателей) придумывали на своём родном языке.

Но, НО. Процессор всё также не может работать с английским или любым другим языком, он продолжает «понимать» только «язык» электрических сигналов.

И интерпретаторы всех языков сводят в конечном итоге программу, написанную на любом языке, в набор инструкций, по которым напряжение на входах процессора появляется или исчезает.

Да, на заре появления языков программирования все интерпретаторы любые символы, которые отличались от латиницы и некоторых разрешённых, воспринимали как ошибку в написании мнемокода или команды, но это обусловлено лишь техническими возможностями того времени и условиями появления ЯНУ или ЯВУ.

В наше время объёмы информации, скорость её передачи и обработки возросли многократно, что сняло многие ограничения в использовании компьютерной техники, появились языки программирования и различные среды разработки, в которых возможно использование не только английский язык, но и рускийи любой другой. Применяемый человеческий язык теперь не является каким-то обязательным и необходимым условием, ведь написанное вами всё равно будет переведено в электрические сигналы.

Итак, я повторю сказанное в начале. Использование латинского шрифта при программировании — это всего лишь традиция.

В конце хочу поделиться своими мыслями по поводу ярых сторонников «латинизации» программирования.

Я бы поделил их на несколько категорий:

  1. Привычка. Человек привык работать с латиницей и ему так удобно, не более того.
  2. Понты. Мол смотрите, все истинные программеры пишут на английском и я один из них, настоящих программистов.
  3. Глупость. На уровне рефлексов выучил, что Let пишут перед присвоением, но слабо понимает, что это такое и сразу теряется если написание отличается от привычного ему. Выучил правило без понимания принципов.
  4. Костность мышления. Типаж из п. 1, но не желающий или неспособный принять то, что современные возможности значительно шире, чем те, которые были в начале становления программирования как явления.

Резюмируя, я сошлюсь на высказывание, которое привёл в самом начале: «Незнание правил легко замещается знанием принципов». Понимайте принципы и программируйте на любом языке.

p. s. Бывает так, что команда разработчиков договаривается писать на одном языке, например, английском, чтобы потом легче было стыковать фрагменты кода, созданные разными людьми. Но это вопрос удобства, а не принципа.

p. p. s. Нашёл как-то в этих ваших интернетах урок одного «учителя» по разработке игр в одной из сред. Этот движок позволяет писать на английском и на русском языках. Данный «гуру» заявил: «Пишите на английском, потому что если вы будете делать программы на русском, то вас будут ругать за это...».

Тут, как говорится, без комментариев. Занавес.