LINUX.ORG.RU

Сказ о том, как Игнат-молодец Common Lisp в Ынтерпрайз пихал.


3

6

Наверняка многие читатели интересуются, какова подоплёка моих последних тем о возможности применения Common Lisp в промышленном программировании. Чувствую что обязан рассказать всю историю целиком, как минимум для тех, кто помогал мне ответами. Пользуясь случаем, хочу также всех поблагодарить.

***

Предистория. Некоторое время назад работодатель (крупный производственный концерн) обнаружил пробел в IT-инфраструктуре. Было принято решение в пользу in-house разработки, потому что на рынке подобного готового продукта просто нет, а штат разработчиков у нас довольно большой и квалифицированный. Но разработка исторически ведётся на традиционных, статичных, «слабых» языках, в основном Java и C++.

Но надо отдать должное, к новым перспективным технологиям относятся открыто и с энтузиазмом. Поэтому я предложил рассмотреть в качестве технологии Common Lisp, а мне предложили сделать доклад с обоснованием перед Техническим Комитетом.

***

Вот тут собственно и начинается история. Некоторое время я собирал информацию и готовил доклад, спасибо всем на ЛОРе кто отвечал на мои вопросы о лиспе. Итак, были рассмотрены следующие существенные для промышленного ПО аспекты.

1. Persistence. Общепринятый в современном ПО подход, позволяющий автоматически отображать программные сущности и отношения между ними на таблицы и связи в СУБД. Для Common Lisp индустриальным стандартом де-факто является AllegroCache, хотя это и не «стандарт» в общепринятом смысле, как JPA например. Прозвучал закономерный вопрос «почему надо тратить несколько тысяч $$$ на Allegro, если Hibernate даёт всё то же самое, к тому же оно бесплатно и открыто?» Нет, для холдинга несколько тысяч $$$ - это в общем копейки. Но финансово успешной организацию делает в том числе умение считать каждую копеечку, и тратить деньги обоснованно.

2. Интеграция. Предполагается, что продукт будет состоять из нескольких распределённых модулей, коммуницирующих друг с другом. А также надо будет обращаться к внешней системе через CORBA. Если с коммуникацией CL-CL всё более менее понятно (AMQP, веб-сервисы) то с CORBA оказалось не всё так гладко. Так, стабильного CORBA 3.0 ORB для Common Lisp просто нету. В некотором приближении может устроить ORB, входящий в состав LispWorks. Это ещё несколько тысяч $$$, см. выше насчёт обоснования. Опять-таки, для Java и C++ имеются открытые, бесплатные и стабильные CORBA 3.0 ORBs. Ну и сами лисперы однозначно соглашаются в том, что «Common Lisp и CORBA не предназначены друг для друга», так что тут однозначный неуд.

3. Моделирование. Индустриальный стандарт для моделирования, UML, оказался слабо применим по причине сильных расхождений в семантике между UML/ООП и CLOS. Своих методик моделирования для CL нет. При этом распространено абсурдное мнение, что лучшая модель и документация - это сам код. Боюсь, что происходит оно от незнания UML и непонимания, что подавляющее большинство аспектов, охватываемых UML, в принципе невыразимо ни в каком в тексте. Вообще, наверняка UML можно использовать в некотором приближении, задействуя стереотипы и т.п. Но такой практики просто нет, а в индустрии практика - это всё. Позволить себе наступать на неизвестные грабли можно только в исключительных случаях.

4. Методология. Чётко очерченной методологии разработки для CL как-то тоже не наблюдается. Стандартной IDE у нас считается Eclipse, а для CL стандартом де факто является Emacs+SLIME, что повлечёт переучивание большого числа сотрудников. CUSP для Eclipse оказался довольно сырым поделием, чтобы его реально использовать, придётся инвестировать в его допиливание. Что касается, паттернов проектирования, в принципе многие из них применимы и к Common Lisp. Но практики такой опять же нету. Следовательно, нету опыта и информации.

После этого был задан закономерный вопрос: а каковы, собственно, преимущества CL, ради которых можно было бы стерпеть всё вышеперечисленное?

1. DSL. Довод о простоте создания DSL был сразу воспринят скептически. Оказывается, у нас в организации уже давно используется Scala, на которой написание DSL (причём не ограниченных синтаксисом S-выражений, как в Лисп) гораздо проще и гибче.

2. Code-as-data, кодогенерация и метапрограммирование. При всех преимуществах такого подхода, сильно страдает понимаемость кода и, как следствие, общая поддерживаемость системы. Одно дело, когда код пишет энтузиаст-одиночка. Но ситуацию, когда шестиуровневые навороты кода понятны только автору, индустрия допустить не может. К тому же, современная Java обладает довольно развитыми средствами метапрограммирования, такими как StringTemplate или просто генерация кода на поддерживаемом JVM динамическом языке и тут же исполнение его. А принцип «code as data» вообще рассматривается как нарушение основополагающего в проектировании принципа separation of concerns.

3. Динамический язык и инкрементальная разработка. Динамика языка, при понимании преимуществ, тоже рассматривается скорее как негативное свойство. В промышленном программировании от системы в первую очередь требуется устойчивое поведение. Ситуация, когда поведение может измениться непредсказуемым образом в рантайме - недопустима. Грубо говоря из Common Lisp можно, как из пластилина, слепить что угодно. Но если слепить кувалду, то это будет пластилиновая кувалда, с закономерным выводом о её применимости. Кувалда должна быть всё-таки из металла. Теперь что касается инкрементальной разработки. Она безусловно является сильной стороной, но имеет кое-какие негативные последствия для эффективной командной работы с системами VCS. К тому же, современные Java IDE тоже это умеют: например, в отладчике на живой системе изменить код, тут же перекомпилировать и подгрузить обновлённый класс и продолжить отладку с предыдущего фрейма.

4. Производительность труда разработчика. Это то, что всегда относят к главным достоинствам Common Lisp, но я не нашёл возможностей объективно это доказать. Такие вещи может показать только практика. Если опираться чисто на объём кода, то он будет примерно эквивалентным для примерно эквивалентных проектов на CL и той же Java. На Java ещё и возможен выйгрыш за счёт богатой runtime library и отсутствия необходимости изобретать велосипеды. Так, например, QPX (ядро продукта ITA Software) занимает 500 тысяч строк на Common Lisp.

***

Думаю сами догадаетесь какие выводы сделал Технический комитет относительно будующего языка разработки. А лично я для себя сделал такой вывод. Common Lisp в промышленной разработке можно использовать только для программирования сложных алгоритмов, когда может «выстрелить» динамизм и макросистема. Использовать можно двумя способами: внедрять при помощи ECL в программы на С/С++, или запускать standalone SBCL образ и вызывать его через AMQP или веб-сервисы. На самостоятельное плаванье CL неспособен. Лисп - это юркий и быстрый катер, но в неспокойных водах «энтерпрайза» его плаванье будет недолгим. Там нужны тяжеловесные, хоть и неповоротливые, атомные ледоколы типа Java и C++.



Последнее исправление: Ignatik (всего исправлений: 1)
Ответ на: комментарий от Zubok

> Под системой имелся в виду Common Lisp, а не ваша система, которую надо проектировать. Так есть опыт разработки на Common Lisp?

Есть, а почему вы спрашиваете? И ответьте сперва пожалуйста на мой вопрос: считаете ли вы, что исход был бы другим, если доклад делал бы более опытный специалист?

Ignatik
() автор топика
Ответ на: комментарий от vertexua

> omg. man drools

Вы в курсе, что правила для Drools (точнее, уже JBoss Rules) можно писать на Groovy? Мы так и собираемся использовать, если что

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

> «Двойная диспетчеризация» и её реализация в виде Visitor'а - любимый довод лисперов, но учитывая насколько редко это требуеться в реальном мире, он не такой уж весомый.

Большинство людей которые доказывают его редкотребуемость почему то рождают код с if-ами и case-ами в итоге. Плюют, так сказать, на гибкость правильного ООП в угоду процедурщине. Другой вопрос что по-моему (я не явокодер) что если все делать правильно это сломает структуру java-програмы

antares0 ★★★★
()
Ответ на: комментарий от Ignatik

Давно из криокамеры? про ORM слышали вообще? Посмотрю я на вас, как вы будете руками писать SQL INSERT/UPDATE/DELETE/SELECT для сотни таблиц, как будете кешировать и лениво подгружать результаты, как будете вносить патчить код в куче мест когда добавиться/измениться колонка в таблице.

Ну вот у нас «человек, похожий на прокурора» как часть своей лисповой поделки написал объектную систему с возможностью хранения данных объектов в оффлайновом кэше, потому что у заказчика столько данных, что они ни в какую память не влезут, а сборщик мусора и своп - два известных врага. Написал через метаобъектный протокол, и часть, отвечающая за подгрузку и выгрузку данных занимает сущие копейки. Аллегрокэш и вообще бум гибернейтов, кстати, попозже случились.

Но это не Ъ-ынтерпрайз вэй, нужно обязательно использовать готовое решение. Только нихрена не понятно, на кой хрен сотня девелоперов нужна.

mv ★★★★★
()

OMG. Какой бред. Я восхищён.

ei-grad ★★★★★
()
Ответ на: комментарий от antares0

> Большинство людей которые доказывают его редкотребуемость почему то рождают код с if-ами и case-ами в итоге. Плюют, так сказать, на гибкость правильного ООП в угоду процедурщине.

Возможно, вы просто общаетесь с быдлокодерами? Да, 95% не понимают принципов и преимуществ ООП. Но это не делает двойную диспетчеризацию более часто встречающейся и необходимой.

Другой вопрос что по-моему (я не явокодер) что если все делать правильно это сломает структуру java-програмы


Не сломает.

я не явокодер


Вот то-то.

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

Делать выводы о сложности и серьёзности проекта, не посмотрев на ТЗ, это отличительная черта лиспера-профессионала? :)

Мы тут делаем выводы на основе данных, представленных в топике. Если автор топика выкатывает на публику какие-то выводы, то участники дискуссии вправе проехаться по его аргументации.

«Человек, похожий на прокурора», ага :)

Я давно заметил, что люди, запачкавшиеся йавой, потеряли веру в человеческий разум. Мол, хэлловорлд без двух десятков дармоедов невозможно решить.

mv ★★★★★
()
Ответ на: комментарий от Ignatik

Теоритически редкой. На практике просто по-моему забивают на гибкость развития и забивают второй аргумент диспечеризации на фикированое количесво текущих аргументов. А позже рефакторят. Впрочем тема бессодержательна и пожалуй устранюсь.

antares0 ★★★★
()
Ответ на: комментарий от mv

> люди, запачкавшиеся йавой, потеряли веру в человеческий разум. Мол, хэлловорлд без двух десятков дармоедов невозможно решить.

Напомнило:

По радио снова транслируют то, что унижает человеческий ум,
Этот низкий потолок страшнее чумы и проказы.

anonymous
()
Ответ на: комментарий от Ignatik

я Вам соболезную в связи с бесполезной тратой своего времени на протяжении двух месяцев, а вашему руководству в связи со спущенной в никуда стоимостью двухмесячного исследования.

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

kvitaliy
()
Ответ на: комментарий от mv

> написал объектную систему с возможностью хранения данных объектов в оффлайновом кэше

Аллегрокэш и вообще бум гибернейтов, кстати, попозже случились.


Вы тёплое с мягким не путайте, ваш человек навелосипедил примитивный объектный кэш. А Hibernate - это объектный кэш, механизм ленивой подгрузки, механизм отображения и конвертации данных, свой язык запросов, транслятор этого языка в SQL и много другого. Если уж не знакомы с Hibernate, то лучше не приплетайте его вообще.

Но это не Ъ-ынтерпрайз вэй, нужно обязательно использовать готовое решение. Только нихрена не понятно, на кой хрен сотня девелоперов нужна.


Уж явно не для того, чтобы изобретать велосипеды.

Ignatik
() автор топика
Ответ на: комментарий от mv

> «Человек, похожий на прокурора», ага :)

Я имел в виду фразу «систему, похожую на вашу». Какие можно делать выводы о схожести на основе пяти строчек? А если бы было написано просто «информационная система», то вы тоже стали бы говорить, что ваш шеф разработал «похожую» в одиночку?

Я давно заметил, что люди, запачкавшиеся йавой, потеряли веру в человеческий разум. Мол, хэлловорлд без двух десятков дармоедов невозможно решить.


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

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

Вы тёплое с мягким не путайте, ваш человек навелосипедил примитивный объектный кэш. А Hibernate - это объектный кэш, механизм ленивой подгрузки, механизм отображения и конвертации данных, свой язык запросов, транслятор этого языка в SQL и много другого. Если уж не знакомы с Hibernate, то лучше не приплетайте его вообще.

У человека навелосипедено всё описанное. В том числе, миграция с одного дата-бакэнда на другой.

mv ★★★★★
()
Ответ на: комментарий от kvitaliy

> я Вам соболезную в связи с бесполезной тратой своего времени на протяжении двух месяцев, а вашему руководству в связи со спущенной в никуда стоимостью двухмесячного исследования.

Результат исследования - решение о самостоятельном написании системы. Что не так? Каким образом можно было вынести это решение, не проводя исследования рынка?

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


Может, пора перестать говорить загадками? Вы не верите в произошедшее у нас в конторе? Ваше право... Или может не хотите верить, потому что произошедшее идёт вразрез с вашим мировоззрением? Тоже ваше право, но в этом случае надо задуматься уже вам...

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

> Давно из криокамеры? про ORM слышали вообще?

Странно, и вы тут про ентепрайз что-то расказываете? ORM это для веб-сайтов на коленке и прочей туфте, где не бизнес-логики особой нет, ни нагрузки особой, ни объёма данных нет.

archimag ★★★
()
Ответ на: комментарий от mv

> У человека навелосипедено всё описанное. В том числе, миграция с одного дата-бакэнда на другой.

А только что вы утверждали обратное. Кстати, можно где-нибудь полюбоваться кодом?

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

У человека навелосипедено всё описанное. В том числе, миграция с одного дата-бакэнда на другой.

А только что вы утверждали обратное.

Я? Где?

Кстати, можно где-нибудь полюбоваться кодом?

Нет.

mv ★★★★★
()
Ответ на: комментарий от archimag

> ORM это для веб-сайтов на коленке и прочей туфте, где не бизнес-логики особой нет, ни нагрузки особой, ни объёма данных нет.

Так, и вы тоже не знаете ни хрена про ORM-прослойки и не слышали об их применении в крупных информационных системах? Намекаю, ваше незнание не означает, что они там не применяются.

Ignatik
() автор топика
Ответ на: комментарий от AnDoR

>> не имели бы импортного велосипеда

Это ты классно сморозил.


Ну, а что не нравится? mv - заядлый велосипедист, я выбрал тему, которая будет ему ближе всего :)

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

>... Вы не верите в произошедшее у нас в конторе? Ваше право...

Тут большинство вообще сомневается в существовании подобной конторы.

Нежелание же, назвать фирму, занимающуюся промпроизводством, какбе намекает на страх, что люди работающие в этой отрасли выведут тролля на чистую воду.

anonymous
()
Ответ на: комментарий от mv

> Нет.

Понятно, вопросов больше не имею. Очередной медный чайник на орбите Марса, привет от Бертрана Рассела.

Ignatik
() автор топика
Ответ на: комментарий от anonymous

> Нежелание же, назвать фирму, занимающуюся промпроизводством...

...продиктовано подписанным NDA. Раскрытие стратегических планов Концерна чревато не только увольнением, но и судебным разбирательством. Скажите, с какой стати я должен рисковать хорошей должностью ради потакания местным троллям?

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

Понятно, вопросов больше не имею. Очередной медный чайник на орбите Марса, привет от Бертрана Рассела.

Давай баш на баш: я выкатываю сорцы того фреймворка, а ты - сорцы вашей конторы? :)

mv ★★★★★
()
Ответ на: комментарий от Ignatik

Нежелание же, назвать фирму, занимающуюся промпроизводством...

...продиктовано подписанным NDA. Раскрытие стратегических планов Концерна чревато не только увольнением, но и судебным разбирательством. Скажите, с какой стати я должен рисковать хорошей должностью ради потакания местным троллям?

Запрещено называть контору, где работаешь? Ты врёшь.

mv ★★★★★
()
Ответ на: комментарий от mv

> сорцы вашей конторы?

Простите, что? Какие именно?

Запрещено называть контору, где работаешь? Ты врёшь.


Читайте внимательно. Запрещено раскрывать стретегические планы. Наверное, вы просто не работали в крупных фирмах, признайтесь?

Ignatik
() автор топика
Ответ на: комментарий от Ignatik

Простите, что? Какие именно?

Ну вот ты хочешь, чтобы я выкатил чужие неопубликованные сорцы и тем самым вселил в тебя веру во всемогущество человека в сочетании с CL (гибернейт на MOP и школьник напишет). У меня тоже NDA подписано, поэтому я хочу такого же ответного шага с твоей стороны. Ты столько много говоришь про крутую мегасистему, разработанную в вашей конторе, что мы все горим желанием посмотреть на её исходники

Читайте внимательно. Запрещено раскрывать стретегические планы. Наверное, вы просто не работали в крупных фирмах, признайтесь?

Прошлая контора была 3000+ человек, ориентированность чисто софтовая. Достаточно крупная?

mv ★★★★★
()
Ответ на: комментарий от Ignatik

Запрещено раскрывать стретегические планы.

Если глупость и невежество - весь ваш стратегический план, тогда ой.

mv ★★★★★
()
Ответ на: комментарий от Ignatik

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

Я, вообще, не в теме, но мне кажетЬся, что мсье - источник знаний, из которого получилась теория вероятностей, т.к. берётся судить о весьма сложных в смысле предсказуемости последствиях событий, которые и без того - никак не связаны с наличием или отсутствием «в эфире» «подобных хелловорлдов».

dnoskov
()
Ответ на: комментарий от anonymous

> Ты только что заметил? о_О

Ну да разумееться, я всё выдумал, на самом деле CORBA 3.0 ORB для CL валяються на каждом шагу, а в Ынтерпрайзе везде сплошь аппликативные функторы и хистоморфные препроморфизмы. Самому-то не смешно?

Ignatik
() автор топика
Ответ на: комментарий от mv

> гибернейт на MOP и школьник напишет

Пруфов, как обычно, не будет?

У меня тоже NDA подписано, поэтому я хочу такого же ответного шага с твоей стороны.


Давайте, может, не будем нарушать данные обязательства? Я не вижу смысла в неоправданных рисках.

Прошлая контора была 3000+ человек, ориентированность чисто софтовая. Достаточно крупная?


Достаточно. Тем более странно, что вы задаёте такие нелепые вопросы.

Если глупость и невежество - весь ваш стратегический план, тогда ой.


Если подмена понятий - ваша стратегия дискуссии, тогда ой :) Не соизволите ли пояснить, в чём заключаются «глупость и невежество»?

Ignatik
() автор топика

«Крупный производственный концерн», Зеленоград - должно быть, «Ситроникс» или другая контора, лежащая под «Системой».

mv ★★★★★
()
Ответ на: комментарий от Ignatik

Ну это вообще цирк. Вы что ожидали, что вашему тексту поверят? для этого его писали? Люди из вашего окружения с недоверием относятся к вашим словам?

И с какой стати я или кто-то другой должен ваши слова в описании ситуации однозначно связывать с событиями в какой-то организации? Вы беспристрастным свидетелем подрабатываете что ли?

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

Теперь, что касается вашего последнего абзаца:

Думаю сами догадаетесь какие выводы сделал Технический комитет относительно будующего языка разработки. А лично я для себя сделал такой вывод. Common Lisp в промышленной разработке можно использовать только для программирования сложных алгоритмов, когда может «выстрелить» динамизм и макросистема. Использовать можно двумя способами: внедрять при помощи ECL в программы на С/С++, или запускать standalone SBCL образ и вызывать его через AMQP или веб-сервисы. На самостоятельное плаванье CL неспособен. Лисп - это юркий и быстрый катер, но в неспокойных водах «энтерпрайза» его плаванье будет недолгим. Там нужны тяжеловесные, хоть и неповоротливые, атомные ледоколы типа Java и C++.

Вы сделали вывод, что вы можете использовать CL в пром. целях только для программирования сложных алгоритмов - бог с вами, значит таковы ваши возможности/знания. Вы сделали вывод, что для вас способы использования могут быть - внедрение при помощи ECL в С/С++ или путём запуска SBCL-образа и т.д. - да сколько угодно, раз ваши исследования об этом свидетельствуют, значит у вас только эти способы есть в наличии. Что вы имеете в виду под самостоятельным плаванием языка программирования мне не ясно (лично, когда у меня на техническом совещании кто-то начинает говорить метафорами, я его прерываю и прошу начинать рассказ с самого начала забыв все сказки и метафоры - как ни странно, но доходит с первого раза всем - техическая информация должна излагаться техническим языком). Не можете использовать только CL - это ваше ограничение, а не ограничение CL. Про катер и неспокойные воды - ни о чем. Последнее предложение тоже из страны метафор (каждый придумывает для него подходящий смысл на основании своего личного опыта).

Пару лет назад я наблюдал как в одной софтверной компании, пишушей клиент-серверного монстра, взялись за автоматизацию тестирования - в силу специфики использования клиентскойчасти приложения оптимальным вариантом было бы использовать COM, но в силу того, что всЕ в той компании были помешаны на JAVA, то решили писать платформу(!) для автотестирования именно на ней. Предварительно, как и, похоже в вашем случае, провели исследование и оказалось, что JAVA и здесь самая-самая-самая подходящая по всем-всем-всем критериям. Платформу написали, точно не знаю какие у них получились затраты, но, по информации от одного из участников, интервал между отмашкой «сделать» и сообщением «шеф, мы можем провести демонстрацию» прошло более года. Недавно я узнал продолжение истории - вместе с поставляемым клиенту решением, эта софтверная компания решила продать ему и автотесты со своей платформой для автотестирования - клиент повел носом и через 3 (три!) месяца закомитил в svn свои функциональные автотесты написанные на F# (если мне не изменяет память). Хочу особо подчеркнуть - через три месяца появились автотесты (или автоскрипты, кому как угодно), а не всего лишь инструмент для автоматизации. Как так получилось? - да все просто, под задачу подобрали инструмент, забив на всю шелуху типа интерпрайзность. Можно, конечно, возразить, что это слишком частный пример, но знаю несколько крупных организаций в энергетической и телекоммуникационной сферах, в которых IT-инфраструктуры представляют из себя зоопарк интегрированных между собой систем, написанных с помощью разных языков и идеально при этом работающих. Причина здесь проста и примитивна, дело не в языках, а в специалистах, которые ними пользуются.

kvitaliy
()
Ответ на: комментарий от Ignatik

гибернейт на MOP и школьник напишет

Пруфов, как обычно, не будет?

Спроси любого лиспера, на сколько геморройно перехватывать акцессоры с помощью MOP, если мне не веришь.

Достаточно. Тем более странно, что вы задаёте такие нелепые вопросы.

Вам указывают, что степень пафоса не соответствует реальности.

В большой конторе, кстати, скучно и болото.

mv ★★★★★
()
Ответ на: комментарий от Ignatik

Запрещено раскрывать стретегические планы.

А Вы что, обозначили какие-то «стратегические планы»? По-моему речь шла о выборе или не выборе CL для решения Ваших мегазадач. Нет? Нешто будет считаться «раглашением стратегического плана», если Вы (с учётом всего написанного Вами ранее в этой теме) сообщите название компании, в которой работаете? Какой тайный «стратегический план» задумала Ваша контора.... Написать информационную систему под JVM. Всёёё, осталось только узнать название конторы и можно будет сдавать её с потрохами.

dnoskov
()
Ответ на: комментарий от mv

> В SBCL, теоретически, можно извратиться и другой GC прицепить наживую.

Вот от такого волосы встают дыбом.

vladimir-vg ★★
()
Ответ на: комментарий от mv

Ты столько много говоришь про крутую мегасистему, разработанную в вашей конторе

Где Вы это нашли? Я - не видел.

dnoskov
()
Ответ на: комментарий от dnoskov

Где Вы это нашли? Я - не видел.

Если не в этом топике, то в предыдущих.

mv ★★★★★
()
Ответ на: комментарий от kvitaliy

клиент повел носом и через 3 (три!) месяца закомитил в svn свои функциональные автотесты написанные на F# (если мне не изменяет память). Хочу особо подчеркнуть - через три месяца появились автотесты (или автоскрипты, кому как угодно), а не всего лишь инструмент для автоматизации.

батенька, у Вас делается неявный вывод о сравнимости решений, но так не бывает, если конечно в первой конторе сидят не слакеры, но это уже недопустимое предположение

shty ★★★★★
()
Ответ на: комментарий от mv

В большой конторе, кстати, скучно и болото.

это зависит, в Гугле, например, совсем не так, а вот в IBM ещё как :)

shty ★★★★★
()

> новым перспективным технологиям

Common Lisp

доставило.

anonymous
()
Ответ на: комментарий от Ignatik

>Composite реализуеться в Common Lisp один-в-один, как в C++/Java.

Да, его можно реализовать «один в один» и в CL. Но зачем это делать, когда CL и так поддерживает списки (деревья)?

А вот отсюда можно по-подробнее?

Подробнее сложно, ибо много получится. Объект предметной области - объект, выраженный в терминах предметной области. Такой объект по-умолчанию будет обладать следующими свойствами:

1. Класс этого объекта создается путем анализа метаданных. Т.е. классы объектов предметной области создаются намного позднее и другими людьми, нежели разработчики системы. Поэтому, создавать их языковыми средствами невозможно.

2. Одному объекту предметной области соответствует несколько ООП-классов и ООП-объектов. Это добавляет необходимость разработки политики связывания объектов.

3. Создание объектов предметной области языковыми средствами практически бессмысленно. В большинстве своем, они будут вытаскиваться из базы данных, создаваться по запросам через различные интерфейсы, на основе каких-то внутрисистемных событий и т.п.

4. Из п.3 следует, что объект предметной области тесно связан с подсистемой хранения.

5. Поведение объекта предметной области определяется т.н. «бизнес-логикой» системы. Разумно предположить, что она будет определяться намного позднее, и не теми, кто разрабатывал систему. Поэтому, писать бизнес-логику на «родном» языке - не всегда верное и правильное решение.

В JEE для решения вышеперечисленных проблем есть EJB. Комментарии излишни. В CL часть проблем решается с помощью стандартного CLOS, часть - с помощью нестандартного MOP.

В общем, все несколько сумбурно и голословно. Но, если у вам нужно разработать систему где будет десяток мета-классов, у которых будет по нескольку десятков классов - не ищите ничего другого. Не заморачивайтесь с UML, а разработайте редактор метаданных, логику хранения и логику представления и колбасьте в вашем редакторе вашу систему на здоровье. Нужна будет вам CORBA - разработаете мост между вашей системой и не обязательно на CL. А может быть, вам CORBA ввиду ее монстрообразности вам не понадобится, а понадобится что-то другое, более легковесное.

Но есть одно «но». Нужны профессиональные лиcперы. А где их взять. Не на ЛОРе же?

Macil ★★★★★
()
Ответ на: комментарий от Macil

Ах, да. Еще забыл про описание бизнес-логики системы на подмножестве CL.

Macil ★★★★★
()
Ответ на: комментарий от shty

нет, я решения не сравниваю, все ради последнего предложения написано.

kvitaliy
()
Ответ на: комментарий от Ignatik

да.. ну это заява. Конечно же у бородатого гуру-лиспера было бы значительно больше шансов, чем у тебя (хотя и не 100%). Хотя бы потому, что рисков было бы меньше из-за того, что человек владеет инструментом. А ты же просто пока являешься лишь нубом в этом вопросе. В этом нет ничего постыдного, но такова реальность, и это тебе стоит учитывать.

anonymous
()
Ответ на: комментарий от Ignatik

>>> не имели бы импортного велосипеда

Это ты классно сморозил.

Ну, а что не нравится? mv - заядлый велосипедист, я выбрал тему, которая будет ему ближе всего :)

Мне интересно стало, что для него сейчас есть «импортный велосипед», учитывая его место жительства.

AnDoR ★★★★★
()
Ответ на: комментарий от Ignatik

>>> Кстати, можно где-нибудь полюбоваться кодом?

Нет.

Понятно, вопросов больше не имею. Очередной медный чайник на орбите Марса, привет от Бертрана Рассела.


Рядом с:

...продиктовано подписанным NDA. Раскрытие стратегических планов Концерна чревато не только увольнением, но и судебным разбирательством. Скажите, с какой стати я должен рисковать хорошей должностью ради потакания местным троллям?


Выглядит более чем смешно.

AnDoR ★★★★★
()
Ответ на: комментарий от Ignatik

NDA

NDA запрещает назвать фирму, в которой ты работаешь?

Раскрытие стратегических планов

факт наличия тебя в штате вряд ли является стратегическим планом

я проработал 3.5 года на Harman/Becker, из них больше половины времени работал на одном из топовых проектов компании для BMW; мне каждый день приходилось иметь дело с коммерческой тайной и проприетарным железом/исходниками таких компаний, как TI, Intel, nVidia и, собственно, BMW. я не имею права публиковать какие-либо исходники, связанные с этой работой, но сказать что я имел дело с туннелированием MOST в TCP, например, я могу - благо даже конкретный формат пакетов MOST является проприетарным

ты уверен, что ты правильно понимаешь условия подписанного NDA? и если да - просто интересно - что ты запишешь себе в CV по окончанию работы на эту компанию?

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.