Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Begin

write('vvedite x=');

read(x);

y:=sqrt(x);

write('znachenie funkcii ravno', y);

end.

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

Следующий шаг трансляции – компоновка – заключается в подключении к исходному объектному модулю объектных модулей соответствующих подпрограмм. Другими словами, на место процедуры write помещается подпрограмма, осуществляющая процедуру вывода данных на экран дисплея. Таким образом, после компоновки возникает абсолютный модуль, намного превышающий по объему размер исходного текста программы. Он и является исполняемым компьютером после его запуска.

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

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

буквы: AaBbCcDdEeFf и т. д.

Цифры: 0 1 2 3 4 5 6 7 8 9

знаки арифметических операций: * / + -

разделители:.,;: () [ ] { }

служебные слова: begin, end, if, then, else, for, next и т. д.

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

Пример:

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

Например, в Паскале текст

+ - *

может встречаться либо внутри текстовой константы (т. е. в апострофах), либо внутри комментариев

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

Пример:

Исходная программа перед выполнение обязательно проверяется не нарушены семантические правила: например, ищутся ошибки такого рода: считается сколько раз употребляются слова begin и end. Если их число не совпадает, то выдается ошибка. Или например семантический анализ подразумевает такую проверку: объявлена ли переменная (для языка где это требуется).

Т. е. семантика – смысловая сторона языка

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

Операторы делятся на:

Ø основные (базисные) – к ним относятся «оператор присвоения», «условный» и «безусловный переход»

Ø неосновные (производные) - «составной оператор», «оператор выбора», «оператор цикла»

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

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

Кроме того, величины классифицируются на простые и структурированные. Простая величина в каждый момент может иметь не более одного значения. Ей соответствует одна ячейка памяти. Структурированная величина, имея одно имя, может иметь сразу несколько значений. Эти значения представляют собой элементы (компоненты) величины. Самый известный пример – массив, у которого элементы различаются по индексам (номерам): например, массив A[i], в котором все элементы имеют одно имя A, но различаются по индексу i: А[1], А[2], А[3] и т. д.

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

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

Различают два вида языковых процессоров:

Ø интерпретаторы;

Ø трансляторы.

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

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

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

Транслятор с языка высокого уровня называют компилятором.

Революционным моментом в истории языков программирования стало появле­ние системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли, сотрудником Пенсильванского университета. Эта система под названием Short Code являлась примитивным языком программи­рования высокого уровня. В ней программист записывал решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил сим­вол за символом в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система, разработан­ная Дж. Моучли, была, по существу, одним из первых примитивных интерпрета­торов. Ею заинтересовалась одна из сотрудниц его компании – Грейс Мюррей Хоппер, которая посвятила всю свою жизнь компьютерам и программированию. Она вспоминает, что стала «третьим в мире программистом первого в мире боль­шого цифрового компьютера». Г. Хоппер доказала, чего она стоит как програм­мист. Впоследствии она писала: «Я имела то преимущество, что изучала как техни­ку, так и математику, и знала, как работает машина от начала и до конца». Интересна история появления фундаментального термина «отладка», который также впервые ввели Г. Хоппер и ее группа. Однажды жарким летним днем 1945 г. неожиданно произошла остановка компьютера Марк-I (создатель Говард Айкен), на котором работала Хоппер. Обнаружилась неисправ­ность одного реле, контакты которого были заблокированы мотыльком, залетев­шим неизвестно каким образом в помещение вычислительного центра. Вспомина­ет Г. Хоппер: «Когда к нам зашел офицер, чтобы узнать, чем мы занимаемся, мы ответили, что очищаем компьютер от насекомых (debuging)». С тех пор термин «debuging» (отладка) используется в технических процессах тестирования неис­правностей в компьютере, а также в системах программирования.

Уже в 1951 г. Г. Хоппер создала первый в мире компилятор, и ею же был введен сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки – это называется компиляцией» – так Г. Хоппер объясняла происхождение введенного ею термина.

В 1954 г. группа под руководством Г. Хоппер разработала систему, включавшую в себя язык программирования и компилятор, которая в дальнейшем получила название MATH-MATIC. После удачного завершения работ по созданию МАТН-MATIC Г. Хоппер и ее группа принялись за разработку нового языка и компилято­ра, который позволил бы пользователям программировать на языке, близком к обычному английскому. Необходимость появления подобной системы Г. Хоппер объясняла следующим образом: «Существует много различных людей, которым нужно решать разные задачи. Некоторые из них связаны с обработкой символов, другие – с обработкой слов, и им нужны языки другого типа, а не наши попытки превратить их всех в математиков».

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

Fortran

Первый язык программирования высокого уровня под названием Фортран (Fortran – от FORmula TRANslator – пере­водчик формул) был разработан в 1954 году Джоном Бэкусом, работником корпорации IBM в Нью-Йорке. Данное событие, как ты понимаешь, было очень значимым: впервые в истории человечества программист мог отвлечься от разборок со сложными машинными кодами и вздохнуть с облегчением.

Самым главным и принципиальным отличием Фортрана от Ассемблера была концепция подпрограмм. Хотя в наше время это и не в новинку, тогда это было действительно новым. Для разработчиков достигнуть этого стоило небывалых усилий: скажу лишь, что сама работа над компилятором продолжалась более двух лет. В апреле 1957 года компилятор был полностью готов и мог быть использован на машинах IBM-704. Несмотря на это, большинство программистов встретили Фортран недовольно. Они считали гораздо более эффективным и надежным написать небольшой код вручную, чем получить его как часть компиляции. Но время идет, требования к жизни становятся жестче: не обошло это и программирование. Вскоре стало понятно, что компилятор для программиста не враг, а друг, особенно это становится заметно при реализации больших проектов.

Преимуществом Фортрана было и то, что он был достаточно легким для обучения. Вскоре он стал более или менее признан и использовался на шести различных моделях компьютеров фирмы IBM. Но, несмотря на все это, новый язык не был лишен и недостатков, что, в конечном счете, привело к появлению Фортрана II. Одним из основных преимуществ новой версии над старой была способность присоединять программы на ассемблере. Затем создавались еще несколько версий этого языка вплоть до Фортрана версии IV. Этот язык программирования использовался (и используется по сей день) для различных научных расчетов и вычислений. Роль Фортрана была огромна, и одна из них дала понять всем ведущим программистам, что будущее за языками высокого уровня.

Cobol

Вскоре после Фортрана, а именно в 1960 году, был создан язык Кобол (Cobol). Он изначально разрабатывался для создания коммерческих приложений. Даже расшифровывается как Common Business Oriented Language – универсальный язык, предназначенный для бизнеса. Все началось в далеком 1959 году, когда прошла конференция по языкам программирования – CODASYL. Причиной ее созыва была причина создания единого языка для деловых приложений. Что и было реализовано в Коболе. Язык сразу признали достаточно удобным для любой сферы бизнеса, был очень удачен для людей, не особо искушенных в программировании, и, что немаловажно, был машинно-независим. Его популярность заметно увеличилась после выхода в 1962 году улучшенной второй версии языка. Вследствие этого, на нем были написаны многие тысячи коммерческих прикладных программ. Одной из главных особенностей этого языка стала возможность эффективной работы с большими массивами данных, что характерно именно для коммерческих и деловых приложений. В целом, стоит отметить, что, несмотря на многие сходства с Фортраном, этот язык программирования был принят гораздо легче по сравнению с тем же Фортраном.

Попытка создания универсального языка

В начале 1960-х гг. все существующие языки программирования высокого уров­ня можно было пересчитать по пальцам, однако впоследствии их число достигло трех тысяч. Разумеется, подавляющая часть языков не получила сколько-нибудь широкого распространения; в практической деятельности используется не более двух десятков. Разработчики ориентировали языки на разные классы задач, в той или иной мере привязывали их к конкретным архитектурам ЭВМ, реализовывали личные вкусы и идеи. В 1960-е гг. были предприняты попытки преодолеть эту «раз­ноголосицу» путем создания универсального языка программирования. Первым де­тищем этого направления стал PL/1 (Programm Language One), созданный в 1967 г. Затем на эту роль претендовал АЛГОЛ-68 (ALGOL – от ALGOrithmic Language – алгоритмичес­кий язык) (1968 г.). Предполагалось, что подобные языки будут развиваться и совершенствоваться и вытеснят все остальные. Однако ни одна из этих попыток на сегодняшний день не увенчалась успехом (хотя PL/I в усеченных версиях использовали многие программисты).

Языки программирования служат разным целям, и их выбор определяется удоб­ностью для пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера бывают самые разнообразные: вычислительные, эконо­мические, графические, экспертные и т.д. Такая разнотипность решаемых компь­ютером задач и определяет многообразие языков программирования. По всей ви­димости, в программировании наилучший результат достигается при индивиду­альном подходе, исходящем из класса задачи, уровня и интересов программиста. Например: Бейсик широко употребляется при написании простых программ; Фор­тран является классическим языком программирования при решении на ЭВМ ма­тематических и инженерных задач; язык Кобол был задуман как основной язык для массовой обработки данных в сферах управления и бизнеса.

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

Отметим еще один достаточно популярный специализированный язык – Пролог (PROLOG – PROgramming in LOGic), разработанный как язык программирования для создания систем искус­ственного интеллекта.

PL/1 (Programm Language One)

Все той же компанией IBM в 1964 году был разработан новый язык программирования – NPL (New Programming Language). Но, дабы избежать путаницы с той же аббревиатурой у Национальной Физической Лаборатории в Англии (National Physical Laboratory), язык был переименован в PL/1. Целью его разработки ставилось замещение новым языком программирования Фортрана и Кобола в большинстве приложений. До него исключительно все языки программирования, взять тот же Кобол, разрабатывались для какой-либо отдельной области, например, науки. PL/1 же, в отличие от них, был призван использоваться в более широких областях применения. Это было его отличием; отличием вроде бы достаточным, чтобы все сказали о нем: «PL/1 – номер один в мире», но этого не произошло. Вроде бы обладая огромным богатством синтаксических конструкций, универсальностью применения, он мог бы претендовать на это место. Но дело в том, что, несмотря на богатство синтаксиса языка, он был весьма сложным, опять-таки в отличие от предыдущих языков программирования. По этой причине разработка компилятора под него была крайне сложным делом. Поэтому язык всемирно и не распространился, а использовался лишь внутри корпорации IBM.

Basic

В 1963 году Джон Кемени и Томас Курц, сотрудники математического факультета Дармутского колледжа, написали простой и легкий в изучении язык, который назвали Бейсик (Basic Beginner's All-purpose Symbolic Instruction Code – универсальный код символических инструкций для начинающих).

Язык задумывался, в первую очередь, как средство обучения и как первый изучаемый язык программирования. Хотя, надо сказать, теперь на эту роль больше отводится Паскаль. В конце 1975 г. был создан первый интерпретатор Бейсика. Его создали два программиста-любителя Дик Уиппл и Джон Арнольд. В этом же году в историю мирового компьютерного программирования вмешивается всеми уважаемый и ругаемый Билл Гейтс, написавший вместе со своим другом Полом Алленом одну из версий Бейсика. В дальнейшем этот язык программирования зарекомендовал себя как действительно легкий для восприятия новичками и обладающий многими возможностями и для профессионалов. Было создано несколько мощных реализаций BASIC, поддерживающих самые современные концепции программирования, отличающиеся наглядностью и простотой, например, всем известный Microsoft Visual Basic.

Pascal

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

Спустя какое-то время Паскаль стараниями Андерса Хейлсберга превратился в мощную профессиональную систему программирования – Turbo Pascal. Эта система стала настолько популярной во всем мире, что выходят несколько ее версий вплоть до 7.0

C и C++

В 1972 году в фирме Bell Labs стараниями Д. Ритчи был разработан язык программирования – Си. Первоначально он создавался как язык для разработки Unix-систем. Cи часто называют «переносимым ассемблером», так как он позволял и позволяет работать с данными практически так же эффективно, как и при работе с ассемблером. Именно этим и объясняется его популярность и поныне. В 1977 г. началась работа по созданию машинно-независимой версии транслятора с языка Си с целью облегчения его переноса в новые окружения. Результатом этого явилось появление совместимых по входному языку трансляторов с Си для 15 различных типов компьютеров. Си обладает двойственностью: с одной стороны, это сравнительно низкоуровневый язык, позволяющий учитывать каждую деталь алгоритма для достижения максимальной производительности. С другой – он и высокоуровневый язык, который учитывает в полной мере особенности архитектуры компьютера, что, в конечном счете, повышает эффективность программирования.

Первые версии языка Си ++ были разработаны сотрудником все той же компании Bell Labs Бьярном Страуструпом. Произошло это в 1986 году. Он добавил в язык C объектно-ориентированные черты и исправил некоторые ошибки и неудачные решения предыдущей версии языка. Первыми его пользователями стали сами сотрудники Bell Labs. В 1993-м впервые был реализован коммерческий транслятор, и сам язык был назван «С++». Первым транслятором языка был препроцессор cfront, транслирующий программу на Си++ в эквивалентную программу на Си. Именно с этого времени появляются многочисленные книги по Си ++, и он получает очень широкое распространение. Могу сказать, что C++ продолжает развиваться и совершенствоваться даже в наше время. Сейчас он считается основой для разработки современных больших и сложных проектов. Конечно, как и у всего существующего в природе, у него имеются и слабые стороны, вытекающие из требований эффективности.

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

Assembler

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

Именно с этой версии он становится не только быстрым компилятором, но и обладает возможностью разбиения программы на части, компилируемые по отдельности. К осени 1988 года появилась версия 5.0 с еще более развитым программным окружением. Вот тут-то возможности Паскаля показали себя в полной мере: Borland Pascal и используемый в Delphi язык Object Pascal основываются на Turbo Pascal и развивают его идеи. Дельфи по сути является компилятором языка Pascal. Первая версия Delphi стала первым инструментом для разработки Windows-приложений, объединившая в себе надежный компилятор, визуальную среду для программиста и очень мощные возможности языка по работе с базами данных. Спустя год после выхода Delphi 1 был разработан Dephi 2 для 32-битной системы. Как и у всех удачных языков, у Дельфи появлялись все новые и новые версии, одна из последних на сегодняшний день – 6.0. Таким образом, Delphi является очередным шагом в эволюции компиляторов Паскаля.




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 610; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.026 сек.