Clojure – Environment choice

Jak to zwykle bywa – zabawa z nowym językiem zaczyna się od postawienia odpowiedniego środowiska.

W kwestiach systemu operacyjnego clojure nie jest wybredny. Mac, Windows czy inny Linux – wszystkie są wspierane z racji współpracy z JVM. Zatem wybór OS będzie co najwyżej ograniczał dostępne nam narzędzia.

Z narzędzi jakie będą nam potrzebne to:

  • Clojure (w wybranej wersji JVM/CLR/JS)
  • Git
  • Leiningen
  • Edytor tekstu/IDE

Więc po kolei:

Clojure

Sam w sobie clojure w wersji JVM dostępny jest tutaj.
Oczywiście potrzebujemy też JDK aby hostować clojure w owej JVM.

Wersja CLR dostępna jest na githubie. Tutaj zamiast JDK możemy wybrać sobie standardowy .NET, Mono albo .NET Core. 1

Wersję Js można pobrać z repozytoriów mavenowych + tutaj również jest wymagany JDK. (Coś musi nasz kod przekompilować do tego JavaScriptu)

Git

Git jest na tyle popularny, że raczej nie ma co się nad nim rozpisywać.
Jedynie napomknę, że systemy unixowe pobierają go sobie standardowo z repozytoriów systemowych (apt-get te sprawy) a wersja Windowsowa śmiga na MinGW i jest do pobrania tutaj: git-scm.

Leiningen

Leiningen is for automating Clojure projects without setting your hair on fire.

Dokładnie.
Nic dodać nic ująć.

Będziemy z niego korzystać do stawiania nowych projektów, uruchamiania testów czy pobierania zależności.
Dostępny zarówno dla Unixów i Windowsów tutaj.

Edytor tekstu/IDE

Ok, tutaj można już przebierać. Edytorów tekstów jest od groma (vim, sublime, emacs, vs code, notepad++) no i IDE też jest kilka (IntelliJ, Visual Studio, Eclipse, Netbeans). Praktycznie wszystkie są dostępne na dowolny system operacyjny z wyjątkiem Visual Studio ofc.

Zatem mój setup to:

  • Windows 10 64bit
  • Clojure 1.8 JVM
  • Git scm
  • Leiningen
  • Cursive (IntelliJ plugin) jako IDE

Ale jak to tak na Windowsie? Na Windowsie?!

A czemu nie? Całkowicie bez sensu było by zmienianie systemu tylko po to aby bawić się nowym językiem. Poza tym maszyna na której pracuje służy do wielu innych rzeczy z którymi Linux czy Mac by sobie nie poradził (odpalił ktoś na którymś z nim MGS5/SC2/FL Studio/Guitar Pro czy podłączył bezprzewodowego pada z X360/XO, nie mówiąc już o Visual Studio).

A dlaczego akurat wersja JVM a nie CLR skoro już z Windowsa korzystasz?

Multiplatformowość – jedna jarka i po kłopocie. Poza tym jest to “oficjalna” wersja, więc wydaje mi się, że najlepiej zacząć od tej. Z czasem pewnie zaglądnę do wersji CLR i Js aby sprawdzić jak wygląda portowanie jar -> dll/js.

Git scm to wersja konsolowa – nie korzystasz, z żadnego GUI? No w końcu to Windows!

Nope, dla mnie najbardziej wygodna i czytelna jest konsola.

Poza Leiningenem jest również Boot – czemu akurat Leiningen?

Hmm, dobre pytanie. Nie mam tu konkretnego zdania więc podrzucę coś z reddita:

So should you switch (from Leiningen)? The short answer: of course not 🙂 Should you use boot for new projects? Absolutely!

Jednakże, mimo iż boot jest bardzo kuszący – zostanę jednak przy Leiningenie. Wiąże się to z następnym punktem.

A dlaczego akurat IntelliJ a nie chociażby Visual Studio?

Przy wyborze IDE zeszło mi chyba najdłużej. Miałem kilku kandydatów:

  • Visual Studio
  • VS Code
  • Emacs
  • IntelliJ

Visual Studio raczej odpada na samym początku – odpalam tego kloca jak najrzadziej mogę. Jeżeli jest coś innego co wspiera clojure i jest co najmniej tak samo funkcjonalne (bo raczej wolniejsze niż VS nie będzie) – to biorę.

VS Code – pierwsza alternatywa po Visual Studio. Bardzo fajny edytor tekstu z opcją tworzenia komend. Ciężko coś więcej o nim nawet powiedzieć. Po podpakowaniu go odpowiednimi komendami i pluginami pewnie jest całkiem funkcjonalny – ale wsparcie do clojure nie powala.

Emacs – lekki edytor tekstowy z potężnym wsparcie do clojure. Edycja strukturalna kodu, REPL – te sprawy. Pozycja zaprawdę kusząca ale wymagająca poświęcenia czasu do okiełznania.

IntelliJ – też kombajn do wszystkiego chociaż już nie tak opasły jak Visual Studio. Kiedyś jak przymierzałem się do clojura to miał wsparcie pluginu La-Clojure. Teraz jest już nie rozwijany a w miejsce jego pojawił się Cursive.

Cursive zapewnia większość funkcjonalności jakie potrzebujemy do pisania w clojure:

  • Edycja strukturalna
  • Integracja z Leiningen
  • Debugger
  • Wsparcie unit testów
  • REPL

No i zarówno IntelliJ i Cursive są darmowe do nie-komercyjnego użytku.
Więc wybór padł na Cursive/IntelliJ.

A zatem, skoro środowisko już mamy gotowe, to czas je przetestować!

napoleon-gif-penguin-1268305

  1. Wersja CLR jest zatem dostępna poza Windowsami

Be First to Comment

A penny for your thoughts