Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оглавление.docx
Скачиваний:
38
Добавлен:
22.02.2015
Размер:
173.51 Кб
Скачать

Используемые символы

Современные языки программирования рассчитаны на использование ASCII, то есть доступность всех графических символов ASCII является необходимым и достаточным условием для записи любых конструкций языка. Управляющие символы ASCII используются ограниченно: допускаются только возврат каретки CR, перевод строки LF и горизонтальная табуляция HT (иногда также вертикальная табуляция VT и переход к следующей странице FF). Ранние языки, возникшие в эпоху 6-битных символов, использовали более ограниченный набор. Например, алфавит Фортрана включает 49 символов (включая пробел): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ ' : Заметным исключением является язык APL, в котором используется очень много специальных символов. Использование символов за пределами ASCII (например, символов KOI8-R или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, где все ключевые слова писались русскими буквами, но большу́ю популярность подобные языки не завоевали (исключение составляет Встроенный язык программирования 1С:Предприятие). Расширение набора используемых символов сдерживается тем, что многие проекты по разработке программного обеспечения являются международными. Очень сложно было бы работать с кодом, где имена одних переменных записаны русскими буквами, других — арабскими, а третьих — китайскими иероглифами. Вместе с тем, для работы с текстовыми данными языки программирования нового поколения (Delphi 2006, C#, Java) поддерживают Unicode.

Языки программирования

ABAP

Парадигма:

  • императивная

  • объектно-ориентированная

  • структурная

Типизация:

  • безопасная

  • номинативная

  • статическая

  • строгая



ABAP (Allgemeiner Berichts-Aufbereitungs-Prozessor, перевод с немецкого “Процессор для создания отчетов”) — высокоуровневый язык, созданный немецкой компанией SAP. На данный момент позиционируется, как язык для создания приложений для SAP Web Application Server, являющейся частью NetWeaver, платформы для создания бизнес приложений.

АДА

Русское название: Ада Дата создания: 1983 Создан под влиянием:

  • ALGOL

  • C++

  • Pascal

Парадигма:

  • императивная

  • мультипарадигма

  • обобщённая

  • объектно-ориентированная

  • процедурная

  • строгая

  • структурная

Типизация:

  • безопасная

  • статическая

  • строгая

Принятые расширения файлов: .adb .ads .ada

Диалекты:

  • Ada 2005

  • Ada 83

  • Ada 95

Реализации и версии:

  • Ada/Ed

  • Green Hills

  • Hewlett-Packard Ada

  • IBM Rational Ada Developer

  • Sun SC Ada

  • gnat

Ада — мощнейший объектно–ориентированный язык общего назначения, ориентированный на разработку надёжного программного обеспечения. В язык включены механизмы поддержки параллельного исполнения, обработки исключений, настраиваемых модулей, поддержки распределённых вычислений, стандартные интерфейсы к другим языкам и библиотекам. Ада имеет компиляторы под практически любую операционную систему плюс Java и .NET байткод.

Ада — язык программирования, созданный в 1979–1980x годах в результате проекта, предпринятого Министерством Oбороны США с целью разработать единый язык программирования для так называемых встроенных систем (то есть, систем управления автоматизированными комплексами, работающими в реальном времени). Имелись в виду, прежде всего, бортовые системы управления военными объектами . Перед разработчиками не стояло задачи создать универсальный язык, поэтому решения, принятые авторами, нужно воспринимать в контексте особенностей выбранной предметной области.

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

Для удовлетворения требованиям надёжности язык построен таким образом, чтобы как можно большее количество ошибок обнаруживалось на этапе компиляции. Кроме того, одним из требований при разработке языка была максимально лёгкая читаемость текстов программ, даже в ущерб лёгкости написания. Результатом такого подхода стал несколько «тяжеловесный» синтаксис и множество ограничений, часто воспринимаемых непрофессиональными программистами как «глупые» и «ненужные».

Язык Ада используется в США и Европе при разработке сложных больших проектов, главным образом, встроенных систем, причём, далеко не только в военных приложениях.

Примеры:

Hello, World!: Пример для версий gnat 3.4.5

with Ada.Text_IO;

procedure HelloWorld is begin

Ada.Text_IO.Put_Line("Hello, World!");

end HelloWorld;

Факториал: Пример для версий gnat 3.4.5

В этом примере используется рекурсивное определение факториала. Следует отметить, что для вывода на печать текста, целых и длинных целых чисел используются разные пакеты. Команда put в общем случае принимает несколько аргументов, изменяющих формат вывода: Item — это число, которое выводится на печать, Width — количество позиций, которые следует использовать при выводе, Fore и Aft — количества десятичных цифр, которые следует вывести до и после запятой и т.д. Если передается только один аргумент, он считается значением Item. Установив Width равным 1 или другому числу, меньшему, чем количество цифр в выводимом числе, можно вывести его без пробелов в начале (что является умолчательным способом для языка Ada). Кроме того, отметим, что Ada не поддерживает неявные преобразования типов, так что для вычисления N*Fact(N-1) сначала следует явно преобразовать N к типу Long_Long_Integer.

with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Long_Long_Integer_Text_IO;

procedure Factorial is begin

declare

function Fact (N: Integer) return Long_Long_Integer is

begin

if N=0 then

return 1;

else

return Long_Long_Integer(N)*Fact(N-1);

end if;

end Fact;

i: Integer := 0;

begin

loop

Ada.Integer_Text_IO.Put (Item => i, Width => 1);

Ada.Text_IO.Put ("! = ");

Ada.Long_Long_Integer_Text_IO.Put (Item => Fact(i), Width => 1);

Ada.Text_IO.New_Line;

i := i + 1;

exit when i=17;

end loop;

end;

end Factorial;

Числа Фибоначчи: Пример для версий gnat 3.4.5

В этом примере используется рекурсивное определение чисел Фибоначчи.

with Ada.Text_IO, Ada.Integer_Text_IO;

procedure Fibonacci is begin

declare

function Fib (N: Integer) return Integer is

begin

if N<3 then

return 1;

else

return Fib(N-1) + Fib(N-2);

end if;

end Fib;

i: Integer := 1;

begin

loop

Ada.Integer_Text_IO.Put (Item => Fib(i), Width => 1);

Ada.Text_IO.Put (", ");

i := i + 1;

exit when i=17;

end loop;

Ada.Text_IO.Put ("...");

end;

end Fibonacci;

Квадратное уравнение: Пример для версий gnat 3.4.5

Ada предоставляет тип данных для работы с комплексными числами, который требует использования пакетов Generic_Complex_Types и Generic_Complex_Elementary_Functions с предварительной инициализацией их типом данных для хранения комплексных чисел (в данном случае — Float). Ada не поддерживает неявные преобразования типов, поэтому все преобразования выполняются в явном виде.

with Ada.Text_IO,

Ada.Integer_Text_IO,

Ada.Float_Text_IO,

Ada.Numerics.Elementary_Functions,

Ada.Text_IO.Complex_IO,

Ada.Numerics.Generic_Complex_Types,

Ada.Numerics.Generic_Complex_Elementary_Functions;

use Ada.Text_IO, Ada.Integer_Text_IO, Ada.Float_Text_IO;

procedure QuadraticEquation is

package Complex_Types is new Ada.Numerics.Generic_Complex_Types (Float);

package Complex_Functions is new Ada.Numerics.Generic_Complex_Elementary_Functions(Complex_Types);

package Complex_IO is new Ada.Text_IO.Complex_IO (Complex_Types);

use Complex_Types, Complex_Functions, Complex_IO;

A,B,C,D: Integer;

A2f, Bf, S: Float;

Dc: Complex;

begin

Put("A = ");

Get(Item => A);

if A = 0 then

Put_Line("Not a quadratic equation.");

return;

end if;

Put("B = ");

Get(B);

Put("C = ");

Get(C);

A2f := Float(2*A);

Bf := Float(B);

D := B*B-4*A*C;

if D = 0 then

Put("x = ");

Put(-Bf/A2f);

elsif D > 0 then

S := Ada.Numerics.Elementary_Functions.Sqrt(Float(D));

Put("x1 = ");

Put((-Bf+S)/A2f);

Put_Line("");

Put("x2 = ");

Put((-Bf-S)/A2f);

else

Dc := Compose_From_Cartesian (Re => Float(D), Im => 0.0);

Put("x1 = ");

Put((-Bf+Complex_Functions.Sqrt(Dc))/A2f);

Put_Line("");

Put("x2 = ");

Put((-Bf-Complex_Functions.Sqrt(Dc))/A2f);

end if;

end QuadraticEquation;

Alef

Язык программирования Alef был разработан Phil Winterbottom в Bell Labs как часть операционной системы Plan 9. Alef — это язык системного программирования с поддержкой параллелизации. Обработка исключений, управление процессами и синхронизация примитивов реализованы средствами самого языка. Программы могут быть написаны как с использованием парадигмы общих переменных, так и с использованием парадигмы сообщений. Выражения используют синтаксис языка C, но система типов совершенно другая. Alef поддерживает объектно-ориентированное программирования через статическое наследование и сокрытие информации. Язык не предоставляет автоматический сборщик мусора.

ALGOL

Pусское название:АЛГОЛ Дата создания:1958 Повлиял на:

  • Ada

  • Modula-3

  • Oberon

  • PL/I

  • Pascal

  • Simula

Парадигма:императивная Типизация:статическая Диалекты:

  • ALGOL 58

  • Algol 60

Алгол (англ. ALGOL от англ. algorithmic — алгоритмический и англ. language — язык), название семейства императивных языков программирования, применяемых при составлении программ для решения научно-технических задач на ЭВМ.
Алгол был первым языком программирования, использующим пары begin end для выделения блоков выражений.

APLAN

дания: 1993 Создан под влиянием: Аналитик Повлиял на: Termware Парадигма:

  • императивная

  • правила переписывания

Типизация: бестиповая Принятые расширения файлов: aps

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

С точки зрения программирования нас интересуют все те языки, которые участвуют в создании программы. На рис. 4.1 схематически указаны такие языки.

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

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

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

  • Математическая позиция, представляющая математическую модель изучаемого языка.

  • Реализаторская позиция, отражающая взгляд на язык реализаторов транслятора с этого языка и авторов документации. Эта позиция используется в гл. 5.

  • Авторская позиция, отражающая позицию автора языка. Для понимания этой позиции следует обращаться к работам авторов языков программирования. Например, точка зрения Никлауса Вирта отражена в статье [Вирт 1996].