Обсуждение
Читать и комментировать в ЖЖ ↗
Когда я указал на проект, аналогичный вашему в математике, одному моему студенту (в этом проекте разработали офисную систему в 20тыс. строк), то студент подумал, что это опечатка. Ибо такие системы сейчас занимают 20млн. строк. Но нет, это не опечатка. Там идея была проста: за свою жизнь человек не сможет до конца понять 20млн. строк простого текста -- ибо он их просто не успеет прочесть, помрёт раньше от старости. Но 20тыс. строк сверхсложного текста он прочесть успеет -- это всего один томик. И они сделали множество языков, которые написаны друг на друге. И получили сокращение объема своих кодов в тысячу раз.
Звучит совершенно потрясающе! А что за проект, он общедоступный?
Комментарий
Да, общедоступный -- http://vpri.org/html/writings.php (и смотрите там отчёты по проекту STEPS -- http://www.vpri.org/pdf/tr2011004_steps11.pdf, http://www.vpri.org/pdf/tr2010004_steps10.pdf, http://www.vpri.org/pdf/tr2009016_steps09.pdf, http://www.vpri.org/pdf/tr2008004_steps08.pdf да и всякие другие материалы), софт берут тут: http://www.vpri.org/vp_wiki/index.php/Main_Page, видео докладов Алана Кея -- http://vpri.org/html/words_links/links_ifnct.htm, список рассылки http://vpri.org/mailman/listinfo/fonc
Комментарий
В детстве мир для человека полон чёрных ящиков. Человек воспринимает это как "у всего есть душа". Поэтому, когда юноша ставит пластинку на проигрыватель, чтобы послушать альбом, то он слушает не музыку, а слушает голос чёрного ящика, каковым является для него мир искусства.
С годами приходит понимание, что мир слишком велик, чтобы возможно было освоить все его чёрные ящики. И что не всякий чёрный ящик возможно использовать в своих целях. Таким образом весь мир искусства сводится для человека к кнопкам play-stop, а пластинка - это просто очередная маска, которая либо очаровывает слушателя, либо нет.
Компьютеры в их современном виде открыли для людей возможность создавать как маски любой сложности, так и чёрные ящики любой сложности. Сейчас человечество ещё только играется с этой штукой, но спустя пару поколений изменится подход к образовательному процессу, и люди начнут делать чёрные ящики, настраиваемые под таланты конкретного пользователя.
Уже сейчас, начав осваивать дизайн, всего через пять лет, пользователь приходит к тому, что возможностей пакета от Adobe ему как дизайнеру не хватает. А написать самому инструментарий подобной сложности, только с новыми функциями, ему не под силу. Но сам пакет ещё не прошёл в своём развитии достаточно поколений, чтобы изменилось видение продукта его разработчиками. Поскольку ни одна программа не развивается сама по себе, развитие происходит всего программного обеспечения в целом.
Например, чтобы появился iPhone, должны были сперва появиться КПК и iPod, а до них должны были появиться Macintosh и ноутбуки, а до них - персональные компьютеры, графические дисплеи и компьютерные мыши.
Я ещё помню те времена, когда я спрашивал себя, как должен выглядеть графический интерфейс к моей программе. И так ничего и не смог придумать. Но вдруг привезли программу-конкурент, и у неё был классический графический интерфейс.
"Как просто," - подумал я тогда, но сам бы я вряд ли бы смог придумать что-то подобное.
Ведь вся идея состояла в том, чтобы сделать Нортон Коммандер, но в графике. А я как пользователь до сих пор мыслил шаблонами - нажмите кнопку A, нажмите кнопку Б. И всё потому, что у компьютеров ДВК-2 не было мыши.
Комментарий
А зачем отчеты? Нужны только код и бинарник. А где они?
Комментарий
Если почитать доклады, то становится ясно, как в STEPS получено 1000х сокращение кода:
2х-4х - все эти хитрые языки с кодогенерацией,
250х-500х - сокращение функциональности.
Комментарий
Код и бинарник особого значения не имеют, это явно прописано и объяснено в отчётах. Там фишка в том, что рождались какие-то не слишком зависимые от выражения в коде идеи, а затем воплощались в разных языках и вариантах кода. Демонстрация общей работы (сама офисная система) была собрана потом из каких-то вариантов, но её ценность сама по себе была невелика.
Но ссылку на то, откуда брать код всех разных компонент я ведь привёл, разве нет? Там ещё особенность, что разные люди свои куски кода развивали у себя, центрального репозитория не было сделано (это система систем была, а не централизованная разработка под одну общую идею).
Комментарий
:) хаха
Тем не менее идеи интересные и ценные.
Комментарий
Не, я не понял. Конкретно где скачать код? Структура ссылки на софт мне непонятна. Что там код офисной системы?
"Ценность была невелика" - значит ценность этих 20 тысяч строк невелика.
Комментарий
Мне из тех же докладов показалось, что не "сокращение функциональности", а "вынос за скобки функциональности" (т.е. поднят коэффициент реюза кусков кода за счёт бОльшей степени абстрактности).
Комментарий
Ах вот оно што. Значит по факту они могут из 20млн строк сделать 5-10 млн. Ну это ерунда, достаточно на какой-нить хаскель пересесть.
Комментарий
Ну да, по той ссылке код для демонстрации основных идей (часто в более свежих вариантах, чем использовались для демонстрационной сборки -- время-то идёт).
Ценность самой сборки была невелика, да. Сама офисная система напрочь никому ведь не нужна была. Это просто был один из тестов -- соберут или нет. Собрали, порадовались один вечер. И только. А вот OMeta парсер потом разные люди повторили на пяти-шести языках. Вот это и есть результат проекта. По поводу языка Nile до сих пор идут споры: хорош он получился или плох. Вот это и есть результат проекта. И так далее.
Комментарий
Ну то есть, студент в общем правильно подумал. :)
Комментарий
Вопрос не праздный. "Вынос за скобки функциональности" в реальной системе очень часто оборачивается дикими костылями, когда вдруг надо реализовать что-нибудь более-менее интересное.
Т.е. все эти слои на деле оказываются дико связанными. "Протечка абстракции" вообще очень частая вещь. Вот если сходить на какую-нибудь Java-конференцию, добрая треть докладов будет про кишки JVM и какая боль происходит, если забыть о том, что там лежит на уровне байт-кода или даже еще ниже, на уровне железа.
Если же делать еще более высокоуровневые вещи, то любая нестандартная задача потребует вернуться на уровень ниже и еще ниже. Уж лучше тогда просто работать в рамках языка общего назначения и не рыпаться.
Комментарий
Да-да. В проекте именно это и обсуждается: что костыли начинаются прям с уровня виртуальной машины. Там вообще всё начиналось с понятия "виртуальной виртуальной машины", VVM.
Комментарий
всю сказку порушили. "А я так ждал, надеялся, и верил!".
Комментарий
Что ж все ведутся так на коммент одного читателя отчётов? Я вот по-другому эти же отчёты прочёл, но на мой коммент об этом никто не реагирует )))
Комментарий
Нет, хаскель не обеспечивает должного реюза функциональности. Это обеспечивается другими языками, устроенными на других принципах и поддерживающих другие стили программирования.
То есть я прочёл эти же отчёты и сделал совершенно другие выводы.
Комментарий
это тот самый добрый троллинг стеб, за который девочки так любят мальчиков, согласно, ЕМНИП, канадцам (2013?).
Я таки надеюсь, что там больше, чем "это чалма без сковородки выкидывания функционала не работает" "а, ну этого и перейдя на Хаскель можно достичь", но очень боюсь обмануться - разбитое сердце, обманутые надежды, плач в подушку ночи напролет.
Пока нет сил осилить отчет, если честно. Подождем.
(Оффтоп: А вот про робототехнику очень понравилась идея/ проработка. Подписался на комменты, а там - тишина).
Комментарий
Дайте пжлст ссылку на ОДИН документ с тем описанием того способа реюза функциональности, которого никто не обеспечивает.
Комментарий
Так этих способов много, они с абсолютно разным уровнем детальности прописаны в разных документах. "Серебряной пули", сокращающей код в 200 раз нету, это ж очевидно!