История развития языков программирования. Как всё-таки выбрать (первый) язык программирования? Или Как задавать правильные вопросы? Был создан первый язык программирования

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

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

Языки программирования могут быть:

  • простыми,
  • сложными и
  • непонятными (например, графическими).

История возникновения языков программирования

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

Нулевое поколение

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

Жаккардовый станок

Примером таких машин служит жаккардовый ткацкий станок с программируемым устройством. Он был сделан в 1804 году французом Жозефом Мари Жаккаром. Кстати, в его честь узорчатая, декоративная ткань названа жаккардовой или жаккард.

С помощью станка можно было легко и массово производить вышивки на ткани при помощи перфокарт, представленных ниже на рисунке:

Рис. 1. Перфокарты для ткацкого станка Жаккарда

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

Машина Беббиджа

Интернет и Веб

Появились специализированные языки:

  • JavaScript.

Многие сайты написаны с помощью PHP и JavaScript.

Некоторые ранее существовавшие языки с появлением Интернета и Веба нашли новые ниши и стали веб-ориентированными:

  • Ruby,
  • Pynton,
  • Java.

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

Любой язык программирования – это искусственный язык, который имеет свой цикл жизни. Аналогично, операционные системы семейства Windows тоже имеют свои жизненные циклы: .

Жизненный цикл языка программирования:

  • создание,
  • early adoption (первоначальное использование языка),
  • (промышленный) успех,
  • угасание, смена другими языками.

В современном мире основная часть программного обеспечения (софта) пишется на 10-15 языках, хотя за все время, которое нам известно, было создано больше сотен языков программирования. Официально как-то зарегистрировано 300 или 400 языков.

Что есть язык программирования

Язык – это

  • синтаксис (правила написания программ),
  • семантика (поведение элементов, которые входят в правила написания и встроены в язык),
  • runtime (среда выполнения).

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

Синтаксис на примере Lisp

Одним из самых простых языков программирования, которые имеют формальную грамматику, считается язык списков LISP.

Рис. 10. Программа на LISP

LISP является очень старым языком, который вырабатывает списки. Грамматика такого языка – это грамматика списков, читается сверху вниз.

  • В Лиспе есть выражения: может быть один атом, либо список;
  • atom – это число или символ,
  • number – число, то есть, с плюсом или минусом цифры, не менее одной,
  • symbol – это буквы, сколько угодно раз, можно даже много раз,
  • list – список, выражения в скобочках более одного раза.

Программа на Лиспе – это список списков. Знаков препинания в Лиспе нет, но есть скобочки. Могут быть такие длинные программы на Лиспе, где в конце идет 2-3 листа, состоящих из одних закрывающих скобочек.

Простейший интерпретатор Лиспа занимает всего 19 строк! Ни один другой язык не может себе позволить себе такой роскоши.

Семантика

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

Варианты представления семантики довольно ограничены.

Семантика может быть:

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

Семантика разделяется на две части:

  • статическую,
  • динамическую.

Статическая семантика

  • придает смысл лексическим конструкциям;
  • определяет допустимые значения переменных и параметров;
  • описывает синтаксические ограничения, например, с помощью синтаксиса не получится описать, что нельзя складывать строки с числами.

Динамическая или фронтальная семантика этапа выполнения

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

Система типов данных в языках программирования

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

Обычно в языке программирования имеется система типов данных – это строки, числа, списки и т.д. Есть, например, язык Форс, где все данные – просто , другими словами, существуют языки, где вообще не встроены типы данных.

Если же система типов присутствует, то можно провести деление языков программирования на два независимых друг от друга класса, которые приведены ниже.

Система типов данных:

  • типизированный или нетипизированный язык
  • статическая или динамическая типизация
  • строгая или слабая типизация

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

Если типизация динамическая, то, наоборот, тип объектов контекстного языка неизвестен до момента выполнения, то есть тип функции или чего угодно будет неизвестен до самого конца.

Строгая типизация означает, что если у сущности есть какой-то тип и он известен, то этот тип может заменяться, но у самого объекта тип фиксированный, и он не меняется.

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

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

Следующая важная характеристика языка –

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

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

Главные парадигмы

  • императивная: программа – набор последовательных инструкций, изменяющих внутренне состояние компьютера, данных и т.д. То есть, программа – это инструкция;
  • функциональная: программа – набор математических функций. Работа программы – вычисление значения функций;
  • объектно-ориентированная: предметная область описывается при помощи объектов со свойствами и методами. Программа – процесс взаимодействия объектов;
  • логическая: программа – набор утверждений о предметной области. Работа программы – установление истинности высказываний об этой предметной области.

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

Еще одной важной частью языка, которую нужно учитывать при использовании языка, является Runtime – то, как язык выполняется.

Runtime – выполнение программы

Программа может выполняться по-разному:

  1. самым простым и наивным способом выполнения программы является интерпретация – чтение исходного кода в момент запуска. Так работают легкие, скриптовые языки. Также работает сам программист: когда он написал программу, то смотрит своими глазами на собственную программу и прикидывает, как его программа будет работать и что делать;
  2. распространенным способом запуска программ является компиляция в машинный код – отдельный шаг до запуска. Есть отдельный инструмент – компилятор, где читаются исходники программы, что-то с ними делают, преобразуя в машинные коды, которые понятны текущей системе. Потом этот код выполняется непосредственно «железки»;
  3. гибридный способ – это байт-компиляция и выполнение в виртуальной машине. Компилятор читает исходный код, после чего производится байт-код, который выполняется в виртуальной машине.

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

Представители языков

Язык C

– один из самых популярных, один из самых важных по физически написанному по нему коду, практически это «наше всё».

Он создан в 1972 году, создатели – Деннис Ритчи (Dennis Ritchie) и коллеги. Д.Ритчи создал также систему Linux и многие другие полезные вещи.

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

Кстати, С актуален до сих пор, используется для:

  • системного программирования (например, ядро Linux написано на C),
  • number-crunching (так называемые числа-дробилки, то есть, для больших вычислений, где важно быстродействие),
  • программирования микроконтроллеров и встраиваемых систем.

С – низкоуровневый язык, можно сказать, что это Ассемблер с человеческим лицом, ибо почти любую конструкцию C человек может вручную преобразовать в Ассемблер и получатся довольно понятные операции.

Программы на C получаются очень компактные. Они не намного больше, чем если бы аналогичные программы были написаны на Ассемблере. При этом разработка на C проходит намного быстрее, чем на Ассемблере.

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

Рис. 11. Пример простой программы на C.

Java

  • Создан в 1995 году,
  • создатели – Джеймс Гослинг (James Gosling) и Sun Microsystems (в этой компании работал Гослинг).
  • Объектно-ориентированный, императивный (C императивный, но НЕ объектно-ориентированный),
  • строго- и статически-типизированный,
  • байт-компилируемый с виртуальной машиной,
  • нет доступа к памяти, автоматическая сборка мусора (последняя работает хорошо, если имеется треть или четверть свободной памяти).

В 90-ых годах JAVA получила большую популярность как мультиплатформенный язык. Один раз написав виртуальную машину для какой-то платформы, допустим для Windows или для Linux или для Mac, можно любые программы на JAVA запускать на ней без перекомпиляции. Поэтому язык был популярен в эпоху веба, когда было разных платформ (разные версии Windows, разные Маки). Программы на JAVA работали быстро и довольно хорошо на разных платформах.

Используется для:

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

Следует отличать спецификации языка Java и различные реализации JVM:

  • Sun JDK (от компании Sun, ныне это Oracle),
  • IBM JDK (продается за деньги),
  • OpenJDK (абсолютно свободная)
  • и т.п.

Рис. 12. Пример простой программы на JAVA.

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

Тем не менее JAVA очень популярна, в частности, на ней написана клиентская часть операционной системы .

Lisp

  • Он действительно завершает Lis t P rocessor (LisP);
  • создан в 1958 году;
  • создатели – Джон Маккарти;
  • чистый функциональный язык, несмотря на довольно странный синтаксис;
  • строго- и динамически- типизированный;
  • как правило, интерпретируемый;
  • нет доступа к памяти, автоматическая сборка мусора, которая ложится на интерпретатор, а не на виртуальную машину.

Используется для:

  • научного программирования и исследований;
  • искусственный интеллект – Lisp был создан в самом начале по поиску с интеллектом. В конце 1950-ых – начале 1960-ых в научных кругах было сильное ощущение, что вот-вот будет создан искусственный интеллект. Тогда считалось, что ключевыми особенностями искусственного интеллекта будет возможность оперировать естественным языком, текстом, читать, говорить и делать какие-то разумные вещи. Для обработки смысловых данных из текста был создан Lisp, он позволяет такие вещи делать хорошо;
  • всего, чего угодно, но, как правило, используется не очень эффективно.

Язык Lisp, разработанный в 1958 году, претерпел массу изменений.

У него есть множество реализаций и диалектов:

  • CommonLisp (создан в 1970-ых) – классическая реализация, которая считается основной;
  • Scheme (схема) – упрощенный диалект, который некоторые вещи из CommonLisp выбрасывает и позволяет делать проще;
  • Clojure – диалект Lisp в плане языка, но работает поверх JAVA-машины, то есть компилируется в байт-код и исполняется также, как будто это JAVA-программа.

Рис. 13. Программа на LISP: сортировка пузырьком

Python (Питон)

  • Назван в честь британского шоу 1970-ых годов Monty Pynton’s Flying Circus (там старые шутки, но смешные)
  • создан в 1991 году
  • создатель – голландец Guido van Rossum
  • мультипарадигменный язык, объектно-ориентированный, императивный, функциональный
  • строго- и динамически-типизированный
  • интерпретируемый, байт-компилируемый с виртуальной машиной (в зависимости от реализации)

Используется для:

  • скриптового программирования
  • веб-программирования
  • научного программирования (имеются большие, сильные пакеты для работы с моделированием, с вероятностью, со статистикой и в других областях, которые объединяют в себе опыт, накопленный в других областях)

Python – спецификация языка. Существует несколько основных реализаций:

  • CPython – основная (reference)
  • Jython – поверх JVM
  • PyPy – Python in Python («Питон на Питоне» работает быстрее и лучше, чем CPython и Jython)

Рис. 14. Программа на Python: сортировка пузырьком

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

Выбор языка под задачу

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

Важный совет: используйте то, на чем Вы умеете программировать. Это гораздо лучше, чем использовать то, на чем Вы НЕ умеете программировать.

Экосистема

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

  • средства разработки (удобное IDE)
  • готовые библиотеки и фреймворки
  • инструменты тестирования для запуска тест-кейсов: тестовые фреймворки и инструменты
  • системы пакетирования и развертывания для того, чтобы написанный код можно было упаковать, куда-то выложить, чтобы другие могли легко воспользоваться. У языка Си нет такой возможности, а у языков Руби и Питон есть.
  • коммьюнити. Не надо пользоваться мертвыми языками, какими бы классными они не были. Если не у кого спросить, Вы останетесь в полном тупике. Считается, что одни коммьюнити более дружелюбные, другие – менее. Например, коммьюнити Руби классное, а коммьюнити Java ужасное – там даже спрашивать ничего не надо.

Популярность

Сложно найти в команду людей, которые пишут код на редко используемом языке, к примеру на Eiffel. С другой стороны, на вакансию по мега-популярному языку JAVА, в котором порог входа низкий, набежит много народа, но будет непросто подобрать людей, которые пишут на нем действительно хорошо.

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

Скорость обучения

Почти никто не знает язык до конца. По мере работы Вам потребуется учиться языку все дальше и дальше. Некоторые языки учатся легко, а какие-то очень плохо.

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

С++ выучить до конца невозможно, потому что там есть очень сложные вещи с кодогенерацией.

Нишевость языков

Конкретные языки лучше подходят для решения определенных нишевых задач.

Пример 1: веб приложение, которое

  • взаимодействует с базой данных
  • внутренний сервис в компании
  • нужна быстрая разработка, потому что шеф очень просит.

Для такой задачи, скорее всего, подойдет Python или Ruby. Не надо это делать на JAVA

Пример 2: биллинговая система сотового оператора

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

В этом случае наш выбор – Java, С++, Erlang – богатые языки с богатым инструментарием.

Пример 3: код бортовой ЭВМ для спутника

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

Наш выбор – С и С-подобные языки (и даже ассемблер), потому что очень мало ресурсов и эти требования надо соблюсти.

Статья основана на видео:

Как правильно выбрать язык программирования – Иван Калинин

Видео снято в декабре 2014 года, тем не менее, вся информация актуальна и не имеет срока давности. Многие материалы с позиции сегодняшних реалий представляют несомненный интерес, например, о том, что ученые еще в конце 1950-ых – начале 1960-ых годов считали, что искусственный интеллект уже на пороге и с его помощью можно будет вот-вот работать на компьютере с естественным, обычным, человеческим языком.

Каспера Бейера «A Brief Totally Accurate History Of Programming Languages».

1800

Жозеф Мари Жаккар учит ткацкий станок читать перфокарты и таким образом создает первое многопоточное устройство обработки данных. Его изобретение было воспринято в штыки ткачами шелка, которые предвидели рождение Skynet.

1842

Ада Лавлейс заскучала, занимаясь своими благородными занятиями. Она набросала в записной книжке то, что позже станет известно как первая опубликованная компьютерная программа. Единственное неудобство было в том, что компьютер тогда еще не изобрели.

1936

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

Позже королева его помиловала, но он, к сожалению, был уже давно мертв к тому времени.

1957

Джон Бэкус создает FORTRAN, первый язык, который использовали настоящие программисты.

1959

Грейс Хоппер изобретает первый язык программирования, ориентированный на промышленное производство, и называет его “общий бизнес-ориентированный язык” (“common business-oriented language”), кратко - COBOL.

1964

Джон Джордж Кемени и Томас Курц решили, что программирование - слишком сложное занятие, а потому нужно вернуться к основам. Они называют свой язык программирования BASIC.

1970

Никлаус Вирт разрабатывает Pascal. Это один из нескольких языков, в создании которых принял участи е Вирт: ему нравилось создавать языки.

Он также сформулировал Закон Вирта , делающий бессмысленным закон Мура , поскольку разработчики будут п и сать такие раздутые программы, что за ними даже мейнфреймы не угонятся. Позже это будет доказано путем изобретения Electron.js.

1972

Деннису Ритчи стало скучно на работе в Bell Labs и он решил создать С с его фигурными скобками, и этот проект получил огромный успех. Впоследствии он добавил ошибки сегментации и другие дружественные к разработчику возможности для повышения производительности.

Поскольку у него еще оставалось пару часов, он со своими приятелями в Bell Labs решил создать пример программы для демонстрации языка С. Так они создали операционную систему под названием Unix.

1980

Алан Кёртис Кэй изобретает объектно-ориентированное программирование и называет его Smalltalk. В Smalltalk все является объектом, даже объект это объект.

1987

Ларри Уолл со своим опытом работы в религиозной сфере становится проповедником, а сво е й доктриной делает Perl.

1983

Жан Давид Ишбиа заметил, что программа Ады Лавлейс никогда так и не запускалась, и решил создать язык и назвать его в ее честь (Ada). Но язык тоже не запускается.

1986

Брэд Кокс и Том Лав решили сделать нечитаемую версию С, основанную на Smalltalk. Они назвали ее Objective-C, но никто не в силах понять ее синтаксис.

1983

Бьёрн Страуструп отправляется назад в будущее и замечает, что язык С требует слишком мало времени для компиляции. Он добавляет к языку каждую фичу, какую только может придумать, и называет его С++.

Программисты по всему миру соглашаются с этим, поскольку у них появляется гениальное оправдание для просмотра видео с котиками и чтения xkcd на работе.

1991

Гвидо ван Россуму не нравятся фигурные скобки, поэтому он изобретает . При выборе синтаксиса языка автор вдохновлялся Монти Пайтоном и его летающим цирком.

1993

Роберту Иерузалимски с друзьями решили, что им нужен локальный, бразильский язык сценариев. В о время локализации была сделана ошибка, которая заставила индексы начинать отсчет с 1 вместо 0. Язык назвал и Lua.

1994

Расмус Лердорф создает движок шаблонов для собственных CGI-сценариев своей домашней страницы и выпускает его дот-файлы в интернет.

Мир решает повсеместно использовать эти дот-файлы, а Расмус в неистовстве добавляет в них некоторые дополнительные привязки к базам данных и называет результат РНР.

1995

Юкихиро Мацумото был не слишком счастлив и заметил, что другие программисты тоже несчастны. Он создает Ruby, чтобы сделать их счастливыми. После создания Ruby “Мац” счастлив, сообщество Ruby счастливо, все счастливы.

1995

Брендан Эйх берет выходной, чтобы разработать язык, с помощью которого будет управляться каждый веб-браузер в мире и в конечном итоге Skynet. Сначала он пошел в Netscape и сказал, что язык называется LiveScript, но за время ревью кода приобрела популярность Java, поэтому было решено использовать фигурные скобки и переименовать язык в JavaScript.

Оказалось, что Java это торговая марка, что могло привести к проблемам, поэтому JavaScript позже был переименован в , но его все равно называют по-старому.

1996

Джеймс Гослинг изобретает Java, первый по-настоящему слишком многословный объектно-ориентированный язык программирования, где шаблоны проектирования превалируют над прагматизмом.

2001

Андерс Хейлсберг заново изобретает Java и называет этот язык C#, потому что программирование на C кажется более крутым, чем на Java. Новая версия Java всем нравится, поскольку совершенно не похожа на Java.

2005

Давид Хейнемейер Ханссон создает веб-фреймворк, позже названный Ruby on Rails. Люди забывают, что это были две разные вещи.

2006

Джон Резиг пишет вспомогательную библиотеку для JavaScript. Все считают, что это язык, и делают себе карьеру на копипасте кода jQuery из интернета.

2009

Кен Томпсон и Роб Пайк решают создать язык, похожий на С, но более «товарный», с большим количеством инструментов для обеспечения безопасности и с Гоферами (Гофер - грызун, персонаж историй про Винни-Пуха, — прим. перев.) в качестве талисманов.

Они называют этот язык Go, решают сделать его код открытым и начинают продавать брендовые наколенники и шлемы с Гофером.

2010

Грэйдон Хор тоже хочет создать язык, подобный С. Он называет его Rust. Все требуют, чтобы каждый кусочек их программ немедленно переписывался на Rust. Грэйдону хочется чего-то более блестящего и он начинает работать над Swift для Apple.

2012

Андерс Хейлсберг хочет писать С# в веб-браузерах. Он создает TypeScript, который по сути является JavaScript с большим количеством Java.

2013

Джереми Ашкенас хочет быть таким же счастливым, как Ruby-разработчики, поэтому создает CoffeeScript, который транслируется в JavaScript, но выглядит скорее как Ruby. Джереми так и не стал таким же по-настоящему счастливым, как Матц и Ruby-разработчики.

2014

Крис Латнер создает Swift, главная цель которого – не быть Objective-C. В конечном итоге этот язык напоминает Java.

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

Первые автокоды появились в 1955 году усилиями разработчиков компании IBM под руководством инженера Джона Бэкуса. Это был язык высокого уровня, названный Фортран, не набор разрозненных простых команд, а организация более крупных кодов, которые стали называться операторами, или же алгоритмическими языками. Для их перевода на машинный автокод были изобретены трансляторы, которые преобразуют алгоритмы и делают его понятным для электронно-вычислительной машины. Происходит это двумя способами: интерпретационным и компиляционным. Благодаря простоте версии Фортран быстро входили в употребление, и последняя из них и сегодня является одной из ЭВМ.

Однако, это не единственный автокод для машин. История развития языков программирования продолжается созданием алгоритмов Алгол, которые применяются в основном в ученой среде и имеют в составе большое количество новых понятий. Происходит это событие в 1960 году. А чуть позже пытливые сотрудники компании IBM придумали язык Кобол, ориентированный на использование в бизнес среде и используемый для обработки сложной и объемной информации экономического характера.

История развития языков программирования продолжается профессорами колледжа в Дартсмуте Т. Куртцем и Дж. Кемени, которые разработали общеизвестный Бейсик. Он намного проще, чем Фортран, и поэтому использовался в Он произвел эффект взрыва, став основным набором автокодов программирования, и сделав компьютеры достоянием самых обычных пользователей.

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

Сегодня ученые продолжают работать над его усовершенствованием и стараются приблизить к программе Паскаль, которым далее ознаменовалась история развития языков программирования. Его создателем, по праву, считается профессор Цюрихского политехнического университета Никлаус Вирт. А название своему изобретению он дал в честь Паскаля, являющегося первым конструктором самой первой вычислительной машины. Это один из самых легких и доступных программных языков, позволяющий писать ясные и понятные программы.

История развития программирования была бы неполной без языка Ада, названного в честь первой женщины программистки Ады Лавлейс, дочери всем известного пота Он представляет собой более усовершенствованный и универсальный язык программирования, составленный на основе Паскаль.

История развития программного обеспечения имеет в своем арсенале еще много программных языков, которые написаны для специальных областей применения. Например, в моделировании применяются Симул, Симкрит и GPSS. Для управления аппаратурой используется язык ФОРТ. пишутся языком СИ. Базы данных создаются языком Кодасил. Для обучения программированию удобны Лого, Робик и А.П. Ершова.

История развития программирования до конца еще не написана и вряд ли это произойдет в ближайшем будущем.

Если вы подумываете учиться программированию, Язык программирования, который вы решите выбрать первым, имеет большую важность, он должен быть связан с тем, чем вы хотите в будущем заниматься и быть актуальным. Хоть и программирование в целом это занятие не для ленивых, тем не менее, некоторые языки легче учить, чем другие,они имеют сообщества,которые посвящены обучению и предлагают полезные навыки для изучения других языков программирования.

Схема выбора

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

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

  • Рынок труда.
  • Долгосрочные перспективы языка.
  • Сложность изучения языка.
  • Что именно вы сможете создать в процессе изучения, и, показав окружающим, поддержать мотивацию.

Популярность и востребованность

JavaScript

JavaScript, чтобы не путать с Java, — это Язык программирования, который был разработан в 90-х годах Бренданом Эйхом, ранее принадлежащим Netscape Communications, а теперь и Mozilla Foundation. JavaScript является одной из фундаментальных технологий, на которых основано веб-сообщество, как мы его знаем. Не обманывайте себя, хотя JavaScript существует и вне браузера, но в основном в контексте подключенных приложений и сервисов.

Сам язык является динамичным и дает программистам гибкость в использовании стилей объектно-ориентированного программирования (поскольку сам язык в основном ориентирован на объекты), а также функциональные и императивные. Он извлекает большую часть своего синтаксиса из C, и если вы планируете делать какие-либо разработки для Интернета любым способом, изучение JavaScript должно быть в вашем списке.

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

Python

Также могу посоветовать Python.

Несмотря на ряд проблем исторически присущих Python, он продолжает оставаться лидирующим инструментом в ряде ниш:

Впечатляет, не правда ли? Что же касается крупных и популярных проектов, написанных на Python то это такие монстры как:

Так же на нашем сайте вы можете найти .

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

[Если быть совсем точным, то уж по настоящему первым языком программирования была, по всей видимости, та нотация, с помощью которой были написаны программы Чарльза Бэббиджа в знаменитой статье Ады Августы Байрон, графини Лавлейс "Sketch Of the Analytical Engine "(статья представляла собой перевод статьи итальянца Менабреа о работе разностной машины Бэббиджа и, содержала существенное дополнение, написанное самой Адой Августой). Однако это был не вполне язык программирования, да и машина, для которой он предназначался существовала только в уме гениального человека. Замечу кстати, что в 1991 году музей науки в Лондоне создал по чертежам Бэббиджа его машину и она сейчас существует в рабочем состоянии ]

Итак, первый язык программирования. Это был вовсе не Фортран, а язык с удивительным названием - Plankalkül, то есть в переводе с немецкого "Исчисление планов" или "План вычислений", был разработан немецким учёным, изобретателем и конструктором Конрадом Цузе в нацистской Германии между 1942 и 1945 годами.

[Цузе также сконструировал несколько различных моделей компьютеров. Например его Z3 тоже был создан раньше знаменитых Marc I и ENIAC и являлся при этом вполне полноценной машиной. ]

Утверждается, что всех своих достижений Цузе добился абсолютно самостоятельно, не обладая сведениями ни о работах американцев и англичан, проводившихся в близкое время, и даже не зная о работах Бэббиджа.

Создание языка программирования было естественным продолжением работ по созданию "железной" части компьютеров. Сам Цузе пытался с его помощью писать программу для игры в шахматы. Работы над языком были закончены около 1946 года, однако развития язык не получил и даже написанное руководство увидело свет только в 1972 году. Из-за этого язык оказался неизвестным и существенного влияния на дальнейшее развитие индустрии не оказал (в сравнении например с тем же Фортраном).

Тем не менее Plankalkül несомненно был первым в мире языком программирования высокого уровня. Основные концепции языка включают:

  • Наличие подпрограмм (и это в 1940-х годах!!!)
  • Наличие операции присваивания (=>)
  • Циклы
  • Условный оператор (if)
  • Возможность манипуляций с массивами
  • Возможность манипуляций со списками
При создании языка Цузе собрал множество проблем, которые были поставлены инженерами и учёными. Для демонстрации того, что язык действительно способен решать эти проблемы было написано огромное количество примеров программ (в частности около 60 страниц примеров для программы играющей в шахматы).

Одной из проблем языка был чрезвычайно сложный и очень непривычный современному программисту синтаксис. Вот пример присваивания A = A+1 на языке Plankalkül.

Windows 10