суббота, июня 30, 2007

Книги по Форту онлайн

На Lambda the Ultimate дали ссылки на книги по Форту. Может, пригодятся кому...
Thinking Forth
Starting Forth

среда, июня 27, 2007

Google, PeakStream и RapidMind

После того, как Google купил PeakStream появилось много заметок в духе "Google is evil". По слухам, команда пикстримовцев была раздроблена и программисты теперь разбросаны по разным проектам. Обидно это тем, что PeakStream делал интересный продукт в области параллельных вычислений, а теперь плодами их работы смогут насладиться не все желающие, а только Google. Вскоре после приобретения сайт www.peakstreaminc.com перестал отзываться. Его осколки можно еще наковырять в гугловском кэше. Ничего конкретного про технологию я там не нашла, так общие замечания.
В качестве основного конкурента PeakStream упоминается RapidMind и там с документацией все получше. Я немного почитала про то, что делает RapidMind, предполагаю, что PeakStream делал что-то в том же духе. RapidMind'овский продукт можно бесплатно скачать и опробовать, кстати. Но я пока ограничилась только чтением статей.
Идея этого всего состоит в автомагическом распараллеливании программы. Программист пишет код, который сам, без каких либо усилий со стороны программиста, пытается распараллелиться. Может распараллелиться на многоядерном процессоре. Может на GPU - прикинется, что его данные - это текстура и будет вычисляться на GPU. RapidMind для реализации этой затеи сделал нечто, что называет "параллельный язык программирования, встроенный в C++". Хорошо это все тем, что программисту не нужно задумываться в процессе написания о том, как именно это все будет распараллелено. Но придется научиться с этим параллельным языком программирования работать, на С++ он не похож. Работает это все с обычными C++ компиляторами.
Вообще интересно, насколько это удобно в работе и получит ли оно массовое распространение.

понедельник, июня 25, 2007

Заметка про первый язык программирования Plankalkül

Первый в мире язык программирования - небольшой пост про язык Plankalkül. Про него можно почитать в Википедии, но там все по-английски, а это русскоязычный пост.

Updated 26.06.2007: В комментариях справедливо заметили, что эта статья в Википедии есть в русском переводе: Планкалкюль

понедельник, июня 18, 2007

Сравнение C++/CORBA, Erlang и GdH

По ссылке с Lambda the Ultimate нашла работу Evaluating High-Level Distributed Language Constructs (.pdf). Авторы исследования переписывают куски телекоммуникационного софта и смотрят на размер результирующего кода. Меньше всего код получается на GdH (Glasgow Distributed Haskell), побольше на Erlang'е, ну а на С++ там вообще какие-то монструозные размеры.
Выводы не так очевидны. Они сами признаются, что не так-то просто оценить качество результирующего софта. Сами авторы таки считают лучшим код на Erlang'е, потому что кода получилось значительно меньше чем на С++, а GdH - это такая экспериментальная штука.
Но кроме размера кода интересно было бы узнать как этот софт дальше работал, легко ли было его развивать. Сложно оценить чистоту эксперимента - они пишут, что софт на разных языках писали разные разработчики примерно одинаковой квалификации, но квалификация штука такая, ее померить сложно. С++ обеспечивает работу на более низком уровне, это преподносится как недостаток. А что если софт нужно потюнить на низком уровне, что тут может предложить Erlang? Автоматическая сборка мусора рассматривается однозначно в плюс Erlang'у. Да, оно конечно удобно, но поскольку ее контролировать затруднительно, что если мусор начнет собираться в совершенно неподходящее время?
Так что по одному только количеству строчек кода судить нельзя. Но из того, что я слышала об Erlang'е, он действительно хорош для разработки распределенных систем.

Ссылки по теме:
Phil Trinders Publications

пятница, июня 15, 2007

Семинар Supporting Search in a Multilingual World

Егор Азанов на своем блоге рекламирует семинар Supporting Search in a Multilingual World, который состоится 21-го числа в московском офисе Яндекса. Регистрация на него, насколько я поняла, свободная. Ну там по ссылке все подробности есть.

EASTL

Ссылки на EASTL я встречала в течение довольно продолжительного времени, вот наконец почитала о том, что это такое.
Electronic Arts не устраивали существующие реализации STL и они сделали свою. Вот здесь лежит ее подробное описание EASTL - Electronic Arts Standard Template Library.

Не устраивало их много чего. В тексте перечисляются производительность, сложности в отладке, работа с памятью. В EASTL они очень активно борятся с фрагментацией памяти. Кроме того, в EASTL память втихую от программиста не выделяется, пустые контейнеры места не занимают.

Интерфейс в EASTL постарались сохранить по максимуму такой же как и в STL. Удалось это не всегда, аллокаторы у них несколько отличаются от STL'евских. Кроме того, в EASTL есть контейнеры и алгоритмы, которых в STL нет.

Кроме скорости работы перечисляют специфические для разработки игр требования. Например, в играх редко используются исключния, поэтому в EASTL исключения легко отключить.

В конце текста приведена впечатляющая таблица сравнения производительности STL и EASTL.

Я тут привела очень краткий пересказ. На самом деле это довольно объемный и подробный документ. Там четко изложено что именно их не устраивало, какие в итоге были приняты решения, что именно им победить не удалось.

Если будут какие-нибудь свободно доступные реализации EASTL, интересно было бы их опробовать.

суббота, июня 09, 2007

Статья Evolving a language in and for the real world: C++ 1991-2006

Evolving a language in and for the real world: C++ 1991-2006 - статья Бьярна Страуструпа про развитие языка С++. Статья эта написана специально для выступления на конференции HOPL III. На нее дали ссылку на Lambda the Ultimate, после чего ее стали активно обсуждать разработчики, я уже видела много ссылок на нее. Практически все сравнивают ее с книгой D&E, Страуструп эту свою книгу тоже в статье часто вспоминает.
А сама статья очень интересная. В небольшой объем Страуструп уместил кучу самой разной информации. Например, рассказывает про STL, как он долго мучался, пытаясь придумать что-либо подобное. Про проблемы, которые возникают при попытке прикрутить к С++ автоматическую сборку мусора. Рассказывает что такое generic programming (хороший перевод на русский не знаю, увы) и метапрограммирование шаблонов (template metaprogramming). Упоминает ABI и интересный термин - "bug compatibility". Рассказывает о Java и .NET, дает примеры из C++0x и высказывает свое мнение о причинах успеха С++.
Написано хорошо, читается легко, мне очень понравилось.

четверг, июня 07, 2007

Блог Mathematical paintings and sculptures

Блог Mathematical paintings and sculptures посвящен работам Эшера и его последователей. Бутылки Клейна, фракталы, невозможные фигуры и все в таком духе. Очень красиво.
Картинка оттуда:


Temperal Paradox

Patrick's Picks


Нашла по ссылке с 0xDE.

Ссылка по теме:
Замечательный художник Морис Эшер

вторник, июня 05, 2007

Язык программирования LOLCODE

Свежепридуманный язык. Датируется 25 мая 2007.
Как пишет его автор, Адам Линдсэй (Adam Lindsay): "This is a love letter to very clever people who are slightly bored."
Для него уже есть какие-то интерпретаторы и компиляторы, которые я не смотрела. Подсветку для highlight.js даже уже сделали. Быстро народ работает.

Программы на LOLCODE выглядят примерно вот так:


HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE

На официальном сайте есть идея сделать фреймворк какой-нибудь. Типа LOLCODE ON MONORAIL.