четверг, февраля 01, 2007

Intentional Software

Все ведь знают имя Charles Simonyi? Билл Гейтс называет его "одним из величайших программистов всех времён". В его честь венгерская нотация получила название венгерской (поскольку сам Simonyi родом из Будапешта, Венгрия и это именно он привнёс тот способ именования переменных в программе, который теперь известен как венгерская нотация). Он работал во всемирно известном исследовательском центре Xerox в Palo Alto (Xerox PARC). В то время (Simonyi пришёл в PARC в 1972 году) был разработан легендарный, опередивший свое время персональный компьютер Alto, обладавший поразительными возможностями: графическим пользовательским интерфейсом, сетевым интерефейсом (Ethernet), мышью:
А также, специально для Alto, под руководством Simonyi, был разработан совершенно невиданный для того времени текстовый процессор под названием Bravo. Bravo предложил совершенно новую концепцию текстового редактора - концепцию, при которой пользователь видел на экране компьютера ровно то, что оказывалось распечатанным на принтере. Эта концепция получила название Wysiwyg - "What you see is what you get!". По сути, он изменил индустрию программного обеспечения для пользователя, введя уровень абстракции между ними и текстовым редактором.

После работы в Xerox PARC Simonyi работал в Microsoft и занимался Microsoft Office. В настоящее время он основал собственную компанию и снова хочет изменить мир.

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

Именно ради построения таких методов Simonyi ушёл из Microsoft и основал на собственные деньги компанию. Работа на самом деле началась чуть раньше, когда он ещё работал в Microsoft Research, но условия ухода из MS запрещали использование уже написанного кода а разрешали только использовать идеи, поэтому весь код пришлось переписывать заново.

Идея Simonyi состоит в том, чтобы полностью изменить мир программирования. По его представлению, в будущем программы будут писать не программисты, а эксперты в конкретной предметной области, причём пользуясь терминологией и конструкциями, принятыми не в в программировании, а в данной предметной области. Сама программ будет записываться как некоторое "дерево намерений" (intentional tree), которое в свою очередь будет транслироваться в код, например на С++. При желании изменить программу, необходимо будет изменить дерево намерений, и пересоздать код на C++.

Вообще, если честно все это жутко похоже на популярную сейчас концепцию DSL - domain specific languages, с той разницей что Simonyi утверждает что его intentional programming будет существенно шире, что бы это не значило. Сейчас компания, насколько я понимаю, не имеет ни готового продукта, ни каких-либо клиентов, а живёт только за счёт миллионов её создателя (заработанных, естественно в Microsoft).

Тем не менее по поводу всего этого была поднята довольно большая шумиха поскольку
в недавнем выпуск Technology Review была опубликована большая статья, откуда я собственно и узнал про существование Intentional Software.

Идея выглядит привлекательной, но уж больно сомнительной, с точки зрения практического её выполнения:

  • Что ни говори, а эта штука - кодогенератор, соотв. возникают стандартные для этого типа программного обеспечения вопросы:
    • как сопровождать этот код?
    • Что делать, если сгенерированый код слишком медленный или содержит ошибки?
    • Насколько абстрактным будет продукт: действительно ли эксперты предметной области смогут написать программу?
  • Что делать с пользовательским интерфейсом? Можно себе представить эксперта, разрабатывающего бизнес-процессы и структуры данных, но ведь необходим пользовательский интерфейс. Как его предполагается формулировать в рамках "намерений"?
  • Не будет ли язык формулирования "намерений" ещё более сложным чем то, с чем intentional software пытается бороться - чем традиционные языки программирования?
  • Ну и наконец: непонятно, нужен ли на самом деле ещё один уровень абстракции?
Создатель языка С++, Бьярн Страуструп, в одном из своих последних интервью сказал:

"Software developers have neutralized the astounding performance of modern computer hardware by adding layer upon layer of overelaborate [software] abstractions."

Может быть он прав?

1 комментарий:

Alexey комментирует...

Да, без сомнения интересно, это ж визивиг нового поколения, причем разрабатываемый самим 'отцом основателем'. Хоят, как Вы сами понимаете - если "система систематическая", она несет в себе большую избыточность, (вспомните какой генерит код MS word при попытке создать простую html страницу.)
Хотя, что что человек двигает совю, какую бы то нибыло идею столь устремленно - говорит о том, что он верит, что там что-то есть...
а это повод прислушаяться и присмотреться и причем именно к идеям нового поколения визивика, если такой конечно родится? может там действительно что -то есть :)
Спасибо за ссылочку. :)