Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.docx
Скачиваний:
20
Добавлен:
24.07.2017
Размер:
76.25 Кб
Скачать

[11.09.2012 18:26:24] Neridu: язык символического кодирования

[11.09.2012 18:26:55] Neridu: Автономный язык

[11.09.2012 18:27:10] Neridu: Язык обработки списков

[11.09.2012 18:28:27] Neridu: Объектно-ориентированные

[11.09.2012 18:29:05] Neridu: Деривационная семантика

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

[редактировать]

  1. ABAP Минус

Парадигма:

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

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

структурная

Типизация:

безопасная

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

статическая

строгая

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

[редактировать]

АДА

  1. Русское название: Ада Плюс

Дата создания: 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, но расширен, а также сделан более строгим и логичным. Ада — язык со строгой типизацией, в нём исключена работа с объектами, не имеющими типов, а автоматические преобразования типов сведены к абсолютному минимуму.

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

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

[редактировать]

Элементы синтаксисаКомментарий до конца строки --

Регистрозависимость нет

Регулярное выражение идентификатора переменной [a-zA-Z](_?[a-zA-Z0-9])*

Присваивание значения переменной :=

Объявление переменной variable: type

Группировка выражений ( ... )

Блок begin ... end или foo ... end foo where foo in { if, do, ... }

Тождественное равенство =

Тождественное неравенство /=

Сравнение < > <= >=

Определение функции function f(p1 : type1; p2 : type2; ... ) return returntype is begin ... end f;

Вызов функции f(a, b, ...)

Вызов функции без параметров f

Последовательность ;

Если - то if condition then ... end if

Если - то - иначе if condition1 then ... elsif condition2 then ... else ... end if

Бесконечный цикл loop ... end loop

Цикл с предусловием while condition loop ... end loop

Цикл с постусловием loop ... exit when condition end loop

Цикл for - next для диапазона целых чисел с инкрементом на 1 for i in 1 .. 10 loop ... end loop

Цикл for - next для диапазона целых чисел с декрементом на 1 for i in reverse 1 .. 10 loop ... end loop

[редактировать]

Примеры:

[редактировать]

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;

[редактировать]

  1. Agda ПЛЮС

Дата создания: 1999

Создан под влиянием: Haskell

Парадигма:

декларативная

логическая

нестрогая

функциональная

Типизация:

безопасная

статическая

строгая

типизированная

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

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

Agda 2

Agda1/NewSyntax

Agda — инструмент автоматического доказательства теорем и одновременно функциональный язык программирования, использующийся в нем. Он разрабатывается в Chalmers University of Technology как развитие более старых инструментов такого рода.

Язык основан на конструктивной теории типов á la Martin-Löf, расширенной зависимыми типами записей, индуктивными определениями, модульными структурами и механизмом иерархии классов. Механизм классов Agda похож на использующийся в Haskell.

В своем развитии язык прошел через несколько существенно разных этапов. Самая первая версия, известная как Agda1/OldSyntax, была создана в 1999 году и в настоящее время недоступна. В 2005 году ее сменила Agda1/NewSyntax. Текущая версия — Agda 2.

[редактировать]

Элементы синтаксисаКомментарий до конца строки --

Комментарии, которые могут быть вложенными {- ... -}

[редактировать]

Примеры:

[редактировать]

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

Простой вывод строк на печать — неестественное для Agda занятие, поэтому требует установки дополнительных пакетов. Этот пример следует сохранить в файл “helloworld.agda”. Понадобится установить стандартную библиотеку agda-stdlib; этот пример был проверен для agda 2.2.6 и agda-stdlib 0.3. Чтобы скомпилировать пример, используйте команду agda -i [library path] -i . -c helloworld.agda, где [library path] — путь к директории, в которой установлена библиотека. Эта команда компилирует исходный код Agda в код Haskell, и затем — в исполняемый файл.

module helloworld where

open import IO.Primitive using (IO; putStrLn)

open import Data.String using (toCostring; String)

open import Data.Char using (Char)

open import Foreign.Haskell using (fromColist; Colist; Unit)

open import Data.Function

fromString = fromColist . toCostring

main : IO Unit main = putStrLn (fromString "Hello, World!")

[редактировать]

  1. Alef НЕПОНЯТНО

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

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

[редактировать]

  1. ALGOL МИНУС

Pусское название:АЛГОЛ

Дата создания:1958

Повлиял на:

Ada

Modula-3

Oberon

PL/I

Pascal

Simula

Парадигма:императивная

Типизация:статическая

Диалекты:

ALGOL 58

Algol 60

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

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

[редактировать]

  1. APLAN МИНУС

Русское название: Аплан

Дата создания: 1993

Создан под влиянием: Аналитик

Повлиял на: Termware

Парадигма:

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

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

Типизация: бестиповая

Принятые расширения файлов: aps

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

[редактировать]

  1. ARIBAS МИНУС

Дата создания: 1996

Создан под влиянием:

Modula

Pascal

Парадигма: императивная

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

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

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

Синтаксис языка ARIBAS напоминает синтаксис языков Pascal и Modula.

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

[редактировать]

Примеры:

[редактировать]

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

Используется рекурсивное определение факториала функцией fac, т.к. имя factorial зарезервировано для встроенной функции вычисления факториала. В ARIBAS по умолчанию используется тип данных integer.

group(0) при выводе служит для отмены использования знака подчеркивания для разделения групп цифр. function fac(n); begin

if (n = 0) then

return(1);

end;

return(n * factorial(n - 1));

end;

function fac0_16(); var n; begin

for n := 0 to 16 do

writeln(n, "! = ", fac(n): group(0));

end;

end;

fac0_16().

[редактировать]

  1. Факториал: Пример для версий ARIBAS 1.53 МИНУС

Используется встроенная функция factorial. В ARIBAS по умолчанию используется тип данных integer.

group(0) при выводе служит для отмены использования знака подчеркивания для разделения групп цифр. function fac0_16(); var n; begin

for n := 0 to 16 do

writeln(n, "! = ", factorial(n): group(0));

end;

end;

fac0_16().

[редактировать]

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

writeln("Hello, World!");

[редактировать]

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

Этот пример использует рекурсивное определение чисел Фибоначчи. В ARIBAS по умолчанию используется тип данных integer. group(0) при выводе служит для отмены использования знака подчеркивания для разделения групп цифр.

function fib(n); begin

if (n < 3) then

return(1);

end;

return(fib(n-1)+fib(n-2));

end;

function fib1_16(); var n; begin

for n := 1 to 16 do

write(fib(n): group(0), ", ");

end;

writeln("...");

end;

fib1_16().

[редактировать]

Assembler

  1. Assembler ПЛЮС

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

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

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

Каждая модель процессора, в принципе, имеет свой набор команд и соответствующий ему язык (или диалект) ассемблера.

[редактировать]

Достоинства и недостатки

минимальное количество избыточного кода (использование меньшего количества команд и обращений в память). Как следствие — большая скорость и меньший размер программы;

большие объемы кода, большое число дополнительных мелких задач;

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

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

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

непосредственный доступ к аппаратуре: портам ввода-вывода, особым регистрам процессора;

возможность написания самомодифицирующегося кода (т.е. метапрограммирования, причем без необходимости программного интерпретатора);

максимальная «подгонка» для нужной платформы (использование специальных инструкций, технических особенностей «железа»);

непереносимость на другие платформы (кроме двоично совместимых).

[редактировать]

Синтаксис

<p align=justify>Общепринятого стандарта для синтаксиса языков ассемблера не существует. Однако, существуют стандарты де-факто — традиционные подходы, которых придерживаются большинство разработчиков языков ассемблера. Основными такими стандартами являются Intel-синтаксис и AT&T-синтаксис.

Общий формат записи инструкций одинаков для обоих стандартов:

`[метка:] опкод [операнды] [;комментарий]`

Опкод — непосредственно мнемоника инструкции процессору. К ней могут быть добавлены префиксы (повторения, изменения типа адресации и пр.). В качестве операндов могут выступать константы, названия регистров, адреса в оперативной памяти и пр.. Различия между стандартами Intel и AT&T касаются, в основном, порядка перечисления операндов и их синтаксиса при различных методах адресации.

Используемые мнемоники обычно одинаковы для всех процессоров одной архитектуры или семейства архитектур (среди широко известных — мнемоники процессоров и контроллеров Motorola, ARM, x86). Они описываются в спецификации процессоров.

Например, процессор Zilog Z80 наследовал систему команд Intel i8080, расширил ее и поменял мнемоники (и обозначения регистров) на свой лад. Например, сменил интеловские mov на ld. Процессоры Motorola Fireball наследовали систему команд Z80, несколько её урезав. Вместе с тем, Motorola официально вернулась к мнемоникам Intel. и в данный момент половина ассемблеров для Fireball работает с интеловскими мнемониками, а половина с мнемониками Zilog.

[редактировать]

Директивы

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

определение данных (констант и переменных);

управление организацией программы в памяти и параметрами выходного файла;

задание режима работы компилятора;

всевозможные абстракции (т.е. элементы языков высокого уровня) — от оформления процедур и функций (для упрощения реализации парадигмы процедурного программирования) до условных конструкций и циклов (для парадигмы структурного программирования);

макросы.

[редактировать]

Происхождение и критика термина «язык ассемблера»

Данный тип языков получил свое название от названия транслятора (компилятора) с этих языков — ассемблера (англ. assembler — сборщик). Название последнего обусловлено тем, что на первых компьютерах не существовало языков более высокого уровня, и единственной альтернативой созданию программ с помощью ассемблера было программирование непосредственно в кодах.

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

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

[редактировать]

  1. AWK МИНУС

Дата создания:1977

Создан под влиянием:

C

SNOBOL

Unix shell

Повлиял на:Tcl Парадигма:

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

на уровне значений

процедурная

скалярная

Типизация:

вывод типов

динамическая

типизированная

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

.awk

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

gawk

mawk

AWK (название происходит от первых букв фамилий авторов) — интерпретируемый скриптовый язык программирования, предназначенный для обработки текстовых данных.

Программа, написанная на AWK, принимает на вход поток текстовых данных (получаемых из файла или с консоли) и обрабатывает его построчно. Сама программа является набором правил вида “шаблон — действие”, где шаблон является регулярным выражением, а действие — последовательностью команд. При обработке входного потока каждая строка данных сравнивается с каждым шаблоном, и выполняются действия тех правил, под шаблоны которых эта строка подходит. Специальные шаблоны BEGIN и END задают действия, которые выполняются до и после обработки входного потока, соответственно.

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

[редактировать]

Элементы синтаксиса: Комментарий до конца строки #

Регистрозависимость да

Регулярное выражение идентификатора переменной [_a-zA-Z][_a-zA-Z0-9]*

Присваивание значения переменной varname = value

Объявление переменной нет

Объявление переменной с присваиванием значения нет

Группировка выражений ( ... )

Блок { ... }

Равенство a == b

Неравенство a != b

Определение функции function functionName(argname1, ..., argnameN)

Вызов функции functionName(arg1, ..., argN)

Если - то if (condition) trueBlock

Цикл for - next для диапазона целых чисел с инкрементом на 1 for (i = first; i <= last; i++) loopBody

Цикл for - next для диапазона целых чисел с декрементом на 1 for (i = last; i >= first; i--) loopBody

[редактировать]

Примеры:

[редактировать]

Hello, World!: Пример для версий gawk 3.1.6, mawk 1.3.3

Печать выполняется шаблоном BEGIN, т.е. перед обработкой входных данных. Сами данные не обрабатываются.

BEGIN { print "Hello, World!" }

[редактировать]

Факториал: Пример для версий gawk 3.1.6, mawk 1.3.3

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

BEGIN {

f = 1

print "0! = " f

for (i=1; i<17; i++) {

f *= i

print i "! = " f

}

}

[редактировать]

Числа Фибоначчи: Пример для версий gawk 3.1.6, mawk 1.3.3

Используется итеративное определение чисел Фибоначчи. fib — ассоциативный массив, pr — строка.

BEGIN {

fib[1] = 1

fib[2] = 1

for (i=3; i<17; i++)

fib[i] = fib[i-1]+fib[i-2]

pr = ""

for (i=1; i<17; i++)

pr = pr fib[i] ", "

print pr "..."

}

[редактировать]

Квадратное уравнение: Пример для версий gawk 3.1.6, mawk 1.3.3

{ A = $1

B = $2

C = $3

if (A == 0)

print "Not a quadratic equation"

else

{ D = B*B-4*A*C

if (D == 0)

print "x = " (-B/2/A)

else if (D > 0)

{ print "x1 = " ((-B+sqrt(D))/2/A)

print "x2 = " ((-B-sqrt(D))/2/A)

}

else

{ print "x1 = (" (-B/2/A) "," (sqrt(-D)/2/A) ")"

print "x1 = (" (-B/2/A) "," (-sqrt(-D)/2/A) ")"

}

}

}

[редактировать]

  1. BARSIC ПЛЮС

BARSIC (Business And Research Scientific Interactive Calculator) является интерпретируемым языком программирования с псевдокомпиляцией исходного кода в brc-файл (сокращение от BARSIC Compiled). Первоначально возник как надстройка над библиотеками управления научными и учебными установками. В том числе со средствами отображения графиков и проведения вычислений по формулам, задаваемым пользователем. В дальнейшем были добавлены средства визуального проектирования пользовательского интерфейса. Это объектный язык с развитыми средствами процедурного программирования (функции-выражения, подпрограммы с различными модификаторами видимости внешних элементов внутри подпрограмм, модули, структуры) и элементами объектности (набор встроенных предопределённых классов как способ организации удобного доступа к библиотекам). Предполагается добавление пользовательских классов по модели прототипирования.

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

В настоящее время наиболее широко используемыми приложениями BARSIC являются учебные модели по физике и математике:

доступная в открытом доступе виртуальная лаборатория barsic.spbu.ru (первоначально необходимо инсталлировать на компьютере среду BARSIC с данной странички

модели и тесты Интернет-олимпиады по физике по СПб и Северо-Западному региону РФ . К настоящему времени через Интернет-олимпиады по физике на основе тестов и моделей, выполняемых в среде BARSIC, прошло около 5000 человек (только в ноябре 2007 года 1083 человек по 10-м классам и 1246 человек по 11-м классам).

[редактировать]

Состав программного комплекса BARSIC

бесплатная свободно распространяемая исполняющая среда barsic.exe (и сопровождающие файлы) — ‘проигрыватель’ файлов BARSIC

среда barsicIDE.exe разработки программ-приложений, свободно доступная для некоммерческого использования

[редактировать]

Основные особенности языка и среды BARSIC

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

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

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