Jaka jest najlepsza implementacja schematu lub LISP dla OS X?

86

Szukam wersji Scheme lub nawet LISP-a, której mógłbym użyć do odzyskania utraconych umiejętności programistycznych Lisp. Niektóre funkcje internetowe byłyby przydatne, ale nie są niezbędne.

Spojrzałem na schemat Plt i MIT i chociaż oba wyglądają całkiem nieźle, Plt wydaje się być bardziej bogaty w funkcje. Przyjrzałem się również implementacjom Lispa, ale wszystkie wydają się dość drogie.

Preferuję darmowe / niedrogie implementacje, ponieważ jest to naprawdę okazjonalne programowanie hobbystyczne. Jakie masz rekomendacje?

Mark Brittingham
źródło
6
Zauważ, że PLT Scheme zmieniło nazwę na Racket.
soegaard
silnie powiązane pytanie: stackoverflow.com/questions/2485859
pnkfelix
2
Dlaczego to pytanie nie zostało zamknięte, a prawie wszystkie inne tego typu już?
Erik Kaplun

Odpowiedzi:

71

Poszedłbym z Racketem. Może nie jest tak szybki jak SBCL, ale ma doskonałe biblioteki i dokumentację, a także zintegrowane środowisko zaprojektowane tak, aby umożliwić Ci tworzenie i uruchamianie programów Scheme bezpośrednio z bramy. To, co naprawdę podoba mi się w IDE Racketa, DrRacket, to to, czego nie musisz robić - nie musisz uczyć się Emacsa, nie musisz uczyć się SLIME, nie musisz się martwić o polowanie na trzecie- biblioteki party, tak jak praktycznie wszystkie biblioteki przeznaczone dla Racketa można znaleźć w pakietach . Podsumowując, naprawdę skraca to krzywą uczenia się i pozwala skupić się na aktualnym zadaniu: pisaniu świetnego kodu.

Jest również wyposażony w serwer sieciowy, jeśli chcesz tworzyć strony internetowe oparte na Racket (które obecnie sprawdzam).

Kyle Cronin
źródło
1
PLT wybrałem mniej więcej przypadkowo kilka tygodni temu i na razie jestem bardzo zadowolony z wyboru. Jak powiedziałeś, mnóstwo bibliotek i dokumentacji, kilka przydatnych narzędzi.
Slartibartfast
Dzięki, nikomu. Bardziej koncentruję się na narzędziach i dokumentacji niż na szybkości, więc wybieram PLT.
Mark Brittingham
1
Jasne. DrScheme jest tworzony z myślą o edukacji, który ma pewne zalety (proste w użyciu i udokumentowane), ale ma też pewne wady; chyba że przechodzisz przez HtDP ( htdp.org ), najlepiej ignorować języki nauczania i używać modułu do wszystkiego.
Kyle Cronin
Oprócz tego, że obecnie nazywa się Racket, istnieje teraz nowy system i katalog pakietów, który w większości przypadków jest preferowany nad Planetą.
Jack
22

Sporo z tym eksperymentowałem.

Clozure Common Lisp (z domu Open MCL) jest zdecydowanie najszybszy; 25-30 procent szybciej niż następny konkurent na moim Intel Mac Mini.

Schemat MIT działa całkiem dobrze na Macu. Wydaje mi się, że ostatecznie skompilowałem to samodzielnie, ale w tej witrynie są pliki binarne. Schemat PLT jest również fajny i prawdopodobnie trochę lepiej zintegrowany ze światem komputerów Mac. (Schemat PLT jest teraz znany jako Rakieta , ale po zmianie nie eksperymentowałem z nim).

Charlie Martin
źródło
2
prawie wszystko, z czym próbowałem; generalnie były to ciężkie operacje na listach i intensywne używanie loopmakra.
Charlie Martin
1
Warto zauważyć, że CCL nie działa na 32-bitowym Intelu, więc mój Mac Mini jest na to trochę stary.
David Thornley
16

Jestem wielkim fanem Clojure, SBCL i Clozure CL. Wszystkie są fantastyczne, ale są też przesadą, jeśli chcesz tylko odświeżyć kotlety Lisping. Wszystkie wymagają absurdalnej ilości poszukiwań informacji, przeszukiwania list mailingowych, instalowania pakietów, czyhania IRC itp.

Dr Scheme po prostu instaluje się i uruchamia. Skończyłem pierwsze 3 rozdziały SICP cztery i pół roku temu, używając Dr Scheme. Nie ma nic głębszego niż samo zdefiniowanie ewaluatora schematu. Kiedy już się rozejrzysz, będziesz miał dużo więcej cierpliwości dla braci przemysłowych.

dnolen
źródło
3
Właściwie nie potrzebowałem niczego więcej do mojej konfiguracji Ubuntu-SBCL-SLIME-stumpwm. Na początek, Practical Common Lisp i CLHS to wszystko, czego potrzebujesz, a to prowadzi do długiej drogi.
Svante
15

W przypadku Scheme DrRacket jest niesamowity (zawarty w Racket ).

Dla Common Lisp, Ready Lisp jest świetny. Pojedynczy dmg z SBCL, Aquamacs i Slime działający po wyjęciu z pudełka.

Z witryny internetowej:

Ready Lisp jest połączeniem kilku popularnych pakietów Common Lisp, szczególnie dla Mac OS X, w tym: Aquamacs, SBCL i SLIME. Po pobraniu będziesz mieć pojedynczy pakiet aplikacji, który możesz kliknąć dwukrotnie - i znajdziesz się we w pełni skonfigurowanej Common Lisp REPL.

Jest idealny dla użytkowników OS X, którzy chcą wypróbować piękno Common Lisp przy minimalnym wysiłku. Może być również używany przez nauczycieli, aby zapewnić swoim uczniom Mac bezpłatne, kompletne środowisko Common Lisp, które można zabrać ze sobą do domu. Wymagania

Aktualna wersja Ready Lisp to 20090127 i wymaga systemu Mac OS X 10.5 (Leopard).

Obejmuje następujące wersje oprogramowania składowego:

Aquamacs  1.6
SBCL    1.0.24
SLIME   2009-01-23
CL-FAD  0.6.2
CL-PPCRE    2.0.1
LOCAL-TIME  0.9.3
SERIES  2.2.10
CL HyperSpec    7.0
paredit.el  20
redshank.el     1
cldoc.el    1.16
Sébastien RoccaSerra
źródło
5

W zależności od tego, jak zdefiniujesz „Lisp”, Clojure może pasować do rachunku. Działa dobrze na OS X (działa wszędzie tam, gdzie działa JVM). Ma funkcje internetowe i jest bezpłatny.

Ma również tę zaletę, że jest nowy, świeży i przyjemny w użyciu. Może być idealny do programowania hobbystycznego. Łatwo jest pisać aplikacje internetowe lub aplikacje GUI (używając Java's Swing lub nawet Qt).

Brian Carper
źródło
4

Sam go nie używałem, ale Steel Bank Common Lisp otrzymał pozytywną opinię na reddicie. Jest open source i darmowy, więc cena jest odpowiednia dla niektórych programów hobbystycznych.

W przeszłości miałem uruchomionego GNU Common Lisp na moim macbooku pro.

Dana
źródło
4

Jeśli szukasz Scheme, możesz rzucić okiem na właśnie wydany JazzScheme .

Marko
źródło
4

Polecam Racketa nowicjuszom, ponieważ zapewnia jedno z najładniejszych IDE dla początkujących użytkowników Scheme (a raczej początkujących programistów, którzy używają Scheme, lub jeszcze lepiej, przechodzą przez HtDP).

http://racket-lang.org/

Inną opcją dla osób, które są bardziej zainteresowane małym systemem Scheme, aby samodzielnie go zmodyfikować lub odczytać jego kod źródłowy, jest Larceny Scheme, który jest interesujący głównie ze względu na jego kompilator JIT, Twobit, sam jest zaimplementowany w całości w Scheme.

http://www.larcenists.org/


Aktualizacja: Ponadto Chez Scheme został niedawno udostępniony jako open source:

https://github.com/cisco/ChezScheme

(Może nie jest tak „mały” jak Larceny, ale ma bardzo agresywny kompilator optymalizujący).

pnkfelix
źródło
na stronie internetowej wydaje się, że wspominają tylko o kompilatorze natywnym, kompilatorze do C i implementacji CLR - gdzie jest JIT?
Erik Kaplun
Natywny kompilator to JIT.
pnkfelix
(to znaczy, że dynamicznie kompiluje każde wyrażenie Scheme, które podajesz przez 'ładowanie' lub REPL do kodu maszynowego x86. JIT jest tutaj dla "just in time"; nie ma związku z Javą i JVM, na wypadek, gdybyś to myślałem, że mam na myśli JIT)
pnkfelix
Nie sądziłem, że ma to coś wspólnego z Javą; po prostu strona główna mówi „kompiluje bezpośrednio do natywnego kodu maszynowego” , a nie tak zwykle opisuje się maszyny wirtualne / interpretery kompilujące JIT.
Erik Kaplun,
1
Odpowiadając na twoje pytanie, nie możesz naprawdę uzyskać samodzielnego pliku binarnego od Larceny w obecnej postaci. Możesz załadować swoje źródło Scheme, a następnie serializować jego stertę (ze skompilowanym kodem) do obrazu sterty, ale nawet wtedy nadal będziesz musiał ponownie dystrybuować plik sterty i plik binarny środowiska wykonawczego jako oddzielne pliki. Rozważałem próbę ułatwienia scalenia tych dwóch w jeden obraz binarny, ale nigdy nie zdecydowałem się na ten krok.
pnkfelix
3

Możesz rzucić okiem na to, co jest w Association of Lisp Users lub Common Lisp Wiki, aby zobaczyć, co tam jest. Ustawiłem się z Steel Bank Common Lisp i Emacs, ale jak dotąd niewiele z tym zrobiłem.

David Thornley
źródło
2

Jeśli jesteś tylko programistą hobbystycznym, LispWorks ma darmową, osobistą wersję, która jest dość potężna i wyrafinowana. Największym problemem jest limit czasu działania wynoszący kilka godzin. Więc nie będziesz w nim pisać żadnych długo działających serwerów, ale to nie znaczy, że nie jest to przydatne narzędzie.

CLISP działa na prawie wszystkim i jest całkiem niezły, po prostu nie obsługuje wątków. (Ważne, jeśli chcesz napisać prawdziwy serwer, ale jak pokazały nam PHP i Perl, Apache + [język wstawiania] jest bardzo opłacalną platformą).

Will Hartung
źródło
1

Ostatnio zadaję sobie to samo pytanie. Używając DrScheme na OS X, byłby to mój pierwszy wybór dystrybucji Scheme dla dowolnej platformy. Bardzo ładne IDE, funkcje debugowania i dobry zestaw bibliotek / frameworków (w tym bardzo fajny zestaw narzędzi GUI, który `` po prostu działa ... nawet na Macu '' ;-))

Jednak teraz szukam podobnie wygodnego środowiska dla Common Lisp. Sprowadziło się do CCL (OpenMCL) kontra SBCL. Wydaje się, że SBCL jest popularnym wyborem, ale czytałem, że na OS X nie obsługuje wątków. (Czy to naprawdę problem?). Z drugiej strony Clozure CL oferuje dobre wsparcie dla natywnych wątków, mostu obcj itp.

Wydaje mi się, że CCL jest trochę dziwne, ale zamierzam się tego trzymać przez chwilę - nadal wygląda na logiczny wybór do integracji.

Używam Emacsa 23 (zbudowanego ze źródeł przy użyciu --with-ns) i Slime'a jako środowiska i to działa dobrze dla mnie. :-)


źródło
1

Zauważyłem, że Chicken działa dobrze w programie Scheme i jest dostępny za pośrednictwem homebrew.

brew install chicken

Większość kodu z SICP działa z niewielkimi modyfikacjami.

Justin Meiners
źródło