F # och funktionella dator språk: Ut ur labbet och in ditt företag

Sanden på IT-världen är skiftande, som molnet och mobila flytta från är sekundärt till den gamla n-tier + web modell som är dominerade under större delen av det senaste årtiondet. Att stor förändring skiftar språk och verktyg som vi använder, bort från C språkfamiljen (t.ex. C ++, C # och Java) till en som härstammar från mer formella språk som Lisp.

Funktionella programmeringsspråk var, tills nyligen, språk för datavetenskap. Baserat på en ren matematisk metod för programmering, var de grunden för mycket modern datavetenskap forskning, med språk som ML, Haskell, och OCaml. En av de första kommersialiserade funktionella programmeringsspråk var Erlang, utvecklad för att minska risken för fel i telefonnät. Men nu är de skiftande till skrivbordet – och ännu viktigare – till mobila enheter, samt programmering moln värd PaaS plattformar.

Det är viktigt att förstå skillnaden mellan traditionell imperativ programmering tekniker och funktionell programmering. Funktionell programmering är statslös, med matematiska funktioner i centrum för sin verksamhet. En funktion kommer alltid att ge samma resultat för samma ingångar, det är aldrig beroende av resultaten från en annan funktion. Det gör det lättare att förstå hur ett program beter sig, något som är viktigt när man arbetar med en rad externa ingångar – speciellt om du arbetar med streamad eller asynkrona molndata.

Det betyder inte att programmera med funktionella språk är inte så lätt som det är med traditionella programmeringsverktyg, som du behöver för att förstå vissa mycket olika koncept. En mer matematisk metod för programmering innebär att du måste tänka några vanliga programstrukturer och metoder, särskilt när du behöver för att hantera tillstånd.

Apples Swift, med sina rötter i mål C: s Lisp arv, hjälper ta funktionell programmering utanför klassrummet och i den verkliga världen. Även om det är utformat för att vara bekant för C programmerare, dess programstrukturer har mycket att tacka språk som OCaml.

Det är intressant att se Apple fokuserar på ett funktionellt språk som sin nya programplattform för mobila enheter, och ännu mer intressant att se det lindas på ett sätt som gör det lättare för C-familjen utvecklare att plocka upp. Swift är inte en ren funktionellt språk, det är mer som Clojure, med strukturer som kan hantera tillstånd direkt. Men det ger dig många av funktionerna i ett funktionellt språk, och som sådan kommer att vara lätt att lära sig.

Microsoft också rör sig mycket av sitt språk fokus till funktionell programmering, eftersom det bygger på det arbete som programgruppen MSR. En del av detta arbete har lett till frisläppandet – och nu öppna sourcing – F #, ett annat språk som beror mycket på ML och OCaml. Det är också till funktionell programmering funktioner till dess C #.

Som F # är a.Net språk, är det inte förvånande att Xamarin nyligen har lagt till F # stöd till dess verktyg som svar på en stark efterfrågan från den finansiella sektorn. Men F #, som Swift, är idealisk för att bygga smarta ändpunkter som vi behöver för effektiva molnapparna. Molnet är ett kraftfullt verktyg för att hantera stora mängder information, men det behöver verktyg för att extrahera och hantera informationen på ett effektivt sätt – verktyg som behöver arbeta effektivt med asynkrona datakällor, och som kan lita på att ge rätt svar.

Säkerhetsmedvetandet och utbildningspolitik, IT-säkerhet: Gäller, budgetar, trender och planer, Secure reparation Policy, IT-chef guide till databrottslighet

Det finns en hel del som är intressant i F #. För en sak, använder den typhärledning att hantera starka skriva när programmet kompileras. Du behöver inte deklarera en variabel typ, första gången den används, kommer det ställas in på lämpligt sätt – även om du kan ställa typer för egen referens, vilket gör koden lättare att läsa.

Ett område där språk som F # förenklar arbeta med data som skickas tillbaka från molntjänster är i hur de arbetar med tupler, protokoll och listor. Om du alltid få tillbaka samma antal resultat i ett samtal, kan du använda en tabellrad för att lagra data. Alternativt, om (till exempel) du arbetar med ett namn / värde NoSQL källa, kan du använda namngivna poster att hantera skriva och läsa data från källa i ett lättförståeligt sätt.

Där F # fungerar riktigt bra för moln endpoints, särskilt för program som konsumerar flera API: er på en gång, är med sitt stöd för asynkrona och parallella programstrukturer. Asynkrona arbetsflöden är lätt att bygga, vilket ger dig verktygen för att bygga callbacks som arbetar med data som kan levereras när som helst efter en begäran. Det finns också möjlighet att köra flera asynkrona block av kod parallellt (kod som kan köras på grafikprocessorer samt använda standard Windows gäng modeller).

F # har blivit en förstklassig språk i Visual Studio, och det finns stöd för att arbeta med vanliga Windows-verktyg och API: er, including.NET klasser. Detta innebär att du kan skriva Windows Forms aps i F #, samt att arbeta med Microsofts LINQ in-line dataverktyg. För att få en känsla för att arbeta med F # och funktionell programmering, kör Microsoft Research en online F # interaktiv handledning, där du kan skriva kod utan att lämna webbläsaren.

2014: En stor år för utvecklare – och vi är bara halvvägs igenom, Avkodning språket i Microsoft: Vad tillväxt hacking “betyder för Redmond, IT-säkerhet: Det är dags att förändra spelet – och här är hur, Just another singularitet, många platser återanvända heartbleed-äventyras privata nycklar, Sex Klick: Hur håller du reda på alla dina lösenord?

Enterprise Software;? TechnologyOne tecken AU $ 6,2 affären med jordbruk, Samverkan, Vad är organiserande princip i dagens digitala arbetsplatsen,? Enterprise Software, söt SUSE! HPE hakar sig en Linux-distributioner, Enterprise Software, Apple att släppa iOS 10 den 13 september, MacOS Sierra den 20 september

Funktionell programmering är en kraftfull teknik, och en som slutligen har att göra sin väg från forskningslabb i din favorit IDE. Du förmodligen använder appar som använder dessa språk redan, eftersom de kör tillbaka ändarna av många stora molntjänster, liksom att köra komplexa finansiella system – och sociala spel. Men det är i våra fickor att det kommer att göra en skillnad, som ger utvecklare verktyg för att skriva tillförlitlig och förutsägbar, kod som klarar komplexiteten i den moderna mobilnätet.

? TechnologyOne tecknar AU $ 6,2 affär med jordbruk

Vad är organiserande princip i dagens digitala arbetsplats?

Söt SUSE! HPE hakar sig en Linux-distributioner

Apple att släppa iOS 10 den 13 september, MacOS Sierra den 20 september

Vidare läsning