НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Алан Кей про будущее программирования

Будущее программирование будет очень сильно отличаться от программирования сегодняшнего, полагает Алан Кей, автор ООП,  Smalltalk, графического интерфейса и многих других повседневных айтишных вещей.
Оно больше будет походить на создание биологических систем, формирование множества взаимодействующих друг с другом объектов в единой среде, и освоить его сможет каждый. В детском и массовом программировании будут использоваться совсем простые элементарные объекты, в  промышленном -- более сложные, однако принцип останется тем же -- программирование станет больше визуальным конструированием, нежели текстовым кодированием.

[spoiler]Алан Кей сегодня возглавляет Viewpoints Research Institute -- неприбыльную структуру, действующую с 2001 г. на деньги Национального научного фонда США и занимающуюся развитием мощных образовательных идей для детей и тематики исследования систем применительно к ПК. Хорошо известна, например, их игровая среда обучения программированию Squeak Etoys, которой пользуется множество детей по всему миру. Кей, кстати, сторонник всяческой поддержки детской самостоятельности -- малышам достаточно показать базовые принципы работы в Etoys, а потом лучше просто отойти в сторону.

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

Детская Etoys является прототипом таких будущих подходов: она написана на Smalltalk, который выполняется на виртуальной машине, сделанной на Smalltalk (которая работает на машинном коде i86, интерпретируемом микрокодом процессора). Появится в языках и поддержка логики предикатов высоких порядков, которая даст высокую выразительность и компактность кода, а сложность мета-кодирования незаметно спрячется в удобной визуально-интеллектуальной среде.

На смену системам-монстрам из миллионов строк кода ("гладко было на бумаге, а потом полезли баги") придут (да уже приходят) системы, позволяющие автоматически генерировать специализированные языки под конкретную область знаний -- с их помощью решение нужной задачи уместится в сотню строк кода. Пример -- презентованная VRI в октябре мета-языковая система Tamacola (www.vpri.org/pdf/tr2010002_tamacola.pdf), которая компилирует описания прикладных languages на языке, напоминающем Scheme, в байт-код ActionScript (флеш). Включает PEG-парсер (parsing expression grammars -- нерегулярные грамматики, гарантирующие разбор сопоставимого текста за время, линейно зависящее от длины этого текста), и макро-генератор для создания новых языков. Представляет собой динамическую самоподдерживающуюся среду, написан сам на себе с помощью собственных мета-фич.

При этом полностью уместился в десять тысяч строк кода (включая компилятор, интерпретатор, тест-кейсы и все библиотеки). Этой презентации не все поверили :) , авторам даже специальные таблички пришлось готовить по объему модулей системы.

Это реальное чудо, конечно, свободно и бесплатно. Ссылки на систему, исходники, описание и презентации можно найти тут:
http://propella.blogspot.com/2010/09/tamacola-1.html

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