Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

FOSS och innovation

Det sägs ju ofta i FOSS-kretsar att öppen kod och ett utvecklingsklimat där vi fritt kan hjälpa varandra med kod leder till innovation och framåtskådande lösningar. Om detta nu stämmer, hur kommer det sig då att de allra flesta FOSS-projekt fortfarande utvecklas i C eller, om det är ett riktigt nytt och modernt projekt, Python, C++ eller C#, medan t ex Microsoft drar på framåt i 120 knyck med F#?

C++ är ett halvt steg framåt och fem kilometer bakåt jämfört med C; C# är en marginell förbättring över Java och Python är så konservativt att man ofta hittar rester av det på bronsyxor, mumier och mjukvarupatentförespråkare. Var är FOSS-projekten skrivna i Erlang, O'Caml, F# och Haskell? Hatar FOSS-världen effektivisering och parallellisering, eller är de, i likhet med sina proprietära kollegor, för tröga för att greppa funktionell programmering och Hindley-Milner?

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

pluckers bild

Hur tänkte du när du kom fram till att valet av programmeringsspråk är den avgörande faktorn om en lösning är "innovativ och framåtskådande"?

Dessutom för att få "ett utvecklingsklimat där vi fritt kan hjälpa varandra med kod" så är en bra början att ha ett gemensamt språk, dvs. det är rätt självklart att de "vanliga" språken är störst.

Du får gärna förklara varför funktionella språk skulle vara någon slags "silver bullet". Själv anser jag nog att vissa problem löser man bättre med t.ex. C. I FAQ:n för Erlang så uppger man ju att de flesta (eller alla) större system utvecklade i Erlang använder C för lågnivåkod.

> Var är FOSS-projekten skrivna i Erlang, O'Caml, F# och Haskell

En enkel sökning på google kommer ge dig tillräckligt med exempel (i varje fall hade inte jag några problem att hitta flera projekt som använder dessa språk).

/Micke

valdermans bild

Det är inte avgörande, men man kan tycka att en rörelse som ser sig själv som innovativ borde vara snabb att anamma moderna språk och verktyg. Det finns en anledning till att C utanförr FOSS-rörelsen bara används i inbäddade system och till lågnivåkod; varför är då FOSS-världen så het på C? Vad är det t ex för uppgifter du anser löses bäst i C (utöver de två jag nämnde; C har en självklar plats i de riktigt prestandakritiska komponenterna och när man måste leka med hårdvaran?) Kan det vara så att FOSS vill hålla sig till en lägsta gemensam nämnare, och tenderar att ge upp moderna språk för att hålla sig till en gemensam infrastruktur (UNIX 40 år gamla C-tradition) så mycket som möjligt?

Det är förståeligt att affärsvärlden rör sig långsamt, men kom igen - t o m stora multinationella banker använder sig av O'Canl och Haskell nuförtiden, varför är FOSS så långt efter trots sin högre flexibilitet? Visst, det finns FOSS-projekt i Haskell, men nästan samtliga skrivs av folk inom Haskell-communityn.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

pluckers bild

Språken du nämner är ju inte speciellt "moderna"; förutom F# så är samtliga från sent 80-tal till ungefär mitten av 90-talet. Verkar mer handla om att det måste vara ett funktionellt språk. Då handlar det än en gång om vilket problem man vill lösa; tydligen fungerar C bra för FOSS-projekt om det nu används så mycket som du påstår. Det är väl inte helt självklart hur vanligt C är och trenden verkar snarare vara att det blir mer och mer skriptade språk.

För mig är programmeringsspråk verktyg och om de kan användas till att lösa ett problem så bryr jag mig inte om de är "omoderna" eller ej. Dessutom kan man lära sig grunderna i ett nytt språk relativt snabbt. Nu jobbar jag i stort sett enbart med inbyggda system, så C/C++ är ett rätt så naturligt inslag även om jag har använt perl, python, java och mer udda språk som tcl/tk och xslt. Dessutom så är det mer underhåll och vidareutveckling än nyutveckling ute i den riktiga världen, så att byta språk bara för att något nytt har dykt upp är sällan aktuellt... Oavsett vad man kan tycka om det, så har de rent funktionella språken under lång tid använts mest i den akademiska världen. Det enda språk av de du nämnde som jag har stött på är Erlang och det var i slutet av 90-talet (jag har även programmerat telefonväxlar i PLEX, ett språk som Erlang var rejält influerat av).

/Micke

valdermans bild

O'Caml är från mitten av 90-talet, Haskell 1998 och Erlang något äldre; 1986. Jämfört med de verktyg som används idag är det ganska modernt. Självklart handlar det heller inte om att "nytt är alltid bäst," utan om att just funktionella språk medför tydliga fördelar beträffande produktivitet och stabilitet; fördelar som växer exponentiellt varje gång antalet kärnor i maskinerna dubbleras.

Naturligtvis kan man inte heller skriva om existerande projekt varje gång det kommer någonting nytt och häftigt, däremot hade man kunnat vänta sig att folk skulle slutat använda C och C++ till nya projekt för sisådär en 5-10 år sedan.

>Då handlar det än en gång om vilket problem man vill lösa; tydligen fungerar C bra för FOSS-projekt om det nu används så mycket som du påstår.

Att någonting används implicerar inte att det fungerar bra. Man använde åderlåtning för att bota diverse åkommor ganska lång tid efter att betydligt bättre metoder uppfunnits - betyder det att åderlåtning fungerade bra för nordbor?

>Dessutom kan man lära sig grunderna i ett nytt språk relativt snabbt

Jag skulle vilja se en Java-apa lära sig Prolog "relativt snabbt." ;) Det är en rätt stor skillnad på att hoppa mellan imperativa objektorienterade språk, och att lära sig en ny paradigm.

>Oavsett vad man kan tycka om det, så har de rent funktionella språken under lång tid använts mest i den akademiska världen.

Jag vet inte om AT&T, Bluespec, Linspire, Qualcomm, Ericsson, Facebook, Microsoft, Barclays eller Jane Street Capital räknas till den akademiska världen.

Samma argument går att vända mot de flesta teknologier innan de tas i bruk av den mer konservativa affärsvärlden. Men visst, funktionella språk har rykte om sig att vara väldigt akademiska och matematiska, och visst presterar de sämre än C i microbenchmarks. På samma sätt som C var väldigt akademiskt, matematiskt och långsamt i microbenchmarks jämförd med rå assembly för 25 år sedan.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

jeffs bild

 Jag får nog också invända lite. Vilken sorts program är det du pratar om? Är det skrivbordsprogram du åsyftar så tror jag den enklaste förklaringen är att de grafiska ramverken som används främst är skrivna/har uppdaterade bindningar till C/C++/C#/Python. För mycket jobb och för lite duktigt folk som kan skriva bindningar till andra språk.

 

Är det även inom web du pratar så håller jag inte alls med dig. Hur mycket jag än hatar webben så sker det massor av spännande saker just där, även inom FOSS. Jag läser dagligen om häftiga nya bibliotek för att skala webappar eller hantera köer i system foo osv, skrivna i Scala, Clojure, Haskell, Ruby, Common Lisp mfl. 

Lite sökningar på github/gitosis visar också att det finns en hel del skrivet i funktionella/nya/spännande språk som inte nödvändigtvis prefixas C.

Igår hittade jag xc, en fantastisk liten miniräknare skriven i Scheme: wiki.freaks-unidos.net/xc den tycker jag absolut du skall testa.

------

valdermans bild

Webtjofräser har jag faktiskt inte tittat på (har dock själv ett väldigt relaterat tillkännagivande om ett par månader, om allt går väl,) men beträffande grafiska toolkits finns ju faktiskt Gtk2Hs för Haskell och allting .NET funkar med F#, så det är ingen ursäkt.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

jeffs bild

Mozillas ursprungliga javascriptimplementation skrevs i Scheme, och finns än idag kvar i srcträdet. Är det innovativt nog? Wink

http://mxr.mozilla.org/mozilla/source/js2/semantics/

------

valdermans bild

Det räknas! Laughing out loud

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

atas bild

Är inte Emacs skrivit i ett gammalt functionellt programmeringsspråk? Nu har jag inte någon vidare egentlig koll på funktionell programmering. Dock har jag lagt märke till att det verkar finnas delad uppfattning i huruvida det är framtid eller forntid om man ska tro de rantdiskusioner som brukar uppstå under en del artiklar på nätet Wink

Har det inte varit en del hyp runt både erlang och haskell på sistone även inom foss, eller är det något jag inbillat mig? Dessutom förekommer det väll att folk skriver funktionsorienterat i python?

valdermans bild

Dock har jag lagt märke till att det verkar finnas delad uppfattning i huruvida det är framtid eller forntid om man ska tro de rantdiskusioner som brukar uppstå under en del artiklar på nätet Wink

Jag skulle vara intresserad av att se artiklar som anser att det rör sig om forntid. Den egentliga diskussionen handlar om huruvida det är framtid eller akademiskt mumbojumbo; forntid har jag svårt att tänka mig att någon annan än rabiata IDG-läsare skulle tro.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

atas bild

Ähh då måste jag ju söka...

Möjligt att framtid eller Akademiskt mumbo jumbo är en bättre beskriving.

Dock, nu behärskar jag inte ämnet riktigt... men nog är funktionsorienterad programmering förhållandevis urgammal. Lisp är väll från sent 50-tal och var mera hypat på 80-talet än idag?

valdermans bild

Just Klarna (tidigare Kreditor) är ett lysande exempel på varför funktionell programmering är framtiden. Deras kreditsystem tog totalt tre månader att utveckla från scratch - GLHF att göra det i Java eller C# - och hade inom två år från företagets start helt och hållet sopat banan med samtliga konkurrenter. Kreditor är det enda svenska bolag hittills som blivit uppköpt utan att ha publicerat sin första årsrapport.

Du kan tänkas vilja läsa Why Functional Programming Matters av John Hughes om du är intresserad.

Anledningen till att funktionell programmering tidigare varit akademisk kuriosa är att man fram till för sisådär en 10 år sedan helt enkelt inte hade tillräckligt bra kompilatorer för att producera kod som gick att köra i någorlunda hastighet på den tidens maskiner. Idag är situationen helt annorlunda.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

atas bild

Det är möjligt att jag läser den om jag har tid.

Ditt blogginlägg fick mig i vart fall att installera haskell vilket jag lekt lite med. Känslan är ju dock att det krävs mer än att bara lära sig syntaxet om man ska få ut något av det....

jeffs bild

Största delarna av Emacs, dvs själva lisp-tolken, är skiven i C. Sen är all funktionalitet i Emacs (Som egentligen bara är en lisp-tolk med massa extra lull-lull klistrat ovanpå) skrivet i ELisp, en ganska knasig lisp, om du är van vid exempelvis Common Lisp, som är lite modernare och mysigare. Förvisso är det inte krångligare än (require 'cl) i en elisp-fil för att komma åt Common Lisp-funktioner, but still.

------