Языки программирования

Раздел находится в стадии вечной подготовки

Преамбула

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

Для сколь-нибудь конструктивного обсуждения темы следует сразу договориться о том, что каждый программист влюблен в свой основной язык. Да, он может работать (и, зачастую, вынужден) в пяти-шести средах, но его сердце отдано только одному. (Мое — двум, хотя постоянно приходится работать с четырьмя.) Наверное, в основе этого лежит определенное личное предпочтение, близость логического построения или привычка, первые навыки.

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

Но! Стоит задуматься о причинах возникновения множества языков. (Я не хочу пока высказываться. Скорее надо проводить на эту тему семинар, не менее, чем на 3–4 часа.)

Пока можно познакомится с точкой зрения на выбор языка программирования для ЕГЭ.

Перечень современных языков программирования

Для общего осознания сразу оговариваюсь. Список всегда будет неполон. Хотелось бы, чтобы здесь не было ни одного языка, на котором не пишутся реально распространяемые программы (типа Паскаля), но... Чуть позже языки будут разделены на встроенные в программы и самостоятельные. Извините, но обзорность материала не позволяет в принципе, при первом написании, снабдить текст достаточно полноценными гиперссылками.

  1. Машинный язык (в двоичном или шестнадцатеричном виде), реально обрабатываемый процессором, но чрезвычайно сложно воспринимаемый человеком.
  2. Assembler
  3. C, C++, C#
  4. Delphi
  5. Visual Basic
  6. Visual Basic for Applications (VBA)
  7. Java
  8. JavaScript, PHP, ASP, Perl
  9. Python
  10. Lisp
  11. Smalltalk
  12. Ada
  13. Фортран, Пролог, Паскаль, Модула, Лого, Алгол, Кобол, Форт
  14. ActionScript
  15. Microsoft Small Basic
  16. R. Изначально ориентирован на статистическую обработку данных с исходной примитивизацией интерфейса и типов данных. ОПО (GNU).
  17. Swift для программирования мобильных приложений для Apple
  18. Специализированные языки
    1. Языки реального времени (real time)
    2. СУБД, SQL, XBase
    3. «Встроенные» в оборудование
  19. ...

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

Классификация. Среда исполнения программы

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

Все языки делятся на:

  1. Машинные.
  2. Ассемблера.
  3. Высокого уровня.
  4. Объектно-ориентированные.

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

  1. Интерпретируемые.
  2. Транслируемые.
  3. Компилированные.

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

Наиболее эффективным вариантом является использование компилированного варианта, как правило являющегося исполнимым (exe или com) файлом.

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

В некоторых случаях используется псевдокомпиляция, когда по запросу пользователя или просто при сохранении исходного кода (на лету) создается дополнительный компилированный файл текущей подпрограммы. Таким образом реально хранятся два файла: один — для редактирования, другой — для выполнения.

....

Паскаль (Pascal)

Те, кто достаточно много обсуждал со мной эту тему на занятиях и вне, могут удивиться, почему я не написал «язык»? Просто счел это недостаточно корректным, хотя именно так можно выразить мое отношение к Паскалю. Потратить некоторое время на письменную аргументацию я решил в связи с тем, что сотни тысяч школьников в нашей стране тратят многие месяцы своей жизни на изучение этого барахла (ьез кавычек). Когда это жизненно необходимо, то отношение должно быть сознательным.

Откуда растут ноги? Датой создания языка можно считать 1970 г., а его последняя существенная модификация относится к концу 1980-х. Примерно в середине 2000-х промышленным языком стал Delphi, созданный на основе Pascal, но ушедший от него на десятилетия и уже категорически отличающийся от Pascal в синтаксисе, первичной причиной чего является объектная ориентированность.

Не вникая в исторические дебри использования языков программирования для ЭВМ в СССР, лишь замечу, что кто-то «очень одаренный» выбрал Паскаль в качестве основного учебного языка. Соответственно, за 1970–80-е годы было подготовлено целое поколение программистов, многие из которых впоследствии стали педагогами (без образования), а также большой объем методических и учебных материалов. Далее они учили новые поколения педагогов из категории «ничего не знаю» и порочный круг замкнулся.

При этом Basic (1964 г.) (от Beginner’s All-purpose Symbolic Instruction Code — универсальный [для любых целей] код символьных инструкций для начинающих) был почти проигнорирован и используется в образовании единично, имея тенденцию исключения из ЕГЭ. Хотя именно он лежит (реально, а не декларативно) в основе промышленного(!) языка Visual Basic.

Нет, не так, слишком мягко. Любой код, написанный в рамках любой версии Basic (хоть 40 лет назад), будет без проблем исполняться в среде Visual Basic.

Python

Этот язык стал вторым моим «любимчиком», с которым я столкнулся в 2012 году, крайне удивившись. Заявление было из области «это самый современный и распространенный язык в мире». Мне стало стыдно за упущенную важную область знаний, так как я даже не подозревал о его существовании.

И пошел я бороздить просторы Интернета. Через час наступило непонимание по причине крайней скудности объективного материала. Пафоса, действительно, хоть отбавляй, а по делу...

Через несколько дней накопления информации на свет вывалился тщательно скрываемый факт: данный язык является основной средой разработки любителей Linux. По всей вероятности, отсутствие парадигмы бесплатного компилятора его и породило. Все последующие данные это прекрасно подтверждали.

Следующим откровением стало то, что язык, позиционируемый в качестве промышленного, по определению является исключительно интерпретируемым (пределов дурости нет). И никаких концептуальных исключений нет! Только через всем известное место, например, интерпретацией в C, с последующей возможностью реальной компиляции.

Язык не имеет самого главного — IDE (Integrated Development Environment, интегрированная среда разработки). Работать в консольном режиме, то есть на уровне 1980-х годов — удовольствие даже не для любителей, комментировать не хочется. Бесплатность и качество оболочек каждый имеет право изучить самостоятельно. Либо ограничиться многочисленными аналитическими выкладками, например, здесь.

Негатив. Язык настолько активно «попер» в школы, что берет оторопь. Базы для него нет никакой, есть попрание всех норм синтаксиса программирования. Единичные учителя погоды не делают, тем более, что их знания вряд ли следует оценивать выше примитивных. По наблюдениям за преподавателями вузов, включая систему повышения квалификации — идентично.

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

2022 год. Государство в лице некомпетентных управленцев взяло курс на безальтернативное «импортозамещение» в виде Linux, имеющей заведомо импортное ядро и системы принудительного обновления из зарубежных источников, проконтролировать которое практически нереально. Именно в этой среде производится интерпретация (или прекомпилляция) исходного кода. Куда и как? Совсем не бесплатно!

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

P.S.! Интересно, чем же интерпретируемый Python в среде Windows лучше интерпретируемого же VBA + Shell? Графичскими библиотеками и всё? Тупицы вызываются на баттл!

P.P.S.! Половина Python написана на C...

P.P.P.S.! Я устал на это ругаться, пора останавливаться и ударяться головой о тупую реальность, что никак не поменяет моего отношения, приведенного выше. Точка.

JavaScript

Единственное исключение из правила. Данный язык — самый используемый в мире, без вариантов. Даже представить себе невозможно написание количества программ сопоставимого с числом сайтов, для которых использован JavaScript.

Отдельно: язык в ЕГЭ не задействован, что, учитывая предыдущий тезис, дает объектвную оценку экзамена)))

Недостаток заключается именно в распространенности (парадокс), так как главной средой исполнения является браузер. Нагрузка уходит на сеть (Интернет-соединение) для передачи программ и на процессор — для их исполнения.

Далее, соображения безопасности запрещают запись в файл, откуда вытекает отсечение половины смысла языка. Я бы сравнил это с работьй со связанными руками.

Только все это нисколько не уменьшает потребности в огромном количестве программистов, создающих в большинстве своем, по сути, «псевдо/полуинтерактивность». Она очень нужна, но нередко является лукавством для заказчика.

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

Да, это еще и самый открытый язык в мире, так как исполняется всегда исходный код, доступный любому через обращения к исходному коду в браузере. Когда код хранится в ссылке, его тоже можно открыть. Но здесь и зарыта «кошмарная» сторона защиты и одна из главных бед пререгрузок сетей. Часто код заключается в загрузке сторонних библиотек безразмерного объема, зачастую содержащего десятки мегабайт. Попробуйте его проверить... Также нам не может быть известно его содержание при последующем редактировании. Чем не повод словить трояна?

Программистами стали считать себя люди, способные подключить библиотеку и парой щелчков мыши создать «супервозможность». Часто — никому не нужную «красоту», за которую они не несут ответственность.

Параноидальный вариант. Завтра кто-то решит раздать на IP-адреса России (или США) код, зараженный вирусом. Всё, тушите свет...

Язык JavaScript по верхам обсуждается здесь.

Ссылки

  1. Дмитрий Зимнев10 лучших языков программирования в 2021 году (30.05.2021). Прекрасная краткая статья, в которой пытливый ум обнаружит основу для фальсификации рейтингов языков программирования.

Copyright © 1993–2022 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.