LINUX.ORG.RU

[lisp][/r/]Нужна IDE

 


0

2

Начинаю изучать Common Lisp. Хотелось бы найти удобную среду разработки. Сейчас использую Geany для Python'а и Code::Blocks для C++, иногда Vim для обоих. Приветствуется нечто похожее на Geany, в идеале - плагин для оного. FAQ читал, Emacs использовать не хочу.



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

> Emacs использовать не хочу.

Хотелось бы найти удобную среду разработки


/0

Sphinx ★★☆☆
()

А вот между тем, Emacs бы очень подошёл.

DJAnto
()

IDE для CL это SLIME(в Emacs) или нечто ему подобное(присутствует в коммерческих реализациях). Тчк.

Love5an
()

>Emacs использовать не хочу

А придется ;-)

yoghurt ★★★★★
()
Ответ на: комментарий от ipc
0:/data/home pacman -S eclipse 
--> resolving java-environment... installed (provided by openjdk6)
--> resolving gtk2... installed
--> resolving unzip... installed
--> resolving xulrunner... installed
--> Reflecting... retrieved 45 mirrors.

:: The following packages will be downloaded:
[extra]
eclipse-3.6-1 [165.72 MiB]

:: Number of Packages: 1
:: Total Download Size: 165.72 MiB
:: Binary Package Install Size: 189.79 MiB

:: Proceed with download? [Y/n] y

Маловато этот ваш Eclipse весит. Все равно попробую, спасибо.

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

> Маловато этот ваш Eclipse весит. Все равно попробую, спасибо.

Даже не пробуй, ибо нормально работать всё равно не получиться. CUSP использует swank из состава SLIME, но он как бы заточен по текущее состоянии дел и с большой степенью вероятности старый swank, который был заюзан в CUSP будет работать плохо с текущими версиями реализаций. С новым swank он не заработает. В общем, потом будешь жаловаться, что ничего не работать и обвинять во всём Common Lisp, хотя он тут и не при чём. В общем, у тебя есть три варианта:

1. Использовать таки SLIME
2. Использовать IDE коммерческих реализаций
3. Начать изучать другой язык.

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

>1. Использовать таки SLIME

Видимо, придется таки попробовать. CUSP у меня даже не поднялся. Ну что ж, сейчас поставлю, посмотрим на этого монстра.

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

А несвободные лисповые IDE по такому же принципу как SLIME работают?

Sphinx ★★☆☆
()

LispWorks же, если емакс не хочется. Оно конечно не смолтоковые IDE, но в него в этом году даже сохранение(гибернцию) имиджа добавили, во. Как и VisualWorks, для некоммерческого использования бесплатно.

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

ну извини, основной язык уже довольно давно рунглиш, да и все свои вроде.

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

> LispWorks же, если емакс не хочется. Оно конечно не смолтоковые IDE, но в него в этом году даже сохранение(гибернцию) имиджа добавили, во. Как и VisualWorks, для некоммерческого использования бесплатно.

http://www.lispworks.com/downloads/index.html

Current Version

The current version is LispWorks 5.1.1 Personal Edition. It includes the new features announced here.

Next Version

LispWorks 6.0 Personal Edition will be released during 2010. Check our user group for announcements.

ещё не добавили. + в 6.0 вроде как перешли на Gtk2 вместо уродского Motif в версиях для линуксов/соляр

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

есть ещё AllegroCL, там батареек в халявной версии больше, чем в LW, но до сих пор нет подсветки кода. и гуёвый тулкит уродский (ну точнее там вроде как юзается Gtk2, но какое-то оно там странное) =)

korvin_ ★★★★★
()
Ответ на: комментарий от satanic-mechanic

> Давно не пользовал allegro, но вроде подсветка кода включалась в настройках.

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

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

> В общем, у тебя есть три варианта:

1. Использовать таки SLIME

2. Использовать IDE коммерческих реализаций


3. Начать изучать другой язык.



Таки сорцы RESTAS я читал vim'ом :)

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

> Да, действительно подсветки нет. Но почему-то казалось, что была. Может была, когда они еще на GTK не перешли?

хз, возможно

korvin_ ★★★★★
()

Лучше emacs'а не найдете.

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

>есть ещё AllegroCL, там батареек в халявной версии больше, чем в LW, но до сих пор нет подсветки кода. и гуёвый тулкит уродский (ну точнее там вроде как юзается Gtk2, но какое-то оно там странное) =)

о, вот это - тру, вот это как в смолтоке. пошел устанавливать ;)

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

>> В общем, у тебя есть три варианта:

1. Использовать таки SLIME

2. Использовать IDE коммерческих реализаций


3. Начать изучать другой язык.



Таки сорцы RESTAS я читал vim'ом :)


Для чтения более чем достаточно одной только подсветки, а вот для быстроко и комфортного написания её мало будет.

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

Хм, а зачем тогда лисперы распинаются о рулезах REPL, если для работы IDE все равно нужна? Или же начальный код набивать в IDE, а REPL для дебага?

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

>Хм, а зачем тогда лисперы распинаются о рулезах REPL, если для работы IDE все равно нужна? Или же начальный код набивать в IDE, а REPL для дебага?

REPL как бы является частью IDE.

dmitry_vk ★★★
()

Последнее время вечерами почитываю SICP и выполняю примеры на commonlisp и c++ (параллельно) не вылезая из kdevelop. Ересь, конечно, но вроде удобно. Правда, лисп я как скрипты пускаю, как скрестить sbcl и cmake пока не раскурил.

PS и да, лисп - тормоз, динамическая типизация сосёт, ситаксис c++ - уёбищен, аж gcc падает.

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

haskell спасет отца русской демократии, ну или на худой конец любой ml.

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

А что я не так сказал? Что наблюдаю, то и высказываю. Лисп в 4 раза медленнее плюсов на _ровно_ тех-же алгоритмах (кстати, не слишком-то эффективных, но для учебной книги не страшно). А если плюсокод тривиально потюнить (напрмер, inline дописать где надо, аргументы по сслыке передавать), то отрыв вообще нереальный.

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

>А если плюсокод тривиально потюнить (напрмер, inline дописать где надо, аргументы по сслыке передавать), то отрыв вообще нереальный.

Вы просто не делали тривиальный тюнинг лиспового кода.

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

>Лисп в 4 раза медленнее плюсов на _ровно_ тех-же алгоритмах (кстати, не слишком-то эффективных, но для учебной книги не страшно).

Вы учитывайте, что лисп - это типобезопасный язык, в отличие от C++.

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

Из

лисп


не обязательно следует

динамическая типизация


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

>как скрестить sbcl и cmake пока не раскурил

Оно и не нужно, есть же asdf

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

>А если плюсокод тривиально потюнить

лиспокод тоже можно подтюнить

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

Что, правда? На тех же алгоритмах? А если проверю?

(deftype u8 () '(unsigned-byte 8))

(defun bubble-sort (v start end)
  (declare (type fixnum start end)           
           (type (simple-array u8 (*)) v))
  (loop :for swapped :of-type boolean = nil
        :do (loop :for i fixnum :from start :below (1- end)
                  :do (when (> (aref v i) (aref v (1+ i)))
                        (rotatef (aref v i) (aref v (1+ i)))
                        (setf swapped t)))
        :while swapped))
typedef unsigned __int8 u8;

template<typename T>
inline void swap(T& a, T& b)
{
    T temp(a);
    a=b;
    b=temp;
}

void bubble_sort(std::vector<u8>& v, int start, int end)
{
    bool swapped;
    do
    {
        swapped = false;
        for(int i = start; i<(end-1); ++i)
            if(v[i] > v[i+1])
            {
                swap(v[i], v[i+1]);
                swapped = true;
            }
    }while(swapped);
}

полный код, соответственно:

c++: http://pastebin.org/375051

cl: http://paste.lisp.org/display/112087

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

g++ и sbcl - примерно одинаково производительный код генерируют, с мизерным опережением g++, а msvc++ - даже несколько более тормозной, чем лисп.

Love5an
()

> Начинаю изучать Common Lisp. Хотелось бы найти удобную среду разработки... Emacs использовать не хочу.

Молодой человек, изучайте нормальные (Scheme, Clojure), а не bloated (Common Lisp) диалекты лиспа.

Тогда будут вам и LambdaBeans, и DrRacket (ex-PLT DrScheme), и Enclojure, и какава с чаем.

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

>g++ и sbcl - примерно одинаково производительный код генерируют

ага, «примерно». 30 и 20 секунд на 10000 элементах. А если поправить глупые ошибки в плюсовом коде, то разница получается почти в 2 раза. Почему любители интерпретируемых языков всегда такие лгуны?

trollface.cpp

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

>интерпретируемых языков
Где тут интерпретируемый язык? Ты совсем дебил?

И какие такие ошибки? ну-ка.

а то я на другой системе проверил, с новым SBCL, и тут входит SBCL совсем не отстает (правда тут gcc без графита).

http://img714.imageshack.us/img714/5090/msvcvsgccvssbcl.png

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

>Где тут интерпретируемый язык?

Лисп. Чтобы компилятор лиспа смог выбросить байткодоподобную чепуху из кода надо ему столько инфы о типах скормить, что всё метапрограммирование скатывается на уровень си.

И какие такие ошибки? ну-ка.

Да элементарные. Хотябы параметры функции объявить как const. А по-хорошему передавать в функцию два итератора, а не быдлоиндексы. А про вектор в куче - это вообще маразм, хоть на производительность теста и не влияет.

Я попробую переделать тест при помощи лиспкода с твоего скриншота и запощу результаты вместе с версиями софта. Возможно, завтра. Но пока что у меня один вопрос: а разве gcc 4 работает в маздае?

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

> разве gcc 4 работает в маздае?

да - mingw четвертой версии уже давно есть

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

> Я правильно понял, что лисповая программа из десяти строк дала бинарь на ДВАДЦАТЬ ШЕСТЬ метров?

вы никогда не кончитесь?

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

> Я правильно понял, что лисповая программа из десяти строк дала бинарь на ДВАДЦАТЬ ШЕСТЬ метров?

лор оккупирован дебильной школотой...

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

мне g++ такое выдаёт на Ваш код (убунта 10.04, g++ 4.4.3-4ubuntu5):

[ ~/p/test ] g++ -Wall -O2 -o bubble-O2 bubble.cpp /usr/lib/libstdc++.so.6
bubble.cpp:8: error: ‘__int8’ does not name a type
bubble.cpp:18: error: ‘u8’ was not declared in this scope
bubble.cpp:18: error: template argument 1 is invalid
bubble.cpp:18: error: template argument 2 is invalid
bubble.cpp: In function ‘void bubble_sort(int&, int, int)’:
bubble.cpp:24: error: invalid types ‘int[int]’ for array subscript
bubble.cpp:24: error: invalid types ‘int[int]’ for array subscript
bubble.cpp:25: error: invalid types ‘int[int]’ for array subscript
bubble.cpp:25: error: invalid types ‘int[int]’ for array subscript
bubble.cpp: In function ‘int main(int, char**)’:
bubble.cpp:53: error: ‘u8’ was not declared in this scope
bubble.cpp:53: error: template argument 1 is invalid
bubble.cpp:53: error: template argument 2 is invalid
bubble.cpp:53: error: invalid type in declaration before ‘=’ token
bubble.cpp:53: error: ‘u8’ cannot appear in a constant-expression
bubble.cpp:53: error: template argument 1 is invalid
bubble.cpp:53: error: template argument 2 is invalid
bubble.cpp:56: error: request for member ‘at’ in ‘* v’, which is of non-class type ‘int’
bubble.cpp:64: error: request for member ‘at’ in ‘* v’, which is of non-class type ‘int’

чего ему не хватает, чтобы увидеть __int8?

заменил пока __int8 на char, результаты такие:

[ ~/p/test ] time ./bubble-O2 50000
3.91 seconds
./bubble-O2 50000  3,92s user 0,00s system 100% cpu 3,916 total
[ ~/p/test ] time ./bubble-O3 50000
3.87 seconds
./bubble-O3 50000  3,88s user 0,00s system 100% cpu 3,879 total
[ ~/p/test ] time ./sbcl-bubble 50000
Evaluation took:
  4.642 seconds of real time
  4.640000 seconds of total run time (4.640000 user, 0.000000 system)
  99.96% CPU
  12,406,506,587 processor cycles
  0 bytes consed
  
./sbcl-bubble 50000  4,64s user 0,04s system 100% cpu 4,673 total

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

>Лисп
Какой лисп? Emacs Lisp? Ну этот то да, наверное, интерпретируется.

Чтобы компилятор лиспа смог выбросить байткодоподобную чепуху из кода надо ему столько инфы о типах скормить, что всё метапрограммирование скатывается на уровень си.

SBCL(как и почти все остальные компиляторы CL) всегда компилирует в машинные коды. В стандарте есть функция http://l1sp.org/cl/disassemble
Рекомендую ее попользовать и посмотреть выхлоп.

Приплести тут метапрограммирование мог только тролль с ЛОРа. МП и оптимизация это ортогональные понятия. Одно другому не мешает. Даже наоборот, МП помогает в деле оптимизации.

А по-хорошему передавать в функцию два итератора, а не быдлоиндексы.

Вот тогда вариант на C++ точно будет тормозить как на интерпретируемом языке.

Хотябы параметры функции объявить как const.

С какой радости? Вектор в процессе выполнения функции меняется.

gcc 4 работает в маздае?

в тесте 4.5.0
http://img94.imageshack.us/img94/3424/gcc450.png

sbcl - 1.0.40

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