Компьютеры с современный мир

Краткая история языков программирования. Первый язык программирования высокого уровня — Планкалкюль Кто придумал первый язык программирования

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

[Если быть совсем точным, то уж по настоящему первым языком программирования была, по всей видимости, та нотация, с помощью которой были написаны программы Чарльза Бэббиджа в знаменитой статье Ады Августы Байрон, графини Лавлейс "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.

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

Схема выбора

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

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

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

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

JavaScript

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

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

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

Python

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

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

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

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

Начало развития

Язык ассемблера

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

Но даже работа с ассемблером достаточно сложна и требует специальной подготовки.

Например, для процессора Zilog Z80 машинная команда 00000101 предписывает процессору уменьшить на единицу свой регистр B . На языке ассемблера это же будет записано как DEC B .

Структурное программирование

Следующий шаг был сделан в 1954 году, когда был создан первый язык высокого уровня - Фортран (англ. FORTRAN - FORmula TRANslator ). Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них, можно писать программы до нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот язык становился нечитаемым и трудно управляемым, когда дело касалось больших программ. Решение этой проблемы пришло после изобретения языков структурного программирования (англ. structured programming language ), таких как Алгол (1958), Паскаль (1970), Си (1972).

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

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

Также создавались функциональные (аппликативные) языки (Пример: Lisp - англ. LISt Processing , 1958) и логические языки (пример: Prolog - англ. PROgramming in LOGic , 1972).

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

ООП

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

Примером объектно-ориентированных языков являются: Object Pascal , C++ ,

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

Ссылки

  • История программирования и вычислительной техники

Wikimedia Foundation . 2010 .

Смотреть что такое "Краткая история развития языков программирования" в других словарях:

    Язык программирования формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор… … Википедия

    Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия

    Ruby Семантика: мультипарадигмальный Тип исполнения: интерпретатор Появился в: 1995 г. Автор(ы): Юкихиро Мацумото Последняя версия: 1.9.1 … Википедия - (Айкакан Советакан Социалистакан Анрапетутюн) Армения (Айастан Страна армян). I. Общие сведения Армянская ССР образована 29 ноября 1920. С 12 марта 1922 по 5 декабря 1936 входила в состав Закавказской федерации (См.… …

    - (Летувос Тарибу Социалистине Республика) Литва (Летува). I. Общие сведения Литовская ССР образована 21 июля 1940. С 3 августа 1940 в составе СССР. Расположена на З. Европейской части СССР. Граничит на С. с… … Большая советская энциклопедия

    Образец Бурана ОК ГЛИ (БТС 002) для тестирования в атмосфере. Авиа космический салон МАКС, 1999 … Википедия

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

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

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

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

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

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

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

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

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

Планкалкюль (Plankalkül) - первый в мире язык программирования высокого уровня, разработанный немецким инженером Конрадом Цузе между
1942 и 1946 годами для его компьютера «Z4» (компьютер на снимке ниже, фото взято из «Википедии»).

Шла Вторая Мировая Война, Цузе работал в отрыве от учёных других стран, совершенно самостоятельно. За это время он создал не только язык программирования,
но и написал на нём 49 страниц программ для оценки шахматных позиций. Полностью его работа была опубликована много позже, в 1972.

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

Только в 1957 году (работы были начаты в 1954) появился Фортран - язык, который большинство считает первым языком высокого уровня.

«Z4» был электро-механическим, поэтому компилятора или интерпретатора Планкалкюля не существовало, но в 2000 году в Свободном
универсистете Берлина (Freie Universität Berlin) был создан интерпретатор его
диалекта (запускается в виде Ява-аплета в браузере).

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

Язык довольно богатый, на мой взгляд, для сороковых годов-то: есть условные конструкции, два вида циклов (аналог while и for), есть массивы и кортежи,
можно описывать и вызывать подпрограммы (но рекурсии нет).

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

  • «Variablen» (В ходные переменные) - это входные переменные подпрограмм, доступны только для чтения начинаются с буквы «V» и номера.
  • «Zwischenwert» (З начения промежуточные), доступны для чтения и записи, предназначены для хранения промежуточных вычисляемых значения, начинаются с «Z» и номера.
  • «Resultatwerte» (Р езультат) - в этих переменных возвращается результат вычисления, начинаются с «R» и номера.
  • «Indizes» (И ндексы) - переменные цикла (аналога for), начинаются с «i», дальше может быть номер, номер необходим для организации вложенных циклов.
Доступны три типа переменных. Несмотря на то, что «Z4» умел оперировать числами с плавающей точкой, интерпретатор этого не умеет.
  • Для целого неотрицательного указывается размерность в битах. Есть две формы записи «0» - один бит, «n.0» - «n» бит, например, 8.0 - один байт (8 бит).
  • Кортеж указывается в скобках, например (3.0, 4.0) - это две переменные в три и четыре бита, кортеж должен иметь более одного элемента.
  • Массив записывается через точку, к примеру: 4.5.0 - массив из четырёх элементов по пять бит в каждом, 32.(0, 8.0, 16.0) - 32 кортежа, в каждом из которых три переменных: один бит, восемь и
    шестнадцать.
Планкалкюль явно можно сильно упростить по синтаксису, но современный диалект почти в точности копирует ту запись, которую использовал Цузе, я полагаю, что такой синтаксис родился из-за
необходимости «отлаживать» программу на бумаге. Впрочем, язык настролько прост, что я его выучил целиком минут за 15 и даже написал на нём парочку программ в нескольких вариантах.

Одна из них вычисляет указанное (по порядку) число Фибоначчи :
P0 FactEvgenyStepanischev (V0[:4.0]) => (R0[:10.0]) (0, 1) => (Z0[:10.0], Z1[:10.0]) W1 (V0[:4.0]) [ i > 0 -> (Z0[:10.0] + Z1[:10.0], Z1[:10.0] - Z0[:10.0]) => (Z1[:10.0], Z0[:10.0]) ] Z1[:10.0] => R0[:10.0] END
Запускать следует так: открываете страницу с интерпретатором , копируете в окно мою программу, нажимаете «Compile», открывается отдельное
окно с Ява-аплетом (требует, чтобы на компьютере была установлена Ява), в открывшемся окне мышкой побитно набираете начальное значение V0 (нажимать надо на зелёные кружки́),
потом в окне браузера нажимаете «Run», в красной строчке (R0) увидите получившееся значение.


Подпрограммы в языке начинаются с символа «P» и уникального номера, дальше идёт имя, по которому её можно будет вызвать, у меня подпрограмма называется «FactEvgenyStepanischev», заканчивается
подпрограмма ключевым словом «END» (в оригинальном Планкалкюле его не было).

У подпрограммы описываются принимаемые и возвращаемые значения, у меня используется одна переменная на вход, размерностью 4 бита и одна на выход, размерность в 10. Первой строкой
присваиваются значения «ноль» и «один» промежуточным переменным Z0 и Z1. Тип переменных приходится указывать при каждом их использовании, преобразовать переменную в другой
тип нельзя.

Ниже идёт цикл «for» (W1), поскольку номер переменной цикла я не указал (указывается в первых квадратных скобках, которые тут опущены), используется переменная цикла «i», без номера.
В круглых скобках указывается количество повторений, а в последующих квадратных - тело цикла. Подробности можно
найти в описании .

Операция «стрелка» („->“) - условная конструкция, часть справа будет выполнена, если выражение слева истинно. В диалекте работают только самые простые выражения, например
цикл туда подставить можно, но кнопка «Run» в аплете у меня не появилась, поэтому я ограничился присваиванием внутри цикла.

Я тут использовал комплексное присваивание, которое хорошо знакомо тем, кто использует Перл, Пайтон или ПХП, но работает оно иначе - присваивания выполняются
последовательно, слева направо, поэтому я не могу ограничиться «(Z0[:10.0] + Z1[:10.0], Z1[:10.0]) => (Z1[:10.0], Z0[:10.0])», результат будет не тот, который ожидается.

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

Кроме этого в языке почти ничего и нет. Обращение к элементам массива, вызов функции и цикл «while» описывать отдельно смысла не имеет, они выглядят достаточно естественно в рамках этого синтаксиса.
Все операции, поддерживаемые языком (их немного - логические операции, битовые операции и четыре арифметические действия) выглядят привычно.

Похожие публикации