Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Beyond Linux From Scratch. Version 2011-12-30
Назад 12. Программирование Вперед

Другие инструментальные средства программирования

Введение

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

Замечания для пользователей: http://wiki.linuxfromscratch.org/blfs/wiki/OtherProgrammingTools

Фреймворки программирования, языки и компиляторы

A+

A+ является мощным и эффективным языком программирования. Он абсолютно бесплатно доступен под лицензией GNU General Public Licensel. В нем представлен богатый набор функций и операторов, современный графический пользовательский интерфейс с множеством виджетов и автоматической синхронизацией виджетов и переменных, асинхронное выполнение функций, связанных с переменными и событиями, динамическая загрузка подпрограмм, откомпилированных пользователями, а также много других возможностей. Исполнение осуществляется с помощью достаточно эффективного интерпретатора. A+ был создан в Морганом Стенли (Morgan Stanley). В основном используется в бизнес-расчетах, требующих большого количества вычислений. Многие критические приложения, написанные на A+, выдержали требования мировых разработчиков на протяжении многих лет. Приложения, написанные на A+, обладают свойством переносимости.

ABC

ABC является интерактивным языком программирования и средой персональных вычислений, изначально задуманной как замена языка BASIC. Он был разработан, прежде всего, для выполнения анализа задач программирования. ABC прост в освоении (час или около того для тех, кто уже умеет программировать), и, к тому же, прост в использовании. Первоначально задуманный как язык для начинающих, он превратился в мощный инструмент как для начинающих, так и для экспертов. К числу некоторых особенностей языка относятся следующие: мощный набор только пяти типов данных, которые легко можно объединять с помощью строгой типизации, не требующей объявлений и без указания ограничений (например, максимального значения int), не говоря уж об отсутствии исчерпания памяти, характерном в случае поддержки нисходящего программирования, наличие механизма использования вложенности, а также небольшой размер программ, который равен одной четвертой или одной пятой размера эквивалентной программы на Pascal или C.

ALF

ALF - это язык, в котором объединены технологии функционального и логического программирования. Основой языка ALF является логика дизъюнктов Хорна (Horn clause logic) с равенствами, которые состоят из предикатов и дизъюнктов Хорна логического программирования, а также из функций и уравнений функционального программирования. Система ALF является эффективной реализацией объединения операций резолюции (resolution), сужения (narrowing), перезаписи (rewriting )и удаления (rejection). Как и в Прологе, в ALF используется стратегия отката, соответствующая по глубине первому поиску в дереве выводов.

ASM

ASM является фреймворком, предназначенным для манипулирования байт-кодом языка Java. Его можно использовать для динамической генерации непосредственно в двоичном виде заглушек классов или других прокси-классов или для динамического изменения классов во время их загрузки, т.е. непосредственно перед тем, как они будут загружены в Java Virtual Machine. ASM имеет функциональные возможности, похожие на возможности BCEL или SERP, но его размер гораздо меньше (33Кб вместо 350Кб для BCEL и 150KB для SERP) и он работает быстрее, чем эти указанные инструменты (накладные расходы по преобразованию класса во время загрузки составляют порядка 60% для ASM, 700 % или более для BCEL и 1100% и более для SERP). В действительности, язык ASM был разработан для динамического использования (хотя он также работает хорошо и статически) и, поэтому был разработан настолько маленьким и быстрым, насколько это было возможным.

BCPL

BCPL является простым бестиповым языком, который был разработан в 1966 году Мартином Ричардсом (Martin Richards) и впервые внедрен в Массачусетском технологическом институте весной 1967 года.

BETA

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

<bigwig>

<bigwig> является высокоуровневым языком программирования, предназначенным для разработки интерактивных веб-сервисов. Программы компилируются в конгломерат технологий более низкого уровня, таких как код С, HTTP, HTML, JavaScript и SSL, которые все работают в среде времени исполнения, базирующейся на использовании модулей веб сервера Apache. Он является преемником проекта Mawl, но это совершенно новая разработка, которая реализуется с существенно большим количеством амбиций. Язык <bigwig> является, в действительности, коллекцией крошечных предметно-ориентированных языков, сфокусированных на различных аспектах интерактивных веб-сервисов. Эти языки собраны воедино с помощью языка-скелета, похожего на С. Таким образом, <bigwig> имеет внешний вид С-программ, но со специальными данными и управляющими структурами.

Bigloo

Язык Bigloo является реализацией языка Scheme, полностью посвященной одной цели: реализации базового стиля программирования на языке Scheme там, где обычно требуется C(++). Bigloo пытается сделать язык Scheme более практическим, предлагая возможности, которые обычно представлены в традиционных языках программирования, но в которых нет возможностей языка Scheme и возможностей функционального программирования. Bigloo компилирует модули Scheme и создает маленькие и быстро работающие автономно исполняемые двоичные файлы. Есть возможность взаимодействия между программами Scheme и C, программами Scheme и Java, а также программами Scheme и C#.

C--

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

Caml

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

Cayenne

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

Ch

Ch является встраиваемым интерпретатором языка C/C++ для кроссплатформенного создания скриптов, программирования в командной оболочке, построения 2D/3D изображений, численных вычислений и разработки встраиваемых скриптов.

Clean

Clean является современным языком чистого функционального программирования общего назначения с отложенными вычислениями (pure and lazy functional programming language), предназначенным для создания реальных приложений. Clean является единственным функциональным языком в мире, в котором предложена уникальная система типизации. Его система типов позволяет в чисто функциональном языке выполнять деструктивные изменения произвольных структур данных (включая массивы), а также создавать прямые интерфейсы с внешним императивным миром. Такая система типов позволяет разрабатывать эффективные приложения.

CORN

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

Cyclone

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

D

D является языком программирования систем и приложений общего назначения. Это язык программирования более высокого уровня, чем С++, но сохраняет возможность писать код высокой производительности и напрямую взаимодействовать с API операционной системы и с аппаратным обеспечением. D хорошо подходит для создания средних и крупных программ размером в миллионы строк, разрабатываемых командами разработчиков. Его легко выучить, в нем есть много возможностей для оказания помощи программисту, он хорошо подходит для использования агрессивных технологии оптимизации компилятора. D не является скриптовым или интерпретируемым языком. Он не поставляется вместе с виртуальной машиной, религиозными воззрениями или основополагающей философией. Это практический язык для практического программистов, которые должны сделать свою работу быстро, надежно и получить понятный и легко поддерживаемый код. D является кульминацией десятилетий опыта реализации компиляторов для многих различных языков и попыток построить большие проекты с использованием этих языков. Идеи он получает из других языков (в особенности из C++) и проверяет их на реальном практическом опыте.

DMDScript

DMDScript является реализацией скриптового языка ECMA 262, выполненной в проекте Digital Mars. Реализация в Netscape называется JavaScript, реализация от Microsoft называется JScript. DMDScript намного быстрее, чем другие реализации, что вы можете проверить с помощью специального теста.

DotGNU Portable.NET

Целью DotGNU Portable.NET является создание пакета свободного программного обеспечения, предназначенного для сборки и выполнения приложений .NET, в том числе компилятора C#, ассемблера, дизассемблера и среды времени исполнения. Хотя первоначальный целевой платформой был GNU/Linux, также известно, что он работает под Windows, Solaris, NetBSD, FreeBSD и MacOS X. Среда времени исполнения была протестирована на платформах с процессорами x86, PowerPC, ARM, SPARC, PARISC, s390, Alpha и IA-64. DotGNU Portable.NET является частью проекта DotGNU, созданного в соответствие с требованиями проекта GNU. DotGNU Portable.NET ориентирован на совместимость со спецификациями ECMA для CLI. В метапроекте DotGNU есть и другие проекты, позволяющие собирать другие необходимые части инфраструктуры и исследовать подходы к использованию виртуальных машин, отличающиеся от CLI.

Dylan

Dylan является современным объектно-ориентированным динамическим язык, в который поддерживается быстрая разработка программ. Если необходимо, то компилятору можно представить большее информации о типах и оптимизировать программы с целью их более эффективного исполнения. Почти все объекты в Dylan (включая функции, классы и основные типы данных, такие как целые числа) являются объектами первого класса. Кроме того, в Dylan поддерживается множественное наследование, полиморфизм, множественнаяю диспетчеризация, использование ключевых аргументов, интроспекция объектов, макросы и многие другие дополнительные функции ... - Петр Хайнели (Peter Hinely).

E

Е является безопасной распределенной чисто объектной платформой, базирующейся на Java, и скриптовым языком вида p2p. Состоит из двух частей: ELib и языка E. Elib предоставляет собой средство, используемое для взаимодействия объектов между собой. Поскольку Elib является библиотекой, написанной на чистом языке Java, есть поддержка межпроцессного безопасного распределенного программирования. Протокол с криптографическими возможностями позволяет совместно и безопасно исполнять подозрительные процессы Java и реализовывать с высокой производительностью и без взаимных зависаний распределенные и чисто объектные вычисления. Язык E можно использовать для описания того, что происходит внутри объекта. Представлена удобная и знакомая нотация вычислительной модели ELib, так что вы можете выполнять программирование в одной модели, а не в двух. Если взглянуть глубже, то видно, что нотация представляет собой расширение минималистского лямбда-языка Kernel-E, очень похожего на Scheme или Smalltalk. В соответствие с семантикой Elib, объекты, написанные на языке E, могут взаимодействовать только с другими объектами, что позволяется задавать внутри процесса детализированную схему безопасности, в том числе позволять безопасно запускать ненадежный мобильный код (например, caplet-ы).

elastiC

elastiC является переносимым высокоуровневым объектно-ориентированным интерпретируемым языком с синтаксисом, похожим на синтаксис языка C. Он обладает следующими характеристиками: открытый исходный кодом, интерпретируемость, имеется возможность компилировать в переносимый байткод, наличие динамической типизации, автоматическая и действительно очень быстрая сборка мусора, объектная-ориентированность с поддержкой мета-программирования (а-ля Smalltalk), поддержка функционального программирования (лексически контекстные замыкания, похожие на имеющиеся в Scheme, и функциональные возможности, похожие на имеющиеся в языке eval), иерархическое пространство имен, богатый набор полезных встроенных типов (динамические массивы, словари, символы, ...), расширяемость с помощью C (можно добавить функции, типы, классы, методы, пакеты, ...), встраиваемость в С. На elastiC сильное влияние оказали языки C, Smalltalk, Scheme и Python и попытки объединить лучшие характеристики всех этих языков. В то же время, в языке последовательно поддерживая его уникальность.

Erlang/OTP

Erlang/OTP является средой разработки на основе языка Erlang. Erlang является языком программирования, в котором есть многие возможности, чаще ассоциируемые с операционной системой, чем с языком программирования: параллельные процессы, планирование, управление памятью, распределенные вычисления, сети и т. д. Первоначальный релиз Erlang с открытым исходным содержит реализацию Erlang, а также большую часть промежуточного кода, разработанного фирмой Ericsson для построения распределенных систем высокой готовности. Erlang характеризуется следующими особенностями: надежностью, программно реализуемым режимом реального времени, возможностью обновления кода в горячем режиме и инкрементальной загрузкой кода.

Euphoria

Euphoria является простым гибким и легким в освоении языком программирования. Он позволяет быстро и легко разрабатывать программы для Windows, DOS, Linux и FreeBSD. Euphoria был впервые выпущен в 1993 году. С тех пор в нем неуклонно совершенствуется система быстрого развертывания программ Rapid Deployment Software, которая помогает привлекать все большее число пользователей-энтузиастов. Хотя в Euphoria в режиме реального времени реализуется контроль индексов, проверка неинициализированных переменных и выполняются многие другие проверки, он является очень быстрым. Язык был использован для разработки высокоскоростных игр для DOS, графических программ для Windows и программ X Window для Linux. Язык также очень подходит для программирования CGI (веб-интерфейса).

Felix

Felix является улучшенным процедурным языком программирования, похожим на Algol, со строгой функциональной подсистемой. Он оснащен статической типизацией в стиле ML, функциями первого класса, возможностями сопоставления с образцами, сборкой мусора, полиморфизмом и имеет встроенную поддержку, обеспечивающую высокую производительность микропотоков, регулярных выражений и контекстно-свободного анализа. В системе есть средства создания скриптов, так что язык можно использовать наподобие других скриптовых языков, таких как Python и Perl, но генерируемый при этом машинный код позволяет получить высокую производительность. Ключевой особенностью системы является то, что в ней используется объектная модель C/C++, а также имеется улучшенный подъязык компоновки, поддерживаемый интеграцию с языком C/C++ как на уровне исходного кода, так и на объектном уровне, как для встроенных типов данных и функций C/C++, имеющихся в Felix, так и для встраивания Felix в существующие варианты архитектуры C++. Компилятор Felix написан на Objective Caml, и генерирует код ISO C++, который должен компилироваться на любой платформе.

ferite

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

Forth

Forth является стековым расширяемым языком, не имеющим проверок типов. Он, вероятно, более известен за свою "обратную польскую" (постфиксную) арифметическую нотацию, знакомую пользователям калькуляторов Hewlett-Packard. Forth является языком программирования реального времени, первоначально разработанным для управления телескопами. В Forth есть много уникальных возможностей и приложений: он может сам себя компилировать и в результате будет получен новый компилятор, в нем используется обратная польская кодировка, проверка ошибок и компиляция выполняется во время редактирования (аналогично BASIC), он является чрезвычайно эффективным языком, базирующийся на использовании потоков, его можно использовать для собственной отладки, он расширяемый. Таким образом он может стать тем, что вам нужно. Ниже приведены ссылки на группу международную некоммерческую организацию Forth Interest Group (FIG), созданную для содействия использованию языка Forth. Еще одним всемирно известным сайтом, посвященный языку Forth, является сайт сообщества Forth на http://wiki.forthfreak.net/.

GNU Smalltalk

GNU Smalltalk является свободной реализацией языка Smalltalk-80, которая работает на большинстве версий Unix и, вообще, везде, где можно найти соответствующие библиотеки POSIX. Его необычной особенностью является то, что хорошо приспособлен для скриптовых задач и автономной обработки данных. Более подробное объяснение GNU Smalltalk смотрите по ссылке http://www.gnu.org/software/smalltalk/gst-manual/gst_1.html#SEC1.

Haskell

Haskell является языком программирования. Более конкретно, это полиморфно типизированный чисто функциональный язык с отложенными вычислениями, который сильно отличается от большинства других языков программирования. Язык назван в честь Хаскеля Брукса Карри (Haskell Brooks Curry), чьи работы в области математической логики служит основой для функциональных языков. Язык Haskell основан на лямбда-исчислении. Есть много реализаций языка Haskell, среди них:

HLA (High Level Assembly - Высокоуровневый ассемблер)

Язык HLA был разработан в качестве инструмента для помощи в обучении программированию на языке ассемблера и устройству компьютеров студентов Калифорнийского университета в Риверсайде. Основная идея состояла в обучении студентов программированию на ассемблере на том же уровне, что и программирование на языках высокого уровня, таких как C/C++ и Pascal/Delphi. В это время был разработан язык HLA, который позволил опытным программистам, знающим ассемблер, писать на ассемблере более понятный и более мощный код.

Icon

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

Io

Io является небольшим языком программирования, использующим прототипы. Принципы, заложенные в язык Io, были, в основном, навеяны языками Smalltalk (все значения являются объектами), Self (использование прототипов), NewtonScript (дифференцированное наследование), Act1 (актеры и фьючерсы для реализации параллелизма), LISP (код является деревом, доступным для проверки/модификации во время исполнения) и Lua (небольшой встраиваемый язык).

J

J является современным высокоуровневым и высокопроизводительным языком программирования общего назначения. Он является переносимым и работает на Windows, Unix, Mac, КПК и портативных устройствах, причем как в графической среде, так и в консоли. Настоящие 64-битовые системы J доступны для XP64 и linux64, на платформах AMD64 и Intel EM64T. Системы J можно устанавливать и распространять бесплатно.

Jamaica

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

Joy

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

Judo

Judo является функциональным скриптовым языком, используемым на практике. Он предназначен не только для использования в алгоритмическом / объектно-ориентированномо / многопоточном программировании и для создания Java-скриптов, но также и в ряде крупных прикладных задач, например, при создании скриптов для JDBC, WSDL, ActiveX, ОС, для многих форматов файлов/данных и т.д. Несмотря на богатую функциональность, базовый язык предельно прост, и синтаксис, поддерживающий прикладные области, абсолютно интуитивно понятен экспертам в этих областях, так что даже если вы никогда не программировали на языке Judo, вам не трудно будет понять, что делает код.

JWIG

JWIG является высокоуровневым языком программирования, базирующимся на Java и предназначенным для разработки интерактивных веб-сервисов. В нем имеется усовершенствованная модель сессии, гибкий механизм динамического создания документов XML, в частности XHTML, и мощный API, упрощающий использование протокола HTTP и многих других аспектов программирования веб-сервисов. Для поддержки разработки программ в JWIG предложен уникальный набор специализированных анализаторов программ, с помощью которых во время компиляции заданной программы проверяется, что при сборке документов и получения входных данных из формы не возникнут ошибки времени исполнения и что все изображаемые документы будут соответствовать определению типа документа XHTML 1.0. Основной целью проекта JWIG в сравнении с альтернативными вариантами, такими как Servlets, JSP, ASP и PHP, является более простая разработка сложных веб-сервисов. JWIG является потомком языка <bigwig>, которые позиционируется как исследовательский.

Lava

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

Lua

Lua является мощным легковесным языком программирования, разработанным для расширения возможностей приложений. Он также часто используется в качестве автономного языка общего назначения. Он является бесплатным. В Lua объединена простота процедурного синтаксиса с мощными конструкциями описания данных, базирующимися на ассоциативных массивах и расширяемой семантике. Он является динамически типизированным языком, интерпретируемым на уровне байт-кода; в нем есть автоматическое управление памятью со сборкой мусора. Это делает его идеальным для конфигурирования, использования в виде скриптов и быстрого прототипирования. Основополагающей идеей при разработке языка Lua было создание мета-механизмов реализации возможностей, а не предоставления непосредственно в языке некоторого набора возможностей. Например, несмотря на то, что Lua не является чистым объектно-ориентированным языком, в нем есть мета-механизмы реализации классов и наследования. Мета-механизмы Lua экономят используемые понятия, язык остается небольшим, но есть возможность расширить семантику неклассическим образом. Расширяемая семантика является отличительной чертой языка Lua. Lua представляет собой обработчик языка, который можно встроить в ваше приложение. Это означает, что, помимо синтаксиса и семантики, в нем есть API, который позволяет приложениям обмениваться данными с программами Lua, а также расширять Lua с помощью функций C. В этом смысле его можно рассматривать как языковый фреймворк, предназначенный для создания предметно-ориентированных языков. Lua реализован в виде небольшой библиотеки функций C, написанных на ANSI C, и компилируется без всяких изменений на всех известных платформах. В реализацию заложены принципы простоты, эффективности, переносимости и низкой стоимости внедрения. Результатом является быстрый языковый движок небольшого размера, что делает его также идеальным для встраиваемых систем.

Mercury

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

Mono

Mono предлагает программное обеспечение, необходимое для разработки и выполнения клиентских и серверных приложений .NET на Linux, Solaris, Mac OS X, Windows и Unix. Благодаря поддержке фирмы Novell, проект с открытым кодом Mono имеет активное и энергичное сообщество энтузиастов и может занять лидирующие позиции в разработке приложений для Linux.

MPD

MPD является вариантом языка программирования SR. В SR используется Pascal-подобный синтаксис, а в управляющих инструкциях применяются блокирующие команды (guarded commands). В MPD используется C-подобный синтаксис и C-подобные операторы управления. Однако основные компоненты в этих двух языках одни и те же: ресурсы, глобальные переменные, операции, процедуры, процессы и виртуальные машины. Более того, в MPD поддерживаются те же самые разнообразные механизмы параллельного программирования, что и в SR: совместно исполняемые инструкции, семафоры, вызовы / отсылки / перенаправление обращений, а также инструкции приема и ввода данных.

Nemerle

Nemerle является высокогоуровневым языком программирования со статической типизацией, предназначенным для платформы .NET. В нем предложены объектно-ориентированные и императивные возможности. Он имеет простой C#-подобный синтаксис и мощную систему мета-программирования. Среди особенностей, относящимся к функциональному программированию, представлены следующие: использование вариантов, сопоставление с образцом, вывод типов и полиморфизм параметров (типа generics). С помощью системы мета-программирования обеспечивается существенная расширяемость компилятора, встраивание конкретных специализированных языков, использование частичной оценки и использование механизмов аспектно-ориентированного программирования.

Octave

GNU Octave является языком высокого уровня, первоначально предназначенным для численных расчетов. Он предоставляет удобный интерфейс командной строки для решения линейных и нелинейных численных задач, так и для выполнения других численных экспериментов с использованием языка, который большей частью совместим с Matlab. Его также можно использовать в качестве языка, ориентированного на обработку в потоке. В Octave есть обширный инструментарий для решения общих численных задач линейной алгебры, нахождения корней нелинейных уравнений, интегрирования обыкновенных функций, манипулирования с полиномами и интегрирования обыкновенных дифференциальных и дифференциально-алгебраических уравнений. Он легко расширяем и настраиваем через определяемые пользователем функции, написанные на родном языке Octave, или с использованием загружаемых модулей, написанных на C++, C, Fortran или других языках.

OO2C (Оптимизирующий компилятор Oberon-2)

OO2C является платформой разработки на языке Oberon-2. Платформа состоит из оптимизирующего компилятора, ряда связанных с ним инструментов, набора стандартных библиотечных модулей и справочного руководства. Oberon-2 представляет собой язык программирования общего назначения, созданный в традициях Pascal и Modula-2. Наиболее важными особенностями являются блочная структура, модульность, раздельная компиляция, статическая типизация со строгой проверкой типов (в том числе проверкой нарушения границ модуля) и возможность расширения типов с помощью процедур, обрабатывающих типы данных. Расширение типов делает Oberon-2 объектно-ориентированным языком.

Язык описания упорядоченных графов OGDL (Ordered Graph Data Language)

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

Pike

Pike является динамическим языком программирования с синтаксисом, аналогичным синтаксису Java и C. Он прост для изучения, не требует долгой компиляции и обладает мощными встроенными типами, позволяющими просто и очень быстро манипулировать с данными. Pike выпущен под лицензиями GNU GPL, GNU LGPL и MPL.

Pyrex

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

Q

Q является функциональным языком программирования, основанным на понятии переписывания (rewriting). Итак, программа или "скрипт" на языке Q является простым набором уравнений, которые используются для оценки выражений в символическом виде. Уравнения задают алгебраические тождества, причем уравнения интерпретируются как правила переписывания, используемые для сведения выражений к "нормальным формам".

R

R является языком и средой статистических вычислений и отображения результатов в виде графиков. Это проект GNU, который аналогичен языку и среде S, разработаными в Bell Laboratories (бывшая AT&T, в настоящее время - Lucent Technologies) Джоном Чемберсом (John Chambers) и его коллегами. R можно рассматривать как несколько иную реализацию S. Есть несколько важных различий, но большая часть кода, написанного для S, работает без изменений и в R. В R предоставлен широкий спектр статистических (линейное и нелинейное моделирование, классические статистические тесты, анализ временных рядов, классификация, кластеризация, ...) и графических технологий, которые можно расширять. Язык S часто сравнивают с автомобилем, который выбирается для проведения статистических исследований, а R тогда представляется в виде маршрута Open Source маршрут, используемого для участия в этом виде деятельности.

Regina Rexx

Regina является интерпретатором Rexx, который был перенесен на большинство платформ Unix (Linux, FreeBSD, Solaris, AIX, HP-UX и др.), а также на OS/2, eCS, DOS, Win9x/Me/NT/2k/XP, Amiga, AROS, QNX4.x, QNX6.x BeOS, MacOS X, EPOC32, AtheOS, OpenVMS, SkyOS и OpenEdition. Rexx является языком программирования, который был разработан с тем, чтобы он помогал не очень опытным программистам, но, одновременно, был достаточно мощным для его использования опытными пользователями. Он также является языком, который идеально подходит в качестве макроязыка в других приложениях.

Serp

Serp является фреймворком с открытым исходным кодом, предназначенным для работы с байт-кодом Java. Назначение этого фреймворка - максимально обеспечить возможность модификации байт-кода при одновременном снижении связанных с этим затрат. Во фреймворке предлагается набор высокоуровневых API, позволяющих манипулировать различными элементами байт-код, начиная с крупных структур, например, полей членов класса, и до отдельных инструкций, которые расположены коде методов. Хотя для того, чтобы выполнять какие-либо дополнительные манипуляции, необходимо некоторое представление о формате файла класса и, особенно, о наборе инструкций JVM, фреймворк настолько упрощает начальное ознакомление с миром разработки байткода, насколько это вообще возможно.

Компилятор C для небольших устройств (SDCC - Small Device C Compiler)

SDCC является бесплатным перенастраиваемым оптимизирующим компилятором ANSI-C, предназначенным для использования в микроконтроллерах на базе Intel 8051, Maxim 80DS390 и Zilog Z80. Ведется работа по поддержке Motorola 68HC08, а также Microchip серий PIC16 и PIC18. Весь исходный код компилятора распространяется под лицензией GPL.

SmartEiffel (Компилятор GNU Eiffel)

О SmartEiffel утверждается, что это "самый быстрый и самый компактный в мире мультиплатформенный компилятор языка Eiffel". Eiffel является объектно-ориентированным языком программирования, который предназначен для разработки надежных программ. Его синтаксис в традициях языков ALGOL и Pascal и ориентирован на использование ключевых слов. В Eiffel используется строгая статическая типизация с автоматическим управлением памятью (как правило, представляющей собой сборку мусора). К числу отличительных характеристики Eiffel относятся: дизайн по контракту (DbC), либеральные использование наследования, в том числе множественное наследование, система типизации, обрабатывающая семантику как значений, так и ссылок, а также универсальные классы generic. В Eiffel используется унифицированная система типизации — все типы в Eiffel являются классами, так что можно создать подклассы базовых классов, таких как INTEGER. В Eiffel есть возможность перегрузки операторов, в том числе возможность определения новых операторов, но нет возможности перегрузки методов.

Squeak

Squeak является открытой и исключительно переносимой реализацией языка Smalltalk, виртуальная машина которой полностью написанна на языке Smalltalk, что облегчает его отладку, анализ и изменения. Чтобы получить приемлемые на практике характеристики, транслятор создает эквивалентную программу на С, производительность которой сопоставима результатами коммерческих реализаций Smalltalk. К числу других примечательных возможностей Squeak относятся следующие: звук в режиме реального времени и синтез музыки, полностью написанный на Smalltalk, расширения BitBlt для обработки цвета любой глубины и сглаживание во время вращения и масштабирования изображения, поддержка доступа к сети, что позволят достаточно просто создавать сервера и другие полезные объекты. Он работает абсолютно идентично на многих платформах (Windows, Mac, Unix и др.), имеет компактный формат объекта, для которого, как правило, требуется только одно слово на каждый объект, а также простой, но эффективный инкрементный сборщик мусора, эффективно осуществляющий множественное изменение 32-разрядных прямых указателей на объекты.

SR (Синхронизация ресурсов)

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

Standard ML

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

Steel Bank Common Lisp (SBCL)

SBCL является компилятором с открытым исходным кодом (свободным программным обеспечением) и системой времени исполнения ANSI Common Lisp. Он представляет собой интерактивную среду, в которой есть интегрированный нативный компилятор, отладчик, а также много расширений. SBCL работает на ряде платформ.

Крошечный компилятор C (TCC -Tiny C Compiler)

Tiny C Compiler является небольшим компилятором C, который можно пользоваться повсюду для компиляции и выполнения кода на C, например, на спасательном диске (около 100 КБ для исполняемого модуля TCC для платформы x86, включающего препроцессор C, компилятор, ассемблер и компоновщик). TCC быстрый. Он генерирует оптимизированный код для x86, нет ни одного байта накладных расходов, он выполняет компиляцию, ассемблирование и компоновку в несколько раз быстрее, чем GCC. TCC является универсальным и с ним можно напрямую использовать любую библиотеку. Он движется к полному соответствию со стандартом ISOC99 и может сам себя компилировать. Компилятор безопасен, поскольку в нем есть дополнительная проверка памяти и нарушения границ. Код, используемый для проверки границ, можно просто добавлять в стандартный код. TCC выполняет непосредственную компиляцию и исполнение исходного кода. Компоновка и сборка не нужны. Есть полный препроцессор C и GNU-подобный ассемблер. Поддерживается использование скриптов C; просто добавьте "#!/usr/local/bin/tcc -run" в первой строке вашего исходно кода на С и запустите его прямо из командной строки. С помощью libtcc вы можете использовать TCC в качестве движка для динамической генерации кода.

TinyCOBOL

TinyCOBOL является компилятором языка COBOL, разрабатываемым членами сообщества свободного программного обеспечения. Основная задача состоит в создании компилятора COBOL, основывающегося на стандартах COBOL 85. TinyCOBOL доступен для процессоров с архитектурой Intel (IA32) и с совместимой архитектурой на следующих платформах: BeOS, FreeBSD, Linux и MinGW на Windows.

Yorick

Yorick это интерпретируемый язык программирования, предназначенный для постобработки и управления большими научными системами моделирования. Небольшие научные модели, такие как обтекание профиля или движение кожи на барабане, можно записать в виде отдельных программ на языке Yorick. В язык для записи многих обычных операций над массивами используется компактный синтаксис, поэтому обработка больших массивов чисел выполняется очень эффективно. В отличие от большинства интерпретаторов, которые работают в сотни раз медленнее, чем непосредственно скомпилированный код, в языке Yorick можно для многих задач скомпилировать код, который будет работать не более, чем в четыре или пять раз медленнее, чем обычный скомпилированный код. На первый взгляд язык Yorick напоминает код на C, но переменные в языке Yorick никогда явно не объявляются и имеют динамическую область видимости, похожую на ту, что есть во многих диалектах языка Lisp. "Неофициальную" домашнюю страницу языка Yorick можно найти по ссылке http://www.maumae.net/yorick.

  • Домашняя страница проекта:
  • Страница для скачивания:

ZPL

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


Предыдущий раздел: Оглавление Следующий раздел:
Пакет Tk-8.5.9   Библиотеки и сборки, предназначенные для программирования