О весеннем

27.04.2006 13:58:54

Полезно все-таки на работу пару дней не ходить. Реально агрессивное желание поубивать 90% программистов на C куда-то сворачивается и становится более смешным, а от этого и бодрящим/настраивающим. Желание опробовать в бою Оберон, правда, не уходит, но тоже смещается на задний план, поскольку других дел невпроворот.

Тем паче что надо все-таки и работу работать как-то (кушать хочется!), и для универа всякие поделия писать на C. Но надеюсь какой-нибудь кусочек состряпать на Ada, сейчас вот компилирую себе GCC 4.1 🙂

О струнах и голосах

23.04.2006 22:30:46

[Забавная ремарка — заголовок чуть не получился «О струнах и головах» в результате опечатки]

Собственно, предыдущая заметка заставила меня задуматься и свежий воздух вне Питера этому поспособствовал. А собственно, почему струнный квартет звучит иногда превосходя оригинал и почему он без особых проблем умудрился записать те самые 185 альбомов?
Читайте далее »

DVD-пирожок, слоеный

21.04.2006 13:07:41

Овладев новым резаком принялся с усердием нарезать CD и DVD. Особенно, конечно, последние, потому как до этого такой возможности не имел. Нарезка проходит успешно (K3B) и очень радостно. Однако, самое главное, чего хотелось давно сделать, так это закатать несколько двухслойников, у меня лежит несколько таких ISO-шек и это не лучшим образом сказывается на объемах свободного места на винчестере.

Соответственно, вчера заглянул в Кей с целью накупить дуоболванов (этимология тривиальна: болванки — CD, болваны — DVD, двойные DVD, естественно — дуоболваны). Долго искал взглядом на лоточке, пока не обнаружил и не понял почему же их так мало. Цифирь рядом со шпиндельком (ну а я в последнее время беру шпиндельки с 25-50 носителями, дабы не бегать потом, да и проблема хранения решается тут же) отбила всякое желание нарезать что-либо. Собственно, за такие деньги можно еще один винчестер притарить и радоваться жизни, скорости и мгновенности доступа.

Вот так я не зарезал слоеный DVD и не расстроился. 🙂

Транслятор?

02.04.2006 18:11:16

Встав бодренько в восемь часов утра принялся писать транслятор. Собственно, давно была идея что-нибудь этакое сваять-попробовать. Естественно, что ни о чем серьезном речи еще не идет, все что я хотел сделать — это преобразовать обычную инфиксную алгебраическую нотацию в обратную польскую.

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

Для начала я взял полюбившийся мне Ragel, который компилятор конечных автоматов. Человек знающий улыбнется уже здесь, ну а я несколько часов все-таки постучался лбом об стену того, что анализ КС-грамматики в принципе невозможно реализовать в рамках конечного автомата, зато с помощью автомата с магазинной памятью — только так. 🙂

Впрочем, стучал не совсем без толку, поскольку на Ragel это сделать все-таки можно, он может делать «странные» переходы и КС-грамматику на его основе проанализировать можно. Можно, но очень некрасиво, а меня это совсем неустраивало.

В результате, пока я обдумывал, как бы мне начать работать с LLnextgen или Flex, правильный человек aka Дрюнь прислал мне ссылку на Bison. На который я резко и накинулся, а в «info bison» как раз обнаружился пример калькулятора что в обратной польской нотации, что в обычной инфиксной.

В общем, я взял за основу постфиксный калькулятор, описал свою грамматику (BTW, vim замечательно подсвечивает синтаксис) и получил не только «переводчик» из инфикса в постфикс, но еще и (заметьте, нахаляву!) калькулятор. По этому поводу сижу и радуюсь.

А описание получилось в таком духе:

%token NUM
%left  '-' '+'
%left  '*' '/'
%left  NEG
%start input
 
 
%%
 
input       : /* empty */
            | input line
;
 
line        : '\n'
            | expr '\n' { printf( "\n\t%.10g\n", $1 ); }
;
 
expr    : NUM                   { $$ = $1; printf("%.10g ", $1); }
        | expr '+' expr         { $$ = $1 + $3; printf("+ "); }
        | expr '-' expr         { $$ = $1 - $3; printf("- "); }
        | expr '*' expr         { $$ = $1 * $3; printf("* ");}
        | expr '/' expr         { $$ = $1 / $3; printf("/ ");}
        | '-' expr %prec NEG    { $$ = - $2; printf("inv ");}
        | '(' expr ')'          { $$ = $2; }
;
 
%%

Маркетинг и языки программирования

30.03.2006 15:52:21

Определенно, это не лишено смысла: раз, два.

Искусство перевода

29.03.2006 00:00:28

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

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

Поисковой ящик

22.03.2006 12:45:17

Новая версия браузера Microsoft будет иметь интегрированный поисковой ящик

Плакал…

STFU

19.03.2006 14:16:49

Изучаем сокращения и жаргонизмы английского языка на показательных примерах: STFU. Что интересно, в Википедии тоже наличествует.

О багах — весело

14.03.2006 00:04:53

Прям понравилось, решил сюда вбить (спасибо Стасу!). Итак:
Читайте далее »

Лытдыбр

11.03.2006 21:32:34

Однако, новое слово познал.