Эволюция языков программирования реферат

Обновлено: 02.07.2024

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

Прикрепленные файлы: 1 файл

Эволюция языков программирования.doc

Введение

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

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

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

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

1. Классификация языков программирования

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

Языки программирования низкого уровня (машинно-ориентированные) (low-level language) – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Эти языки программирования предназначены для определенного типа ЭВМ и отражают его внутренний машинный код. Особенности машинно-ориентированных языков:

  • высокое качество создаваемых программ (компактность и скорость выполнения);
  • возможность использования конкретных аппаратных ресурсов;
  • предсказуемость объектного кода и заказов памяти;
  • для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;
  • трудоемкость процесса составления программ;
  • низкая скорость программирования;
  • невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы [1,4,13].

1.1.1. Машинный язык

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

Машинный язык (computer (machine) language)– язык программирования, элементами которого являются команды компьютера, характеризующиеся:

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

Каждому действию, инструкцию о выполнении которого может получить процессор, соответствует определенное число. Программа, написанная на машинном языке, представляет собой серию таких чисел с вкраплениями других чисел, являющих собой или параметры, контролирующие действия, или данные, на основе которых эти действия выполняются. Машинные языки различны для разных типов компьютеров. Поэтому говорят, что машинные языки машинно-зависимы. Машинные языки неудобны для человека и тяжело им воспринимаются. Программирование на них слишком медленно и утомительно. Это языки самого нижнего уровня. Считается, чем ближе к машине, тем ниже уровень языка [1,4,13].

1.1.2. Языки символьного кодирования

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

ЯСК иначе называют мнемокодами. Мнемокод отличается от машинного языка соответствующей ЭВМ заменой цифровых кодов операций буквенными (мнемоническими), а цифровых адресов операндов буквенными или буквенно-цифровыми. При переводе на язык ЭВМ каждая команда мнемокода заменяется соответствующей командой машинного языка. Применение мнемокода позволяет автоматизировать работу программиста по распределению памяти, точнее, по присваиванию истинных адресов. Это особенно полезно при программировании для машин с переменным форматом команд. Кроме того, мнемокод существенно облегчает работу по составлению больших программ, когда отдельные сегменты (модули) программы составляются разными программистами и объединяются в единую программу на этапе загрузки [1,4,13].

1.1.3. Автокод

Языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд, называются Автокоды.

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

Развитые автокоды получили название Ассемблеры. Сервисные программы и пр., как правило, составлены на языках типа Ассемблер [1,4,13].

1.1.4. Макрос

Язык, являющийся средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму - называется Макрос (средство замены).

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

Макрос одинаково может работать, как с программами, так и с данными [1,4,13].

1.2. Языки программирования высокого уровня

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

Наиболее распространёнными языками подобного типа являются C++, Visual Basic, Java, Python, Ruby, Perl, Delphi, PHP [2,13].

1.2.1. Императивные языки

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

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

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Pascal, C, Ada, PL/1. Среди операционных известны Fortran, Basic, Focal [2,13].

1.2.2. Декларативные языки

Декларативное (непроцедурное) программирование (declarative (nonprocedural) language) появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.

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

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

Первым таким языком был LISP (LIST Processing - обработка списков), созданный в 1959 году. Цель его создания состояла в организации удобства обработки символьной информации.

В логических (реляционных) языках (logical language) программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается PROLOG (PROgramming in LOGic — программирование в терминах логики). Этот язык был создан французским ученым А. Кольмероэ в 1973 году.

Языки логического программирования характеризуются:

  • высоким уровнем;
  • строгой ориентацией на символьные вычисления;
  • возможностью инверсных вычислений, то есть переменные в процедурах не делятся на входные и выходные;
  • возможной логической неполнотой, поскольку зачастую невозможно выразить в программе определенные логические соотношения, а также невозможно получить из программы все выводы правильные [2,13].

1.2.3. Объектно-ориентированные языки

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

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

Оглавление
Файлы: 1 файл

эволюция и классификация языков программирования..doc

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Руководитель: Филимонов Сергей Михайлович, старший преподаватель

2.Способы реализации языков………………………………… ……………………3

3.Движущие силы эволюции языков программирования……………………. 4

4.История развития языков программирования…………………………………. .5

5.Классификация языков программирования………………… …………………..8

6.Язык программирования Фортран……………… ………………………………..9

8.Lisp и ему подобные языки………………………………. ……………………10

20.Объектно-ориентированные языки…………………………………………. 14

21.Языки параллельного программирования…………………………………. ..15

23.Языки логического программирования…… ………………………………… 17

Развитие вычислительной техники сопровождается созданием новых и совершенствованием существующих средств общения программистов с ЭВМ - языков программирования(ЯП).
Язык программирования — формальная знаковая система , предназначенная для записи компьютерных программ . Язык программирования определяет набор лексических , синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением. В более абстрактном виде ЯП является средством создания программных моделей объектов и явлений внешнего мира.

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

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

Способы реализации языков

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

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

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

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

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

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

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

Движущие силы эволюции языков программирования.

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


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

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

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


4) В-четвертых, совершенствование самих ЭВМ приводит к необходимости создания языков, максимально реализующих новые возможности ЭВМ.


5) В-пятых, программы являются интеллектуальным продуктом, который нужно накапливать и приумножать. Но программы, как и технические изделия, обладают свойством морального старения, одной из причин которого является их зависимость от типа ЭВМ и операционной среды. Поэтому ЯП должен обеспечивать продолжительный жизненный цикл программы. Стремление к этому и является движущей силой развития ЯП.


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


Известно, что первым программистом была женщина - леди Ада Лавлейс, дочь лорда Байрона. Она разрабатывала программы для одного из первых механических компьютеров, созданного в начале XIX века английским ученым Чарльзом Беббиджом. Однако, настоящее программирование в современном понимании началось с момента создания первой электронной вычислительной машины. Но тем не менее, имя этой женщины - Ada - присвоено одному из самых мощных современных ЯП.

Первые ЭВМ, созданные человеком, имели небольшой набор команд и встроенных типов данных, но позволяли выполнять программы на машинном языке. Машинный язык (МЯ) - единственный язык, понятный ЭВМ. Он реализуется аппаратно: каждую команду выполняет некоторое электронное устройство. Программа на МЯ представляет собой последовательность команд и данных, заданных в цифровом виде. Например, команда вида 1А12 в 16-ричном виде или 0001101000010010 в двоичном виде означает операцию сложения (1А) содержимого регистров 1 и 2.

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

Стремление программистов оперировать не цифрами, а символами, привело к созданию мнемонического языка программирования, который называют ассемблером, мнемокодом, автокодом. Этот язык имеет определенный синтаксис записи программ, в котором, в частности, цифровой код операции заменен мнемоническим кодом. Например, команда сложения записывается в виде AR 1,2 и означает сложение (Addition) типа регистр-регистр (Register) для регистров 1 и 2. Теперь программа имеет более удобочитаемую форму, но ее не понимает ЭВМ. Поэтому понадобилось создать специальную программу транслятор, который преобразует программу с языка ассемблера на МЯ. Эта проблема потребовала, в свою очередь, глубоких научных исследований и разработки различных теорий, например теорию формальных языков, которые легли в основу создания трансляторов. Практически любой класс ЭВМ имеет свой язык ассемблера. На сегодняшний день язык ассемблера используется для создания системных программ, использующих специфические аппаратные возможности данного класса ЭВМ.


Язык программирования служит двум связанным меж ду собой целям :

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

выполнены, и формирует концепции, которыми пользуется программист,

размышляя о том, что делать. Первой цели идеально отвечает язык, который

настолько "близок к машине", что всеми основными машинными аспектами

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

образом. Второй цели идеально отвечает язык, который настолько "близок к

решаемой задаче", чтобы концепции ее решения можно было выражать

Связь между яз ыком, на котором мы ду маем, прог раммируем, и

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

воображении, очень близка. По этой причине ограничивать свойства языка

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

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

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

концептуальных инструментов, если они не отвечают задаче, то их просто

игнорируют. Например, серьезные ограничения концепции указателя

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

реализовать структуры, указатели и т.п. Хорошее проектирование и

отсутствие ошибок не может гарантироваться чисто за счет яз ыковых

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

работать с программами, написанными на его родном машинном языке.

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

компьютеров, но все они суть разновидности одной идей простые операции

производятся со скоростью молнии на двоичных числах.

Персональные компьютерыF IBMF используют машинный язык

микропроцессоров семейства 8086, т.к. их аппаратная часть основывается

Можно писать программы непосредственно на машинном языке, хотя

это и сложно. На заре компьютеризации (в начале 1950-х г.г.), машинный

язык был единственным языком, большего человек к тому времени не

придумал. Для спасения программистов от сурового машинного языка

программирования, были созданыFязыки высокого уровняF(т.е. немашинные

языки), которые стали своеобразным связующим мостом между человеком и

машинным языком ком пьютера. Языки высокого уровня работают через

трансляционные программы, которые вводят "исходный код" (гибрид

английских слов и математических выражений, который считывает машина),

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

команды, которые даются на м ашинном языке. Существует два основных

вида трансляторов: интерпретаторы, которые сканируют и проверяют

исходный код в один шаг, и компиляторы, которые сканируют исходный код

для производства текста программы на машинном языке, которая затем

Язык программирования – ф ормальная знаковая система,

предназначенная для записи ко мпьютерных программ. Язык

программирования определяет набор лексических, синтаксических и

семантических правил, задающих внешний вид программы и действия,

которые выполнит исполнитель (компьютер) под ее управлением.

Со времени созданияFпервых программируемых машин Fчеловечество

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

программирования.FКаждый год их число пополняется новыми. Некоторыми

языками умеет пользоваться только небольшое ч исло их соб ственных

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

Профессиональные программисты иногда применяют в своей работе более

программирования. К наиболее распространённым утверждениям,

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

Функция: язык программирования предназначен для написания

компьютерных программ, которые применяются для передачи

компьютеруFинструкцийFпо выполнению того или иного Fвычислительного

процессаFи организации управления отдельными устройствами.

Задача: язык программирования отличается отFестественных

языковFтем, что предназначен для передачи FкомандFи данных от человека

компьютеру, в то время, как естественные языки используются для общения

людей между собой. В принципе, можно обобщить определение «языков

руководства к действию; тогда как человеческие языки служат также для

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

специальные конструкции для определения и манипулирования структурами

Следующий шаг был сделан в 1954 году, когда был создан первый язык

высокого уровня — FФортран (англ. FORTRAN – FORmula TRANslator) .

Языки высокого уровня имитируют естественные языки, используя

некоторые слова разговорного языка и общепринятые математические

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

писать программы до нескольких тысяч строк длиной. Однако легко

понимаемый в коротких программах, этот язык становился нечитаемым и

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

проблемы пришло после изобретения языков структурного

программирования (англ.structured programming language), таких как FАлгол

Структурное программирование предполагает точно обозначенные

управляющие структуры,Fпрограммные блоки, отсутствие инструкций


безусловного перехода (GOTO), автономные подпрограммы, поддержка

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

Также создавалисьFфункциональныеF(аппликативные) языки (Пример:

Lisp — анг л. LISt Process ing, 1958) и логические Fязыки (пример Prolog F

Хотя структурное программирование, при его использовании, дало

выдающиеся результаты, даже оно оказывалось несостоятельным тогда,

когда программа достигала определенной длины. Для того чтобы написать

более слож ную (и длинну ю) программу, нужен был новый подход к

Первые Fпрограммы Fзаключались в установке ключевых

переключателей на передней панели вычислительного устройства. Очевидно,

таким способом можно было составить только небольшие программы.

С развитием компьютерной техники появился Fмашинный язык, с

помощью которого FпрограммистFмог задавать команды, оперируя с ячейками

памяти, полностью используя возможности машины. Однако использование

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

особенно это касается ввода-вывода. Поэтому от его использования

Например, для организации чтения блока данных с гибкого диска

программист может использовать 16 различных команд, каждая из которых

требует 13 параметров, таких как номер блока на диске, номер сектора на

дорожке и т. п. Когда выполнение операции с диском завершается,

контроллер возвращает 23 значения, отражающие наличие и типы ошибок,

которых представляет собой одно элементарное действие для центрального

процессора, такое, например, как считывание информации из ячейки памяти.

Каждая модель процессора имеет свой собственный набор машинных

команд, хотя большинство из них совпадает. Если Процессор F А полностью

понимает языкFПроцессора Б,Fто говорится, чтоFПроцессор АFсовместим с

Процессором Б. Процессор Б будет называться не совместимым с

Процессором АFеслиFАFимеет команды, не распознаваемые FПроцессором Б.

На протяжении 60-х годов запросы на разработку программног о

обеспечения возросли и программы стали очень большими. Люди начали

понимать, что создание программного обеспечения – гораздо более сложная

задача, чем они себе представляли. Это привело к тому, что было

разработаноFструктурное программирование. С Развитием структурного

программирования следующим достижением были FпроцедурыFиFфункции. К

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

объявить как функцию или процедуру и в выполнении программы просто


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

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

которым перешли к классам. Структуры – это составные типы данных,

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

нее входит: часы, минуты, секунды. Программист мог создать структуру

время и работать с ней, как с отдельной структурой. FКлассF– это структура,

которая имеет свои переменные и функции, которые работают с этими

переменными. Это было очень большое достижение в области

программирования. Теперь программирование можно было разбить на

классы и тестировать не всю программу, состоящую из 10’ 000 строк кода, а

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

Доисторическая эра

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

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

С другой, первый язык программирования в современном представлении зародился лишь во время Второй мировой войны на релейной машине Z4 немецкого изобретателя Конрада Цузе. Его название Планкалкюль (нем. Plankalkül — исчисление планов), и это был полноценный язык высокого уровня, поддерживающий условные операторы, арифметические операции, массивы, циклы, исключения и утверждения. Доподлинно известно, что в конце 40-х годов Планкалкюль позволял ЭВМ решать шахматные задачи.
Изобретение Цузе могло бы изменить ход истории, однако итоги войны и усилия американцев по популяризации собственного машинного языка отложили полноценное явление миру Планкалкюля вплоть до 1972 года.



Z4 в Немецком музее, Мюнхен

Языки для компьютеров

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

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

Качественный скачок произошёл после изобретения транзистора и первых доступных компьютеров. Это побудило в период с 1954-1957 году компанию IBM активно работать над разработкой популярного коммерчески языка Fortran (от англ. Formula и Translation).

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

Далее началось бурное развитие программирования: практически одновременно появились Algol, алгоритмический высокоуровневый язык, активно использовавшийся в СССР и Европе, LISP и COBOL.

Языки для народа

Но по-настоящему массовым программирование стало с появлением языка BASIC в 1964 году. Преподаватели Дартмутского Колледжа Джон Кемени и Томас Курц разработали его для обучения студентов основам программирования ЭВМ.

BASIC был алгоритмическим языком, для его создателей было важно не быстродействие и эффективность, а легкое понимание. Тем не менее BASIC быстро обрёл популярность в реализациях от Microsoft и Apple. Но не все были им довольны. По мнению противников языка простота и бесструктурность ранних версий BASIC поощряли применение порочных и опасных методик разработки.

Кайнозой

В 1960-х годах компания Bell Labs всерьёз взялась за разработку операционной системы Unix для своих миникомпьютеров. Первые ОС были написаны на ассемблере, но эксперимент оказался неудачным.
Потом в алфавитном порядке Кеном Томпсоном и Деннисом Ритчи был специально разработан интерпретируемый язык B (Би), но и в этот раз результат оставлял желать лучшего.

В другом полушарии на останках языка Algol-68 Никлаус Вирт разработал Pascal. Цель он преследовал ту же самую, что и BASIC — простота в обучении и наглядность выполняемых операций.

Несмотря на внешнюю незамысловатость, Pascal оказался крайне эффективным языком не только в деле обучения, но и в серьезной разработке. Он остаётся крайне востребованным как в школах, так и в мире больших приложений: Total Commander, WinRAR, ранние версии Skype и Nero Burning ROM были написаны на Pascal.

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

Современность

Впрочем, теми же самыми характеристиками можно описать и Ruby, увидевший свет в 1995 году, с поправкой на то, что у Юкихиро Мацумото было 2 года, чтобы подумать, чем его язык может стать лучше современников.

Развитие интернета в конце XX века требовало более качественных языков обработки текста и данных. Так на свет появились HTML, PHP, CSS и JavaScript, без которых сегодня очень трудно представить веб-разработку.

Вместе с этим появился и Java — объектно-ориентированный язык, использующий виртуальную машину JVM. Это обеспечивает языку практически полную независимость от машины, на которой производится запуск. Совокупность этих факторов и популярность смартфонов c ОС Android позволяет Java возглавлять список самых популярных языков по версии Tiobe, а нам — рекомендовать его начинающим разработчикам в качестве первого или основного.

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

Будущее

Уже сейчас появляются языки программирования, которые можно назвать языками сверхвысокого уровня. Они предназначены не для написания прикладных программ, а для обработки больших массивов данных и статистики. В их числе R, MATLAB и Julia.
Можно предполагать, что в будущем появятся человекоориентированные языки, на которых написать программу будет не сложнее, чем пост в ЖЖ. С другой стороны, квантовые компьютеры потребуют свой особый, квантовый ассемблер.

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

Читайте также: