Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство Образования и Науки Российской Федерации
Казанский Государственный Энергетический Университет
Институт экономики и информационных технологий
Кафедра ИИУС
Реферат на тему:
«Язык программирования Алгол»
Выполнил: Канзафаров Айдар
Группа: ТРП-1-12
Проверила: Петрова Н. К.
Казань 2013
Историческая справка
Алгол был разработан комитетом, в который входили европейские и американские учёные.
Первая версия этого языка, Алгол-58, была разработана в ходе напряженного восьмидневного совещания в конце весны 1958 года, преимущественно для решения численных задач. Программисты неоднозначно приняли новый язык, и широкого одобрения он так и не получил.
Джон Бэкус разработал нормальную форму Бэкуса как формальный способ описания алгоритмических языков, с помощью которой была составлена спецификация для языка Алгол-58. После усовершенствований, которые предложил Питер Наур, возникла форма Бэкуса-Наура, которая использовалась для спецификации языка Алгол-60. Кроме Бэкуса и Наура в комитет по языку Алгол вошёл также Уолли Фойрцойг, который позже создал язык Лого. ALGOL - 60 (1960) был прост и широко использовался в Европе.
Язык Алгол был принят фирмой Burroughs Corporation в их моделях, начиная с B5000 этот язык получил название Elliott ALGOL. На компьютерах LGP-30 использовался язык Dartmouth ALGOL 30.
В 1965 году К. Хоар и Никлаус Вирт модифицировали Алгол-60. Эта версия, получившая название Алгол-W в честь Вирта (Wirth), была опубликована и приобрела большую популярность в университетских городках. Но комитет по Алголу ее отверг и сам занялся модификацией языка. В декабре 1968 года Международным комитетом специалистов по информатике был создан Алгол-68, работая с которым, программисты могли писать ключевые слова на родном языке. Ключевые слова содержатся в таблице трансляции, хранящейся в памяти компьютера и используемой компилятором Алгола-68 для преобразования программ в машинный код.
Сохраняя стилистическую связь со своим предшественником, Алгол-68 отличается более широкими возможностями и общностью конструкций. Его особенностями являются развитая система типов, автоматическое приведение типов, средства описания параллельных процессов и синхронизации, формальное описание языка на основе двухуровневых грамматик. Стремление к формальной строгости и последовательности сделало Алгол-68 слишком громоздким и сложным. Он использовался в ограниченных масштабах только американскими программистами.
Основы Алгол
Algol язык программирования высокого уровня. Существуют три последовательно сменявших друг друга версии языка: Алгол-58, Алгол-60, Алгол-68. Язык предназначен для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленной задачи.
Алгол подразделяется на три уровня:
Одним из недостатков языка было отсутствие процедур ввода и вывода данных, поэтому каждая реализация решала ввод-вывод совершенно по-разному. Широкого признания ни Алгол-58, ни его преемник Алгол-60 не получили, но в них были реализованы множество идей, получивших применение и развитие в других языках. Это блочная структура, позволяющая делить программы на замкнутые, независимые единицы; рекурсия способность программ повторно обращаться к себе; формализованное определение синтаксиса способа размещения слов в языке; вложенные контексты; описания переменных; определения способа передачи параметров. В Алголе было предложено два способа передачи параметров в подпрограмму по имени и по значению.
Для Алгола было разработано три разных синтаксиса:
Разница в синтаксисах состояла в разрешении использовать национальные ключевые слова и символ десятичной точки (точка или запятая, в зависимости от национальных стандартов).
Этот язык воплотил в себе все передовое, что было наработано теоретиками и практиками к моменту своего появления (конец 50-х годов), однако был встречен промышленностью и военными довольно прохладно и так и не получил должного признания.
Несмотря на это, роль Algol 60 (в дальнейшем - Algol) в истории языков программирования огромна, потому что идеи, заложенные в этом языке, получили дальнейшее развитие и породили целую плеяду так называемых "алголоподобных языков", среди которых в первую очередь можно выделить Algol 68 и Pascal. Эти языки получили значительно большее распространение. Кроме того, они в процессе своего развития в свою очередь стали основой для еще более развитых и мощных языков. Своеобразие роли Algol в информатике заключается еще и в том, что этот язык стал алгоритмическим, в отличие от подавляющего большинства других языков, являющихся языками программирования. Алгоритм можно реализовать практически на любом языке программирования, но особенность Algol заключается в том, что этот язык обладал непревзойденными (на время своего появления) выразительными средствами для строгого и изящного представления алгоритма. В результате, не получив признания в промышленности как язык программирования, Algol стал стандартом де-факто для публикации алгоритмов в научной среде. Так, например, на страницах Communications of the ACM долгие годы ему отдавалось предпочтение перед другими языками.
Algol разрабатывался комитетом, специально созданным для разработки языка высокого уровня общего назначения, пригодного для научных вычислений.
Интересно, что впервые в истории язык был определен формально. Algol, которому было предназначено противопоставить четкость и элегантность конструкций хаотичности и сумбурности FORTRAN, был описан посредством модификации Нормальной Формы Бэкуса (создателя FORTRAN). Нормальная Форма Бэкуса была доработана одним из членов комитета, Питером Науром, и в дальнейшем стала известна как Расширенная Форма Бэкуса-Наура (РБНФ). РБНФ оказалась настолько удобной формой описания синтаксиса формальных языков,что в дальнейшем практически все языки программирования стали описываться в этой нотации (еще один, косвенный вклад Algolа в развитие информатики).
Очень немногие короткие документы оказали глубокое влияние на компьютерное сообщество. Легкость, с которой в последующие годы слова "ALGOL" и "ALGOL-подобный" использовались как незащищенные торговые марки, чтобы придать часть своей славы незрелым проектам, порой имеющим весьма слабое отношение к предмету, - комплимент его основам.
Одной из слабостей языка был переработанный и не слишком систематический синтаксис.
Как и в большинстве других языков программирования, программа на Algol состоит из главной программы и набора подпрограмм. При их построении используются блоки - наборы описаний и последовательности операторов, ограниченные "скобками" begin и end. Структуры данных, созданные внутри блока, локальны в его пределах и при выходе из блока уничтожаются. Таким образом, можно управлять временем жизни данных и областью видимости их идентификаторов. Идентификатором называется любая конечная последовательность букв и цифр, начинающаяся с буквы.
Программа записывается в виде конечной последовательности основных символов (букв, цифр, знаков препинания, знаков операций и некоторых служебных слов в английском написании). Запись программы производится в одну строчку; подстрочные индексы, всякого рода надстрочные показатели не допускаются. Между любыми соседними символами можно оставить пробел.
Определение подпрограммы состоит из заголовка, в котором указываются имя подпрограммы и перечисляются имена и типы ее формальных параметров, и тела, которое представляет собой просто блок. Динамическое выделение памяти для переменных в блоке позволяет эффективно использовать рекурсию.
К особенностям языка можно отнести механизмы передачи параметров подпрограммам. Их два: хорошо известная передача по значению и передача по имени. В большинстве случаев она эквивалентна передаче по ссылке, однако между этими механизмами имеются довольно различия.
Очень важно, что блоки могут образовывать вложенные структуры, т.е. внутри блока может быть вложен блок, в него - другой блок и т.д. Важной особенностью языка является также то, что блок является разновидностью оператора - составным оператором и может быть употреблен везде, где допустим обычный оператор. В сочетании с развитым набором структурных управляющих конструкций (условный оператор, цикл со счетчиком, циклы с пред- и постусловием) это позволяет строить хорошо структурированные программы, обходясь без оператора go to.
К сожалению, типы и структуры данных в языке гораздо менее разнообразны, чем управляющие конструкции. Во многом это определило дальнейшую судьбу языка, применявшегося в первую очередь для научных вычислений. Из типов имеются логический, целочисленный и вещественный, а из структур данных - лишь однородный массив. Правда, массивы являлись динамическими, что позволяло эффективно управлять распределением памяти.
Способ изображения десятичного числа в Алголе отличается от традиционного способа изображения употреблением точки вместо запятой. Арифметическое выражение строится из чисел и простых переменных с использованием знаков арифметических операций, круглых скобок и стандартных функций.
Для ввода данных и вывода результатов используются операторы ввода и вывода:
Ввод(х1, х2, у)
Вывод(х)
Основной символ := называется знаком присваивания. Допускается присваивание значения какого-нибудь арифметического выражения сразу нескольким простым переменным.
Кроме операторов программа содержит описания. Описание является сообщением о том, какие простые переменные используются в программе:
Real х1
Оператор может быть как простым, так и составным. Структура составного оператора: Begin P1; P2; …; Pk end
Каждый оператор может быть помечен меткой. В качестве меток употребляются идентификаторы. Метка располагается перед оператором и отделяется от него двоеточием.
В Алголе помимо простых переменных используются переменные с индексами.
Для многократного повторения каких-либо действий применяется оператор цикла. Структура оператора цикла: for p:=A step B until C do S. Буквой р обозначена некоторая простая переменная (параметр цикла), буквами А, В, С арифметические выражения, буквой S оператор.
В процессе использования Algol-60 выявлялись недочеты, допущенные при проектировании языка. В 1962 году под эгидой Международной федерации по обработке информации (International Federation for Information Processing, IFIP) был создан новый комитет, задачей которого являлись исправление и совершенствование Algol. В составе нового комитета оказалось немало ученых с мировым именем, в частности, Эдсгер Дейкстра, Никлаус Вирт и Тони Хоар.Одной из очевидных слабостей предшествующей версии был признан слабо развитый ввод/вывод. Пренебрежение к этому моменту объяснялось академической направленностью языка: для ученых главный интерес представляет сам алгоритм, а в каком виде будут представлены выходные данные - дело второстепенное. Для промышленных применений такой подход не годился, поэтому одной из приоритетных задач была объявлена разработка механизма ввода/вывода.
Вторым важным моментом была сильная позиция FORTRAN. Язык, проигрывающий FORTRAN по эффективности на этапе выполнения программы, не мог претендовать на успех.
Главенствующую роль в разработке играл А. Ван Вейнгаарден, директор Математического центра Амстердама. Будучи по образованию и роду деятельности чистым математиком, порой он, пользуясь своим авторитетом, принимал решения, с которыми не соглашались программисты-практики, что отложило свой отпечаток на получившийся в результате язык.
К сожалению, авторитарный стиль руководства ван Вейнгаардена нередко приводил к размолвкам в коллективе.
Алгол-68 обладал широким спектром возможностей, от свободы переопределения синтаксиса и операторов до матричных операций, операций со структурами, организации параллельных вычислений. Идеей языка Алгол-68 являлось достижение максимальной выразительности средств программирования и возможности запрограммирования максимально абстрактных алгоритмов. Алгол-68 также обладал: вложенными функциями, возможностью описыватьсимвол оператора и приоритет, «сборкой мусора» (garbage collection), использованием объектов до их определения, formatted transput сложным определением формата, далёкой адресацией GOTO за пределы процедуры, интуитивным определением собственного синтаксиса.
Хотя, безусловно, язык Algol 68 содержал немало рациональных зерен (например, механизмы расширения языка, а также средства для параллельных вычислений), он получил ограниченное применение. Причиной неудач являлась не столько сложность конструкций, сколько провокация разработчика к свободному неструктурному программированию с активным использованием собственных абстрактных категорий и обозначений. От этого код программы становился неудобочитаемым, что затрудняло разработки группы и сопровождения. Кроме того, обилие возможностей языка делало затруднительным полноценную реализацию компилятора. Европе и, в частности, в России были коллективы энтузиастов языка, активно использовавших его в работе, и язык на основе Algolа 68 стал некогда базовым для программирования отечественного компьютера "Эльбрус", но мировой известности язык так никогда и не получил.
Алго́л (англ. algol от англ. algorithmic алгоритмический и англ. language язык) название ряда языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ. Разработан в 19581960 гг. (Алгол-58, Алгол-60); усовершенствован в 19641968 гг. (Алгол 68). Алгол относится к языкам высокого уровня и позволяет легко переводить алгебраические формулы в программные команды. Алгол был популярен в Европе, в том числе в СССР, однако он оказал заметное влияние на все разработанные позднее языки программирования в частности, на язык Pascal.
Обычно под понятием Алгол подразумевается Алгол-60, в то время как Алгол 68 рассматривается как самостоятельный язык. Даже когда язык Алгол почти перестал использоваться для программирования, он ещё оставался официальным языком для публикации алгоритмов.
Алгол предназначался для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для решения поставленных задач. Специалисты-практики восприняли этот язык далеко неоднозначно, но, тем не менее, его влияние на развитие других языков и теорию программирования оказалось весьма значительным.
Многие языки, возникшие позднее базировались на ALGOL, и его вклад в их развитие связан с важными идеями в области программирования (блочной структурой, рекурсией, формализованным определением синтаксиса). Эти и другие фундаментальные идеи достались в наследство разработчикам других языков, хотя сам язык ALGOL не получил широкого распространения.