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

Блог

Тысячекратная компактность кода ][

В первом посте на эту тему (конец 2010-го), напомню, рассказывалось, как Алан Кей сотоварищи разрабатывают методологию проектирования STEPS, позволяющую уместить систему объемом десятки миллионов строк кода (если судить по имеющимся аналогам, созданным в императивном стиле) в 20 тысяч строк кода.
Что нового сделано за 2011-й год? Об этом говорится в очередном отчете VPRI, который, кстати, выполнен в PDF-формате целиком в этой суперкомпактной системе.

[spoiler]Основной объем работы пришелся на "допиливание" тестовой версии Frank до более дружелюбной. Frank -- это когда "в 20 тысячах строк кода реализовано все, что надо типичному пользователю современного ПК, включая, конечно, и операционное окружение. В крохотном объеме Frank уместятся и низкоуровневые-кроссплатформные интерфейсы с железом, и прикладные пакеты уровня MS Office. Хотя главной задачей коллектива Кея назван поиск подходов, с помощью которых можно реализовать такую анти-масштабную задачу, но и сам Frank, конечно, станет ценной вещью -- свободной и открытой, не требующей инсталляции ОС, содержащей в себе все и работающей на множестве платформ. Создается он под девизом "математика рулит!" (Math Wins!)".

Так, поддержка типовой для Frank-а 2.5D-графики уместилась в 457 строк кода.

Реализация TCP/IP в классических системах занимает 20 тыс строк кода на Си, а самые лучшие реализации все равно состоят из тысяч операторов. В Frank на TCP/IP ушло всего 160 строк кода!

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

Работы выполняются на деньги частных инвесторов через Национальный научный фонд США по теме "наука проектирования", участвуют в работах и математики, задача которых -- формализовать понятие идеального дизайна сложной программной системы. В дополнение к термину DSL Кей также использует POL (problem oriented language), который представляет собой "исполняемую математику".

STEPS -- это моделирование "персонального компьютинга" от пользователя вниз до железа, и создатели отмечают, что далеко не все сильные идеи проектирования удалось воплотить на практике, так что коэффициент 1:1000, вероятно, можно еще заметно улучшить.
Сергей Бобровский
Только для TCP/IP, конечно, это ведь DSL/проблемно-ориентированный язык.
Игорь
Тогда я не понимаю сути такого супер-узко-специализированного "языка".
Это уже и не язык получается вовсе, а набор символов, к которому должен прилагаться толстенный толковый словарь. Сам словарь, насколько я понимаю, в эти 160 строк кода уже не входит. Outsourcing и сюда проник?
Сергей Бобровский
Есть специализированный язык 1C, который подходит для автоматизации бухгалтерии, а тут сделали для автоматизации конкретной сетевой технологии. Пара сотен строк -- вся логика работы по идее ясна и прозрачна, в таком объеме сложно запутаться.
Возможно, есть готовый тип данных "пакет", высокий уровень абстракции.