Väike võrdlus erlang vs. java
Nädalapäevad tagasi oli headel kolleegidel põnev programeerimisülesanne: ehitadada pisike programmike, mis näitaks google mapi peal miski teenuse leviala.
Ülesanne iseenesest lihtne – leviala on antud hunniku polügoonidena ning pead vaatama kas sind huvitav punkt jääb mõne polügooni sisse. Tõenäoliselt üks esimese kursuse programmeerimise ülesanne. Aga tundus piisavalt põnevana, et proovida ise ka järgi, kas saab hakkama.
Sai küll. Tulemused erlang vs. java
- 396 rida erlangi koodi
- ca. 4-6 tundi aega
- 917 rida java koodi
- ca. 2-3 päeva aega
Aeg on hinnanguline, kuna ei minul ega kolleegil polnud see põhitegevus. Päris nelja korda produktiivsem võrreldes imperatiivse programmeerimisega just polnud aga mingi täiesti arvestatava eduteguri sai küll.
Kasvõi esialgne lihtsustatud versioon ainult bounding boxi arvestamisega tuli äärmiselt lihtsalt:
find_bounded(Lat, Lon, AreaList) ->
lists:filter( fun(#coverage_area{boundingbox=Box}) ->
{{MinLat,MinLon},{MaxLat,MaxLon}} = Box,
if
Lat >= MinLat andalso Lat =< MaxLat andalso
Lon >= MinLon andalso Lon =< MaxLon ->
true;
true ->
false
end
end, AreaList).
Sellega sai loogika tööle. Edasine oli ainult optimeerimine ja reaalne punkti polügoonis asumise algoritmi lisamine.