avva: (Default)
avva ([personal profile] avva) wrote2009-09-21 12:37 am

всячина для программистов

1. Исходники "Каиссы" (PDF), первого чемпиона мира по компьютерным шахматам. Также работают над эмулятором той машины, на которой она бежала. via (там обсуждение в комментариях).

Комментарии к коду попадаются замечательные, да.

2. Coders at Work, судя по тем отрывкам, что я видел, замечательная книга, и собираюсь ее вскорости прочитать. (В последние годы было несколько попыток написать подобные книги; одна из них, Beautiful Code, тоже казалась поначалу очень удачной, но когда мне в руки попала сама книга, как-то совершенно "не пошла").

3. The different attitudes of computer scientists and economists. Стоит прочитать как минимум ради интересного примера с American Express в конце записи.

4. Tiny Code.

5. Speaking of tiny code - я посидел немного над Фортом на выходных, вспоминал язык и писал несколько тривиальных штук. Написал, например, квиксорт (а заодно и Mersenne twister, чтобы его проверять). Квиксорт получился вот такой:

\ simple quicksort
: exchange ( i j -- ) 2dup = if 2drop exit then
  2dup @ swap @ ( i j val-j val-i ) rot ! swap ! ;

: simple-part ( start end pivot -- mid )  \ assumes pivot is stored at end
  >r swap r> 2 pick 2 pick ?do ( end stored pivot )
    dup i @ >= if \ exchange elements at stored and i, increment stored
         swap dup i exchange cell + swap ( end stored pivot )
    then cell +loop drop tuck exchange ;  \ exchanged stored and last

: simple-q2 recursive ( start end -- ) 2dup = if 2drop exit then
  2dup 2dup swap - cell / 2/ cells 2 pick + \ choose pivot from middle
  2dup exchange drop dup @ simple-part \ put pivot at right, partition
  2dup = if dup cell - rot rot swap ( s m-1 m e )
         else dup cell + rot        ( s m m+1 e )
  then simple-q2 simple-q2 ;

: simple-qsort ( addr u ) 1- cells over + simple-q2 ;

Правда, подозреваю, что мои слова слишком сложны, и у опытного программиста на Форте получилось бы на несколько слов больше, зато куда проще и понятнее. Попробую позже рефакторнуть это дело.

[identity profile] another-felix.livejournal.com 2009-09-20 11:13 pm (UTC)(link)
К пункту #2 можно ещё добавить книгу [Federico Biancuzzi, Shane Warden. Masterminds of Programming: Conversations with the Creators of Major Programming Languages. O'Reilly, 2009]. Правда, довольно специфичная выборка и больше бла-бла.

[identity profile] cema.livejournal.com 2009-09-21 12:34 am (UTC)(link)
Да, там бла-бла многовато. Но выборка неплохая, просто там многиь не хватает.
Edited 2009-09-21 00:34 (UTC)

Apollo

[identity profile] cema.livejournal.com 2009-09-21 12:46 am (UTC)(link)
Был ещё код (ассмеблер, не машкоды) программы лунного проекта. Сейчас пороюсь... А, вот:
http://news.ycombinator.com/item?id=715395
http://googlecode.blogspot.com/2009/07/apollo-11-missions-40th-anniversary-one.html

Not so many funny comments ("Таня, не журись" no idea how it is in English) but there is this one Numero Mysterioso.

[identity profile] ygam.livejournal.com 2009-09-21 02:56 am (UTC)(link)
Пример в конце мне напомнил "Смотри в корень" Маковецкого: в холодные дни журавли улетают на юг, так как северный ветер делает дни холодными, и облегчает журавлям полет на юг.

[identity profile] igorlord.livejournal.com 2009-09-21 04:32 am (UTC)(link)
http://avva.livejournal.com/2136549.html?thread=64909285#t64909285
http://avva.livejournal.com/2136549.html?thread=64889317#t64889317

In a sentence, Forth is great for getting some very limited embedded device to work, but it is terrible for programmer productivity for devices with mature alternatives (good compilers and libraries).

[identity profile] ygam.livejournal.com 2009-09-21 05:03 am (UTC)(link)
По-моему, ты ответил не на тот комментарий.

[identity profile] igorlord.livejournal.com 2009-09-21 05:31 am (UTC)(link)
Возможно.

I just bet that [livejournal.com profile] avva could write a working plain vanilla QuickSort a lot faster in pretty much any new-to-him high-level language. (I am assuming that his code actually works; I hand-checked only a half of it -- a non-trivial feat, even with his use of stack diagram comments).

[identity profile] avva.livejournal.com 2009-09-21 07:06 am (UTC)(link)
Oh, it works :)

[identity profile] avva.livejournal.com 2009-09-21 07:11 am (UTC)(link)
I've seen a few programmers who were really prodigiously productive in Forth on high-level applications. It does happen rarely, but then Forth is not a very common language anyway. I think that for them, the low-level finicky details of stack and address manipulations are offset by the extremely structural and solid code.

[identity profile] dimorlus.livejournal.com 2009-09-21 04:54 am (UTC)(link)
По моему опыту, форт удачно сочетает в себе недостатки ЯВУ и ассемблера, а достоинств-то и нет.

[identity profile] cryinstone.livejournal.com 2009-09-21 04:59 am (UTC)(link)
3. The different attitudes of computer scientists and economists. Стоит прочитать как минимум ради интересного примера ...
Ба! Да это же Ноам Нисан - мой когда-то-очень-давно препод алгоритмов в HUJI!

[identity profile] avva.livejournal.com 2009-09-21 05:11 am (UTC)(link)
Отличный мужик вообще. Он проводит у нас часть времени как research scientist в тель-авивском гугле (вдобавок к HUJI).

[identity profile] igorlord.livejournal.com 2009-09-21 05:41 am (UTC)(link)
">r swap r>" == "rot swap"

I love stack gymnastics. :)

[identity profile] igorlord.livejournal.com 2009-09-21 05:44 am (UTC)(link)
Also, more fun:

"rot rot swap" == "swap rot"

[identity profile] avva.livejournal.com 2009-09-21 07:12 am (UTC)(link)
Heh :) thanks!

Купить телефон на две сим карты - зачем переплачивать

(Anonymous) 2011-09-24 02:49 pm (UTC)(link)
Новинки авто аксессуаров, светодиодных лент, высококачественныхGPS навигаторов, а также предлагаем купить электронную книгу, купить цифровую фото рамку , купить телефон на две сим карты. Доступные цены за хорошие товары!

Top-Device - [url=http://top-device.com]купить сотовый[/url]

Веб студия api заняла свое место в сфере Интернет

(Anonymous) 2011-10-16 10:29 am (UTC)(link)
Веб студия api заняла свое место в сфере Интернет не так давно, но уже на слуху. Про нее рассказывают друг другу без устали и советуют посотрудничать с ней.
Апи Студия довольно простая и развивающаяся студия, пытается соответствовать всем веяниям времени и возгласам заказчика и, глядя на количество идей, у нее это совсем не плохо выходит.
Компания ApiStudio помогает найти свой неповторимый образ и изюминку всем, рассказать о себе и выделиться из людей.
Много можно говорить о достоинствах студии, но лучше заключить договор с ней, что бы понять все на своем опыте и возможно поделиться им с окружающими.
[url=http://apistudio.ru]дизайнер самара[/url]

"Семейные помощники" - автомалиновка доска объявлений

(Anonymous) 2011-11-07 12:55 pm (UTC)(link)
Доска частных объявлений "Семейные помощники", предоставляет возможность разместить объявления бесплатно в огромном количестве категорий. Разместить объявление возможно исключая регистрацию. Платные услуги по выделению и поднятию объявлений в рейтинге - относятся к платным ВИП объявлениям.

Family Helpers - [url=http://www.familyhelpers.ru]доска объявлений[/url]