26 Июнь, 2009

Немного о Ди

Релиз языка программирования DigitalMars D (1) был в первых числах февраля 2007 года, однако, несмотря на перспективность языка согласно описанию, большого распространения он пока не получил. Скорее всего, в этом году состоится релиз D2, однако сложно сказать, изменится ли ситуация принципиально после этого.

Andrei Alexandrescu активно работает над стандартной библиотекой Phobos2 и пишет книгу о D2, а также недавно опубликовал на Dr. Dobb's journal описание языка и его перспектив (также см. комментарии). Получилось привлекательно, в некотором роде - о перспективе и без существующих проблем, и об этом незамедлительно написали (также см. обсуждение в конференции digitalmars.com).

"Светлая" сторона и бонусы языка достаточно описаны в сети, включая русскоязычные ресурсы, но нельзя не упомянуть и о текущих проблемах, поскольку программисты, использующие D, с ними весьма неиллюзорно сталкиваются.
Jarrett Billingsley о проблемах Ди (автор завершенного скриптового языка MiniD2)
Tomasz Stachowiak о вышеуказанном посте (h3r3tic из широко известной в узких кругах team0xf)

Ди вплане языка, тулсета и сообщества не становится ни на йоту хуже, наоборот, все развивается - проблема в том, что не с той скоростью и не всегда в том направлении, в котором хочет сообщество, кроме того, текущее положение дел в общем и целом могло бы быть значительно лучше.
Несмотря на то, что Walter & Co развивают, в основном, D2, именно на D1 написано практически все более-менее серьезное, а ключевые проекты D1 - Tango, LDC и Descent - активно развиваются сообществом.

Общая ситуация - довольно странная. Сообщество вынуждено было написать альтернативную стандартную библиотеку и компилятор на основе другого кодогенератора, и все это сейчас пишется для первой версии языка при том, что ключевые авторы самого языка переключились на D2, который сильно отличается от D1.
Jarrett пишет о том, что несмотря на то, что любит D, не может посоветовать его другим на 100%, хотя сам по себе язык, безусловно, того достоин.

Надеюсь (и стараюсь внести посильный вклад) на то, что в течение нескольких лет у D все же будет компилятор и тулсет, годные для полномасштабного и промышленного использования, хотя планы Walter Bright не особо прогнозируемы.

22 Июнь, 2009

Мобильно-графическое

Лето принесло сюрпризы вплане миниатюрных устройств с отличной компьютерной графикой:
NVidia ориентирует Tegra'y на нетбуки, IPhone 3GS оказался первым мобильником с PowerVR SGX (OpenGL ES 2.0), но наиболее мне интересный аппарат - монстрик Toshiba TG01 - должен появиться в России в конце лета и уже продается в Японии.

To be continued...

p.s. В MyToshiba.ru - не предзаказ, а просто сбор статистики. Не стоит оплачивать TG01 (цена уже подросла на 6к)!

08 Июнь, 2009

Домашне-музыкальное

Если вы являетесь счастливым обладателем выделенного интернет-соединения с безлимитным тарифом, то по месту обладания сим богатством можете забыть о недостатке музыки: на инет-радио-трекере d-j.ru - добрая сотня каналов на любой вкус. Слушаю Lounge (www.lounge-radio.com), в восторге!
Ну и родное РадиоКафе тоже весьма здорово играет.

Конечно, mp3-поток - не lossless по качеству, ну и что-то нужно иметь про запас на случай отключения доступа и слушать вне...

06 Май, 2009

#team0xf

Общение с team0xf взорвало мозг. Осколки разлетались по округе еще долго. Их самодельные молниеносная умная билд-система, профайлер, GUI, разные обертки (OO-OpenGL aka DOG) и хедеры (PhysX)... Просто сделали себе все, что нужно и знай себе жгут напалмом.

Программирование на D и некоторые проекты сообщества D открывают дверь в какой-то совершенно другой компьютерный мир, где возможно то, что даже не представлялось возможным. LDC, DDL, XoMB...

Общение с комьюнити дает ощущение нахождения в большой семье. И все как-то постоянно, пускай и помаленьку, становится лучше. Что впереди, с полным опенсорсом DMD и его экспансией на другие платформы, с доработкой LDC, с Александреску, активно пилящим стандартную библиотеку для D2, сказать сложно, но будет еще интереснее.

Пусть каждый кодит на том, на чем ему лучше - я просто должен запечатлеть собственное состояние в два часа ночи, тк такое состояние за два последних года использования Ди только нарастало и, видимо, как-то качественно изменилось сейчас. И, также видимо, вся моя Ди-деятельность тоже изменится вскоре.

Проблемы, что нечем заняться, уже и не было последний год, теперь исчезла, как класс. Масс медиа и все спиртное/табачное в мире давно остались в какой-то другой, параллельной вселенной. Движок, фанкарвинг на доске в свиче, горы интереснейшей литературы, отличная работа и куча хобби. Скучно скучным людям. Интернет пуст, если вы туда ничего не положили.

21 Апрель, 2009

Звездное

Звезды и spaceship one в оформлении блога, собственно, неспроста. Ответ зовется MoonGlide и обитает здесь, выглядит пока примерно так:



Кросс-платформенный (потенциально - мультирендерный) графический движок, opensource, Artistic license 2.0. Делается для души на замечательном языке D.

Для сборки/разработки нужен компилятор DMD и альтернативная стандартная библиотека Tango, взять можно здесь.
Разрабатываем в IDE Code::Blocks, для оперативной сборки движка - самописный сборщик Dee0xD, идущий "в комплекте".
Заодно, если поставите дмд + танго, сможете воочию увидеть, как движок, 4 библиотеки зависимостей и утилита сборки все полностью пересобираются секунды за 3!

upd "Почему программисты так любят писать движок сами"

30 Март, 2009

Статус

За полгода жизнь круто изменилась и даже начала налаживаться, переходя из хаоса во что-то осмысленное.
Полгода работаю программистом в mercdev.com: c++/objective-c, mac/win, opengl - мечта сбылась, нужно продолжать развиваться.
Пару дней назад вернулся с обучения в национальной лиге инструкторов горнолыжного спорта (NRLI, isiarussia.ru), сдав на инструктора по сноуборду категории "С" - еще одна мечта сбылась, видны новые горизонты.
Подзабросил ди, движок, блог - работа и катание заполнили зиму. Но зима кончилась - уехал с Урала из нее прямо в самарскую весну.
dprogramming.ru потихоньку растет, основные проекты на ди развиваются, и все это радует.
Планов и проектов - море, как обычно, но теперь больше возможностей.
Не лениться. Планировать. Действовать.

03 Сентябрь, 2008

Проект dprogramming.ru: отладчик языка D под Linux

Силами участников dprogramming.ru организован проект отладчика уровня приложения под linux, которого сильно не хватает для продуктивной работы на D в данном семействе операционных систем. Если под windows есть отличный свободный отладчик ddbg (написанный на D), то под линукс - старые патчи к gdb и тяжеловесный старый огрызок от платного zerobugs.

Задуманное - пока что terra incognita для нас, собираем материал. Если вы можете помочь советами, полезными ссылками на материал или кодом - пишите в комментарии, на почту или заходите на наш форум.

Управление проектом ведется через googlecode.

13 Июль, 2008

Повседневное

1. Человечество создает глобальное потепление и озоновые дыры!

С малого ледникового периода семнадцатого века Солнце усиливает излучение, "разогревается": об этом свидетельствуют трехсотлетние наблюдения за изменением количества пятен на светиле (активность неравномерного движения верхних слоев звезды, из-за которого магнитное поле закручивается и создает "петли", чей вход в поверхность локально уменьшает температуру, что наблюдается как "пятно" на фоне общей активности; активность магнитного поля напрямую связана с излучением)(практически отсутствовали, наблюдаемое количество постоянно увеличивалось с тех пор) и данные об изменении излучения со спутника SOHO (есть данные, что солнечная активность в последние 20 лет вышла на максимум). Климат - не константа, постепенные потепления и похолодания были и будут. Человеческий вклад пока мизерен. Европейский институт климата и энергии прогнозирует начало похолодания после 2010ого, процесс в океане вокруг Антарктиды уже пошел.

Озон в "озоновом слое" - побочный продукт взаимодействия солнечной радиации и кислорода в верхних слоях атмосферы. Являясь более тяжелым (из-за молекулярного веса) газом, чем кислород, озон неминуемо опускается к поверхности планеты, слой же сохраняется только благодаря постоянной регенерации. Из-за распределения излучения слой максимален на экваторе и почти отсутствует на полюсах, что наблюдается как "дыры", причем "пульсирующие" (форма и размер колеблются со временем). "Дыра" в азии в конце прошлого века была вызвана выбросом природного газа и регенерировалась через месяц, вопреки истерике заказной организации "Green Peace". "Дыр" над промышленными центрами США и Европы, вопреки "теориям" производителей холодильников, зарабатывающих на "безопасных" хладагентах до сих пор, никогда не было. Если концентрация ядовитых веществ, вступающих в реакцию с озоном и тем разрушающих слой, будет настолько высока, что слой не сможет регенерироваться, мы все с вами от этих самых веществ поумираем гораздо раньше, чем нас запечет солнышком.


2. Мощность автомобильного двигателя в лошадиных силах определяет разгонную динамику: у какой машины больше лошадей, та и быстрее ускоряется!

Максимальная мощность двс равна максимальному произведению крутящего момента мотора на число оборотов коленвала. Для низкооборотных дизельных моторов иметь немного лошадиных сил, но огромный крутящий момент - вполне нормально. Для мотоциклетных малообъемных турбированных моторов иметь много лошадиных сил (благодаря тому, что они чаще всего "крутятся" далеко за 10000 оборотов/мин ) и небольшой крутящий момент - тоже норма. Высокая мощность в КВт/л.с. в первую очередь показывает высокий крутящий момент при большом числе оборотов коленвала двигателя, что необходимо скоростным машинам для ускорения на высших передачах, при которых требуется сильно раскручивать мотор. Главными же показателями динамических возможностей автомобиля являются кривая изменения крутящего момента, измеренная с ведущих колес на "прямой" передаче (коэффициент 1.0)(иногда маркетологи дают данные измерения с коленвала двигателя, т.е. без учета трансмиссионных потерь от мотора до ведущих колес) и, собственно, масса машины. Кривая крутящего момента показывает не только пиковое значение, но и диапазон оборотов, при котором доступен максимум крутящего момента (в котором нужно удерживать мотор при переключении передач: чем шире диапазон максимума крутящего момента, тем реже можно переключать передачи и тем "гибче" возможности двигателя). Сегодня производители нередко немного дефорсируют моторы, чтобы сделать диапазон максимального крутящего момента шире и/или "сдвинуть" его ближе к зоне низких оборотов, чтобы мотор начинал "тянуть" раньше и делал это наиболее эффективно дольше.


3. Нефти хватит на 40 лет, дальше нас ждет мегакризис!

Процесс синтеза бензина и дизтоплива из любых органических субстанций (отходов) разработан: подобные заводы строит "Shell" (и не только). Оборудование родственно тому, что используется на нефтеперерабатывающих заводах, так что нефтяные компании и НПЗ никуда не денутся и без бензина, скорее всего, совсем нас не оставят. Автоконцерны вовсю экспериментируют с электро- и водородными двигателями: огромный и постоянно растущий спрос на энергоисточники делает поиск решений выгодным, сколько бы он ни стоил.

19 Июнь, 2008

Тройка новостей

1. Вышла Novell OpenSUSE 11 public release, очень достойный дистрибутив линукса, который при наличии постоянного подключения к сети с безлимитным траффиком может вполне заменить окошки. Улучшенный YaST, доработанная напильником система установки пакетов, KDE 4 + Qt 4 и множество приятных мелочей - в комплекте.

2. Постепенно развивается русскоязычный ресурс о языке программирования DigitalMars D dprogramming.ru: теперь у нас для вас есть новостная лента и форум, заходите, будем рады пообщаться.

3. В июле собираюсь переезжать на собственный хостинг с блогом на wordpress.

06 Май, 2008

Интервью с Walter Bright (май 2006)

Перевел для dprogramming.ru интервью Bitwize Magazine с Walter Bright 2006ого года, с чего и начну свои посты о языке DigitalMars D. Перевод весьма вольный, в первую очередь старался передать смысл и сделать удобочитаемым. Просьба прочитавшим: если нашли серьезную неточность - оставьте, пожалуйста, комментарий.

Чтобы было проще сравнивать, разделил на части по авторам с указанием исходного английского текста.

(скрыто - жмите на заголовок для просмотра)

After a lifetime of writing C and C++ compilers, Walter Bright decided to go one step beyond with the creation of D. In this exclusive interview, he tells Huw Collingbourne and Dermot Hogan about the past, present and future of the D programming language

Всю жизнь занимаясь написанием компиляторов С и С++, Walter Bright решил выйти на новый уровень созданием языка D. В данном эксклюзивном интервью он рассказывает Huw Collingbourne и Dermot Hogan про прошлое, настоящее и будущее языка программирования D.

----------------------------------------------------

What Is D?
“D is a general purpose systems and applications programming language. It is a higher level language than C++, but retains the ability to write high performance code and interface directly with the operating system API's and with hardware. D is well suited to writing medium to large scale million line programs with teams of developers. D is easy to learn, provides many capabilities to aid the programmer, and is well suited to aggressive compiler optimization technology.”
From the The Digital Mars Overview of the D Language

Чем является D?
"D - язык программирования систем и приложений общего назначения. Он более высокоуровневый, чем С++, но при этом сохраняет возможность создавать быстро исполняемый код и обращаться непосредственно к API операционных систем и аппаратному обеспечению. D хорошо подходит для написания средних и больших программ с миллионами строк исходного кода большими командами разработчиков. D легко изучается, имеет множество средств в помощь разработчику и удобен для применения технологий агрессивной оптимизации компилятором."
Из обзора The Digital Mars Overview of the D Language

----------------------------------------------------

Huw: First of all, quite simply, why did you decide to create D? What was really so wrong with C++ anyway? And why didn't Java measure up?

Во-первых, проще говоря, прочему вы решили создать D? Что, собственно, было не так с С++? И почему не устраивала Java?

----------------------------------------------------

Walter Bright: I really like C++. I was instantly attracted to it back in 1986, and created the first native C++ compiler (Zortech C++). Over the years since, C++ has grown by layering on needed features without disturbing backwards compatibility. Often this results in some very strange rules and surprising corner cases. In the meantime, the rest of the programming world certainly has grown, too, with features and paradigms with proven productivity.

At some point, it just makes sense to look at where we are, and try to design a language that gets there in a straight line, rather than try to be compatible with obsolete decisions made 20 or 30 years ago. (For example, the text #inclusion system was a good idea 30 years ago, but has long passed any shred of sensibility in today's world. For another, the design of C++ is rooted in its ASCII past, making support of modern requirements like UTF difficult.)

C++ has reached a certain level of maturity now, its period of rapid evolution is over. So the time is right to see what can be done with a redesign. Java isn't it, for the simple reason that it isn't powerful enough. For example, a garbage collector cannot be written in Java.
Prior to the D language and compiler, Walter Bright wrote Northwest Software, C, Datalight C, Zorland C, Zortech C++ (the first native C++ compiler), Symantec C++ and Digital Mars C++ and the Symantec Visual Café Java compiler.

Я действительно люблю С++. Язык быстро привлек меня в 1986ом, и я создал первый платформозависимый компилятор С++ (Zortech C++). После этого с годами С++ рос путем наслоения необходимых новшеств без затрагивания обратной совместимости. Результатами такого подхода часто являлись некоторые очень странные правила и удивительные частные случаи. В то же время, прочие направления мира программирования также развились, создав свои новшества и парадигмы с проверенной продуктивностью.

Есть мнение, что стоит взглянуть на существующее положение дел и попытаться спроектировать язык программирования, непосредственно соответсвующий современным требованиям, а не пытаться сохранить совместимость с устаревшими решениями двадцати- и тридцатилетней давности. (К примеру, система включений #inclusion была хорошей идеей 30 лет назад, но давно потеряла всякую актуальность в сегодняшнем мире. Другой пример - дизайн С++ основан на его ASCII-прошлом, что усложняет поддержку современных требований, таких как UTF.)

С++ сейчас достиг определенного уровня развития, период его активного эволюционирования завершен. Настало нужное время для того, чтобы оценить, что можно сделать вплане редизайна. Java - не то, просто потому, что недостаточно мощна. Например, на яве нельзя написать сборщик мусора.

----------------------------------------------------

Huw: How big a challenge was it to write Zorland/Zortech C++? If you were doing it these days, what would you do differently?

Насколько сложной задачей было написание компилятора Zorland/Zortech C++? Если бы вы это делали сейчас, что бы сделали иначе?

----------------------------------------------------

Walter Bright: It's a huge challenge for anyone to write a professional quality compiler, and C++ is the hardest of all languages to implement. I wouldn't do it these days, as high quality free C++ compilers exist, but back in 1986 or so, there was plenty of opportunity in implementing one.

Написать компилятор профессионального уровня - очень сложная задача для кого угодно, а С++ - самый сложный для реализации язык программирования. Я бы не стал этого делать сегодня, поскольку уже есть высококачественные свободные компиляторы С++, но тогда, в 1986ом или около того, была реальная возможность написать такой компилятор.

----------------------------------------------------

Huw: What is D's 'unique selling point'? Given all the other languages available, why should a programmer choose D?

Что является уникальным преимуществом D? Если у программиста есть выбор между всеми существующими сегодня языками, почему он должен выбрать именно D?

----------------------------------------------------

Walter Bright: D appeals to programmers who are interested in writing high performance code, want a C++ style language, but need a language that is much easier to master with support for modern techniques like automatic memory management, modules, UTF, etc. It isn't unusual for a D program to have 30% less source code than the equivalent C++, yet run at the same speed or faster. It's simply faster to develop code in D, and faster to get it debugged. Other languages tend to adopt either a different look and feel from C++, or omit necessary power features like pointers. I don't believe any of them have gone as far as D has in developing a well-rounded set of core features.

D предназначен для программистов, заинтересованных в написании высокопроизводительного кода, желающих писать на языке стиля С++, но более легком в освоении и имеющем поддержку современных методик, таких как автоматическое управление памятью, модули, UTF и т.д. Для программы на D иметь на 30% меньше исходного кода, чем в аналогичной программе на С++, но при этом работать так же быстро или быстрее - обычное дело. Просто быстрее и разрабатывать код на D, и отлаживать его. Другие языки стремятся или иметь отличный от С++ стиль, или обойтись без нужных и мощных средств, таких как указатели. Я не верю, что какой-либо из них продвинулся в разработке набора хорошо подобранных основных особенностей настолько, насколько D.

----------------------------------------------------

Dermot: Can you use D for COM interfacing? It would be nice to have something between C# and C++ that didn't use the casting dirty trick that C# uses to query IUnkown.

Можно ли использовать D для работы с COM-интерфейсами? Было бы здорово иметь что-то среднее между C# и С++, что не использовало бы такой же грязный трюк с приведением типов, какой C# использует для запроса IUnknown.

----------------------------------------------------

Walter Bright: Yes, D directly supports building COM classes.

Да, D прямо поддерживает создание классов COM.

----------------------------------------------------

Huw: Is D open source? I see on your web site that you say "the front end" of D is open source. I can't see a mention of the GNU licence anywhere. What are the licence terms and just how open is D?

Имеет ли D открытый исходный код? Вижу на вашем веб-сайте, что вы говорите об открытом исходном коде компилятора D переднего плана. Нигде не вижу упомянания лицензии GNU. Каковы условия лицензии и вообще насколько открыт D?

----------------------------------------------------

Walter Bright: The front end of the D compiler is dual license, GPL and Artistic. David Friedman has taken the front end and grafted it on to gcc, and the result is gdc, the gnu D compiler, which is fully GPL. The runtime library is not GPL, but is freely redistributable and usable for any purpose. Many parts of it are even explicitly public domain.

Компилятор D переднего плана* лицензирован под двойной лицензией - GPL и Artistic. David Friedman приспособил его исходный код под использование GCC в качестве генератора кода, в результате чего получился компилятор gdc, полностью лицензированный под GPL. Библиотека времени исполнения не лицензирована под GPL, но свободно распространяема и пригодна к использованию для любых целей**. Многие ее части являются свободными (public domain).

* заточенного под использование DigitalMars C/C++ compiler в качестве генератора кода. "Компилятор переднего плана (front-end) в качестве результата своей работы формирует образ исходной программы на некотором промежуточном языке. Далее этот образ обрабатывается отдельной компонентой - генератором кода (back-end). Это обычная схема, давно принятая в многоязыковых системах программирования. Так как промежуточное представление выбирается единым для всех входных языков, то в системе достаточно единственного генератора кода, что исключает затраты на реализацию генератора для каждого отдельного компилятора. Кроме того, можно разработать несколько генераторов кода с единого внутреннего представления для различных аппаратных платформ, получив тем самым многоплатформную систему программирования. По этой схеме организована система gcc, похожим образом устроены и продукты семейства TopSpeed и десятки других." - цитата из статьи Евгения Зуева "Редкая профессия", стр. 29 - примечание переводчика
** стандартная библиотека Phobos, уже ставшая opensource и находящаяся сейчас на портале разработчиков D dsource.org. Также существует альтернативная стандартная библиотека Tango, разрабатываемая энтузиастами без участия разработчиков D (Walter Bright, Andrei Alecsandrescu и других). - примечание переводчика

----------------------------------------------------

Huw: In the license agreement I see mentions of Zortech and Symantec. What is the involvement of those companies with D?

Вижу в лицензионном соглашении упомянания о Zortech и Symantec. Как данные компании относятся к D?

----------------------------------------------------

Walter Bright: Zortech was bought by Symantec and no longer exists. The language in the license agreement is there at the request of Symantec to make clear that Symantec has absolutely no involvement with D or Digital Mars products. I used to work on compilers for Symantec.

Zortech был куплен Symantec и более не существует. Язык D в лицензионном соглашении присутствует по просьбе Symantec для того, чтобы прояснить ситуацию, что Symantec не имеет абсолютно никакого отношения к D или продуктам Digital Mars. Я работал над компиляторами для Symantec.

----------------------------------------------------

Huw: Why is there no IDE (at least on Windows)?

Почему нет интегрированной среды разработки (по крайней мере под Windows)?

----------------------------------------------------

Walter Bright: There are several people in the D community who are working on IDEs. D has a number of characteristics which make writing a good IDE for it easier (like it can be parsed without needing a symbol table).

В сообществе D есть несколько человек, работающих над созданием IDE. У D есть несколько свойств, которые упрощают создание хорошей интегрированной среды для него (как, например, код на D может быть проанализирован без необходимости в создании таблицы символов).

----------------------------------------------------

Dermot: I'm curious about your comment on parsing D. C++ is notoriously difficult to parse, and I'm still feeling a bit raw from writing a LL(k) parser for Ruby, so I've got strong feelings on the subject. Is D much easier to parse than C++? If so, is the language 'tighter' than C++ ?(i.e. less ambiguous and prone to 'blowing your leg off' to re-use a famous quotation).

Мне любопытен ваш комментарий по анализу кода D. C++ весьма сложен для анализа, и у меня еще свежи ощущения от написания анализатора LL(k) для Ruby, так что я в теме. D действительно намного проще для анализа по сравнению с С++? Если так, является ли язык "крепче" С++? (то есть менее двусмысленным и склонным к "отрыванию ваших ног", как в известной цитате).

----------------------------------------------------

Walter Bright: C++ isn't hard to parse because it requires arbitrary lookahead; that's an easy problem to solve. It's hard to parse because a particular sequence of tokens can produce multiple totally different parse trees, depending on what some of the symbols are declared as. Even worse, many of those symbols aren't known at parse time, because they aren't declared yet. So it has to be parsed into some indeterminate state that gets "fixed" later.

This issue makes it impossible to correctly parse C++ code without building most of a C++ compiler front end, including all the hard stuff. It's further complicated by the preprocessor - unless the parser has full implementation of the preprocessor, and includes all the #includes and command line #defines, it cannot successfully parse an arbitrary C++ source file. This cripples the utility of source formatters, analyzers, syntax directed editors, documentation generators, source code instrumentation tools, etc. To avoid these problems, the D language was designed with the following rules in mind:

1) no text preprocessor
2) no command line switch can change the syntax
3) no imported file can change the syntax
4) a source file can be tokenized without reference to syntax or semantics
5) a source file can be syntactically analyzed without needing any semantic information

This should make it easy to build tools that work with D source code. Parsing D still requires arbitrary lookahead, but this is an easy problem to deal with. The D lexer and parser are GPL open source, so the proof of that is plain to see.

Анализ С++ сложен не потому, что требует произвольного предварительного просмотра; это проблема решается просто. Он сложен потому, что некоторые последовательности знаков могут создавать множество совершенно разных деревьев анализа, в зависимости от того, как объявлены некоторые символы. Даже хуже, много значений таких символов не известно во время анализа, потому что они еще не объявлены, потому код должен быть проанализирован в какое-то промежуточное частично определенное состояние, которое "налаживается" после.

Из-за этого невозможно корректно анализировать код С++ без создания большей части компилятора С++, включая все сложные вещи. Далее все еще более усложняется из-за препроцессора - до тех пор, пока анализатор не имеет полной реализации препроцессора, не добавляет все #inlcude и #define, он не может успешно проанализировать произвольный файл с исходным кодом на С++. Это мешает использованию форматирования исходного кода, анализаторов, синтаксически-ориентированных редакторов, генераторов документации, средств применения исходного кода и прочих. Чтобы избежать подобного, в основе дизайна языка D были следующие правила:

1) нет текстового препроцессора
2) ни одна директива коммандной строки не может изменить синтаксис
3) ни один импортируемый файл не может изменить синтаксис
4) файл с исходным кодом может быть разделен на знаки (tokenized) без ссылок на синтаксис или семантику
5) файл с исходным кодом может быть синтаксически проанализирован без нужды в какой-либо семантической информации

Все это должно упростить создание средств для работы с исходным кодом D. Анализ D все еще требует произвольного предварительного просмотра, но эта проблема легко решается. Лексер (lexer) и анализатор (parser) D имеют открытый исходный код, потому доказательства всего сказанного легко увидеть.

----------------------------------------------------

Dermot: Again, relating to a comment you've made below on programming errors, YACC LALR parsers are notorious for saying things like 'there's an error in here somewhere, but I'm not sure where'. Ruby is particularly bad in this respect - are you saying that D uses a better bag of tricks than YACC?

Еще раз касательно вашего вышесказанного комментария про ошибки программирования, анализаторы YACC LALR нелюбимы за получаемые сообщения типа "где-то тут есть ошибка, но я не уверен, где именно". Ruby особенно плох в этом плане - вы хотите сказать, что D использует лучший "мешок фокусов" чем YACC?

----------------------------------------------------

Walter Bright: I've never used YACC; all the lexers and parsers I've built are hand made. Producing good error diagnostics, and doing good error recovery so parsing can continue without generating a blizzard of spurious messages is much more art than science.

From a theoretical perspective, however, being able to generate a good diagnostic requires that there be redundancy in the syntax. The redundancy is used to make a guess at what was intended, and the more redundancy, the more likely that guess will be correct. It's like the English language - if we misspell a wrod now and then, or if a word missing, the redundancy enables us to correctly guess the meaning. If there is no redundancy in a language, then any random sequence of characters is a valid program.

A good language design must find that sweet spot between enough redundancy to be able to detect errors and issue good error diagnostics, and not so much redundancy that it becomes too wordy and tedious.

Я никогда не использовал YACC; все сделанные мной лексеры и анализаторы полностью самодельные. Создание хорошего диагностирования ошибок и выполнение хорошего восстановления после ошибок для того, чтобы анализ мог быть продолжен без генерации моря ложных сообщений в гораздо большей степени искусство, чем наука.

С точки зрения теории, впрочем, возможность генерировать хорошую диагностику требует избыточности в синтаксисе. Избыточность используется для угадывания, что именно подразумевалось, и чем больше избыточности, тем более вероятно успешное угадывание. Это как в английском языке: если мы неправильно пишем солво здесь и далее, или если слово пропущено, избыточность помогает нам корректно угадать значение. Если в языке вообще нет избыточности, то любой произвольный набор символов будет действительной программой.

Хороший дизайн языка должен найти золотую середину в избыточности - чтобы ее было достаточно для определения ошибок и выполнения их хорошего диагностирования, и недостаточно для того, чтобы язык стал слишком многословным и нудным.

----------------------------------------------------

Huw: These days, a number of languages (such as PHP, Python and Ruby) offer special support for the development of web applications. How does D shape up against those languages for web development?

Сейчас несколько языков (таких, как PHP, Python и Ruby) предлагают специальную поддержку для разработки веб-приложений. Как D приспособлен конкурировать с этими языками в веб-разработке?

----------------------------------------------------

Walter Bright: D is very good for developing CGI apps because D has excellent support for strings, arrays, UTF, and regular expressions, as well as automatic memory management.

D очень хорош для разработки CGI-приложений, поскольку имеет отличную поддержку строк, массивов, UTF и регулярных выражений, так же как и автоматическое управление памятью.

----------------------------------------------------

Huw: Recently both Ruby and D entered the TIOBE programming language 'Top 20'. Even though, syntactically, Ruby and D are very different, they do share some common features (e.g. fairly 'pure' OOP, simple syntax, garbage collection, modules and mixins, closures). Are the similarities between Ruby and D more than skin deep?

Недавно и Ruby, и D попали в "Top 20" языков программирования по версии TIOBE. Даже несмотря на то, что D и Ruby очень разные, их объединяют общие черты (такие как "чистое" ООП, простой синтаксис, сборка мусора, модули и mixins, замыкания). Есть ли общее между Ruby и D кроме поверхностного сравнения?

----------------------------------------------------

Walter Bright: There are many fascinating parallels between Ruby and D. Ruby started out as a reengineering of Perl, and Perl has a lot of parallels with C++. Ruby was started by an independent developer out of sheer love of programming languages, and so has D. Neither language has any agenda other than serving the needs of programmers - and so they've succeeded without needing massive corporate backing or budgets. Probably the most fundamental difference between the two is that Ruby lives in the interpretive, dynamic typing world, and D lives in the native compiled, static typing world.

Есть много очаровательных параллелей между Ruby и D. Ruby был начат как переделка Perl, а у Perl много общего с С++. Ruby был начат независимым разработчиком из страстной любви к языкам программирования, так же как и D. Единственные предназначения обоих языков - быть полезными разработчикам, и в этом они преуспели без необходимости в мощной корпоративной финансовой поддержке. Наверное, наиболее существенное отличие между этими языками в том, что Ruby существует в мире интерпретирования и динамической типизации, а D - в мире платформозависимой компиляции и статической типизации.

----------------------------------------------------

Huw: Where is D going next? What is the next really important feature that you plan to add to the language?

В каком направлении D будет двигаться дальше? Какую следующую действительно важную особенность вы планируете добавить в язык?

----------------------------------------------------

Walter Bright: D is going wherever the D community wants it to go. I have a special interest in the types of features that lend themselves to better detection of programming errors and better optimization. Andrei Alexandrescu has been particularly generous with his time in helping me to understand the issues and coming up with solutions. These kinds of issues are steadily becoming more and more critical to professional software development. D already has many of these things, like contracts, built-in unit testing, guaranteed initialization, scope guards, etc., but much more can be done.

D будет двигаться в том направлении, в котором пожелает его сообщество. У меня есть особый интерес в тех видах нововведений, которые ведут к лучшему обнаружению ошибок и лучшей оптимизации. Andrei Alexandrescu уделил много времени, помогая мне понять спорные вопросы и предлагая решения. Подобные спорные вопросы неуклонно становятся все более и более критичными для профессиональной разработки программного обеспечения. В D уже есть множество подобных вещей, таких как контракты, встроенное тестирование модулей, гарантированная инициализация, scope-обертки и прочее, но еще многое можно сделать.

----------------------------------------------------

Huw: You mentioned the parallels between Ruby and D. How closely do you follow the developments of other languages?

Вы упомянули параллели между Ruby и D. Насколько пристально вы следите за разработками других языков?

----------------------------------------------------

Walter Bright: I obviously closely follow developments in C and C++. My interest in other languages is contextual - if I'm working on a better way to do X, and a certain other language does X very well, then I'll check it out. I'm also very interested in why some languages succeed, and others fail. Why did C++ succeed and Modula 2 fail? Why is Eiffel always trailing way behind? Why did Ruby leap so quickly to the fore? Do languages succeed because they have a killer feature, killer marketing, or are just well oiled machines?

Я, конечно же, слежу за разработками С и С++. Мой интерес к другим языкам - предметный: если я работаю над лучшим способом делать Х, а некоторый другой язык делает Х очень хорошо, тогда я смотрю его. Мне также очень интересны причины успеха одних языков и неуспеха других. Почему С++ успешен, а Modula 2 - нет? Почему Eiffel постоянно плетется в хвосте? Почему Ruby так быстро выскочил в лидеры? Успешны ли языки потому, что в них есть абсолютное новшество, абсолютное продвижение на рынке, или это просто работающие как швейцарские часы механизмы?

----------------------------------------------------

Huw: Other than D itself, which modern program languages do you think are most interesting or have the greatest potential?

Кроме самого D, какой современный язык программирования вы считаете наиболее интересным или имеющим наибольший потенциал?

----------------------------------------------------

Walter Bright: There's no doubt about it, the one to watch is Ruby. C, C++, and Java are mature languages that have reached their potential.

Без сомнений, стоит следить за Ruby. C, C++ и Java - сформировавшиеся языки, достигшие своего потенциала.

----------------------------------------------------

Walter Bright graduated from Caltech in 1979 with a degree in mechanical engineering. He worked for Boeing for 3 years on the development of the 757 stabilizer trim system. He then switched to writing software, in particular compilers, and has been writing them ever since.

Walter Bright окончил Калифорнийский Технологический Институт в 1979 со степенью в машиностроении. Он работал 3 года в Boeing над разработкой системы настройки стабилизатора 757. После этого он перешел на написание программного обеспечения, в основном - компиляторов, и пишет их до сих пор.

16 Апрель, 2008

Исходники клиента EVE

Прямо-таки криминальное чтиво.

Если играете или планируете играть в EVE, лучше скачивать торрент через прокси, говорят, ССР поддерживает раздачу на piratebay, сравнивая ip качающих с базой игроков и безжалостно забанивая последних при совпадении.

CNews

Клиент ммо-космосима EVE-Online написан на stackless python и опровергает мнение о том, что Питон меньше всего подходит для ресурсоемких расчетов реального времени, в частности, игр. Питон является интерпретируемым языком, и выложенные русским нетоварищем "исходники" - декомпиляция клиента, которая всегда была возможна вполне доступными средствами. Тем не менее, исходники, пополнившие ряды оных от Freespace, Doom, Quake и прочих, весьма интересны сами по себе, вне самой игры и каких-либо игровых преимуществ от их использования.

01 Март, 2008

NVidia, мобильность, будущее

Развитие функциональности коммуникаторов и смартфонов выходит на новую стадию - борьбу за поддержку качественного мультимедиа. Современные устанавливаемые 400-520-624 мегагерцовые процессоры архитектур ARM не обладают достаточной производительностью и энергопотреблением, чтобы обеспечить поддержку высокого разрешения экрана и фото-видео-камеры, превратить налодонник в проигрыватель качественного видео и аудио с длительной автономной работой, а также в игровую консоль с поддержкой современной 3D-графики. Дальнейшее увеличение тактовой частоты само по себе не решит данные задачи, но сильно снизит время автономной работы, потому необходимо развитие по двум возможным путям: развитие необходимой функциональности в самих процессорах или отделение аудио-видео-подсистемы, как это когда-то произошло на PC.

В 2004ом году (на CeBIT, Consumer Electronics Show и Mobile GSM Congress) Intel, ATI и NVidia предложили мобильные графические ускорители, обладающие пониженным энергопортеблением, аппаратным декодированием видео, поддержкой 2D и 3D графики, впоследствии - аппратной обработкой данных с камеры и декодированием аудио.

Intel 2700G
ATI Imageon
NVidia GoForce
Общий обзор

Если для сотовых телефонов ускорители от ATI и NVidia (младшие серии) стали практически стандартом (Mitsubishi, Sagem, Samsung, 75ая линейка Siemens, LG, Motorola, Sony Ericsson), то у производителей КПК и коммуникаторов успехом они не пользовались: из успешных моделей можно упомянуть только Dell Axim X50v/X51v и HP iPAQ hx4700/hx4705.

В 2007ом году ситуация обещала измениться с выходом наладонников на революционном GoForce 5500, однако произошло нечто загадочное и неприятное: O2 XDA Flame, Toshiba Portege G900 (и Sharp EM ONE на азиатском рынке), имеющие "на борту" по подобному чипу, практически не использовали его функциональность, что наглядно подтверждалось бенчмарками графики и длительностью проигрывания аудио от стандартной батареи аккумулятора. Камер с матрицами сверхвысокого разрешения и улучшенной обработки снимков также не было. Петиции владельцев Flame и G900 к O2, Toshiba и NVidia с просьбами предоставить драйвер и задействовать чип не привели ни к чему, на форуме разработчиков NVidia вопросы про sdk к 5500 висят без ответов. Самоделкины из Nouveau также отказались пробовать написать драйвер. Можно предположить, что выход iMate Ultimate (в старших моделях анонсирован тот же GoForce 5500) задерживается именно из-за проблем с использованием функциональности чипа.
В итоге, обещанные NVidia для GoForce 5500/6100 светлое завтра и всеобщее счастье не наступили, и, судя по сообщениям инсайдеров о том, что все ресурсы направлены на разработку новой платформы APX 2500, и нулевую техподдержку уже готовых продуктов с данным чипом, не наступят. Возможно, проблема решится с выходом Windows Mobile 7, в которой заявлена поддержка всех вышедших мобильных ускорителей, но скорее всего более совершенные и рабочие решения выйдут раньше.

Предстоящая на PC борьба видеоподсистемы и центрального процессора за место в системном блоке для наладонников, похоже, уже ведется: Intel изначально предлагает платформу, рассматривая ускоритель как сопроцессор для основного процессора, Texas Instruments и Samsung разрабатывают процессоры с новой функциональностью, а NVidia разрабатывает платформу APX 2500 с процессором расширенной функциональности, планируя самостоятельный выход на рынок наладонников в качестве разработчика платформ и процессоров.

Если новое предложение от NVidia не окажется очередным "слоном" наподобие GoForce 5500, светлое завтра уже не за горами, и наладонник вскоре все-таки заменит среднюю цифровую фотовидеокамеру с высоким разрешением матрицы и стабилизацией изображения, видео и аудио плееры, портативную игровую консоль с целым арсеналом сетевых средств и просто компьютер с удобным интерфейсом, управляемым пальцем и стилусом. Если верить пресс-релизам, готовых продуктов на данной платформе стоит ждать уже к концу этого года.

Обзоры интересных коммуникаторов с нормально работающим графическим ускорителем:
Gigabyte GW998

Samsung i8510 (INNOV8)
Из обзора: "Аппаратная платформа: в этой части Samsung i8510 не несет ничего нового, платформа в модели почти точно такая же, как в Samsung G810. Это радиоинтерфейс от Qualcomm MSM6280 и чипсет TI OMAP 2430, в котором есть встроенный ускоритель 2D/3D-графики, используемый для работы с камерой."
Из спецификации: "The OMAP2430/ OMAP2431 processor embeds Imagination Technologies' POWERVR MBX ™ graphics core, making it the first applications processor to support OpenGL ES® 2.0 and OpenVG™, providing superior graphics performance and advanced user interface capabilities. TI is enabling sophisticated and dynamic images with "smart pixel" technology offered via OpenGL ES 2.0. This unique technology allows each pixel in an image to be programmed individually, giving developers the power to create rich effects with cinematic realism. Users will now experience "life-like" facial features, advanced reflection effects and multi-textured backgrounds in the mobile environment."

открытая кпк/консоль с линуксом Pandora (GPU PowerVR SGX530 - OpenGL ES 2.0)


Ссылки по теме:
NVidia-powered ones
Чипсет Nomadic
PowerVR-powered: наладонники с аппаратно ускоренной графикой

29 Февраль, 2008

Code::Blocks release 8.02

Разработчики свободной кросс-платформенной среды разработки для С/С++/D, поддерживающей большинство наиболее распространенных компиляторов, выпустили стабильную версию.

Работаю в кодблоксе примерно полтора года, радует постоянное непрерывное развитие, неплохая поддержка юзверей со стороны разработчиков, стабильность среды. Сейчас кодблокс представляет из себя неплохую бесплатную альтернативу ms visual studio, доступную также под линукс- и мак-платформами.

К слову о Ди, кодблокс, насколько я искал, - единственная бесплатная полнофункциональная IDE для этого языка на данный момент, остальное - блокноты или платные "коты в мешках".

23 Февраль, 2008

-1 Vista user

После того, как из-под висты был запущен установщик opensuse, в ней намертво застрял костыль загрузочного меню. Вроде бы аккуратные попытки вытащить его вручную окончились тем, что виста не захотела больше запускаться никак. А также восстановить свою загрузку. А также обновить уже установленную себя же. А также вообще устанавливаться на жесткий диск, не принадлежащий ей целиком и имеющий раздел с неблаговерным линуксом. Больше желания работать с данной осью совсем нет, даже несмотря на новую архитектуру нового Direct3D.
Уехал под OpenSUSE 10.3 + WinXP 64bit.

Потихоньку готовлю пост о языке D, на котором последние полгода с удовольствием программируем.

15 Январь, 2008

О TortoiseSVN

SVN - клиент-серверная система контроля версий. Лучше всего подходит для текстовых доков (исходников), а вообще для всего. Создана как потомок и замена CVS, в чем преуспевает. Свободные клиенты для win - TortoiseSVN (встраивается в вин шелл), RapidSVN.
Наиболее известные бесплатные сервисы, поддерживающие SVN-репозитории: sourceforge, opensvn, berlios, dsouce (для проектов на языке D).

Используем TortoiseSVN больше года, вроде как надежнее и мощнее, чем RapidSVN.

Встреченные баги: "слепота" к некоторым из измененных файлов (не заливаются в репозиторий, иногда даже при добавлении к управляемому вручную), отсутствие отображения изменений при конфликте версий с последующим вылетом свн-редактора TortoiseMerge.
Может, были другие, но навскидку не вспоминаются.
Экстремальные ситуации решали полной перезаливкой, но таких последние 3-4 месяца не происходит. Иногда сносим локальные копии и сливаем заново, решает локальные ошибки. В общем же, работает быстро и достаточно стабильно.

Пара неочевидных удобств:

1. шелл - TortoiseSVN - settings - global ignore pattern: маски файлов, не попадающих в хранилище. В версиях прошлого года это поле сохранялось для создаваемого репозитория, потому изменение не применялось к уже существующим. Сейчас, вроде бы, работает.

2. шелл - TortoiseSVN - revision graph - выбрать последнюю ревизию и нажать кнопку "shows all revisions where changes were made to this item" - выбрать нужную ревизию, зажав ctrl, выбрать вторую для сравнения - через меню или правомышью "compare revisions": показывает список измененных файлов между выбранными ревизиями, двойным кликом по файлу в списке можно открыть редактор и посмотреть изменения. В логе ревизии указан автор, в кого в случае неадеквата кидать тапками и прочим подручным.

3. шелл - TortoiseSVN - update to revision: для отката к предыдущим ревизиям вместо HEAD впечатываем нужную. В свн-хранилище ничего не теряется, и если проявился какой-либо баг или нужно откатить некорректные/ненужные изменения, просто откатываем локальную версию к нужной ревизии.

Прочие интересности - для отдельных ситуаций, находятся тыком или с помощью RTFM.

Бранчи не используем (пока?), правила стандартны: некомпил/неработающее совсем - не заливать, нестабильное - предупредив. Используем далеко не все возможности, осваиваем по мере необходимости.

Когда-то несколько месяцев пользовались Visual Source Safe, впечатления по установке и использованию остались совсем плохие. С черепашкой - год, полет нормальный. Как жить без подобной системы, уже плохо представляется.

Алена С++ о Subversion

Пользуетесь системами контроля версий? Желаете поделиться впечатлениями/отзывами или прочим - пишите.

upd под линуксом (openSUSE KDE 3) использую KdeSvn, претензий к функциональности и работе нет.

13 Январь, 2008

Godmode блога

Вроде как удалял летом вместе с жж и мейлру. Вроде бы даже заходил проверить, и не открывалось. Как получилось, что этот блог оставался живым полгода - непонятно, но приятно, тк желание периодически конспектировать разный материал вернулось вместе с улучшенным коннектом. Любимое оформление блога сохранилось, от чего еще приятней. Живучий оказался блог, что сказать!..

Чего нельзя сказать о livejournal: "The username you entered is that of an account which has been deleted and purged. If you wish to use this username you must first purchase a rename token for an existing account. Buy a rename token for $15 USD at the Gift Shop, and it'll be emailed to you". Любой претендент на название удаленного журнала, включая бывшего автора, обязан проплатить, если желает использовать данное имя - интересная реализация purge. Отталкивающая политика, имхо.

Блоггер развивается, судя по множеству новых доступных элементов оформления. Продолжаю искать image cut... Неужели до сих пор нет?

23 Май, 2007

О софте

Зачем пользоваться кряками и кейгенами, если есть свободные аналоги нужных программ? Для себя решил - только свободный софт, насколько возможно.

Первой по списку идет операционная система: из опробованных дистрибутивов linux остановился на OpenSUSE, несмотря на странную работу 10.2 со свободным местом на флэш-накопителях и мнении, что большинство дистрибутивов - мало чем связанные наборы разнокалиберных библиотек. На ноутбуке под сьюзой напрягли проблемы с драйверами к доброй половине железок, потому импульсивно удаленную под корень предустановленную висту пришлось вернуть, лицензионное соглашение позволяет ставить ось обратно на данную машину столько раз, сколько потребуется. С отключенным всем, чем можно, и за файрволом жить вполне можно. Увеличившаяся скорость открытия интернет-страниц по сравнению с ХР порадовала, местный стек, по ощущениям, не уступает в скорости оному в той же OpenSUSE. Проблем с DRM пока не возникало, MediaPlayer 11 не устанавливал и пользоваться не планирую. В итоге единственный коммерческий лицензионный софт из установленного - как раз ось, идущая в комплекте.

В остальном - стандартный любимый набор: OpenOfficeOrg, Blender3D, Gimp, Firefox + FireFTP + Thunderbird, Foxit PDF reader, Quintessential, Code::Blocks C/C++/D IDE + DMC/DMD, FastStone Image Viewer, Notepad++, Wavosaur, из защиты - avira classic + comodo firewall pro + winpatrol.

На университетском сайте обнаружилась база по свободному ПО, есть, что посмотреть.

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

Если пользуетесь свободным софтом и есть, что сказать по используемому - пишите.

upd новый ноут + суза 10.3 прекрасно ужились, все работает.

Запуск

Приветсвую, гость. Вы читаете журнал Евгения Железникова ака Digited, в котором обо всем мне интересном понемногу.