Jag har fått en känsla av att funtionella programmeringsspråk vinner mer och mer mark.
Använder du nåt funktionell programmeringsspråk? Isåfall vilket? Gillar du funktionell programmering?
Har du något boktips för att bli bättre på funktionell programmering? tänker då mest på användandet av högra ordningens funktioner, anonyma funktioner mm.
Några funktionella språk jag sett det skrivits mycket om är: Haskell, Standard ML, Erlang och Lisp.
Jag tror att funktionell programmering (FP) börjar bli mer och mer intressant pga att grundläggande egenskaper inom FP och många FP-språk ger applikationer och utvecklare distribution och parallellisering av kod "på köpet".
Om man följer de riktlinjer som FB uppmuntrar så isoleras exekveringsflöden från varandra vilket dels gör det enklare att bygga distribuerade system samt undvika några av de vanligaste buggarna som ofta dyker upp när olika processer delar objekt/minnesutrymmen etc. I exempelvis Erlang är det ingen större skillnad på en distribuerad eller lokal parallelliserad process. Och iom att moores lag börjar ge vika för just parallella och distribuerade program, tror jag FP ligger helt rätt i tiden.
Med det sagt finns det ändå tillfällen jag tycker OO (imperativa språk) känns mer organiserat och enklare att arbeta med då jag inte finner något FP-språk lika utvecklat för den breda programmeringsvärlden som de stora OO-ramverken och OO-språken (.NET, Java, ...). Det största exemplet är vid utveckling av användarinterface där FP inte alls är speciellt utvecklat, kanske med all rätt. FP är bättre på annat.
Såsom när det kommer till att skapa effektiva större system med uppgift att ta emot många parallella anrop, parsa, behandla och svara, skulle jag nog de flesta dagarna i veckan välja en FP-plattform, men det beror som alltid på hur omgivningen ser ut. :)
Annars jobbar jag med Erlang även om jag lekte en del med SML och Haskell i skolan. Så för mig tycker jag du lika väl kan börja med någon Erlang tutorial (learnyousomeerlang.comGetting Started (pdf)) och kanske köpa den senaster erlangboken från O'Reilly. SML har jag mest använt för att lära mig FP och i kompilatorer, så vet inte hur mycket det används i industrin. Haskell och Lisp vet jag för lite om för att kunna säga något vettigt.
Angående Högre ordningens funktioner och anonyma funktioner är det visserligen väldigt viktigt att förstå vad det innebär, men alltförofta skapar ett överutnyttjande av anonyma funktioner ett svårare system att underhålla. (Att debugga en funktion som tar emot en anonym funktion från ett distribuerat system är oftast jobbigare än enkla funktionsanrop) Det första jag tycker du ska lära dig och förstå inom FP och Erlang är rekursion, pattern matching och därefter Erlang VM processhantering. Förhoppningsvis ser du snart styrkan och enkelheten med FP för att bygga stabila och snabba system.
Om man som jag främst kodat i Java så kan Scala vara värt att titta på. Scala blandar OOP och FP. Själv är jag dock inte speciellt insatt i språket, har precis köpt en bok och försöker finna tid att läsa den.
Annars jobbar jag med Erlang även om jag lekte en del med SML och Haskell i skolan. Så för mig tycker jag du lika väl kan börja med någon Erlang tutorial (learnyousomeerlang.comGetting Started (pdf)) och kanske köpa den senaster erlangboken från O'Reilly. SML har jag mest använt för att lära mig FP och i kompilatorer, så vet inte hur mycket det används i industrin. Haskell och Lisp vet jag för lite om för att kunna säga något vettigt.
Angående Högre ordningens funktioner och anonyma funktioner är det visserligen väldigt viktigt att förstå vad det innebär, men alltförofta skapar ett överutnyttjande av anonyma funktioner ett svårare system att underhålla. (Att debugga en funktion som tar emot en anonym funktion från ett distribuerat system är oftast jobbigare än enkla funktionsanrop) Det första jag tycker du ska lära dig och förstå inom FP och Erlang är rekursion, pattern matching och därefter Erlang VM processhantering. Förhoppningsvis ser du snart styrkan och enkelheten med FP för att bygga stabila och snabba system.
Lycka till! ;)
Intressant med en Erlang-programmerare på wF! Jag har faktiskt testat lite erlang tidigare och kört igenom den där Getting Started som du länkade till. Jag köpte boken Programming Erlang av Joe Armstrong som är ganska bra. Det svåra med Erlang för mig just nu är att jag inte kommer på nåt vettigt hobbyprojekt för att lära mig mera. Det är ju inte så lätt att göra grafiska saker så då blir det lite tyngre. Språket lämpar sig ändå bäst för olika serversystem. Men har börjat leka lite med YAWS, det verkar skoj, så det kanske kan vara rätt väg att lära mig mera. Jag tror faktiskt att jag redan har hyfsad koll på rekursion, pattern matching och "lättprocess"-hanteringen. Men boken lärde ju inte ut nåt om just "funktionell programmering", så det var därför jag frågade lite efter boktips på det.
Jag har fått uppfattningen att SML används mest i system som kräver formella bevis, det är väl från det området språket kommer också.
Vet inte men kanske finns det fler? Vet att någon sysslade med Erlang för några år sen om man söker lite i wF-historien.
ericiz skrev:
Jag har faktiskt testat lite erlang tidigare och kört igenom den där Getting Started som du länkade till. Jag köpte boken Programming Erlang av Joe Armstrong som är ganska bra. Det svåra med Erlang för mig just nu är att jag inte kommer på nåt vettigt hobbyprojekt för att lära mig mera. Det är ju inte så lätt att göra grafiska saker så då blir det lite tyngre. Språket lämpar sig ändå bäst för olika serversystem. Men har börjat leka lite med YAWS, det verkar skoj, så det kanske kan vara rätt väg att lära mig mera. Jag tror faktiskt att jag redan har hyfsad koll på rekursion, pattern matching och "lättprocess"-hanteringen. Men boken lärde ju inte ut nåt om just "funktionell programmering", så det var därför jag frågade lite efter boktips på det.
Yaws eller någon av alla erlang webbservrar kan vara en bra start att kombinera webb med FP (Använder själv Yaws i flera projekt så fråga på om du har någon fundering :) ). Kanske hitta en webbservice du skulle kunna tänka dig utveckla och kör på. En ajaxbaserad webb-chat till exempel? Där får du anledning att köra exempelvis varje chat-session som egna erlangprocesser (ex gen_server), testa erlangs eventhanter (gen_event) etc. Bara ett förslag förstås.
ericiz skrev:
Jag har fått uppfattningen att SML används mest i system som kräver formella bevis, det är väl från det området språket kommer också.
Stämmer bra. Poppis på universiteten. Blev mycket SML när man byggde kompilatorer eller läste semantik under UU-tiden.
253 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25