Пишу, по большей части, про историю, свою жизнь и немного про программирование.

99 бутылок: KiXtart, Omens

25. Omens (Object manageMENt System). Язык, сочетающий в себе черты Cи, Cи++ и Java. Например, конструкции он унаследовал от Си, принципы работы с указателями и ссылками — из Си++, а описания классов — из Java.

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

Сам Omens разрабатывался, как платформонезависимая среда со встроенным облегченным механизмом описания и манипулирования сложными данными, в том числе и с базами данных (DB2, Oracle, MS SQL, dBASE, MS Access, …). Из интересных особенностей — у программы может быть несколько точек входа.

Программа, выводящая песню о пиве (beer.oms)

//  Beer song. Written by Evgeny Stepanischev

class beer {
    private void PrintBeer(byte n) {
        if (n>0)
        system.out.print(lang.ltoa(n)); else
        system.out.print("No");
        system.out.print(" bottle");

        if (n!=1) system.out.print("s");
    }


    private void For(byte i) {
        PrintBeer(i);
        system.out.print(" on the wall, ");
        PrintBeer(i);
        system.out.print(" of beer.");

        system.out.println("Take one and pass around,\n");
        PrintBeer(i-1);
        system.out.print(" on the wall.\n\n");
        if (i>1) For(i-1);
    }


    public void main() {
        For(99);

        system.out.print("No more bottles of beer...");
        system.out.println("Go to the store and buy some more...");
        system.out.println("99 bottles of beer.");
    }
};


24. KiXtart. Язык пакетных файлов. Достаточно простой, наглядный и функциональный. Интересны конструкции вывода на экран и принципы построения функций. Функции (точнее подпрограммы) можно строить при помощи блока Function или, как в BASIC’е, через GOSUB и метки. Что мне понравилось — KiXtart предоставляет большую свободу в форме записи. Так, например, операторы можно разделять переводом строки, табуляциями, пробелами.

Скрипт, выводящий песню о пиве (beer.kix)

; Beer song. Written by Evgeny Stepanischev

Function Beer($n)
  If $n
    $n
  Else
    "No"
  Endif

  " bottle"
  If $n<>1 "s" Endif
EndFunction


FOR $beer = 99 TO 1 STEP -1
  Beer ($beer) " on the wall, "
  Beer ($beer) " of beer."

  ? "Take one and pass around,"

  ? Beer ($beer-1)
  
  " on the wall."??

NEXT

"No more bottles of beer..." ?
"Go to the store and buy some more..." ?
"99 bottles of beer."