Как появились языки программирования? Первые языки программирования Как назывался первый язык программирования

Планкалкюль (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» описывать отдельно смысла не имеет, они выглядят достаточно естественно в рамках этого синтаксиса.
Все операции, поддерживаемые языком (их немного - логические операции, битовые операции и четыре арифметические действия) выглядят привычно.

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

Лишь в 50-е годы, для личных нужд фирмы IBM был разработан первый алгоритмический язык. Его назвали FORTRAN. Разумеется, к тому времени уже было несколько наработок языков, преобразующих в машинных код арифметические выражения, но именно создание FORTRAN"а считается отсчетом новой эры - переходом на парадигму алгоритмических языков. Что он мог? Он позволял проводить расчеты только при помощи записи алгоритма с применением операторов ввода/вывода и условных. Первоначально язык создавался специально для вычислительной системы IBM 407. Но популярность FORTRAN"а привела к тому, что даже производители других архитектур стали выпускать собственные трансляторы. Вследствие этого, в 1966 году был выпущен общий стандарт FORTRAN 66.

Уже в конце 50-х гг. появилась хорошая альтернатива FORTRAN"у. Питер Наур разработал алгоритмический язык, независимый от архитектуры. Его назвали ALGOL. В данном случае, разработчики также постарались расширить возможности языка, максимально приблизив систему обозначений к математической.

В начале 60-х гг. производители IBM представили не особо популярный язык PL/I. Он работал с архитектурой IBM 360 и служил своеобразным расширением FORTRAN"а при помощи некоторых средств языка COBOL.
Первый язык, в котором было введено понятие класса - Simula-67. Его создали Дал и Найард в конце 60-х.
70-е гг. произвели на свет Pascal. Он быстро завоевал массовую популярность. Чуть позже миноборона США начала разработку языка высокого уровня. Проект разрабатывали 4 независимые группы, причем выработка требований и спецификаций проводилась на основе языка Pascal. Получившийся продукт был выпущен уже в начале 80-х, он получил название Ada.

70-е гг. также подарили нам универсальный язык C. Его авторами были Кен Томпсон и Денис Ритчи. Язык пользовался повышенной популярностью у системных программистов, перво ядро ОС UNIX было разработано именно на нем. В 1982 году стандарт C поступил в разработку в ANSI, получившийся вариант был принят в 1990 году. На основе этого языка были разработаны современные языки Java и C++.

Помимо языков, работающих с алгоритмами, свое развитие получили и языки другой направленности. Для обработки деловой информации был разработан COBOL, языками искусственного интеллекта считаются Prolog и LISP. Кроме того, последний широко применяется и в теории игр.

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

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

Схема выбора

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

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

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

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

JavaScript

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

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

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

Python

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

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

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

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

Замечание 1

Для работы первых программ нужно было устанавливать ключевые переключатели на передней панели вычислительного устройства. Естественно, с помощью такого способа можно было составлять только небольшие программы. Одна из первых попыток создания полноценного языка программирования была предпринята немецким ученым Конрадом Цузе, который за период 1943–1945 гг. разработал язык Plankalkul. Plankalkul был очень перспективным языком, который фактически являлся языком высокого уровня, однако во времена войны он не получил должной практической реализации, а его описание было опубликовано только в 1972 г.

Машинный код. Ассемблер

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

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

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

Алгоритмические языки

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

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

  • Компиляция (Compilation) – метод выполнения программ, при котором инструкции программы выполняются только том случае, когда собран перевод всего текста программы.
  • Интерпретация (Interpretation) – метод выполнения программ, при котором инструкции программы переводятся и сразу выполняются.

Замечание 2

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

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

В 1954 г. была начата разработка первого компилятора языка высокого уровня. Через два года появился язык Fortran (FORmula TRANslator – «переводчик формул»). Язык содержал средства, которые значительно упрощали разработку, однако программирование на Fortran не было простой задачей: если в коротких программах он был легко понимаемым, то когда дело касалось больших программ язык становился нечитаемым. Несмотря на это, язык был довольно успешным и было выпущено много его версий.

Проблемы были решены после разработки языков структурного программирования: в них появилась возможность создания программных блоков, независимых подпрограмм, поддержки рекурсии и локальных переменных, отсутствие оператора безусловного перехода (GoTo). Таким образом, такие языки стали поддерживать возможность разбиения программы на составляющие элементы.

На протяжении десяти лет было создано достаточно большое число новых языков:

  1. Algol (1958 г.) предназначался для записи алгоритмов, которые составлены из обособленных блоков;
  2. Cobol (1959 г.) использовался для массовой обработки данных в сферах управления и бизнеса;
  3. Basic (1965 г.) позволял писать простые программы, использовался для обучения основам программирования.

Совсем немногие из созданных языков были структурированными. Также были созданы специализированные языки: Lisp, Prolog, Forth и т.д. Особого внимания заслуживает язык Pascal (1970 г.), названный в честь ученого Блеза Паскаля, который использовался как для обучения, так и для решения задач различной сложности. Программы на Pascal легко читаемы, что позволяет быстро находить и исправлять ошибки, также он был хорошо структурированным. Все вышеперечисленное привело к его широкой распространенности, и даже в данное время его активно используют в учебных заведениях.

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

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

Объектно-ориентированное программирование (ООП)

С 1970-х гг. были заложены основы объектно-ориентированного программирования (ООП), которое возникло как поседствие развития процедурного программирования, при котором данные и подпрограммы их обработки формально не были связаны.

ООП включает следующие основные понятия:

  • Класс – модель ещё не существующего объекта. Фактически он является схемой объекта, описывая его устройство.
  • Объект – экземпляр класса, сущность в адресном пространстве вычислительной системы, которая появляется при создании экземпляра класса.
  • Абстракция – присвоение объекту характеристик, четко определяющих его границы, которые отличают его от всех других объектов. Основной идеей является отделение способа использования составных объектов данных от деталей их реализации в виде более простых объектов.
  • Инкапсуляция – объединение свойств (данных) и методов (подпрограмм) в классе для того, чтобы скрыть данные объекта от остальной программы и обеспечить целостность и независимость объекта (изменение свойств объекта возможно только через специальные методы класса).
  • Наследование – механизм языка, который позволяет описать новый класс на основе уже существующего класса (или классов) с добавлением новых свойств и методов.
  • Полиморфизм – свойство системы использовать объекты с одинаковым интерфейсом без получения информации о его типе и внутренней структуре.

Замечание 3

В 1967 г. появился язык Симула – первый язык программирования, в котором были предложены принципы объектной ориентированности. Он поддерживал работу с объектами, классами, виртуальными методами и т.д., но все эти возможности не получили достойной оценки современников. Тем не менее, большинство этих концепций были заложены Аланом Кэем и Дэном Ингаллсом в язык Smalltalk, который стал первым широко распространённым объектно-ориентированным языком программирования.

В настоящее время число прикладных языков программирования, которые реализуют объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. Основные языки, которые поддерживают концепцию ООП: C++, C#, Object Pascal (Delphi), Java и т.д.

Развитие Интернета

С развитием технологии WWW (World Wide Web) Интернет стал очень популярным. Было создано большое количество вспомогательных языков для обеспечения работы с Интернетом, оформления сайтов, доступа к ресурсам и т.д.

Становится распространенным интерпретируемый язык Perl, который отличается своей простотой и легкой переносимостью на другие платформы. Он предназначен для написания приложений и CGI-скриптов различной сложности. Также широко используется и играет значительную роль в развитии и функционировании Интернета язык Java.

В 1970-х гг. появился язык SQL – язык структурированных запросов, который был создан для доступа и работы с базами данных.

Для написания кодов страниц веб-сайтов разработан язык разметки гипертекстов HTML, который содержит команды для разметки и оформления текста и графики. Для придания большей привлекательности и функциональности сайта используются:

  • Скрипты JavaScript, которые выполняются в веб-браузере пользователя и используются в основном для улучшения внешнего вида сайта и решения мелких задач.
  • Скрипты PHP, которые выполняются на стороне сервера и посылают в браузер пользователя уже обработанную информацию. Применяются для создания динамических HTML-страниц, гостевых книг, ведения форумов и опросов.
  • CGI-сценарии, которые написаны преимущественно на Perl, C/C++, выполняются на стороне сервера и зависят от конкретных действий пользователя. Применяются, как и сценарии PHP, для создания динамических HTML-страниц, гостевых книг, ведения форумов и опросов.

В пятидесятые годы двадцатого века с появлением компьютеров на электронных лампах началось бурное развитие языков программирования. Компьютеры, стоившие в то время значительно дороже, чем разработка любой программы, требовали высокоэффективного кода. Такой код разрабатывался вручную на языке Ассемблер . В середине 50-х годов под руководством Джона Бэкуса для фирмы IBM был разработан алгоритмический язык программирования FORTRAN. Несмотря на то, что уже существовали разработки языков, выполняющие преобразование арифметических выражений в машинный код, создание языка FORTRAN (FORmula TRANslator), предоставляющего возможность записи алгоритма вычислений с использованием условных операторов и операторов ввода/вывода, стало точкой отсчета эры алгоритмических языков программирования.

К языку FORTRAN предъявлялись требования cоздания высокоэффективного кода. Поэтому многие конструкции языка первоначально разрабатывались с учетом архитектуры IBM 407. Успех разработки этого языка привел к тому, что производители других вычислительных систем стали создавать свои версии трансляторов. С целью некоторой возможной на тот момент унификации языка язык FORTRAN IV, разработанный в 1966 году, стал первым стандартом, именуемым FORTRAN 66.

Как альтернатива языку FORTRAN, первоначально ориентированному на архитектуру IBM, под руководством Питера Наура в конце 50-х годов был разработан язык ALGOL (ALGOrithmic Language). Основной целью, преследуемой разработчиками этого языка, была независимость от конкретной архитектуры вычислительной системы. Кроме того, создатели языка ALGOL стремились разработать язык, удобный для описания алгоритмов и применяющий систему обозначений, близкую к той, что принята в математике.

Языки FORTRAN и ALGOL были первыми языками, ориентированными на программирование вычислений.

Язык PL/I , первые версии которого появились в начале 60-х годов, был первоначально ориентирован на IBM 360 и расширял возможности языка FORTRAN некоторыми средствами языка COBOL, разработанного в эти же годы. Несмотря на определенную популярность языка PL/I у программистов, работавших на компьютерах IBM и машинах серии ЕС, в настоящее время он представляет чисто теоретический интерес.

В конце 60-х годов под руководством Найарда и Дала был разработан язык Simula-67, использующий концепцию пользовательских типов данных. Фактически это первый язык, применяющий понятие классов.

В середине 70-х годов Вирт предложил язык Pascal , который сразу стал широко использоваться. В это же время по инициативе Министерства обороны США началась работа по созданию языка высокого уровня, получившего название Ada – в честь Ады Лавлейс, программистки и дочери лорда Байрона. Создание языка началось с определения требований и выработки спецификаций. Над проектом работали четыре независимые группы, но все они использовали как основу язык Pascal. В начале 80-х годов был разработан первый промышленный компилятор языка Ada .

Универсальный язык программирования С был разработан в середине 70-х годов Денисом Ритчи и Кеном Томпсоном. Этот язык стал популярным языком системного программирования и в свое время использовался для написания ядра операционной системы UNIX. Стандарт языка С начал разрабатываться рабочей группой института стандартов ANSI в 1982 году. Международный стандарт языка С принят в 1990 году. Язык С лег в основу разработки языков программирования C++ и Java.

Наряду с алгоритмическими языками параллельно развивались и языки, предназначаемые для обработки деловой информации, а также языки искусственного интеллекта. К первым относится язык COBOL (COmmon Business Oriented Language), а ко вторым – языки LISP (LISt Processing) и Prolog . Язык LISP, разработанный в 60-х годах под руководством Дж. Маккарти, был первым функциональным языком обработки списков, который нашел широкое применение в теории игр.

С появлением персональных компьютеров языки стали составными частями интегрированных сред разработки. Появились языки, применяемые в различных офисных программах, например VBA (Visual Basic for Application).

В 90-х годах с распространением сети Интернет расширяется возможность распределенной обработки данных, что отражается и на развитии языков программирования. Появляются языки, ориентированные на создание серверных приложений, такие как Java , Perl и PHP , языки описания документов – HTML и XML . Традиционные языки программирования С++ и Pascal также претерпевают изменения: под языком программирования начинает пониматься не только функциональность самого языка, а также библиотеки классов, предоставляемые средой программирования. Акцент со спецификации самих языков программирования переносится на стандартизацию механизмов взаимодействия распределенных приложений. Появляются новые технологии – COM и CORBA, специфицирующие взаимодействие распределенных объектов.



error: Контент защищен !!