Спецсеминар "Разработка свободного ПО": http://uucode.com/oss2004/.
Чем разработка свободного ПО отличается от разработки обычного ПО. (ограничения для творчества vs ограничения для леммингов.)
Объяснение терминов "open source" и "free". Free -- не значит бесплатно.
Зачёт -- всем. Но надо либо сделать доклад, либо показать знания на практике. За литературный конспект -- зачёт однозначно.
Будем говорить обо всём понемногу. Пожелания принимаются.
На следующем же занятии хочу доклад.
Параллельно идёт John Lynn.
Самые главные: русский и английский. Вначале надо научиться им.
Graham. The Hundred-Year Language, http://www.paulgraham.com/hundred.html Есть русский перевод на сайте Компьютеры: "Языки программирования через сто лет", http://www.computerra.ru/print/hitech/35042/, "Язык программирования будущего - сегодня", http://www.computerra.ru/hitech/35107/.
Graham. What Languages Fix, http://www.paulgraham.com/fix.html
Данные SourceForge:
Программирование в кодах ("срыв стека").
Ассемблер -- то же самое, но попроще. Создание "лекарств".
C -- переносимый ассемблер.
С++ -- не для студентов и "индусов". Изучать -- только практически. Понимать по книге Страуструпа "Дизайн и эволюция языка C++". Автор STL -- Степанов. Generics. Primzahlen von Erwin Unruh.
shell, sed, bash, awk и прочие.
Из них получился Perl. Basic for unix. Переход на utf8. Дальнейшее развитие: parrot VM. VM -- это плохо, см. про Java.
Python. Идеальная замена Паскалю. Есть ООП, есть исключения. C bindings часто делаются для вначале для Python, и только потом для всего остального. Python под Parrot. Dan Sugalski получил-таки тортом в фейс от Guido. http://prefnews.ru/?page=one_news&news_id=255
Отвлечение: bindings. SWIG.
Их куча. В частности: java, C# и прочее из .dot
Виртуальные машины -- опасность для open source, т.к. не нужны исходники.
Код под VM может работать быстрее. (JIT и прочие анализы.) См. LLVM.
java: jvm, gcj.
PHP, Delphi/Kylix, Visual Basic, JavaScript, ... Есть, работают.
lisp, scheme. Сложны в изучении. Основная сила -- в DSL (domain-specific languages). По ним можно и нужно вести много семинаров. Краткого обзора не получится. Graham: Beating the Averages. http://www.paulgraham.com/avg.html "Lisp is a programmable programming language." "Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp."
Ruby. Становится популярным.
XSLT. Преобразование XML.
ocaml. Вся Франция пишет на нём, а также многие из computer science. Институт inria. У нас семинар по ocaml читает Д.Ломов, использует в курсах (компиляторы) Д.Булычев.
forth. Ассемблер плюс язык высокого уровня в одном флаконе. Эесперт у нас -- М.Гасаненко. Если есть только машинные коды, то ядро пишется за неделю. А дальше всё просто.
Eric Raymond о том, что изучать: "How To Become A Hacker", http://www.catb.org/~esr/faqs/hacker-howto.html. Python->Java->C/C++->Perl->LISP
Написать решето Эратосфена на каком-нибудь языке, который вы не знаете. Полезная ссылка: примеры кода на разных языках: http://www.ntecs.de/old-hp/uu9r/lang/html/lang.en.html
Создать модуль расширения для Perl/Python/etc.