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

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

Преамбула

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

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

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

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

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

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

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

  1. Машинный язык (в двоичном или шестнадцатеричном виде), реально обрабатываемый процессором, но чрезвычайно сложно воспринимаемый человеком.
  2. Assembler
  3. 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. Специализированные языки
    1. Языки реального времени (real time)
    2. СУБД, SQL, XBase
    3. "Встроенные" в оборудование
  17. ...

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

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

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

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

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

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

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

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

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

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

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

Паскаль (Pascal)

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

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

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

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

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

Python

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

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

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

Негатив. Язык настолько активно "попер" в школы, что берет оторопь. Так как базы для него нет никакой. Единичные учителя погоды не делают.

Каких-либо аргументов за или против у меня нет. Кроме сомнения о возможности эффективного программирования для Windows. На этом пока и остановимся...

JavaScript

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

Недостаток именно в этом и заключается, так как главной средой исполнения является браузер.

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

Только все это нисколько не уменьшает потребности в огромном количестве программистов.

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

Да, это еще и самый открытый язык в мире, так как исполняется всегда исходный код, доступный любому.


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