LINUX.ORG.RU

LispWorks 6.0.1 Personal Edition

 , , ,


0

2

Интегрированная среда разработки для языка программирования Common Lisp под названием LispWorks версии 6.0.1 стала доступна совершенно бесплатно без каких-либо платежей в редакции Personal Edition.

LispWorks Personal Edition предлагает следующие возможности для своих пользователей:

  • поддержка симметричной мультипроцессорности (SMP);
  • поддержка GTK+;
  • поддержка платформы Solaris для архитектур x86 и x86_64;
  • интеграция ASDF прямо в IDE;
  • профилирование многопоточных приложений;
  • изменяемые и редактируемые нативные тулбары;
  • улучшенная документация и дополнительные новые примеры;
  • множество других общих улучшений и улучшений в CAPI;
  • множество исправлений ошибок и недочётов.

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

>>> Скачать персональную редакцию LispWorks

★★★

Проверено: svu ()
Последнее исправление: resurtm (всего исправлений: 1)

Ответ на: комментарий от archimag

не есть и пример прямой имплементации js в tcl некогда искать
уже проще перечислить чего нет.

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

Условия задачи не выполнены.

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

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

JS + SVG - это не лисп, К.О.

а вот ассемблер, ассемблер тоже пох....? «не лисп»?

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

Функция должна быть в модуле, а не в программе. Хотя тут вроде мне разъяснили, что можно перезагрузить целиком модуль и тогда это уже становится почти жизнеспособно, при условии, что инициализацию модуля можно повторять более одного раза. Хотелось бы возможности «войти в контекст модуля» и скомпилировать новое определение в этом контексте, подменить старый код новым и потом вернуться к выполнению программы.

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

> Спорим, что любой?

спорим, давай ссылку, чтоб я зашел и у меня отработал на ней код на C#, ес-но на стороне клиента

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

Это не про вас (в качестве примера лисп-разработчика) писали в каком-то треде, что, якобы, вы жаловались на отсутствие библиотек под лисп и чуть ли не перешли на питон?

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

> полностью интерактивную модель разработки

для тех, кто в танке, можешь пояснить, что это такое? а то гугл не понимает

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

Ок, более обстоятельная демонстрация:

/tmp$ cat module.py
def func():
    return "value"
/tmp$ cat app.py
from module import func

def main():
    print func()

Сеанс работы в дебагере:

>>> import app
>>> app.main()
value
>>> from module import func
>>> def new_func():
...     return 'newvalue'
...     
... 
>>> func.func_code = new_func.func_code
>>> app.main()
newvalue
>>>

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

>> полностью интерактивную модель разработки

для тех, кто в танке, можешь пояснить, что это такое?

а то гугл не понимает



Например, когда вы создаёте веб-приложение с использование Django, то Django пытается эмитировать что-либо подобное постоянно перегружая весь код, из-за чего Django в режиме разработки совершенно жутко тормозит. Я же просто изменяю кусок кода, нажимаю C-c C-c в SLIME (перекомпилировать форму под курсором) и иду смотреть изменения в браузере. Скорость работы веб-приложения на CL в режиме разработки и в боевом режиме ни чем не отличается, потому что никаких подобных режимов просто нет. При этом, Django удаётся, пусть и с тормозами, как-то эмитировать интерактивную разработку только из-за специфики веб-приложений, которые обычно не имеют особого значимого состояния (работаю по схеме запрос-ответ). В CL же всегда есть возможность «перекомпилировать» определение конкретной функции или там класса и это немедленно скажется на работе всей системы. Я модифицирую код, тут же компилирую его и запускаю проблемный код в REPL, повторяю. При этом сохраняется всё ранее настроенное окружение. Подобная схема невозможна в Python, где можно достаточно просто добавлять новый код, но не модифицировать уже существующий способ удобным для ведения разработки.

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

PHP-сты пишут мощные вебсервисы


В этом-то вся и проблема с PHP-стами :)

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

>> LispWorks можно юзать с Emacs, сюрприз?

Угу... А как именно?


SLIME состоит из двух частей: swank, написанного на CL, и собственно Emacs-части, написанной на ELisp.

Swank это сервер, который запускается в рамках лисп-процесса и взаимодействует с ELisp частью через сокетное соединение (а не через стандартные потоки ввода/вывода). Таким образом, можно загрузить swank в любой CL-процесс и присоединиться к нему с помощью SLIME и работать. Это даёт возможность, в том числе, изменять и отлаживать код работающий на удалённом сервере (например, в другой стране) точно так же, как и локальный. Команда M-x slime просто немного скрывает эту схему, запускаю выбранную реализацию, запуская swank-сервер и присоединяясь к нему за один шаг. И да, swank поддерживает LW.

Описанная схема позволяет использовать SLIME не только для поддержки CL, но и например Scheme, а также даже JavaScript (https://github.com/ivan4th/swank-js).

archimag ★★★
()

фтп серваки легли под натиском любопытствующих и халявщиков :)

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

> Ок, более обстоятельная демонстрация
И опять не то, т.к. ф-я в модуле module.py в реальной жизни будет ссылаться на какие-то другии ф-ии из модуля module.py. А мы сейчас находимся в контексте приложения. Нам нужно компилировать ф-ю func в том же контексте, в котором она была определена.

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

чуть ли не перешли на питон?

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

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

Я имел в виду, что написание плагина к FF - ОТНОСИТЕЛЬНО долгий процес, так как надо написать и скомпилить под Windows/Linux/Mac/..., инсталятор и т.д., а для Emacs - сел, написал, набрал 3-4 команды и все. Лисп все-таки... (я - не фанат лиспа, он вообще мне не нравится :), просто имхо тут все действительно отличается отличается)

Обьясните, пожалуста, ваше мнение? В чем процес написания под FF походит на лисповый? Общей идеей только??

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

> надо написать и скомпилить под Windows/Linux/Mac/..., инсталятор и т.д.

Для расширений не надо. Но не в этом суть.

Ну, предположим, для Емакса можно быстрее писать расширения. Это что минус?

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

>> чуть ли не перешли на питон?

Не «чуть ли не», а «чуть не»

Никогда не стремился стать граммар-наци, но http://dic.academic.ru/dic.nsf/ogegova/268270

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

Просто, показалось, что ваши доводы были не слишком объективны/разносторонни.

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

изменять и отлаживать код работающий на удалённом сервере (например, в другой стране)

Или, например, в космосе.

eval-apply
()
Ответ на: комментарий от n01r

Нет, грамматику мы не будем обсуждать. Между «чуть ли не» и «чуть не» разница есть, объяснять не буду. Если не понимаете, скажу: я не перешёл на Питон и надеюсь, что не придётся. Достаточно того, что я ем сосиски и доширак, пью кефир из пакетов (с радиоактивным стронцием) и дышу воздухом Подмосковья. Не хватало ещё Питона.

Просто, показалось, что ваши доводы были не слишком

объективны/разносторонни


Да, они не были. О слабых сторонах лиспа я тоже писал достаточно много (и я сразу сделал об этом оговорку).

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

> О слабых сторонах лиспа я тоже писал достаточно много

(и я сразу сделал об этом оговорку).


Тут стоит только отметить, что хотя слабые стороны действительно есть (они есть у всего), но то, о чём ты обычно говоришь весьма и весьма субъективно и не соответствует впечатлениям большинства использующих CL ;)

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

Ну, предположим, для Емакса можно быстрее писать расширения. Это что минус?


Принимая во внимание то, сколько всего ненужного в емаксе (если позиционировать его как редактор) сайчас - Да :)

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

> Держи. Можешь больше в лужу не пердеть, у тебя ничего не выйдет.

мальчик, ты хоть в курсе что такое silverlight? или решил сам «в лужу напердеть»?

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

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

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

> мне выше утверждали что к браузеру ничего нельзя прикрутить

«давай ссылку, чтоб я зашел и у меня отработал на ней код на C#, ес-но на стороне клиента» - ога, именно это и утверждали

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

Нам нужно компилировать ф-ю func в том же контексте, в котором она была определена.

Все-таки это я тебя не правильно понял. Что такое контекст и почему это так витально компилировать ее там же? Пример на CL можно? Я просто не догоняю что ты хочешь получить в итоге.

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

> Прочитай что такое сильверлайт, упорок.

http://upload.wikimedia.org/wikipedia/commons/e/ee/Microsoft_Silverlight_stac...

ты сможешь с помощью этого выполнить код на C# у клиента? если да, то я уже спрашивал ссылку - прошу еще раз, если что moonlight попробую поставить, хоть и под Mac OS сижу

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

> Ммм, erlang? Вполне интерактивен.

ЕМНИП там нельзя определить модуль в рантайме. И для замены кода нужно долго курить маны, а не просто определить функцию заново. Это всё часто используется, когда оно легко доступно.

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

> erlang, это совсем не такой приятный и удобный язык, блин, там даже строк нормальных нет!

Строки уже есть. :P

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

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

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

>Достаточно того, что я ем сосиски и доширак, пью кефир из пакетов (с радиоактивным стронцием) и дышу воздухом Подмосковья. Не хватало ещё Питона.

Твоё нытьё никому не интересно. Сдаётся мне, что ты не жертва обстоятельств, а просто хреновый и непроизводительный программист. Иначе ты бы даже на северном полюсе нашёл адекватную работу (по интернету, например). Хоть на Лиспе, хоть на чём ещё.

Да, искренне надеюсь, что цифра 73 в твоём нике — это не год рождения. Потому что до 37 лет не суметь найти работу по специальности — это страшно.

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

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

Для защиты от повторной инициализации есть средства.

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

> Анонимус, у тебя совсем с головкой бо-бо?

нарываешься на грубость

Уже который час настойчиво доказывать ущербность серверной технологии перед клиентскими. Ах, да, свистеть и пердеть же только клиентские умеют.


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

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

>> Почему его называют быдлокодером? И почему «простой смертный» противопоставляется лисперу?

у потому что вы, лисперы, говорите, что лисп круче всех, а кто пишет не на нем - быдлокодер и неосилятор


Видите в чём дело. Все, кто на нём не пишут, почему-то, в один голос орут, что лисп не нужен.

Ну а если кто-то говорит «не нужен» про явно использующуюся и приносящую деньги технологию, то он - быдлокодер и неосилятор.

</troll>

Предлагаю больше не обобщать «нас - лисперов» и «вас - орущих \„не нужен\“». :) Тут ситуация как с «линуксоидами». Пара-тройка на каждом форуме орёт «виндовс не нужен» и всех пользователей линукс уже считают религиозными фанатиками. Большинство же доказывают не ненужность остальных, а нужность своей. Не могу понять как эти две позиции можно спутать.

Вот, серьёзно, как можно спутать «лисп - наше фсио!!!» и «лисп нужен»?

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

> Вот, серьёзно, как можно спутать «лисп - наше фсио!!!» и «лисп нужен»?

ну а как можно было спутать - CL на сервере вполне заменим и нефиг пихать что-то кроме JS в браузер( т.е. JS уже по сути практически не заменим ), с «ущербность серверной технологии перед клиентскими» (с)?

anonymous
()
Ответ на: комментарий от baverman
Файл f1.lisp 
(defpackage :p1 (:use :cl) (:export :func))
(defun inner-func () 1)
(defun inner-func-2 () 2)
(defun func () (inner-func))
; eof

REPL:
> (in-package :cl-user)
> (load (compile "f1"))
> (defun f () (func))
> (f)
1
; вот теперь мы могли бы скопипастить определение func в repl, 
; но оно просто так не скомпилируется, придётся делать вот так:

> (in-package :p1)
> (defun func () (inner-func-2))
> (in-package :cl-user)
; на самом деле мы не будем писать эти три строчки, а пойдём к 
; исходнику func, поменяем его и нажмём C-c C-c. 
> (f)
2
den73 ★★★★★
()
Ответ на: комментарий от naryl

> Для защиты от повторной инициализации есть средства.
Я надеюсь, это не метод пристального вглядывания с последующем комментированием всей инициализации?

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

Да хотя бы DEFVAR (vs DEFPARAMETER). Или «деинициализация» перед инициализацией.

Загрузить одно определение всё-равно быстрее и проще.

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

> Да хотя бы DEFVAR (vs DEFPARAMETER). Или «деинициализация» перед инициализацией.
Вопрос был не про лисп (в лиспе это есть, понятное дело), а про питон. Выясняется, есть ли в питоне настоящая интерактивная разработка.

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

Блин, я тут ошибся, вместо
(defun f () (func))
нужно писать
(defun f () (p1:func))
или, перед этим написать (use-package :p1).

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

> сколько всего ненужного в емаксе (если позиционировать его как редактор)

Список ненужного в студию.

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