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)

традиционных языках Java

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

o/

Legioner ★★★★★
()

Вообще-то CL изначально был создан для ынтерпрайза и не надо его туда пихать насильно.

buddhist ★★★★★
()

если не секрет, то сколько человек у вас будет занято над разработкой продукта?

Sosiska
()

btw Фишка Clojure не в том, что он лисп (тут как раз никаких плюсов нет, и даже можно найти минусы), а в Software Transactional Memory и совершенно другом принципе программирования многопоточных приложений. Clojure без этого - имхо, смысла особого не имеет.

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

интересно ;)
а у нас хотят наоборот с питона на джаву переходить.

//вы используйте orm для питона? какая бд? можете пару слов про инфраструктуру сказать?

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

>>1. Компоненты, работающие на производстве, снимают показания с оборудования

здесь java? C достаточно


вот уже и звездатые читать разучились...

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

nu11> звездатые
ПНХ со своими звездами

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

>> Когда мы использовали CORBA, это был omniORB.

А для чего использовали, если не секрет?

Устройствами управляли. Но для наших устройств использование CORBA было ошибкой - слишком сложно, а профита мало.

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

> То есть от того что мы вместо f(x,y) пишем x f y эта херь становтися ДСЛ?

В Руби считается именно так.

ололо.

Попробуй почитать о Scala что-нибудь, кроме цитат из Википедии.

tailgunner ★★★★★
()

Довольно прагматично описано. Неистово плюсую.

Было принято решение в пользу in-house разработки, потому что на рынке подобного готового продукта просто нет

А какже всякие IBMы с ихними Tivoli?

anonymous
()

Знаете, а может быть, это магнитная буря так действует?

dave ★★★★★
()

Все эти высеры «Архитектора» в Dev - просто некомпетентный и унылый
троллинг. Пруф:

Некоторое время назад работодатель (крупный производственный концерн)

обнаружил пробел в IT-инфраструктуре


+

1. Компоненты, работающие на производстве, снимают показания с оборудования

2. Там же, на производстве, происходит простая агрегация данных и


асинхронная, но с гарантией доставки, отправка на сервер в ДЦ


3. На сервере происходит обработка и сохранение информации в базу


4. После этого по данным формируется куча разной отчётности и аналитики


5. Попутно надо скармливать данные в расчётный пакет, который доступен по


CORBA.



Т.е. раньше крупный производственный концерн работал без сбора, обработки,
отображения и архивирования информации об объекте управления (пробел же)?
Ололо.

Было принято решение в пользу in-house разработки, потому что на рынке

подобного готового продукта просто нет



Крупный производственный концерн не знает про SCADA/MES системы? Иди
школотроль в толксы про KDE/Gnome.

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

> даже если и знают, NIH-синдром обычно сильнее.

У них штат из 100+ программеров. Им нужно оправдывать свою зарплату. Можно даже прикинуть, ну пусть каждый получает скажем 1000 в месяц, ну множим на два (в налоги, в госстрах-госужос итепе), выходит 2,5 мегабакса в год, и это по-минимуму. То есть ежели половину из них выгнать и заплатить милион за готовое решение, то профит за год будет 500 тыщ. Чот не сходится.

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

Ну, да. Прошёл после третьего курса практику в мелкой научно-производственной
фирме, там ему рассказали про Архитектуру и показали uml. Теперь задвигает на
лоре про энтерпрайз.

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

Где-то используют sql-alcemy, где-то ходят в базу асинхронно. БД - PostgreSQL. psycopg2 отлично дружит как с tornado, так и c gevent.

Инфраструктура создана под распределенную SOA-архитектуру с древовидной топологией. Внутренние протоколы - REST, AMQP. Хранилищ много всяких разных: postgresql, tokyo cabinet, memcachedb. 2PC принципиально не используется. Все добро выкатывается деб-пакетами. Как-то так.

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

Я как-то участвовал в написании такой похожей хурмы. Так там Руби + bash + MySQL хватило на все :) Но корбы, конечно, не было.

dizza ★★★★★
()

По теме. Человеку предоставлены две возможности обучения: на чужом опыте и на собственных ошибках. Их выбирают в зависимости от собственного интеллекта; чаще, разумеется, идут по второму пути. Топикстартер не исключение. Предыдущие попытки забить гвоздь пластилиновой кувалдой (по его же сосбтвенному меткому высказыванию) ничему его не научили; но теперешняя попытка, которой, к тому же, сопутствовало достойное фундаментальное исследование, надеюсь, расставило в его голове все точки над «i».

Правда, все то же самое можно было узнать, послушав старика Кукинштейна несколько лет назад.

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

> В данный момент да, Скалы побаиваются - мало кадров.

а че за контора такая, куда скалевых граждан берут? я тоже хочу.

Rastafarra ★★★★
()

На самостоятельное плаванье CL неспособен. Лисп - это юркий и быстрый катер, но в неспокойных водах «энтерпрайза» его плаванье будет недолгим. Там нужны тяжеловесные, хоть и неповоротливые, атомные ледоколы типа Java и C++.

надо было рассмотреть Clojure, имхо для таких задач - весьма подходящее решение

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

>5. Там, где нужен performance и realtime - C/C++

кагбэ сегодня оно нужно только в гигабитных роутерах. которые раздают торренты

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

Ну у меня не стояло задачи специально «обосрать»...

Ты её сам себе поставил. Это было очевидно ещё с первого твоего треда =).

Deleted
()

Непохоже, что автор действительно верил в успех своей затеи.

Боюсь, что происходит оно от незнания UML и непонимания, что подавляющее большинство аспектов, охватываемых UML, в принципе невыразимо ни в каком в тексте.

Сильно сказано, я в шоке! Что, UML - это запахи, что ли? Или глюки наркомана? А уж если говорить о полезности UML, то основная масса используемого на сегодня ПО была создана раньше, чем UML. Кроме того, до UML были и другие графические нотации для формального описания программных систем. Так что тут речь идёт лишь о пристрастиях, а не об особенностях технологий.

Стандартной IDE у нас считается Eclipse, а для CL стандартом де факто является Emacs+SLIME, что повлечёт переучивание большого числа сотрудников.

Любая смена инструмента ведёт к переучиванию сотрудников, это ясно. Другое дело, что, конечно, Emacs+SLIME разительно отличается от привычного (Eclipse в глаза не видел, но работал с VB, Delphi, MSVS).

Но ситуацию, когда шестиуровневые навороты кода понятны только автору, индустрия допустить не может.

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

Common Lisp и CORBA не предназначены друг для друга

Поскольку автор далее приводит исходник цитаты на англ.яз, видно, что здесь имеется неточность на грани передёргивания. CLOS - это не Common Lisp, а его часть.

Но если слепить кувалду, то это будет пластилиновая кувалда

Чистая схоластика.

Она безусловно является сильной стороной, но имеет кое-какие негативные последствия для эффективной командной работы с системами VCS

Полтора года держу свои лисповые коды под hg, и не вижу никаких напрягов. В команде почти не работал с лиспом, но и тут не вижу напрягов даже в теории, не могу представить даже. Изменил определение - сохрани файл. Новые определения сразу заводи в файле. Вот и все правила безопасности. Есть один минус в инкрементной разработке, который является продолжением плюса: можно завести систему в состояние, не соответствующее её современным исходникам. Но тут уж каждый сам выбирает: рубить дерево топором (он опасен, им можно пораниться) или грызть его зубами (которыми укусить себя намного сложнее, но и дерево они берут несколько хуже).

К тому же, современные Java IDE тоже это умеют: например, в отладчике на живой системе изменить код, тут же перекомпилировать и подгрузить обновлённый класс и продолжить отладку с предыдущего фрейма.

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

На самостоятельное плаванье CL неспособен.

Существует контрпример: http://www.ystok.ru/

Здесь нет промышленной компоненты, остальное присутствует. Пожалуй, соглашусь, что сбор данных можно делать только на языках эээ, третьего поколения (правильно я их назвал? C/Pascal). Наверное, можно извратиться и написать рилтайм на лиспе (есть легенды об этом), но лично я бы не стал рисковать.

Использовать можно двумя способами: внедрять при помощи ECL в программы на С/С++, или запускать standalone SBCL образ и вызывать его через AMQP или веб-сервисы.

Есть ещё варианты: прилинковывать динамические библиотеки на C/С++ к среде лиспа. Использовать лисп как кодогенератор программ на другом языке. Использовать лисп как место встречи метазадач разработки (сборка, тестирование, заливка в систему контроля версий, накат на боевые сервера и т.п.) вместо bash. Все эти три подхода я использую, в т.ч., в программах, имеющих отношение ко сбору данных. Нахожу это полезным.

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

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

> Фишка Clojure […] в Software Transactional Memory и совершенно другом принципе программирования многопоточных приложений.

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

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

Фишка Clojure […] в Software Transactional Memory и совершенно другом принципе программирования многопоточных приложений.

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

STM и LW concurrency в библиотеках, а не в RTS - немножко бред, разве нет?

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

>от C/C++ никуда не деться, кое-где нужен высокая производительность,

C/C++ не дает высокой производительности, вон http://www.sql.ru/forum/actualthread.aspx?tid=869940 даже не могут проц больше чем на 20% загрузить. причем пишут на C++ и верят что их треды выполняются таки независимо.

Karapuz ★★★★★
()

Все, что ты говоришь — верно. Но есть одно «но». А причем тут собственно Лисп вообще, и CL в частности? Тот факт, что «окружение» CL страдает, признают даже его адепты.

ООП-парадигма обладает одним преимуществом: интерфейсостроением. И уж кто-то, а инфраструктура JVM здесь по полной программе оттянулась. На любую беду готова очередная TBA, с референсной и/или сторонней реализациями.

Короче говоря, то что доктор прописал для ентерпрайза.

Только вот не нужно забывать, что в CL есть CLOS и MOP. И там, где традиционная объектная модель просасывает с причмокиванием, модель CL очень и очень хорошо работает, в очень полезной области ентерпрайза под названием «разработка бизнес-логики».

Другое дело, что людей, понимающих объектную модель CL, крайне мало.

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

>даже не могут проц больше чем на 20% загрузить.

Вот уж никогда не думал, что это задача C++.

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

хотя вру, я слышал, что уже посматривают на Vala

Гг.

Реальная контора!

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

The ACE ORB же.

Вечно забываю этого монстра.

Он тыщу+ страниц CORBA 3.0 не поддерживает.

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

>В данный момент да, Скалы побаиваются - мало кадров.

Да ну, в Скале можно включить режим «улучшенной Явы», в свое время делали в С++. А кадры появятся. Просто Скала еще слишком молодой язык.

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

STM и LW concurrency в библиотеках, а не в RTS - немножко бред, разве нет?

В CL всё в RTS (runtime system?) грузится, поэтому пофиг.

mv ★★★★★
()

Как уже многие отмечали, по описанию проект не выглядит серьёзным. У нас на порядок сложнее работа делается (конпелятор для перевода финансовой логики в высокооптимизированный синтезируемый vhdl, например), и Common Lisp успешно используется. Из лисповых программистов - один свежий фуллтайм, один всем подряд занимается, один студент-интерн на лето и два начальника (PM и CTO/founder) с кучей забот помимо программирования.

Бабки инвесторов, конечно, не так эффективно пилим, как сто+ программистов на яве. У нас весь бюджет в принципе сравним с вашей месячной з/п, наверное ;)

Кстати, систему, похожую по описанию на вашу, наш CTO писал один, и ему до сих пор хороший чек каждый месяц приходит за «обслуживание».

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

>конпелятор для перевода финансовой логики

Лучше бы вы финансовую логику на CL писали бы. А то пишут всякие чудаки ее на PL/SQL, а в процессе продакшена — хронический цирк с конями.

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

Лучше бы вы финансовую логику на CL писали бы.

Не-не-не, у нас задача: запихать кастомерскую логику в FPGA. Для этого нужен общий компилятор sexp->vhdl (синтезируемую часть его), и пачка DSL'ей на основе него для удобного описания высокоуровневой логики. Уже используем парочку таких решений для генерации парсера финансовых потоков и некоторые особо сложные vhdl-ядра на лиспе пишутся.

Впрочем, код в лисп тоже генерируется - чтобы проверять работоспособность на логическом уровне, т.к. для vhdl можно только на сигнальном проверять (симулинк).

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

>у нас задача: запихать кастомерскую логику в

Кстати, а входной язык какой?

некоторые особо сложные vhdl-ядра на лиспе пишутся

Есть контора, которая разработку своего форт-процессора целиком и полностью на форте же и ведет. GreenArrays зовется. Там, кстати, Сам работает.

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

RTS (runtime system?)

Не сам runtime, а его реализация, т.е. VM. Рестарты, STM, продолжения, лёгкие треды, нелокальные переходы - можно конечно делать всё это на уровне библиотек, но будет не очень хорошо, нужна какая-то поддержка со стороны VM.

поэтому пофиг.

Ну CL в этом смысле немного особенный, но только немного - если говорить о SBCL, то там можно добавить VOP-ы или элементы flow graph библиотекой, но изменить набор примитивов или поведение GC - уже не получится.

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

Кстати, а входной язык какой?

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

Есть контора, которая разработку своего форт-процессора целиком и полностью на форте же и ведет. GreenArrays зовется. Там, кстати, Сам работает.

У нас специфика - low latency, поэтому лишнего такта не бывает, поэтому всё в итоге должно быть как можно ближе к железу. Синтезируемый vhdl - это, по-сути, описание проводов.

mv ★★★★★
()

И как ты рискнул делать доклад о системе, в которой у тебя нет опыта разработки? Или есть? Я так понял, что нет. Я считаю, что это с твоей стороны отнюдь не смелость, а наивность и глупая идея. Я имею разносторонний опыт домашней разработки на Common Lisp, но я не рискнул бы даже заикаться на эту тему, я бы не взял на себя ответственность за форсирование CL в крупной компании. Такие доклады должны делать люди, имеющие реальный опыт командной разработки (необязательно крупномасштабной, хоть какой-нибудь).

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

Ну CL в этом смысле немного особенный, но только немного - если говорить о SBCL, то там можно добавить VOP-ы или элементы flow graph библиотекой, но изменить набор примитивов или поведение GC - уже не получится.

А в JVM это разве можно на уровне библиотеки сделать?

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

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

>Какой-нибудь свой.

А какой именно «свой»? Или это все из области NDA?

поэтому всё в итоге должно быть как можно ближе к железу

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

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

>Без описания задачи (что надо было разработать) это просто унылый вброс. Надо было предложить писать на bash'e еще.

Хех, ну ты же автоматизацию на производстве печатных плат на шелле писал: http://www.linux.org.ru/gallery/screenshots/703868 :) Пусть и они тоже попробуют. :)

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

А какой именно «свой»? Или это все из области NDA?

Это из области «сами ещё не знаем, что в итоге будет» :)

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

Вы таки написали libastral.so?

Мы написали backend. Как будет выглядеть frontend'ы - зависит от кастомеров, которые за это будут платить денюжку.

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