99 бутылок: C-​-, WSH

13. Windows Script Host — технология, заботливо упрятанная в недра вашей Windows заботливой компанией Microsoft. Скрипт написан с применением второй версии технологии, которая распространяется вместе с Windows 2000. Впрочем, ничего не мешает поставить его на любую другую ОС этого семейства. Базируется она на JScript или VBScript и позиционируется как замена пакетному (batch) языку DOS.

Способ запуска: wscript.exe beer.js. Во время выполнения настоятельно не рекомендуется переключать окна.

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

function PrintBeer(i)
{
    return (i?i:"No")+" bottle"+(i-1?'s':'')+" of beer"
}

WshShell = WScript.CreateObject("WScript.Shell")
with (WshShell)
{
    Run("notepad.exe")
    WScript.Sleep(100)
    AppActivate("Untitled - Notepad")

    for (i = 99; i>0;)
    {
        SendKeys (PrintBeer (i)+" of beer on the wall, ")
        SendKeys (PrintBeer (i)+".~")
        SendKeys ("Take one and pass it around,~")
        i--
        SendKeys (PrintBeer (i)+" on the wall.~~")
    }

    SendKeys ("No more bottles of beer...~")
    SendKeys ("Go to the store and buy some more...~")
    SendKeys ("99 bottles of beer.")
}


12. Sphinx C-​-. Есть язык Си, есть Си++, а есть, оказывается, Си-​-. Язык, занимающий промежуточное положение между Си и ассемблером. Его автором является Peter Cellik (Канада), в данный момент поддержкой и расширением синтаксиса языка занимается Михаил Шекер (Россия).

Язык мне показался обычным ассемблером, с внедрёнными элементами синтаксиса Си. Этакий навороченный макроассемблер. Попался бы мне такой лет так пять назад — оторвал бы с руками, а сейчас… Но, хотя на ассемблере теперь я пишу только мелочь, а мелочь лучше писать без применения всяческих прилад, стирать все же не буду — вдруг пригодится.

P.S. Кстати, на страничке языка можно скачать архиватор HA, переписанный на Си-​-. Работать он после такой модификации стал в полтора раза быстрее. Заслуга языка и компилятора или автора модификации?

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

?use80486
?include "WRITE.h--"

void PRINTBEER ()
{
    $PUSH AX;
    IF (AX) WRITEWORD (AX); ELSE WRITESTR ("No");
    WRITESTR (" bottle");
    $POP AX;
    IF (AX<>1) WRITE ('s');
    WRITESTR (" of beer");
}

void main()
byte bott;
byte beer = 99;
{
    WHILE (beer)
    {
        PRINTBEER (beer);
        WRITESTR  (" on the wall, ");
        PRINTBEER (beer);
        WRITESTR  (".\nTake one and pass it around,\n");
        beer--;
        PRINTBEER (beer);
        WRITESTR  (" on the wall.\n\n");
    };

    WRITESTR ("No more bottles of beer...\n");
    WRITESTR ("Go to the store and buy some more...\n");
    WRITESTR ("99 bottles of beer.");

    AX = 0x4C;
    $INT 0x21;
}
Поделиться
Отправить
Популярное