01 marca 2010

Inicjacja w F# już za mną - pierwsza aplikacja kliencka, która działa

Właśnie zakończyłem moją inicjację w F# (również znanego jako fsharp).
#light

open System
open System.Net
open System.IO
open System.Diagnostics

let HttpPost (url:string) =
let request = WebRequest.Create(url) in
request.Method <- WebRequestMethods.Http.Post;
request.ContentType <- "application/x-www-form-urlencoded";

let response = request.GetResponse() in
let reader = new StreamReader(response.GetResponseStream()) in
reader.ReadToEnd()

do let response = HttpPost "http://java.sun.com" in Console.WriteLine("odpowiedź: {0}", (response))
Nie jest to arcydzieło programowania funkcyjnego czy obiektowego, a przypomina stare dobre czasy programowania proceduralnego w C, więc możnaby powiedzieć, że nie ma się czym chwalić, ale chodziło mi raczej o zwrócenie uwagi w stronę tego języka i zdobycie kilku komentarzy, czy warto, czy idę w dobrą stronę, itp. Owe (arcy)dzieło stworzyłem na bazie przykładu Simple Web Service Consumer i zmierzam do czegoś bardziej wyrafinowanego, co w odpowiedzi otrzyma obiekt ze świata Javy. Taka skromna integracja światów .Net/F# ze SCA.

Skąd pomysł na fsharp? Wszystko zaczęło się od Clojure i mojego pierwszego na poważnie spotkania z językami funkcyjnymi. Coś we mnie pękło, coś się przestawiło i z programowania obiektowego zwróciłem się w stronę programowania funkcyjnego (PF). Podobno nie jest tak ciężko, a na pewno bardziej wieloprocesorowo i mniej pamięciożernie. Zalety są, a jedyną wadą, na jaką wciąż trafiam, to w zasadzie słabe rozpoznanie tego obszaru. Może dlatego mnie tak na to wzięło (objaw duszy odkrywcy?).

Komentarz Mateusza Mrozewskiego do Nowy serial "SCA praktycznie" - Zestawienie środowiska z Apache Tuscany i Eclipse IAM uzmysłowił mi, że brakuje mi języka spoza JVM, który mógłby być klientem usługi ATOMowej z artykułu. Przecież nie będę wracał do C czy C++, a do C# nie mam narzędzi, a nawet i systemu operacyjnego (od stycznia siedzę wyłącznie na MacOS), więc przypomniało mi się z F#. A może jest coś jeszcze alternatywnego i równie ciekawego?

Zainteresowanym programowaniem w F# proponuję książkę F# Programming na WikiBooks, bo sam poza istnieniem języka i kilku jego cech oraz tym pierwszym programem/skryptem, nic więcej nie wiem.

W planach mam opisanie konfiguracji środowiska do F# na MacOS, ale na razie walczę z zadaniem od Mateusza i lekturą kolejnej książki "Growing Object-Oriented Software, Guided by Tests", więc albo należy cierpliwie poczekać, albo przekonać mnie do zmiany planów :)