Czas biegnie nieubłaganie i coraz częściej doświadczam olśnienia właściwego przeznaczania czasu na rzeczy, które mają dla mnie znaczenie (zamiast na takie, które jedynie przez krótki moment wydają się być wartościowe). Widzę to chociażby na przykładzie moich dzieciaków, szczególnie tego najmłodszego, ale również i najstarszej. Pierwszy może pochwalić się pierwszym ząbkiem (poza innymi nowinkami, którymi obdarza nas właściwie każdego dnia), a druga ukończoną 18tką (!) Jak ten czas leci! Kiedy dodać do tego "zabawę" w egzamin gimnazjalny u drugiego syna, czasu zdecydowanie nie starcza na wszystkie uciechy.
Mimo to, nie poddaję się ze Scalą i wykorzystując czas w drodze do pracy komunikacją miejską udało mi się przejść przez darmowy rozdział Functional Programming in Scala. Nie zamierzam się rozpisywać na jej temat, bo można krótko: "Polecam!" Jeśli tylko autorzy utrzymają narrację, zapowiada się naprawdę wyśmienita książka. Każdemu początkującemu w programowaniu funkcyjnym polecam, a jako, że przykłady będą w Scali, to zainteresowanym tym językiem przede wszystkim. W zasadzie trudno wyobrazić mi sobie programistę dowolnego poziomu, który nie skorzystałby z lektury tej książki. Chociaż, jeśli się zastanowić, to jest to wrażenie po jednym rozdziale, który koniec końców nie jest zapewne jeszcze nawet w finalnej wersji. Nadzieja jest i poprosiłem Manning o dostęp do MEAP. Właśnie dostałem odpowiedź, że zgoda jest. Będzie okazja dostąpić zaszczytu przeczytania kolejnego rozdziału "Strictness and laziness".
Jako, że próbuję ukończyć lekturę innej książki o programowaniu funkcyjnym, tyle że w F# - Real-World Functional Programming (With examples in F# and C#), to Scali nie poświęcam tyle czasu, ile chciałbym. Nie zapominam również o Clojure, któremu poświęciłem wszystkie moje publiczne wystąpienia w 2012 do tej pory. A jest jeszcze planowanych kilka (niektóre jeszcze niepotwierdzone) - GeeCON, spotkanie na Warszawa JUG, podobnież Softdevcon, jar.camp(), podobnież Eclipse DemoCamp w Poznaniu i Warszawie, oraz planowane wspólne wystąpienie z Grzegorzem B. na Confiturze. Jeszcze będzie spoooro tego Clojure w moim życiu. Konrad Garus utwierdza mnie w przekonaniu, że nawet uda mi/nam się coś w Clojure napisać - zachęcam do udziału w zabawie w projekcie librarian-clojure.
Kiedy jednak zasiadam przy kompie, zaczynam od odrobiny Clojure, a później szczypty Scali. Jest to o tyle łatwe, że wystarczy uruchomić lein2 repl, aby doświadczyć przyjemności pracy z Clojure, a scala, aby skorzystać z interpretera Scali.
I tak bodajże wczoraj zasiadłem przy Scali i kiedy zacząłem wpisywać kawałki kodu javowego, jakoś niechcący skorzystałem z klawisza tabulacji. Jakież było moje zdumienie, kiedy dla typów z dopiero co zaimportowanego pakietu java.net (import java.net._) zacząłem dostawać w odpowiedzi dostępne klasy, a później nawet i ich składowe - metody i pola. Trzeba było widzieć moją minę, kiedy uzmysłowiłem sobie siłę środowiska Scala, w którym mogłem śmiało wpisywać wyrażenia javowe, które wcześniej wymagały ode mnie pracy w IDE - nie zawsze zgodnie z moimi potrzebami.
Spróbuj samemu/-ej. Wystarczy pobrać dystrybucję Scali, uruchomić interpreter scala i zacząć od importu wybranego pakietu. Wtedy TAB i voila. Próg wejścia bardzo obniżony mając do dyspozycji bardzo dynamiczne środowisko, w którym odpowiedź jest natychmiastowa. To lubię!
p.s. Wciąż nie mogę oduczyć się rozpoczynania od nawiasu, kiedy widzę środowisko scala. Czarne tło interpretera Scali nie sprzyja koncentracji?
W nawiązaniu do TAB, to działa również coś takiego:
OdpowiedzUsuń$ more moj-plik-o-bardzo-dlugiej-nazwie.scala
println("Pozdrawiam! Grzegorz Balcerek")
$ scala
(...)
scala> :load ./mo
Teraz wciskam TAB (a potem ENTER) i dostaję:
scala> :load .\moj-plik-o-bardzo-dlugiej-nazwie.scala
Loading .\moj-plik-o-bardzo-dlugiej-nazwie.scala...
Pozdrawiam! Grzegorz Balcerek
Sądzę, że tego typu usprawnienia sprawiają, że nauka nowego języka staje się przyjemniejsza. Małe, a cieszy.
OdpowiedzUsuń