IDE do małego projektu? Tylko Atom!

Kolejny tydzień mija, a projekcik idzie bardzo powoli. Tym razem zamiast na kodzie, skupiłem się na IDE. Jak wypadł Atom na tle VIM’a, którego używałem wcześniej? Przekonajmy się!

Co by tu zrobić, żeby projektu nie robić…

Ciężko połączyć studia dzienne, pracę, koło naukowe i prowadzenie projektu oraz bloga. Ten tydzień miał zmienić ustawicznie niewielki postęp w projekcie, jednak jak to zwykle bywa, nie wyszło. Do rozwijania tego projektu używałem kilku okien z VIMem. Jest to spowodowane faktem, iż kod piszę bezpośrednio na Raspberry i łączę się z nim po wi-fi. Do jednego, max dwóch plików z kodem + trzecia konsola na testowanie, było znośnie, jednak przy pisaniu biblioteki rozbitej na kilkanaście plików, kodzenie stało się niezmiernie uciążliwe. W ten sposób przebimbałem większość tego tygodnia próbując alternatywnych rozwiązań.

Na pierwszy ogień poszły pluginy do VIM’a, które pozwalają na otwieranie wielu plików jednocześnie, jednak nauka kolejnej serii skrótów klawiszowych i komend nie przychodziła mi zbyt łatwo. Na dodatek trudniej było się przełączać między różnymi oknami i różnymi plikami w VIMach (myliły mi się okna). Pewnie wymagałoby to na dłuższą metę przyzwyczajenia. Pomysł szybko odrzuciłem.

Dalej przyszła kolej na klienta SFTP + automatyczne otwieranie plików w Notepadqq (w wersji windowsowej Notepad++). Niby ujdzie, jednak liczba otwartych okien szybko puchła i praca stawała się uciążliwa. Potem próbowałem cięższych IDE w stylu NetBeans’a, które jednak są toporne w użyciu, pożerają sporo zasobów i jakoś tak średnio współpracują z projektami trzymanymi zdalnie, w dodatku pisanymi w Pythonie.

Nowa nadzieja

Pod koniec tygodnia przypomniałem sobie o Atomie, o którym usłyszałem od kolegów na szkoleniu jakiś czas temu. Jego filozofia to: dostajesz turbocustomizowalny, ładny i szybki notatnik na sterydach i rób sobie z nim co chcesz. Jego głównymi zaletami jest bycie projektem Open-Source, możliwość customizowania dosłownie wszystkiego, tona community-made pluginów, ładny wygląd i całkiem niezła szybkość. Doinstalowałem sobie podpowiadanie składni do Pythona, zintegrowanego klienta SFTP, zintegrowany terminal, zmieniłem styl na ciemny i zacząłem testować.

Całość działa super-szybko, wygląda całkiem ładnie i ma wszystko czego potrzebuje początkujący lub średnio-wymagający programista do szczęścia. Jak do tej pory, nie znalazłem jeszcze pomysłu na plugin, którego by mi brakowało i nie byłby dostępny do pobrania prosto z obszernej bazy z poziomu programu (lub konsoli). Idąc za ciosem tego samego programu użyłem do drugiego projektu, tym razem w NodeJS. Głównym celem było napisanie automatycznego i niezawodnego scrapera (programu serwerowego do zapisywania w bazie danych zawartości strony internetowej) do wyjątkowo beznadziejnego planu zajęć wydziału na uczelni, na której studiuje.

Tym razem dałem się ponieść szaleństwu i zainstalowałem wszystkie pluginy jakie tylko wydały mi się pożyteczne. W skład weszły dodatkowe pluginy do:

  • podpowiadania składni
  • pisania kodu zgodnie ze standardami (odpowiednia ilość spacji, brak zadeklarowanych, nieużywanych zmiennych, wymuszanie standardu czytelnej składni itp.)
  • generowania półautomatycznie dokumentacji metod
  • automatycznego podpowiadania plików przy require i importach (mniej więcej odpowiednik include z C)

Środowisko dalej śmiga bardzo ładnie i równie szybko co wcześniej, spełniając wszystkie wymogi których od niego oczekuję. Posiada niezwykle bogatą bazę modułów do wszelakich mniej lub bardziej popularnych frameworków JavaScriptowych i skryptowych języków programowania, mimo tak młodego wieku programu. Wnioskuję więc, że z rozszerzenia pisze się zdecydowanie łatwiej, niż do NetBeansa czy Eclipse. Niestety, jeden z pluginów (chyba Linter dla JS’a) ma prawdopodobnie jakiś błąd. Raz na jakiś czas przy włączaniu programu pojawia się dymek informujący, że coś poszło nie tak podczas startup’u, jednak nie zwracam na to szczególnej uwagi. Dymek można zamknąć i nie przeszkadza to ogólnie w użytkowaniu aplikacji. Wszystko inne działa jak należy.

Podsumowując

Atom to młode, acz świetne środowisko, przed którym droga do zawojowania świata stoi otworem. Jest taką open-source’ową wersją Sublime, a jego główną siłą jest przede wszystkim stale rosnące i rozwijające go community. Nie wiem czy nadaje się do wielkich projektów, gdzie pliki zaczynają być liczone w dziesiątkach tysięcy. Nie testowałem go też z językami typowo kompilowanymi. Mogę jednak zdecydowanie i śmiało go polecić do pisania małych oraz średnich aplikacji w popularnych językach interpretowanych jak Python, JavaScript, Ruby czy PHP. Jak się sprawuje w innych zastosowaniach – przekonaj się sam 🙂 W końcu to darmowe i całkiem lekkie oprogramowanie.

Co do projektu

Mimo wszystko znalazłem kilka godzin na przepisanie podstawowych funkcji biblioteki, takich jak wyświetlanie tekstu, czy czyszczenie wyświetlacza. Bez bicia przyznaję, że część odpowiedzialną za komunikacje i wyświetlanie tekstu na urządzeniu wzorowałem w dużej mierze na bibliotece od Adafruit, którą umieściłem na Blogu w poprzednim wpisie dotyczącym projektu. Całkowicie od zera będę jednak pisał całe menu, którego zalążek pojawi się, mam nadzieję, już w przyszłym tygodniu.