Анализ языков программирования
.docx[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: Деривационная семантика
Языки программирования
[редактировать]
-
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, но расширен, а также сделан более строгим и логичным. Ада — язык со строгой типизацией, в нём исключена работа с объектами, не имеющими типов, а автоматические преобразования типов сведены к абсолютному минимуму.
Для удовлетворения требованиям надёжности язык построен таким образом, чтобы как можно большее количество ошибок обнаруживалось на этапе компиляции. Кроме того, одним из требований при разработке языка была максимально лёгкая читаемость текстов программ, даже в ущерб лёгкости написания. Результатом такого подхода стал несколько «тяжеловесный» синтаксис и множество ограничений, часто воспринимаемых непрофессиональными программистами как «глупые» и «ненужные».
Язык Ада используется в США и Европе при разработке сложных больших проектов, главным образом, встроенных систем, причём, далеко не только в военных приложениях.
[редактировать]
Элементы синтаксисаКомментарий до конца строки --
Регистрозависимость нет
Регулярное выражение идентификатора переменной [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;
[редактировать]
-
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!")
[редактировать]
-
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
Язык алгебраического программирования, созданный в институте кибернетики.
[редактировать]
-
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().
[редактировать]
-
Факториал: Пример для версий 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
-
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 — сборщик). Название последнего обусловлено тем, что на первых компьютерах не существовало языков более высокого уровня, и единственной альтернативой созданию программ с помощью ассемблера было программирование непосредственно в кодах.
Язык ассемблера в русском языке часто называют «ассемблером» (а что-то связанное с ним — «ассемблерный»), что, согласно английскому переводу слова, неправильно, но вписывается в правила русского языка. Однако, сам ассемблер (программу) тоже называют просто «ассемблером», а не «компилятором языка ассемблера» и т. п.
Использование термина «язык ассемблера» также может вызвать ошибочное мнение о существовании единого языка низкого уровня, или хотя бы стандарта на такие языки. При именовании языка, на котором написана конкретная программа, желательно уточнять, для какой архитектуры она предназначена и на каком диалекте языка написана.
[редактировать]
-
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) ")"
}
}
}
[редактировать]
-
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 предусмотрены специальные средства повышения надежности.