netch: (Default)
[personal profile] netch
... потому что семантика тут тема совсем отдельная. Видимо, встраивание чего-то вроде Lua или Rexx народ не устраивает, поэтому извращаются со своим - и вот:

I. Коммунигейт и его CG/PL с тривиально расшифровываемым названием. Основа - такое себе динамически типизированное чудо в стиле привычных Perl, Python, Ruby, Lua, Tcl, Rexx (никого не забыл?) А вот синтаксис на удивление алголоподобный, более того - явно слизан с Ada:


entry Main is
  myName = "Jim" + " " + "Smith";
  if length(myName) > 10 then
    myName = Substring(myName,0,8) + "..";
  end if;
end;


Ну ладно, в дань моде присвоение обозначено `=' (или лично дядя Вова так захотел). Зато - блоки обязательно закрыты, begin отменён, зато в end надо повторять, к чему именно end (if, while...)
Смотрим далее в список операций и видим:

and, or, xor, and then, or else
[...]
The and then operation computes the left operand value first. If that value is a null-value, the right operand is not computed, and the operation value is a null-value. Otherwise the right operand is computed and its value becomes the operation value.
The && sign can be used instead of the and then keywords.


Приятно видеть тонкого ценителя семантики. Без иронии.

Или вот грамотный if:


    if myCount < 10 then
      myCount = myCount + 2;
    elif myCount < 20 then
      myCount = myCount - 3;
    end if;


Впрочем, тут же начинают издеваться предоставлением альтернативного синтаксиса (вот это, по-моему, жуткая диверсия):


    if (myCount < 10) {
      myCount = myCount + 2;
    } elif (myCount < 20) {
      myCount = myCount - 3;
    } else {
      myCount = myCount * 4;
    }

Note: it is not required to use parentheses to enclose if-expressions or elif-expressions. 


Интересно, как они выкрутятся при необязательности фигурных скобок стандартного для C случая "не понял куда относится этот else"?

II. Sip Express Router (SER)

Здесь синтаксис строго сишного стиля, но продуман намного лучше - добавляется жёсткая регулировка той же группировки за счёт точек с запятой и обязательности {} вокруг внутренних блоков. Что выглядит примерно так:


  if (cond1) {
    action1;
  } else {
    action2;
  };


и крайне существенно где стоит точка с запятой после {} вокруг внутреннего блока - если её поставить перед else - тот if будет сочтён законченным, else не будет отнесено ни к чему (потому что '}' - единственная лексема допущенная перед else) и будет ошибка. И наоборот, не поставив ';' после финальной '}' получим опять ерунду в синтаксисе.

(Заметно что они делали это в расчёте на добавление elif. Почему его пока нет - ХЗ)

{} вместо if-end, while-end... удобнее одной вроде бы мелкой но ооочень важной деталью - нажал '%' в vim и уехал на противоположную скобку.

Язык SER, впрочем, то ещё чудо. Нормального присвоения там нет, AVP механизм который его может заменить - понимается в лучшем случае после 3-й бутылки. К транзакции AVP не приписать - ещё одна беда (я вот хочу передать для onreply_route специфические данные - и что мне делать?) Может в 1.0 исправят?



И всё-таки - почему не что-то стандартное вроде того же Lua? *shrug*

Date: 2006-08-28 03:32 am (UTC)
From: [identity profile] telinit.livejournal.com
>> (Заметно что они делали это в расчёте на добавление elif. Почему его пока нет - ХЗ)

в смысле как именно заметно?
даже в самом древнем паскале были if then if then; else;

и никакого прихода elif нет даже и сейчас в борландовском object pascal какой-он-там-версии-сейчас

Date: 2006-08-28 07:06 am (UTC)
From: [identity profile] egorfine.livejournal.com
brainfuck!!!

Date: 2006-08-30 05:18 am (UTC)
From: [identity profile] ekrava.livejournal.com
дык напиши про это дяде Вове :)
CGatePro@mx.ru
http://mx.ru/Lists/CGatePro/List.html?Skin=Russian

Date: 2006-09-30 11:22 am (UTC)
From: [identity profile] nponeccop.livejournal.com
Стесняешься?

Date: 2006-10-01 11:41 am (UTC)
From: [identity profile] nponeccop.livejournal.com
Ты уверен? А вдруг у него какие-то более веские причины, которые ты упустил. Тебе не хочется прозреть?

Profile

netch: (Default)
netch

December 2023

S M T W T F S
     12
3456789
10111213141516
171819 20212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 22nd, 2026 01:35 pm
Powered by Dreamwidth Studios