Методика по языкам программирования

Классификация и понятие языков программирования. Алгоритмы, трансляторы, язык Ассемблера. Проблемно-ориентированные языки программирования: fortran, algol, cobol. Специализированные языки: lisp, prolog. Современные языки высокого уровня: basic, pascal.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 28.05.2010
Размер файла 56,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Методика по языкам программирования

Оглавление

Введение

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

Алгоритмы

Понятие языка программирования

Трансляторы

Язык Ассемблера

Проблемно-ориентированные языки программирования

FORTRAN

ALGOL

COBOL

PL\1

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

Lisp

Prolog

Современные языки высокого уровня

BASIC

PASCAL

События и факты

Введение

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

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

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

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

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

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

Языки высокого уровня в свою очередь подразделяются на языки процедурного (или императивного) и эвристического декларативного стиля программирования (языки искусственного интеллекта).

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

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

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

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

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

Для повышения эффективности программирования используется разбиение больших программ на менее крупные, автономная их разработка и объединение перед выполнением (или в процессе его).

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

Программа-компилятор состоит из трех основных модулей: анализатора, генератора и конструктора.

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

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

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

Лексический анализ, синтаксический анализ, генерирование команд и конструирование управляющих предложений для редактирования составляют фазы этапы трансляции. Трансляция может выполняться за один или более проходов. Почти все ПЭВМ оснащены компиляторами и интерпретаторами языков BASIC, PASCAL, C, PROLOG и ассемблерами, хотя подавляющее большинство владельцев персональных компьютеров используют готовые программы и не занимаются разработкой или модификацией программного обеспечения.

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

Алгоритмы

Понятие алгоритма является одним из основных понятий математики и вычислительной техники. Алгоритм - это точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий. Такое описание называется формальным.

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

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

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

В качестве второго примера рассмотрим алгоритм нахождения всех простых чисел, меньших заданного числа N. Этот алгоритм был предложен Эратосфеном около 250 году до н.э. и носит название «решето Эратосфена». Идея этого алгоритма заключается в вычёркивании всех чисел, кратных простым числам, причём не вычеркнутыми остаются только числа, не кратные ни одному числу, предшествующему им, т.е. простые числа.

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Начать

Выписать диапазон N чисел;

Исключить единицу;{не простое}

Для a:= от 2 до целой части vN выполнить,если a не исключено, то исключить числа, кратные a;

Закончить.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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

В качестве следующего примера рассмотрим «алгоритм Эвклида», с помощью которого решается следующая задача: для двух заданных натуральных чисел a и b найти их общий наибольший делитель. Алгоритм поиска наибольшего общего делителя (НОД) имеет следующий вид.

Начать

Пока a b выполнить

начать

Если a < b, тоначать c: = a; a: = b; b: = c;закончить;

r: = a - b; {r: = |a - b|}

a: = b;

b: = r;

закончить {цикл};

НОД: = a;

Закончить.

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

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

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

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

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

Понятие языка программирования

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

Написать программу в машинном коде весьма сложно, причем эта сложность резко возрастает с увеличением объема программы и трудоемкости решения нужной задачи. Условно можно считать, что машинный код приемлем, если размер программы не превышает нескольких десятков байт, и нет потребности в операциях ручного ввода/вывода данных.

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

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

Процесс поиска ошибок в программе называется тестированием, процесс устранения ошибок - отладкой.

Трансляторы

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

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

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

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

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

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

Язык Ассемблера

Процесс написания любой программы состоит из следующих этапов:

Постановка задачи;

Выбор метода решения;

Разработка алгоритма;

Составление блок-схемы алгоритма;

Кодирование программы.

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

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

Человек лучше воспринимает содержательные обозначения и с трудом - числовые коды, используемые для кодирования команд и данных;

Представление различных констант в шестнадцатеричном виде очень трудоёмкая работа;

Необходимо задать адреса каждому элементу программы;

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

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

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

Пример символического языка программирования - язык Ассемблера.

Программа на языке Ассемблера называется также исходным модулем, результат работы транслятора - объектным модулем, а результат работы Редактора - абсолютным модулем.

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

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

Символические обозначения кодов операций;

Символические адреса элементов программы;

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

Автоматическое выравнивание на границы.

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

Проблемно-ориентированные языки программирования

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

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

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

Не вызывает сомнения, что запись необходимых действий в виде формулы, например

Y=A+B/X,

значительно проще и нагляднее последовательности команд, необходимых для вычисления по этой формуле:

LE0,B

DE0,X

AE0,A

STE0,Y

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

Этот путь оказался перспективным, и с 1954 года начали появляться языки программирования, более близкие к естественному человеческому языку, на котором описываются задачи. Такие языки предоставляли программисту удобные средства для записи программ, не зависящие от того, на какой машине будут затем выполняться программы, и поэтому называются проблемно-ориентированными языками программирования, или языками высокого уровня.

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

Язык Ассемблера обычно используется, когда в программе нужен нестандартный ввод-вывод информации, а также, если эффективность программы на языке высокого уровня не удовлетворяет пользователя.

Было разработано несколько сотен языков высокого уровня и ещё больше трансляторов с них для различных машин, однако, всемирное признание получили лишь немногие. Первым достаточно удовлетворительным языков высокого уровня был FORTRAN (сокращение от английских слов Formulae Translator - «переводчик формул»). Этот язык был создан для решения научных и инженерных задач, которые могут быть записаны набором арифметических формул и логических условий.

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

Рождение FORTRAN'а относится к 1954 году. Язык был задуман для использования в области научных и технических вычислений. FORTRAN очень близок к языку обычной алгебры, его словарный запас заимствован из английского языка.

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

Широкое распространение FORTRAN'а привело к тому, что он использовался на многих типах машин, отсюда и наличие большого числа трансляторов с него. Но при этом следует иметь в виду, что FORTRAN нельзя применять на любых машинах, не учитывая их особенностей. В нём имеются элементы зависимости от устройства машины.

В трансляторах с FORTRAN'а использовались некоторые специфические особенности машины. Трансляторы с FORTRAN'а зависят от типа ЭВМ. В таких случаях приходилось делать дополнения к основному языку. При составлении трансляторов большое внимание уделялось качеству и скорости трансляции. Качество трансляции зависит от выявления синтаксических и логических ошибок, удачного решения проблем ввода-вывода информации и построения в виде, удобном для отладки.

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

Эти недостатки были преодолены в разработанном к 1960 году языке программирования ALGOL-60 (сокращение от Algorithmic Language - «алгоритмический язык»). ALGOL выгодно отличался от FORTRAN'а значительно более строгим описанием языка и отсутствием неоправданных ограничений. Другим преимуществом ALGOL'а является мощный аппарат подпрограмм. Вскоре после своего появления ALGOL превратился в международный язык программирования. Идеи, заложенные в основу ALGOL'а, оказались настолько плодотворными, что на его базе была создана большая группа языков программирования.

В 1968 году появился новый язык программирования ALGOL-68, являющийся дальнейшим развитием принципов ALGOL-60. Однако ввиду большой сложности восприятия этого языка и создания трансляторов с него, вызванных новизной заложенных в него идей, ALGOL-68 не получил широкого признания.

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

Всё это привело к тому, что в 1961 году было опубликовано описание языка COBOL (Common Business Oriented Language - язык программирования, ориентированный на деловые применения). COBOL даёт удобные средства описания данных любого типа и позволяет решать задачи, использующие файлы разнообразной структуры, что характерно для экономических задач. Однако COBOL'у присущи свои недостатки, основной из которых - невозможность эффективно проводить громоздкие вычисления.

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

Согласно другой точке зрения, нужно пользоваться одним языком высокого уровня, но настолько универсальным, что с его помощью удобно описывать любые данные и операции над ними, выполняемые в ЭВМ. Эту точку зрения разделяли и сотрудники американской фирмы IBM, по инициативе которой между 1963 и 1966 годами был создан новый язык программирования, названный PL/1 (Programming Language/One - язык программирования/один).

Язык PL/1 разрабатывался позже других, весьма совершенных языков, и вобрал в себя все лучшие черты. PL/1 содержит все средства FORTRAN'а, ALGOL'а, COBOL'а и некоторых других языков. Он, с одной стороны, позволяет решать более разнообразные научные задачи, чем FORTRAN, а с другой - даёт не менее эффективные средства обработки экономической информации, кем COBOL. При использовании PL/1 отпадает необходимость в других языках программирования, за исключением языка Ассемблера для нестандартных программ.

Разработчикам PL/1 удалось обойти немало подводных камней на своём пути. Созданный ими язык не стал просто механическим соединением средств других языков, наоборот, эти средства в PL/1 получили своё дальнейшее развитие и основываются на единых принципах. Ещё одно достоинство языка PL/1 заключается в том, что пользователь может работать только с теми средствами языка, которые нужны для его задачи. При этом он не обязан ничего знать о других средствах языка. Это свойство PL/1 делает его достаточно простым для изучения начинающими, но в то же время он остаётся мощным средством для разработки программ любой сложности. Он представляет практически все необходимые средства описания алгоритмов, хотя и не столь развитые, как в современных языках, средства описания и обработки таких сложных типов данных, как массивы и структуры.

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

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

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

Язык Lisp (List Processing - обработка списков) был создан в 1962 году Дж. Маккарти. Долгое время этот язык занимал особое место. Подавляющее большинство программ искусственного интеллекта составлено на языке Lisp. До сих пор он считается стандартным языком разработки систем искусственного интеллекта.

Язык Lisp - один из первых языков обработки данных в символьной форме. В Lisp'е и программа, и обрабатываемые данные представлены в одной и той же форме - списка. Таким образом, программы могут обрабатывать и преобразовывать другие программы и даже самих себя.

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

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

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

Программа на Prolog'е не является алгоритмом, а представляет собой запись условия задачи на языке формальной логики (т.е. это описательный язык программирования);

Язык Prolog предназначен не для решения вычислительных или графических задач, а для решения логических задач; вычисления же и графические построения выполняются в Prolog'е как побочный продукт логического вывода;

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

Всё это позволяет отнести Prolog в существующем делении языков программирования на языки низкого и высокого уровня к языкам сверхвысокого уровня.

Программирование на Prolog'е включает в себя следующие этапы:

Объявление фактов об объектах и отношениях между ними;

Определение правил взаимосвязи объектов и отношений между ними;

Формулировка вопроса об объектах и отношениях между ними.

BASIC

Основные преимущества языка BASIC:

простота изучения языка и отладки программ;

диалоговый характер;

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

широта распространения языка.

В язык, как правило, входят удобные функции для работы с экраном дисплея, клавиатурой, внешними накопителями, принтером и коммуникационными каналами. Это позволяет относиться к языку BASIC как к продолжению аппаратуры ПЭВМ и обычно этот язык встраивается в ПЗУ компьютера. Попросту говоря, интерпретатор языка BASIC имеется в любом варианте IBM PC (занимая объем памяти до 32 Кбайт в ПЗУ) и используется во всех случаях, когда им целесообразно воспользоваться.

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

TURBO-BASIC - это программа-компилятор языка BASIC, включающая в себя также редактор и отладчик, осуществляющая поддержку файловых функций операционной системы MS-DOS и имеющая удобную среду для общения с пользователем. Разработана она фирмой Borland.

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

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

Количество различных стандартных функций в различных версиях языка измеряются несколькими десятками. Суммарное число различных функций около 130. Например, в версии BASIC + стандартных функций меньше 20, а в BASIC-системе IBM около 60.

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

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

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

PASCAL

PASCAL - это язык программирования высокого уровня. Название свое он получил в честь знаменитого математика Блеза Паскаля.

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

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

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

Кроме того, PASCAL имеет два важных преимущества:

он простой и его легко изучить,

персональные компьютеры снабжаются компиляторами PASCAL с самого начала, версии которых постоянно обновляются.

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

Специально для персональных ЭВМ разработано не мало версий PASCAL-компиляторов с расширенными возможностями. Наиболее популярна из них система TURBO-PASCAL фирмы Borland.

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

События и факты

Дата

Событие

Ключевые лица

Значение для развития

Предметной области

Специальности

Общества

1954

FORTRAN

Дж. Бэкус

5

5

4

Начало 60-х

COBOL

---

5

5

4

1960, 1968

ALGOL

---

5

5

4

1971

PASCAL

Н. Вирт

5

5

4

1965

BASIC

Дж. Кенеми

5

5

4

Середина 1964

PL\1

Компания IBM

5

5

4

1960

Lisp

Джон Маккарти

5

5

4

Начало 70-х

Prolog

Алан Колмероэ

5

5

4


Подобные документы

  • Машинные коды и ассемблер. Первые языки программирования высокого уровня. Язык программирования FORTRAN. Достоинства и недостатки ALGOL. Научные и бухгалтерские программы. Основные принципы, которые соблюдались при создании языка программирования Basic.

    курсовая работа [407,4 K], добавлен 21.06.2014

  • Основные сведения о языках программирования и их состав. Программа для компьютера. Использование компилятора и операторы. Языки программирования высокого уровня. Концепции объектно-ориентированного программирования. Языки искусственного интеллекта.

    презентация [6,3 M], добавлен 14.08.2013

  • Эволюция языков программирования от низкого уровня до современности. Языки программирования второго поколения - ассемблер. Императивные, функциональные, логические и объектно-ориентированные языки. Машинная независимость. Парадигмы программирования.

    презентация [353,5 K], добавлен 14.10.2013

  • Семантика языков программирования. Процедурные и объектно-ориентированные языки программирования. Стандартная библиотека шаблонов. Независимость байт-кода от операционной системы и оборудования и возможность выполнения Java-приложения на любом устройстве.

    реферат [50,5 K], добавлен 24.11.2009

  • Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.

    презентация [11,9 K], добавлен 23.10.2013

  • Основные этапы разработки программного обеспечения (пакета программ), анализ требований к системе. Метод пошаговой детализации. Языки программирования низкого уровня и высокого уровня (императивные, объектно-ориентированные, функциональные, логические).

    презентация [41,4 K], добавлен 13.10.2013

  • Что такое язык программирования. Для чего нужны языки программирования. Какие существуют языки программирования. Фортран. Алгол. Кобол. Лисп. Бейсик. Форт. Паскаль. Ада. Си. Пролог. Что такое компилятор и интерпретатор.

    реферат [20,2 K], добавлен 27.05.2007

  • Изучение основных стилей программирования: процедурного, функционального, логического, объектно-ориентированного. Язык Ассемблера, предназначенный для представления в символической форме программ, записанных на машинном языке. Многоцелевой язык Basic.

    презентация [905,2 K], добавлен 23.03.2011

  • Сравнительный анализ наиболее распространенных языков, их классификация, описание достоинств и недостатков. Использование процедур, функции и подпрограмм в языках программирования высокого уровня. Разработка и реализация программы "Бортовой компьютер".

    курсовая работа [329,8 K], добавлен 22.06.2014

  • История развития информационных технологий. Появление Интернета, браузеры. Основы web-программирования: классификация сайтов, языки программирования. Создание сайта для кафедры высшего учебного заведения: технология создания и руководство пользователя.

    дипломная работа [471,5 K], добавлен 23.04.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.