Новый подход к программированию - интервью

Jul 08, 2004 11:48

Когда я был на JavaOne на прошлой неделе то дал интервью Джеку Хэррингтону - он автор книжки "Code Generation in Action", а также он поддерживает web-site посвященный генерации кода - http://www.codegeneration.netRead more... )

language_oriented_programming

Leave a comment

Comments 41

пример anonymous July 11 2004, 23:22:23 UTC
Реальный пример использования технологии типа предлагаемой Сергеем.
Фрагмент компилятора. Вообще-то это просто ява, и в ней немножко добавлено.
Синтаксис похож на прологовский, так что основную идею поймать можно.
Барабанная дробь функциональщины здесь не прокатывает, поскольку в оной
функциональщине бэктрэкинг отсутствует. А вот расширение синтаксиса -
позволяет добавить как функциональщину, так и логику и вообще много чего.
Пример реальный, хотя сейчас я бы его мог переписать ещё раза в два компактнее -
попереопределять операторы и пр. Но и так, IMHO, тоже достаточно наглядно.

rule public resolveMethodR(ASTNode@ node, ResInfo info, KString name, Expr[] args, Type ret, Type tp, int resfl ( ... )

Reply

Re: пример kouzdra July 16 2004, 12:50:20 UTC
В функциональщие бэктрэкинг обычно (это я для осторожности, думаю, что на самом деле всегда) легко делается с помощью ленивых списков и композиции в монадном стиле.

А более или менее развитые системы типов (в чем состоит один из главных плюсов функциональщины) расширением синтаксиса к сожалению никак не моделируется.

Reply

Re: пример anonymous July 16 2004, 18:05:06 UTC
А кто сказал, во что этот код превращается ( ... )

Reply

Re: пример kouzdra July 16 2004, 18:23:51 UTC
Я о другом - конструкции с бэктркингом по-моему легко и без геммороя переписываются на Haskell с использованием монад ( ... )

Reply


_qwerty July 13 2004, 21:40:47 UTC
В свете дискуссии об инкрементных преобразованиях программ - поищи
"Incremental evaluation of computational circuits" и
"Alphonse: incremental computation as a programming abstraction".

Ищется в Гугле, лежит в ACM'овской библиотеке. Оно вообще полезно, а Роджер Хувер был одним из главных действующих лиц в Модуле-3 и NaturalBridge jvm.

Reply


_qwerty July 27 2004, 20:12:37 UTC
http://www.theregister.co.uk/2004/07/27/esmertec_acquires_oovm
Ларс Бак до Сана возился с Сэлфом, в Сане, в частности, сваял сборщик мусора поколениями со скользящим окошком для Ж2МЕ. Потом уехал к себе в Данию, сделал себе мелкую конторку, в которой продолжал возиться с виртуевыми машинами и компиляцией на лету. Из общей среды родил виртуевые машины для Сэлфа, Смолтока и Жабы. Какова именно структура общего промежуточного кода, не знаю. Из него торчат крючки и рукоятки, чтобы легче было средства разработки подцеплять. Теперь вот его Эзмертек купил.

Reply

и? _qwerty July 28 2004, 20:46:34 UTC
А какое это имеет отношение к данной теме?
Я вот из этого самого esmertec-а, и сидел сегодня на его презентации неудержимо зевая.
Вкратце - 99% маркетингового фуфла, и 1% информации. 1% о том, что это Smalltalk. Обрезанный. То, что он раньше занимался Self-ом и Java - к oovm отношения не имеет никакого, кроме его личного опыта по участию в проектах связанных с vm-ками.

Reply

Re: и? _qwerty July 29 2004, 00:01:21 UTC
Самое прямое отношение - рефлексирующее промежуточное представление, не привязанное к одному конкретному языку программирования.

Когда человек делает что-то с предметом, на обоих остается соответствующий отпечаток, обычно характерный. А Ларса Бака лично я знаю по его коду в сборщике мусора. Код хорощий и совсем не глупый.

А презентации действительно пофиг.

Reply

Re: и? _qwerty July 29 2004, 00:43:24 UTC
Код там напрямую привязан к Smalltalk-у, и ни к чему больше. В основном они сделали ( ... )

Reply


С понедельника начинаю новую жизнь anonymous July 29 2004, 19:21:59 UTC
Две недели отпуска сказались, и я выкидываю предыдущую попытку создать такую среду. Второй раз выкидываю... За время отпуска по новому оформилось видение как эту среду делать. Вот где-то так ( ... )

Reply

Re: С понедельника начинаю новую жизнь _qwerty July 29 2004, 19:59:59 UTC
Вообще-то просто нарисована структура деревяхи, причем нельзя сказать, что минимальная. Типы узлов названы функциями.

Предложение "Всё сделано на функциях и узлах" следует, видимо, понимать так, что граф состоит из узлов, узлы типизированы. Да, обычно так оно и есть :)

Что означает принадлежность к типу, почему-то не уточняется.

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

Уже видны какие-то непонятные амперсанды и звездочки, смысл которых не объясняется. Подозреваю худшее :)

А каковы были две предыдущие попытки?

Reply

Re: С понедельника начинаю новую жизнь anonymous July 29 2004, 21:47:13 UTC
Типы узлов названы функциями, потому как функциями они (в каком-то смысле) и есть. То есть вот как тот пример вверху со switch-ами - отдельная функция будет switch_int, отдельная switch_enum, и отдельная switch_string ( ... )

Reply

Re: С понедельника начинаю новую жизнь _qwerty July 30 2004, 01:37:44 UTC
Может, не надо все переименовывать? А то американская демократия получится ( ... )

Reply


Leave a comment

Up