Файл: Современные языки программирования (Теоретические основы языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 156

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

Для передачи, хранения и обработки информации люди используют различные устройства. В начале это были механические устройства, например суммирующая машина Паскаля, которая была создана в середине XVIIвека и могла производить простейшие вычисления. В XIXпоявлялись более сложные механические устройства, такие как разностная машина Чарльза Беббиджа (рис. 1), которая выполняла действия в соответствии с инструкцией, записанных на перфокартах, которые были первыми носителями данных и программ. Перфокарта представляет собой картонную карточку, в которой в определенных местах могут быть сделаны отверстия [2].

Рисунок 1. Разностная машина Ч. Беббиджа

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

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

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

Для того, чтобы упростить процесс разработки программного обеспечения уже в 1950 году был создан язык Acceмблер. Этот язык значительно упростил создание новых программ и доработки имеющихся. В этом языке для команд, которые раньше записывались в машинном коде были введены осмысленные названия. Например, команда ADR[2]для получения адреса переменной.


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

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

Таблица 1 - Достоинства и недостатки машинно-зависимых языков программирования

Достоинства

Недостатки

Скорость выполнения

Зависимость от архитектуры процессора

Сложность написания программ

Сложность тестирования и отладки

Следующее поколение языков программирования характеризуется независимостью языка от конкретных аппаратных особенностей компьютера. Это поколение называется языками программирования высокого уровня. Первый язык высокого уровня был создан в 60-х годах группой программистов под руководством Джона Бэкуса из IBM. Язык получил название FORTRAN, что является сокращением от FORmulaTRANslator(переводчик формул)[2].

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

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

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


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

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

Рисунок 2. Циклическая часть разработки ПО

Кодирование

Тестирование

Отладка

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

Уже через 3 года после выхода Фортрана появились версии компиляторов языка для 4 видов компьютеров IBM.Вскоре Fortranстал первым широко распространенным языком программирования высокого уровня[3].

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

Джон Кемени и Томас Курц, сотрудники математического факультета Дармутского колледжа, написали простой и легкий в изучении язык, который назвали Бейсик (BasicBeginner'sAll-purposeSymbolicInstructionCode— универсальный код символических инструкций для начинающих).

В конце 1975 г. Был создан первый интерпретатор Крошки-Бейсика, состоящий примерно из 20 страниц восьмеричного кода. Его создали два программиста-любителя Дик Уиппл и Джон Арнольд. В США выпускался журнал “Dr. Dobb's Journal of computer Calisthenics & Orthodonta: Running Light without Overbyte”, посвященный исключительно Крошке-Бейсику. В это же время изготовитель “Альтаира” фирма MITS (Micro Instrumentation and Telemetry Systems) начала продавать собственную версию языка Бейсик. Эту версию в 1975 г. написал первокурсник Гарвардского университета Бил Гейтс и его друг Пол Аллен, молодой программист фирмы “Хониуэл”.

Эпоха Крошки-Бейсика завершилась в конце 70-х годов. Микрокомпьютеры выпускались теперь в полностью собранном виде, изготовители встраивали интерпретаторы версий Бейсика непосредственно в ПЗУ компьютера. Вскоре наибольшую популярность завоевал М-Бейсик, с продажи которого Гейтс и Ален начали деятельность созданной ими компании Microsoft Corporation. На протяжении многих лет Кемени и Курц периодически пересматривали первоначальную версию Бейсика и даже заменили оператор GOTO более сложными управляющими структурами.


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

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

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

В Алголе появилось представление о программе не как о свободной последовательности команд, а как о блочной структуре, состоящей из чётко описанных и отделённых друг от друга частей. Основной блок программы на Алголе — это сама главная программа. Она содержит свою исполняемую часть, заключённую в блок, ограниченный парой ключевых слов begin и end, а также описания подпрограмм. Каждая подпрограмма — это программа в миниатюре, имеющая собственные, описанные внутри неё данные, однозначно определённый интерфейс в виде имени и списка формальных параметров, и блок кода.

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

Были выделены структурные управляющие конструкции: ветвления, циклы, последовательные участки, исполняющие условно или многократно вложенные наборы операторов, также ограниченные теми же ключевыми словами begin и end.

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

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

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


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

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

Кроме того, язык Си стал основой для создания одного из самых популярных современных языков программирования C++.

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

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

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

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

Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.