99 бутылок пива. Исполняют Small C и dbPager

14. Написав в предыдущей серии программу, выводяшую песню о пиве, на C--, я заинтересовался классом малоизвестных си-подобных языков. Благо Интернет и поисковые машины под рукой.

Первое, что мне попалось - это Small C. Впервые сведения о этом языке появились в октябре 1999 года в Dr. Dobb's Journal. Язык простой и удобный, настолько отличен от C, что перечислять эти отличия тут я не буду. Подробности можно найти в документации, доступной там же, на сайте.

Интересно, что исполнение программ происходит, как и в Java, в два этапа. На первом программа прекомпилируется в байт-коды, на втором - байт-коды интерпретируются или, если используется JIT, компилируются в машинный код и исполняются.

Несколько матерных слов в адрес компилятора. Отвратительная диагностика, странная реакция на символы табуляции, лишние переводы строки и символы "^", неработоспособность конструкции "a?b:c" и так далее. Компиляция моего небольшого примера заняла на P-II 333 примерно 10 секунд. А теперь сам листинг.

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


/* 99 beer song. Written by Stepanischev E.V. Small C */
#include <console>

printbeer (b)
{
     if (b) printf ("%d",b); else printf ("No")
     printf (" bottle")
     if (b!=1) printf ("s")
     printf (" of beer")
}

main ()
{
     for (new i = 99; i > 0;)
     {
           printbeer (i)
           printf (" on the wall, ")
           printbeer (i)
           printf (".^nTake one and pass it around,^n")
           i--
           printbeer (i)
           printf (" on the wall.^n^n")
     }

     printf ("No more bottles of beer...^n");
     printf ("Go to the store and buy some more...^n");
     printf ("99 bottles of beer.");
}



15. Язык dbPager. Предназначен для динамической генерации страничек под MS IIS. Инструкцию по настройке прекомпилятора под IIS5 я не нашел, так что тестировал под версией для коммандной строки. Язык несколько, на мой взгляд, необычен своей концепцией блочников и некоторыми конструкциями, но, в целом, очень хорошо читается и воспринимается.

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


// Beer song. Written by Stepanischev E.V. (dbPager)
var "beer=99"
        var "LoopLimit=99" :: while 1
                var ""
                        @beer:printbeer
                %Space%on the wall,
                var ""
                        @beer:printbeer
                .%CrLf%
                Take one and pass it around,%CrLf%
                set "beer=[%beer%-1]"
                var ""
                        @beer:printbeer
                %Space%on the wall.%CrLf%%CrLf%

No more bottles of beer...%CrLf%
Go to the store and buy some more...%CrLf%
99 bottles of beer.

:printbeer
        switch %beer%
                #0 :: No
                #else :: %beer%
        %Space%bottle
        switch %beer%
                #1 :: 
                #else :: s
        %Space%of beer


19 февраля 2001 14:50

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML: