Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [AWL] новый скрипт-язык 
V
    Опции темы
regis
Дата 26.4.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Sardar, прежде всего, спасибо! Вижу, что статью Вы посмотрели. ;)

Цитата

Цитата
Being a weakly typed language, AWL requires no type declarations...

Немного не точно. С типами есть два свойства:


  • динамичные (duck typing) и статичные

  • строгая и не строгая типизация

Первое определяет является ли указание типа обязательным (статичные) или отслеживается транслятором (динамичные). Второе допускает не явное преобразование типов (не строгая, т.е. строки в числа и т.п) или нет (строгая, явное конвертирование необходимо). В таком свете AWL будет языком с динамичными типами и не строгой типизацией если быть точным smile


Все совершенно правильно -- в AWL: 1) вообще нет деклараций типов, 2) автоматические преобразования между скалярными типами (напр. числа <-> строки).
Но вот как аккуратно выразить эту мысль на английском?

Цитата

Отсутствие запятых в списке аргументов функции сбивает с толку, особенно осознавая что при вызове запятые таки ставим. ИМХО это ухудшает читабельность.


Для этого есть весьма простой резон: в списках параметров/переменных у функторов/классов имеются только идентификаторы, поэтому от запятых можно воздержаться. В то время как в вызовах синтаксис не столь однозначен.
Впрочем, если в списке есть только синтаксически-атомарные выражения (литералы, переменные...), то тоже вполне можно обойтись без запятых. Но для обрамления списка потребуется использовать квадратные скобки. Пример:

Код


! myfunc (X Y Z) = ....; ` что-то делает `

myfunc (A*2, B*3, C*4);
myfunc ([A B C]);        ` равносильно myfunc (A, B, C) `
myfunc ([10 20 30]);    ` равносильно myfunc (10, 20, 30) `



Цитата

Код
<: ["\t#" n ": " from " => " to "\n"];

Такая запись просто угнетает. Здесь же не конкатенация, а собирается список, который затем пугающего вида "<:" печатается в консоль?[/code]


Именно так: <: - это оператор вывода, причем если первый операнд является потоком стандартного вывода (это не обязательно консоль!), он может опускаться. Что же тут такого угнетающего? IMHO, читается получше, чем операции ввода-вывода в C++ типа

cout << xx << "," << yy << "," << zz;

Но вот если б в C++ еще добавили отдельные операции ввода/вывода (перегрузка << и >> явно была не самой удачной идеей), и еще разрешили опускать первый операнд, когда он самоочевиден -- то получилось бы примерно то же, что и в AWL.
Теперь по поводу списков:

Цитата

ИМХО как то это не эффективно со списком выглядит.


Нет, как раз со списком будет самый эффективный вариант. Если вы думаете, что вычисление списка непременно создает его копию -- это, конечно, неверно. При выполнении приведенного кода *вообще* никаких операций выделения памяти не будет. (Кстати, в AWL начиная примерно с 5.0.1 работа со списками оптимизирована довольно хорошо: по умолчанию списки никогда не копируются без нужды. Если явно нужна копия списка List, примените l_copy(List)).

Цитата

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


Разумеется, есть такой! A +$ B (или s_cat(A,B)) -- конкатенация A и B, рассматриваемых как строки. С его помощью этот код можно переписать так:

Код
<: ("\t#" +$ n +$ ": " +$ from +$ " => " +$ to +$ "\n");


Но это как раз НЕ будет эффективным вариантом! Нет смысла создавать новую строку, только чтобы вывести ее и немедленно уничтожить.

Цитата

Вижу активное использование рекурсии, но на сколько эффективно выполнены вызовы?


Как я понял, вы про пример "Ханойские башни"? Ну, здесь в принципе трудно обойтись без рекурсии, алгоритм такой.

Цитата

Заменяет ли компиллер простые вызовы inline вставками кода?


Для этого, прежде всего, нужно заложить в компилер какой-то критерий того, что является "простым" вызовом, и что -- нет. Это далеко не очевидно.
В принципе, здесь стоит ориентироваться на то, как сделано в Scheme. (Там кроме собственно "функций" допустимы "макросы" -- по сути, инлайн функции, код которых подставляется при компиляции. Сделано все это очень культурно. Достаточно сказать, что немало штатных средств языка является такими макросами, подставляемыми незаметно для пользователя. Сделать похожий механизм в AWL -- очень соблазнительно.
Но, в любом случае, это должно быть явным, без самодеятельности компилятора.)

Цитата

 tail-recursion оптимизации? Иначе будет тормозить...


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

Цитата

Цитата
One unusual feature of AWL object system is a temporary class-instance binding

Что имелось в виду? То что свойство при каждом обращении ищется вновь и вновь в run-time'е? Так это просто (если объект хештаблицей реализовать,  большинство скриптовых движков такие) и не эффективно по сравнению высчитыванием смещения на момент трансляции.


Нет, имеется в виду совершенно другое. Попробую объяснить этот механизм на пальцах.

В большинстве ОО-языков операции над объектами реализуются через методы класса. С технической точки зрения, что метод имеет один неявный аргумент (ссылку на объект) вдобавок ко всем прочим, и так получает доступ к этому объекту. Другими словами, связывание "класс-экземпляр" происходит при вызове методов (а время его действия ограничено времением выполнения метода). В AWL все не так.

Упомянутое связывание реализуется отдельной операцией:

Код

    object.expr


формально означает "для object (как текущего экземпляра своего класса) вычислить/выполнить expr". В частности: object.component позволяет обратиться к компоненте object; object.method (...) -- вызвать метод применительно к object и т.д., как в большинстве ОО-языков. НО: выражение expr может быть *произвольным* (т.е. включать обращения к разным компонентам, вызовы разных методов и т.п.) В сущности, операция '.' в AWL работает примерно как with в Паскале (в C++ или Java аналогов нет).

Как все это правильно назвать по английски -- не знаю. Наверно, термин надо придумывать: точных аналогов именно такой ОО-модели, вроде, нигде не встречается. А жаль!

Цитата

Чего я ещё не вижу это хорошего синтаксиса, уж больно он страшен в нынешнем виде. Также хочется быть кратким, следовательно должно быть много syntatic sugar.


А вот здесь не вижу конкретики: что именно и как стоит улучшить. ;)
Ничего особенно страшного в синтаксисе нет. Любой незнакомый язык поначалу производит пугающее впечатление, но в процессе обучения это обычно проходит. ;)
И насчет синтаксического сахара замечание странноватое: 90% синтаксиса AWL (практически все унарные-бинарные операции с их приоритетами и т.п.) представляет собой как раз тот самый сахар. Без него AWL код представлял бы собой практически чистый аналог LISP (разве что там сплошные вложенные списки, а в AWL была бы смесь вложенных списков, вызовов функторов и блоков). Внутреннее представление программы именно таким и является. Впрочем, никто не мешает совсем забыть про "сахар", и программировать именно в таком стиле -- просто это, ИМХО, непрактично.

Цитата


К примеру (язык от балды):

Цитата

Код
//File.reader - открывает файл как поток байтов и возвращает его в read only режиме
//поток имеет итератор, можно задать размер буффера если читаем блоком, а не по символьно
blocks = File.reader("some_bin.file").iterator(1024);

//заметим что файл будет читаться в процессе итерирования, исключения bubble'ятся наверх
//connection это объект RsyncConnection, отсылающий инфу согласно rsync протоколу, просто для примера
//конструкция [ exp for var in list ] из Python'a
connection.send([(some_rolling_checksum(string), md5(string)) for block in blocks]);

В две строчки зачитали файл и просчитали хеши для каждого блока, затем отправили серверу на поиск совпадений. Если отбросить API, то видим очень выразительную [for in] конструкцию. Вот что то подобное хотелось бы в AWL.



В этом примере я не совсем понял, что делает iterator(1024), и какая связь между переменной block и телом цикла (она там вроде не используется?) Но, в общем, все это тривиально переводится на AWL и будет выглядеть примерно так:

Код

blocks = File.reader ("some_bin.file");
l_loop (block, blocks,
    connection.send (some_rolling_checksum(string), md5(string)));


Как видите, разница невелика.
Понятно, здесь предполагается что функторы some_rolling_checksum и md5 определены где-то, а к объекту File применим "метод" reader.
А итератор l_loop -- и есть аналог для for ... in ...
Подробнее здесь:
http://awl-project.narod.ru/func_main.html#func_l_loop


Это сообщение отредактировал(а) regis - 26.4.2007, 10:57
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
Sardar
Дата 26.4.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(regis @  26.4.2007,  09:50 Найти цитируемый пост)
Для этого есть весьма простой резон: в списках параметров/переменных у функторов/классов имеются только идентификаторы, поэтому от запятых можно воздержаться. В то время как в вызовах синтаксис не столь однозначен.

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

Интересно как передать функции список, так что бы он не развернулся на параметры? Не стоило ли сделать для этого отдельный оператор как в Python'е?


Цитата(regis @  26.4.2007,  09:50 Найти цитируемый пост)
Что же тут такого угнетающего?

А почему нельзя было просто print или echo? Как сторонний человек без предрассудков по языкам, "<:" воспринимается гораздо хуже чем слово smile
А вообще print должно быть некой общей API функцией пишущей в любой поток (поточное, не блокирующее IO тоже нужно). Как часть языка оно смотрится не очень...

Цитата(regis @  26.4.2007,  09:50 Найти цитируемый пост)
С его помощью этот код можно переписать так

Чем больше смотрю на синтаксис, тем больше понимаю что это шифровка smile
Интересно узнать как реализованы списки. Быть может к лету напишу простейший транслятор AWL -> Java.

Цитата(regis @  26.4.2007,  09:50 Найти цитируемый пост)
Но, в любом случае, это должно быть явным, без самодеятельности компилятора

Контролируемые макросы это хорошая вещь, но и отслеживание вызова простой функции не проблема. Я не знаю как реализована AWL VM, но представим что:
  • компилер транслирует код в модульные файлы (классы, что угодно)
  • модульный файл содержит описание структур и код функций, где каждая также описывает все вызываемые функции и другую инфу (это полезно для разного рода анализаторов).
  • перед выполнением модуль (частично) подгружается, для каждой функции поднимаются вызываемые функции. Если вызываемая функция достаточно мала, то она вставляется как код, а не вызов.
Компилер пусть снабжает функции аннотациями, контролирующими процесс линковки. Например к вызову может добавить тег try-inline, если вызываемая функция оказывалась годной для вставки. Тогда на момент линковки загрузчик может следовать советам компилера и пробовать только помеченные вызовы, тем самым поднимая скорость загрузки. Естественно в памяти всей этой метаинфы уже нет, загруженные модули слинкованы на прямую.

Цитата(regis @  26.4.2007,  09:50 Найти цитируемый пост)
В AWL все не так

Очень смахивает JavaScript и по моему Objective-C. В рантайме искать свойства/методы объекта просто, но накладно. У тебя получилось реализовать это без постоянного поиска при каждом обращении к свойству (прямая линковка)?


Хорошо что развиваешь проект. Не буду больше попусту критиковать, попробую в ближайшие пару недель разобраться с синтаксисом и внутренним устройством.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
regis
Дата 28.4.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



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


ИМХО, в списках параметров запятые не убавят читабельности, и не прибавят.

Цитата
Интересно как передать функции список, так что бы он не развернулся на параметры? Не стоило ли сделать для этого отдельный оператор как в Python'е?


Не знаю, как в Питоне, а в AWL все намного проще:

Код

! myfunc (L) = L[0] + L[1] + L[2];   ` например... `

myfunc (10, 20, 30);   `вернет 60 `


В данном случае список не "развертывается", потому что развертываться некуда: параметр у функтора только один, он и получит все значения. И если параметр не один, но список переданных значений длиннее списка параметров -- последний получит все "неприсвоенный" хвост списка. Кстати, присваивания происходят так же.

Цитата
Цитата(regis @  26.4.2007,  09:50 Найти цитируемый пост)
Что же тут такого угнетающего?

А почему нельзя было просто print или echo? Как сторонний человек без предрассудков по языкам, "<:" воспринимается гораздо хуже чем слово smile


Ну, во первых, как всегда, Output <: (a, b, c) -- это лишь синоним для f_put (Output, a, b, c). Второй синтаксис использовать никто не мешает.
Опять-таки, никто не мешает определить свои функторы, под названием print или echo или как-нибудь еще (а фэны Паскаля или Дельфи захотят, чтобы были write и writeln ;) ) Пожалуйста, пишем следующее:

! print (L) = <: L;

или, скажем:

! write(L) = <: L;
! writeln (L) = <: (L, "\n");

и пользуемся на здоровье...

Цитата
А вообще print должно быть некой общей API функцией пишущей в любой поток (поточное, не блокирующее IO тоже нужно). Как часть языка оно смотрится не очень...


Функтор f_put и пишет в любой поток, который задается его первым аргументом (Просто, если первый аргумент -- undef, то предполагается стандартный вывод). И понятие "часть языка" в AWL довольно условно (можно сказать даже что стандартная математика или присваивания в AWL -- *не часть языка*: стандартные функторы, и только.)

Цитата
Чем больше смотрю на синтаксис, тем больше понимаю что это шифровка smile 


Кстати, при нормальной раскраске код будет восприниматься намного проще. А написать лексический колоризатор для AWL-кода -- это пара пустяков, намного проще, чем, скажем, для Perl.

Цитата
Интересно узнать как реализованы списки.


Очень просто:

Код

struct X_List {
    Expr *first;    // head of list
    Expr *next;   // tail of list
    };


Понятно, что реальное определение X_List длиннее, но суть та же. ;)

Цитата
Быть может к лету напишу простейший транслятор AWL -> Java. 


Кстати, если вы всерьез хотите этим заняться, я готов прислать все исходники.

Цитата
Цитата(regis @  26.4.2007,  09:50 Найти цитируемый пост)
В AWL все не так

Очень смахивает JavaScript и по моему Objective-C.


Про Obj-C я практически ничего не знаю, так что судить не берусь. В JavaScript -- так точно нельзя.

Цитата
В рантайме искать свойства/методы объекта просто, но накладно. У тебя получилось реализовать это без постоянного поиска при каждом обращении к свойству (прямая линковка)?


Именно так и реализовано. Именно поэтому, кстати, обращение к внутренностям класса извне класса должно быть квалифицированным (т.е. должно предваряться Class!!). 

Цитата
Хорошо что развиваешь проект. Не буду больше попусту критиковать, попробую в ближайшие пару недель разобраться с синтаксисом и внутренним устройством.


"С внутренним устройством" без исходников точно не разберетесь. ;)


--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
Sardar
Дата 4.5.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(regis @  28.4.2007,  11:05 Найти цитируемый пост)
ИМХО, в списках параметров запятые не убавят читабельности, и не прибавят

Сужу субьективно конечно, но без запятых на список это не похоже. Особенно когда в списке строки, не разобрать где что.

Цитата(regis @  28.4.2007,  11:05 Найти цитируемый пост)
Именно так и реализовано. Именно поэтому, кстати, обращение к внутренностям класса извне класса должно быть квалифицированным (т.е. должно предваряться Class!!

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



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
regis
Дата 11.5.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



[quote]
Цитата(regis @  28.4.2007,  11:05 Найти цитируемый пост)
ИМХО, в списках параметров запятые не убавят читабельности, и не прибавят

Сужу субьективно конечно, но без запятых на список это не похоже. Особенно когда в списке строки, не разобрать где что.[quote]

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

Цитата

Цитата(regis @  28.4.2007,  11:05 Найти цитируемый пост)
Именно так и реализовано. Именно поэтому, кстати, обращение к внутренностям класса извне класса должно быть квалифицированным (т.е. должно предваряться Class!!

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


Ну, фактически в C++ (и вроде в Java) все также. Тоже извне класса надо обращаться по квалифицированному имени, например:

MyClass::a + MyClass::b + MyClass::c

Замечу, что в обоих языках не нужды ставить этот оператор постоянно, т.к. языки -- с явной типизацией, и по типу пекременной (или результата  выражения), компилятор сам знает, куда обращаться. В AWL, увы, так нельзя (пока более строгой типизации нет).

Зато в AWL есть другое: оператор квалификации применим не  только к отдельным идентификаторам, но и к выражению в целом. Т.е. в выпеприведенном случае можно написать что-то вроде:

MyClass!! (a + b + c)

и этого вполне достаточно. Сложность "квалифицированного" выражения не ограничивается -- это может быть и целый блок, т.е. можно просто написать

MyClass!! { expr1, expr2 ..... exprN }

имея в блоке доступ к компонентам и функторам-методам MyClass без лишней головной боли.

--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
regis
Дата 21.6.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Больше 3000 просмотров темы! Неплохо...

Ну вот, выложил я новую версию AWL: 0.5.4!

http://awl-project.narod.ru/awl-000504.zip

(В архиве есть и документация.)

Основные отличия от предыдущих:

- поддержка (пока очень экспериментальная) Unicode строк.

- поддержка (еще более экспериментальная) регулярных выражений (patterns).
  (См. в functor_index все функторы с именами типа rx_*)

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


Это сообщение отредактировал(а) regis - 21.6.2007, 10:25
--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
regis
Дата 21.9.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Привет всем!

Уже неделю, как на http://awl-project.narod.ru/ выложена новая (0.5.5) версия языка, и документация. Скоро будет несколько новых примеров, возможно и manual будет обновлен.


--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
regis
Дата 12.10.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Ну, наконец-то вышел журнал "Мир ПК" октябрь'2007.
В нем есть кое-что, имеющее отношение к теме. ;)

(У статьи будет продолжение; выйдет ориентировочно в декабрьском номере.)

--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
regis
Дата 29.12.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Давно не писал в эту тему. ;(

Из новостей:

- сайт http://awl-project.narod.ru обновлен. Новую версию языка (0.5.6) теперь можно скачать.
- она же есть на CD для журнала "Мир ПК", # 12/ 2007, вместе с моей статьей о методах создания оконных приложений на AWL.

Ну и, конечно, всех -- с наступающим! Желаю всего наилучшего в новом году!

--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
Nirvana
Дата 14.1.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 14.1.2008
Где: СССР

Репутация: -1
Всего: -1



Код

I. Нужно сделать AWL в виде модуля Apache.
II. Можно временно сделать так:
     а) Копируем awl.exe в cgi-bin
     б) В корне сайта создаем файлик .htaccess и пишем там
          AddHandler awl-parsed-html awl
          Action awl-parsed-html /cgi-bin/AWL.exe
III. Сделать возможность работать с блоками html.

PM MAIL WWW   Вверх
regis
Дата 18.1.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 12.12.2005
Где: Москва, Россия

Репутация: 2
Всего: 7



Nirvana, идея понятна. ( Похоже, я уже вам отвечал, почтой. )

Вот кстати: в Wiki появилась страничка, посвященная AWL, на немецком:

http://de.wikipedia.org/wiki/AWL_(Programmiersprache)

Big thx to Carlos Franke. Если кто-нибудь читает по немецки, буду рад, если он взглянет на статью
(сам я, увы, в немецком ни бум-бум).

--------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.1658 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.