Файл: Классификация языков программирования высокого уровня (Введение в языки программирования высокого уровня).pdf
Добавлен: 30.03.2023
Просмотров: 258
Скачиваний: 2
3.формат предложений достаточно гибок и удобен для использовани, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных;
4. требуемые операции задаются в удобном для человека виде, например, с помощью общепринятых математических обозначений;
5.для задания операндов операций, используемым в алгоритме данным присваиваются уникальные имена, выбираемые программистом, и ссылка на операнды производится, в основном, по именам;
6.в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных.
Из вышеперечисленного следует, что алгоритмический язык в значительной мере является машинно-независимым.[4]
Для описания синтаксиса алгоритмического языка используется специальный метаязык, позволяющий в компактной форме отразить все особенности конкретных конструкций алгоритмического языка. Мы воспользуемся для этих целей металингвистическими формулами Бэкуса-Наура (язык БНФ).
При описании синтаксиса языка используются некоторые его понятия: определив простейшие из них, с их помощью можно уже достаточно просто определить более сложные понятия и т.д., пока не будет определено наиболее сложное понятие – программа. С точки зрения синтаксиса каждое определяемое понятие (но не основной символ) есть метапеременная языка БНФ, значением которой может быть любая конструкция (т.е. последовательность основных символов) из некоторого фиксированного для этого понятия набора конструкций.[4]
Для каждого понятия языка должна существовать единственная метаформула, в левой части которой указывается определяемое понятие (метапеременная языка БНФ), а правая часть формулы тем или иным способом задает все множество значений этой метапеременной (все допустимые конструкции, которые объединяются в это понятие). Все метапеременные заключаются в специальные угловые скобки < и >, которые не принадлежат алфавиту определяемого языка, т.е. являются метасимволами, например, <выражение>, <число> и т.д. Основные же символы языка указываются непосредственно. Левая и правая части метаформулы разделяются специальным знаком : : =, смысл которого можно интерпретировать как «по определению есть». Обычно в качестве значений метапеременной может приниматься любая из нескольких допустимых конструкций. Все допустимые конструкции указываются в правой части формулы и разделяются метасимволом «|», смысл которого можно передать словом «или» («либо»). Кроме перечисления всех возможных значений метапеременной в правой части метаформулы может быть указано правило построения значений. Турбо Паскаль — это не только язык и транслятор с него, но еще и операционная оболочка, обеспечивающая пользователю удобство работы. Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. С помощью встроенного в систему текстового редактора можно формировать в памяти любые тексты, не только программы на Паскале. В частности, это могут быть исходные данные решаемой задачи в текстовой форме. Текст программы, созданный редактором, можно сохранить на диске в виде файла с именем следующего формата. В Паскале заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера. Программы на Паскале, всегда компилируются. Компиляция является аналогом полного предварительного перевода; интерпретация — аналогом синхронного перевода. Паскаль как учебный язык структурного программирования.идентификатор — это любая последовательность букв и цифр, начинающаяся с буквы. В Турбо Паскале к буквам приравнивается также знак подчеркивания. Строчные и прописные буквы в идентификаторах и служебных словах не различаются. Например: max, MAX, MaX и mAx — одно и то же имя.
Длина идентификатора может быть произвольной, но значащими являются только первые 63 символа.
Комментарии. Следующие конструкции представляют собой комментарии и поэтому игнорируются компилятором:
(любой текст, не содержащий символ «}» }
(* любой текст, не содержащий символы «*)»*)
Буквы русского алфавита употребляются только в комментариях, в литерных и текстовых константах.
Глава 4
История развития основных языков программирования
Давно, когда еще не было современных языков программирования, программисты имели дело непосредственно с машинным кодом. Естественно, такие люди очень ценились, и к ним предъявлялись огромные требования. Но все-таки программы того времени были достаточно простые из-за ряда причин, таких, как сложность машинного кода, его отладки и, конечно, самой примитивности вычислительных машин. Первым шагом в компьютерной цивилизации был переход к Ассемблеру.
1. Assembler (Ассемблер)
Может показаться, что это событие не было из ряда вон выходящим: как были машинные коды, так и остались. Однако это не так. Да, программирование в машинных кодах осталось, но она стало символическим кодированием машинных команд. Это был огромный шаг вперед, теперь программисту вовсе не нужно было разбираться в программировании команд на аппаратном уровне. В программировании на Ассемблере стало возможным использование меток, что облегчало в значительной мере отладку программ. Появилась возможность разработки целой серии вычислительных машин с одинаковой или сходной системой команд, что можно назвать первым подобием переносимости кода. Ассемблер нес в себе еще одну революционность для программирования: появилось два представления программ на нем: в машинных кодах и в чистом, откомпилированном виде. Но, по мере развития Ассемблера, его постоянного усложнения, дизассемблирование, т.е. перевод из одного представления программы в другой, становилось все более трудным делом. Надо отметить, что в итоге автоматическое дизассемблирование стало невозможным - для этой цели стали появляться специальные программы-дизассемблеры [11].
2. Lisp (Лисп)
С 50-х годов специалисты по ИИ (ИИ - искусственный интеллект) искали язык, пригодный для манипулирования понятиями, выраженными словами и фразами на естественном языке. Первым результатом этих поисков явилось семейство языков под названием IPL, от (Information Processing Languages — языки обработки информации). Оно было создано пионером ИИ Алленом Ньюэллом и его сотрудниками. Вначале работа велась в «Рэнд корпорейшн», а затем в Технологическом институте Карнеги (позднее Карнеги—Меллона) в Питтсбурге, бастионе исследований по ИИ.
Центральной идеей IPL было понятие списка.
Представляя данные в виде списка слов и других символов, программист мог связать понятия в памяти компьютера примерно таким же образом, как, по мнению специалистов по ИИ, организован человеческий мозг.
Понятие списка интересовало и другого выдающегося члена тесного сообщества исследователей ИИ — Джона Маккарти, блестящего и разностороннего математика. В 1958г., когда при его помощи организовалась лаборатория по ИИ при МТИ, Маккарти начал работу над языком высокого уровня, в котором понятие списка сочеталось с системой обозначений, заимствованной из экзотической области математики — так называемого лямбда-исчисления. Введенное в 1931 г. математиком и логиком Алонзо Черчем, это исчисление оперирует только тремя элементами: символами, представляющими переменные и константы, скобками для группировки символов и обозначениями функций, выражаемыми греческой буквой "Лямбда". Маккарти назвал свой язык LISP от List Processing — обработка списков .
3. FORTRAN (Фортран)
FORTRAN - это первый язык программирования высокого уровня, который получил признание и стал широко применяться. В своем исходном варианте FORTRAN был разработан фирмой IBM в 1957 г. как язык для работы на компьютерах IBM 704. В это время программисты, привыкшие к использованию языка ассемблера, сомневались в возможности использования языков высокого уровня. Наиболее серьезным аргументом была малая эффективность выполнения кода, получающегося в результате трансляции программ, написанных на этих языках. Первые версии FORTRAN были ориентированы главным образом на обеспечение эффективности выполнения. Первое стандартное определение языка появилось в 1966 г., а затем в 70-х были внесены существенные изменения, которые привели к появлению FORTRAN 77, и в 90-х - FORTRAN 90.[1]
Страуструп руководствовался тем принципом, что все дополнения, привнесенные им в язык C, не должны понизить его эффективность и стать причиной замедления работы программ. Разработанные им расширения языка C, известные под названием C with Classes (C c классами), содержали основную структуру классов, входящую в современный C++. К 1982г. его язык C с классами имел скромный успех в пределах AT&T Bell Telephone Laboratories, и Страуструпу, уподобившемуся гуру, приходилось решать все вопросы, связанные с поддержкой этого языка. В конце концов, эта обязанность стала для него слишком обременительной, и он пришел к выводу, что у него есть только две возможности:
1. Прекратить поддержку языка C с классами.
2. Используя весь накопленный опыт, разработать на основе C с классами новый (более качественный) язык, который имел бы коммерческий успех.
Он выбрал второй вариант и усовершенствовал язык C с классами, добавив новые возможности, а также устранив некоторые несоответствия, имевшиеся в этом языке.
В 1984г. результат его труда получил новое название. Одни называли С с классами новым С, а другие называли стандартный С старым, или простым С. Некоторое время использовалось название С84, а затем Рик Маскитти из Bell Labs предложил название C++. В этом названии используется обозначение ++ операции увеличения на единицу в языке С, которое в данном случае означает "следующий", "последователь". В основном разработка языка C++ была закончена к 1986г., а в июне 1989г. была выпущена вторая версия. В 1989г. в Американском национальном институте стандартов (ANSI) был создан комитет, который к 1994г. выпустил черновой стандарт языка, а через два года - его полный стандарт .
4. Ada (Ада)
История. Язык Ада был разработан при финансовой поддержке Министерства обороны США. В 1978 году был объявлен конкурс на язык программирования, который бы отвечал следующим требованиям:
- возможность использовать неоднородные структуры;
- разделение памяти;
- реализация неявных функций преобразования типов.
Это конкурс завершился появлением в июле 1980г. спецификаций языка Ада. Этот язык был разработан международным коллективом программистов фирмы Honeywell и ее французского филиала Cii-Bull, которым руководил Ж. Ишбиа. Язык был назван в честь Августы Ады Лайвейс, считающейся первой программисткой, дочери английского поэта Байрона.
Окончательная версия спецификаций языка Ада появилась в феврале 1983г. Она послужила основой для нового стандарта Министерства обороны США и стандарта Американского национального института стандартов (ANSI).
Конечная версия международного стандарта ISO 8652:1987 была опубликована в 1987 году. Структура Ады очень похожа на Паскаль. Синтаксис большинства операторов и описаний практически идентичен синтаксису Модулы, хотя она появилась практически в одно время с Адой.
Ада продолжает позиционироваться как хорошее средство для разработки больших программных комплексов. МО США, учтя отсутствие объектов, в соответствии с современными требованиями к технологии разработки программ, выработало новый стандарт языка ISO/les 8652:1985 (E). Он описывает версию языка Ada95. Самое интересное, что эта версия является первой в мире объектно-ориентированной системой программирования, на которую был введен международный стандарт. Впоследствии МО решило использовать “Ada”, как свой внутренний сертифицированный знак [2,11].
5. Oberon (Оберон)
Язык Оберон был создан в 1987 году Никлаусом Виртом, профессором Института компьютерных систем Федерального технического университета (ETH, Цюрих, Швейцария), автором языков Паскаль и Модула-2.
Язык носит имя спутника планеты Уран.
Оберон отличается от Модулы-2 отсутствием многих необязательных конструкций; добавлены же в язык средства объектно-ориентированного программирования - расширяемые записи. Оберон - это самый простой универсальный язык. При этом, продолжая традицию Паскаля и Модулы-2, он обеспечивает строгий контроль на этапе трансляции, способствуя созданию надежных программ.
В 1992 году были приняты расширения языка Оберон, предложенные Ханспетером Мёссенбёком. Расширенный язык получил название Оберон-2. Основное нововведение - связанные с типами процедуры. Сейчас Оберон-2 является фактическим стандартом языка [2].
6. Java (Джава, Ява)
История. Разработка языка Java началась в 1991 г. Группа программистов (Green Team) из компании Sun Microsystems под руководством Джеймса Гослинга занималась разработкой языка для использования в цифровых бытовых устройствах (Oak). Летом 1992 г. была создана рабочая версия, но группа опередила свое время, так как в тот момент промышленность еще не была готова к использованию этого языка.
В 1993 г. появился web-браузер Mosaic, что привело к распространению Интернета, вышедшего из стен академических лабораторий, по всему миру. Программисты из группы Green Team сразу же осознали, какую роль может сыграть созданный ими язык для расширения возможностей web-браузеров. При помощи браузера Mosaic, в котором использовались адреса URL для навигации в сети и код HTML для отображения web-страниц, пользователь мог отыскивать нужные ему страницы и загружать информацию с удаленных сайтов.[5]
В 1994 г. компания Sun разработала браузер Hotjava, чтобы продемонстрировать возможности содержащегося в нем виртуального компьютера Java. И наконец, 23 мая 1995 г. Марк Андерсен (Marc Anderssen), один из основателей компании Netscape Communication, которая в то время контролировала 70 % рынка в области web-браузеров, объявил о включении виртуального компьютера Java в браузер Netscape. С этого момента язык Java приобрел значительную популярность. Он все чаще заменяет С и C++ в качестве первого языка программирования, изучаемого и используемого студентами .
Краткий обзор языка. Можно сказать, что язык Java является достаточно простым языком: он имеет ту же ясную структуру, что и C++, и при этом лишен той неуклюжести, которая свойственна С. Тем не менее эффективность выполнения программ на Java несколько ниже, так как многие из структур языка нуждаются в проверке во время выполнения программы. К тому же, поскольку программы на Java чаще всего интерпретируются как апплеты в виртуальной машине Java, скорость выполнения программ на Java несколько ниже, чем скорость выполнения программ, написанных на компилируемых языках. Но при оценке Java надо помнить об основной области применения этого языка: поскольку он создавался для web-браузеров, потери в скорости выполнения фактически не влияют на результат. Причина этого в том, что скорость передачи информации по сети и скорость обработки и отображения информации на мониторе компьютера все равно ниже скорости работы компьютера пользователя. Поэтому большая часть времени тратится на ожидание очередной порции информации, запрошенной на сервере [12].