Feel free назвать не скриптовую переносимую без костылей реализацию.
Только не надо про кросскомпиляцию. Если это не вынужденная мера,
это костыль.
Останется jvm. Но вот досада... Она не заворачивается один exe.
Можно сказать что и руби/перл/питон и библиотеки и компиляторы
поставить не проблема. Только это нарушет оговоренное условие -
один екзэшник. Не говоря уже о том, бывают сервера без доступа
в интернет, ге политика безопасности не разрешает ставить все
подряд и т.д.. И это не упоминая того что разные приложения в
копоративном сектооре любят разную джаву. Расскажешь клиенту,
как прописать джаву поновее, чтобы другой приклад не отвалился?
Или просто весь код перелопатишь чтобы шел на jre1.4?
Все что я упоминаю не прихоть. А «опыт,сын ошибок трудныx» (с).
> Как какое-то тормозное скриптовое говнецо, отличающееся разве что кучей «батареек из коробки» можно вообще сравнивать с мощнейшим метаязыком с мозгодробительной объектной системой
> Все случаи писания на липе/тсл в 2010 году, это либо поддержка .овна мамонта, либо слишком добрый менеджер, который мало бьет кнутом рабов-программеров.
В опенсурсе, когда менеджера нет, программер волен(!) выбирать наиболее подходящий инструмент. В этих случаях выбор нередко падает на CL или tcl.
java - одоробло в малом, торомозилла в большом, умудряется одинаково безобразно выглядеть на различных платформах.
Какое-то драматическое несоответствие между пиаром и зрением.
> Структура кода(имеется ввиду после фазы считывания, хотя и к тому что до нее тоже относится в полной мере) - не просто атомы и списки. А именно объекты.
по списку, с целью его дальнейшей обработки, можно нагенерить дофига различных структур, и это не сделает *его* объектом
или ты хочешь сказать, что в CL каждая консовая ячейка может нести в себе указатель на таблицу вирт. функций (кстати, как в лиспе пишется аналог сокращения «vtbl»?), и по этому указателю можно как дергать обычные функций консовой ячейки, так и (виртуальные) функции, для выбора которых поток управления НЕ БУДЕТ смотреть на поле car, а просто выберет нужную из vtbl (а в vtbl она занесена на основе поля car конечно)
если так, то тогда я соглашусть, что ячейки — объекты
или ты хочешь сказать, что в CL каждая консовая ячейка может нести в себе указатель на таблицу вирт. функций (кстати, как в лиспе пишется аналог сокращения «vtbl»?), и по этому указателю можно как дергать обычные функций консовой ячейки, так и (виртуальные) функции, для выбора которых поток управления НЕ БУДЕТ смотреть на поле car, а просто выберет нужную из vtbl (а в vtbl она занесена на основе поля car конечно)
Есличе, в CL у объектов нет методов.
Но я вот что больше имел ввиду:
(defun compile-and-eval-lambda-form (form)
(funcall (compile nil form)))
;;Точно так же, как мы можем сделать так:
(compile-and-eval-lambda-form
'(lambda () (concatenate 'string "abc" "cab")))
;;мы можем сделать и так:
(defvar *function* #'concatenate)
(defvar *result-type-name* 'string)
(defvar *object1* "abc")
(defvar *object2* "cab")
(compile-and-eval-lambda-form
`(lambda () (funcall ,*function* ',*result-type-name* ,*object1* ,*object2*)))
Перл - почти любое гуи - это установка сторонних библиотек или
модулей, которые зачастую требуют компиляции. Клиент от слова
компиляция начинает истерически хихикать. А невменяемый человек
не может опачивать проект. Он может только услаждаться
галоперидольчиком.
Питон - один в один перл
Учи матчасть. Питон здесь в том же положении, что и Тикль.
Не, выпутаете примочку с технологией.
Для Tcl можно упаковать в метакит ядро языка с необходимым числом батареек-плюшек.
Изолировать запускаемое приложение и упаковать его в метакит запускаемый метакитом tcl.
Приложение и ядро языка с плюшками (или без) укатать в один исполняемый метакит.
Причем допускется запись данных приложением в подмонтированную VFS
метакита или его базу данных.
Справедливости ради , следует отметить, что автор метакит и для пистония как-то делал реализации.
> И остается тикль, который делает ГУИ, своим родным Tk а не сторонними притянутыми за уши GTK, Fox и т.д. И легко обьединяет все необходимые
модули в один exe.
У меня вот не получилось объединить модули в один exe. Руки кривоваты. Попробуйте Scheme. Те же преимущества, только бинарник собирается одной командой и работает даже с моими кривыми руками.
>Lisp - эээ, нууу... Попробуйте с нуля взгромоздить любой ГУИ тулкит на винду. Есди выйдет с первой попытки, и без того что вы до этого потратили на такую же задачу месяц. Ну что ж - вы гуру.
Gtk+ спокойно встает на винду. И спокойной встает методом простого копирования. И Gtk+ спокойно доступен из лиспа, питона, рубина и др. Не вижу тут проблемы.
Про py2exe perl2exe я слышал. Есть несколько ньюансов.
1. Почему то мне для исталляции модулей слишком часто требовался
копмайлер.
2. Нифига не просто поставить моули по крайней мере перла без инета.
3. Не ведаю насколько просто из под linux сделать exe для win32.
Ничего личного, но у меня не вышло их сходу поставить для clozure.
По крайней мере через asdf. Хотело много чего интересного в системе.
Тары хотел еще кучу всего.
Я вообще буду счастлив, если найду способ добавить батарейки
эквивалентые тиклю в лисп. Но у меня не выходит.
Если подскажете буду рад. Хочется:
1. Отлизанный набор пакетов. Причем уже скомпилированных,
под windows, linux, solaris.
2. Возможность устанавливать это все как с интернетом так и без.
3. Устанавливать пакеты без наличия гну окружения.
4. Иметь возможность запаковать резултьтат в экзе, только с
необходимыми зависимостями.
1. Отлизанный набор пакетов. Причем уже скомпилированных,
под windows, linux, solaris.
Отлизывать нада :) А распостранять бинарниками - это от не знания. Когда вы собираете софт на целевой машине вы получаете и профит, и гибкость. А уж для CL это вообще единственный вариант.
Windows - пилить нада))
2. Возможность устанавливать это все как с интернетом так и без.
asdf-install, clbuild, gentoo-lisp-overlay, самодельные тарболы? Что ещё нужно.
3. Устанавливать пакеты без наличия гну окружения.
)_( Это как? На Linux/*BSD будет libc и всё будет хорошо.
Ну а Windows... Как бы ничего не будет просто так - либо кто-то возьмёт на себя труд настроить интерфейс к cygwin библиотекам для POSIX совместимости, либо к родным dll, либо к .NET. Сейчас на Winde некоторые вещи работоспособны, но далеко не все.
4. Иметь возможность запаковать резултьтат в экзе, только с
необходимыми зависимостями.
>4. Иметь возможность запаковать резултьтат в экзе, только с
необходимыми зависимостями.
Gtk+ «в экзе» не запакуешь. Нужно таскать с собой весь его каталог (но для запуска программ с gtk+ ничего нигде прописывать не надо, главное чтобы он был рядом). То же самое с другими внешними библиотеками. В «один экзе» можно собрать только лисповые библиотеки, и это является довольно стандартной функцией (ccl:save-application, sb-ext:save-lisp-and-die).
Причем уже скомпилированных, под windows, linux, solaris.
Скомпилированные пакеты для лиспа - это оксюморон.
Самый простой способ установить «батарейки» для лиспа - это тарболл вроде http://libcl.com/
Ничего личного, но у меня не вышло их сходу поставить для clozure.
По крайней мере через asdf. Хотело много чего интересного в системе.
Тары хотел еще кучу всего.
1. Я не против гибкости. Я против ее навязывания. Иногда мне нужна не
гибкость бинарника. И я хочу такую возможность получить. А пилить -
это основная проблема лиспа. Недопилено все.
2. Нужно один простой и рабочий способ. asdf на винде - костыльно.
clbuild не пробовал. gentoo на винде не заведется.
3. Ну а вот в тикле все это сделано. И пакеты из инета как правило уже
по человечески собраны.
4. Ну пот опать пилить или деньги. А тикль ни денег ни пилить.
Это именно то о чем я говорю. Если бы у лиспа не было пилить - я бы
взял его вместо тикля.
Не вспомню конкретных. Стараюсь избегать софта на питоне. Но регулярно
поставленному софту чего-то не хватает и его нет. И качество библиотек
просто ахтунг. Помню надо было вкрутить проигрывание мп3 в одну вещь.
Повесился прежде чем нашел то что работает, и работает с разными
битрейтами.
ASDF это стандарт по чаcти описания систем в CL, он везде. ASDF-install - да, костыль на винде.
gentoo на винде не заведется.
Ну типа того :) Я запускал portage под cygwin, но это похоже на красноглазие ^))
Ну а вот в тикле все это сделано. И пакеты из инета как правило уже
по человечески собраны.
И в python, и в ruby, даже в Haskell прости Господи.
Если бы у лиспа не было пилить - я бы взял его вместо тикля.
Может стоит сделать второй заход? Задача обустройства CL окружения не многим сложнее такой же задачи для Java - есть разные варианты, есть тонкости. Я вот сейчас прикидываю, как бы сверх проблем с CL нет, разве что для того кто на дух не переносит что-то пилить :) Старичок он просто ))
Но в целом суть такова, что все что я перечислил можно сделать в
тикле. И я не думаю что он такой уникальный. Просто остальные не
удосужились это сделать.
Я пока зашел на clojure. Конечно ни MOP ни read-table,
но та же jvm дает нормально отлизанную библиотеку.
А так я регулярно пытаюсь. Но безуспешно. Например есть код прямо на
лиспе который помогает обойтись без гзипа и тара. Почему его не
вкрутять в asdf - загадка.
Вобщем писать на лиспе можно, но деливерить - кошмар.
Ну так там не Gtk+, а Tk. Если кто-то напишет тулкит на лиспе, а не биндинг к Gtk+, то его так же можно будет целиком засунуть в образ. McCLIM, например, можно засунуть в образ, но он ужасен.
Почему для тикля нет?
Видимо, под «компиляцией» подразумеваются разные вещи.
Почему его не вкрутять в asdf - загадка.
А что ему делать в ASDF? ASDF не пользуется ни гзипом, ни таром. ASDF пользуется файловой системой.
> Проект GNU не собирается использовать Tcl в программном обеспечении GNU (с) RMS
Лисперы не способны понять Tcl, им мешают скобочки других видов^_^, поэтому Столман обиделся на создателя тикля и назвал Tcl не провосланым и не кошерным. А Java - закопайте обратно. Пусть там и остается вместе с пистоном, жить в тени небыдлоязыков.
>Помоему вы не знаете как все делается в тикле. Там пакуются все ресурсы
в экзешник. И длл и прочее.
Gtk+ ищет всякие разные файлы в файловой системе. Как бы вы dll ни паковали, если Gtk+ не отучить от этого, то в один файл не собрать. Ну и плюс, очень интересно посмотреть на корректную запаковку dll'ек в один файл.
А ASDF-INSTALL использовать нигде не стоит, ни на винде, на под линуксом.