Witaj F#!

Każda przygoda z nowym językiem programowania musi niezawodnie zacząć się od programu wypisującego na ekran jakiś napis. Zmęczony służbową podróżą, zakwaterowaniem w hotelu, dwudniowym szkoleniem i zauważalną niestety zmianą klimatu (pada!), postanowiłem zacząć poznawanie F# od skompletowania niezbędnych narzędzi i napisania mojej własnej wersji klasycznego programu.

Instalujemy kompilator

W chwili, w której piszę ten post F# ma na nadal status języka eksperymentalnego, co oznacza między innymi to, że jego kompilatora i narzędzi należy szukać na stronach Microsoft Research: http://research.microsoft.com/fsharp/fsharp.aspx. Na stronie języka znajdziemy:

  • link do strony, z której można pobrać pakiet instalacyjny,
  • spis zalet języka (niezwykle przydatny w internetowych wojnach religijnych na temat wyższości F# nad C#, Haskellem, Javą, asemblerem i innymi mniej lub bardziej egzotycznymi językami programowania),
  • zestaw krótkich tutoriali, które pozwalają w ekspresowym tempie zabrać się do tworzenia prostych programów,
  • podręczniki: języka, jego bibliotek oraz narzędzi, które przy pierwszym kontakcie nieco onieśmielają, ale wydają się być dobrym źródłem informacji,
  • panel z nowościami z małego światka języka F#.

Ze strony http://research.microsoft.com/fsharp/release.aspx pobrałem plik InstallFSharp-1.9.3.14.msi z datą wydania 24 stycznia 2008 (mam więc okazję pobawić się całkiem świeżą zabawką). Instalacja wymaga od użytkownika jedynie zaakceptowania warunków licencji oraz wskazania folderu, do którego zostanie zainstalowany kompilator i reszta narzędzi. Instalator sam zatroszczy się także o zainstalowanie dodatków do Visual Studio, które uprzyjemnią pisanie aplikacji w F#.

Interaktywna powłoka

Wydaje mi się, że jeśli język programowania jest wyposażony w interaktywny interpreter, któremu można podawać pojedyncze polecenia i natychmiast obserwować efekt ich działania, to bardzo przyspiesza on pierwszy etap nauki języka, gdzie dużą rolę odgrywają eksperymenty i możliwość szybkiego przetestowania suchej wiedzy z książek i artykułów. Na myśl przychodzą mi tutaj przede wszystkim języki Python i Ruby, ale nie wolno zapomnieć o bardzo udanym środowisku PLT Scheme, które służy do nauki programowania w języku Scheme i jest środowiskiem rekomendowanym przez, moim zdaniem bardzo dobrą, książkę "How to Design Programs" (Scheme jest także używany w klasycznej książce "Structure and Interpretation of Computer Programs"). Interaktywny interpreter F# (będę też używał nazwy interaktywna powłoka) to program fsi.exe, który znajduje się w katalogu bin w folderze, który wskazano podczas instalacji. Rzecz jasna, warto ten folder dodać do ścieżki systemowej, żeby można było wygodnie uruchamiać powłokę z każdego miejsca w systemie Windows.

Po uruchomieniu programu fsi.exe czeka na nas krótka informacja o programie i wykaz najpotrzebniejszych poleceń konsoli, takich jak dodawanie referencji do zewnętrznych bibliotek, wczytywanie plików czy zamykanie powłoki. W bibliotekach języka F# jest kilka funkcji, które umożliwiają wyprowadzanie napisów na standardowe wyjście. Żeby nie komplikować sprawy, posłużę się funkcją, która wypisuje na wyjście podany napis oraz znak końca linii:

> print_endline "Witaj F#";;

Z tego prostego przykładu można natychmiast zauważyć, że w F# argumentów funkcji (i metod) nie ujmuje się w nawiasy. Wynik działania programu w moim środowisku przedstawia poniższy obrazek.

Interpreter F#

Jak widać, po wydaniu polecenia i zakończeniu go parą średników na ekranie pojawił się długo oczekiwany napis oraz mało zrozumiały dodatek:

Witaj F#!
val it : unit = ()

O tym, co oznaczają te hieroglify postaram się dokładnie opowiedzieć innym razem.

Samodzielny program

Interaktywna powłoka to jednak nie wszystko, na co stać F#. Programy napisane w F# można kompilować do takiego samego kodu IL, co programy napisane w językach C# i Visual Basic .NET. Kompilator, którego potrzebujemy to program fsc.exe znajdujący się w tym samym folderze, w którym znajduje się interpreter. Program, który wpisałem w po znaku zachęty interpretera mogę bez żadnych zmian skopiować do pliku hello_fsharp.fs i skompilować poleceniem:

C:\>fsc hello_fsharp.fs

a następnie uruchomić i uzyskać oczekiwany wynik:

C:\>hello_fsharp.exe
Witaj F#!

Jak widać, kompilacja jest prosta i przy pierwszym spotkaniu oszczędziła mi niespodzianek, krzyków i niezrozumiałych błędów. Oby tak dalej!

A może być tak skorzystać z .NET Framework?

Program, który napisałem korzysta z biblioteki standardowej F#. Na zakończenie chciałbym jednak pokazać, że F# jest pełnoprawnym członkiem .NET-owej rodziny i bez żadnych nakładów można w nim korzystać z bibliotek, które już znamy. Nic prostszego! Aby skorzystać ze znanej i lubianej klasy System.Console i jej metody WriteLine wystarczy napisać:

> System.Console.WriteLine "Witaj F#!";;

żeby w odpowiedzi dostać tę samą, co poprzednio odpowiedź interpretera:

Witaj F#!
val it : unit = ()

Prawda, że to proste? Mam nadzieję, że dalsza nauka będzie równie przyjemna!

Opublikowane 27 stycznia 08 12:22 przez Marcin Hoppe
Filed under:

Komentarze:

Brak komentarzy
Komentarze anonimowe wyłączone