Skrivet av erciz:
Nej, nej. Nu blandar du ihop olika saker. Du blandar ihop funktionella språk med dynamiskt typade språk.
Men att det är den funktionella delen som gör språken mindre har jag svårt att se. Python-program tenderar att vara klart kortare än motsvarande C++, Java eller C# (som alla är väldigt lika i rader kod, C++ blir lite längre p.g.a headerfiler). Python ger nästan alltid kortare program än Haskell och F# (båda funktionella och måsta tillägga att min erfarenhet av F# så har inte speciellt mycket "data" bakom det jag säger om det språket). Ruby är lite mer funktionellt orienterat än Python, men Lines-of-code (LOC) är ofta nära identiskt mellan Ruby och Python.
Lisp är inte ett funktionellt språk i den menig ML, F# och framförallt Haskell är. En bra förklaring varför finns här. Clojure anses av många vara funktionellt, de grundläggande biblioteken är "pure" och stödet för "immutable" data är stark, men Clojure har väldigt bra stöd att hantera föränderlig (mutable) data i stället för att förhindra det (som Haskell gör). Skaparen av Clojure nämner att fokus för Clojure är concurrent programming.
Clojure program är inte riktigt lika korta som Python/Ruby, men de är ofta (men inte alltid) kortare än motsvarande C#/Java/C++ program.
Själv anser jag att språket inte kan bestämma om ditt program blir "funktionellt" eller "imperativt", "OO" eller inte. Språket kan ha mer eller mindre syntaktiskt socker för att tillåta en viss programmeringsstil, men det är den som designar programmet som sätter tonen.
Efter att läst en hel del nu under kvällen om dynamiskt vs statiskt, funktionellt vs imperativ så kan jag nog bara konstatera att man kan nog inte säga att någon är "bättre" eller "sämre". Man kan göra case för båda och så vitt jag kan hitta med Google så verkar inte heller forskning peka åt det ena eller andra hållet heller.
Och tänker jag på vad jag använder professionellt (Clojure och C# är bara hobby) så har det genom åren varit C++ (både undervisning och utveckling), Java och nu är det faktiskt C (och till och från lite assembler). Jobbar med embedded-system, bl.a. OS-utveckling, och produkterna består av miljoner rader kod. C som imperativt, relativt svagt typat borde vara horribelt, men faktum är att både produktivitet och kvalité är riktigt bra (produkterna används i vissa fall i riktigt kritiska system). Själv skriver jag en hel del C-funktioner som är "rena" (saknar sidoeffekter), men använder mig även av OO (strukturer med en medlem som pekar på en struktur med funktionspekare, i.e. så som många C++ kompilatorer implementerar sina "vtables").
Skrivet av erciz:
Det är funktionella språk som oftast inte har arvshierarkier som t.ex. F#, Erlang och SML. Dynamiska språk som t.ex. Python, JavaScript och Ruby kan också ha stora arvshierarkier.
JS, Python och Ruby (även Clojure och Go) KAN ha arvshierarkier, men de KRÄVER inte det då alla dessa har Duck-typing (något C# numera också kan använda sig av med "dynamic"). En av anledningarna till att utveckla Go var just att man ansåg att C++/Java/C# program ofta gav stora, stela arvshierarkier i stora program, Go fokuserar också starkt på "concurrent programming". Kan ML, F# och Erlang för dåligt för att veta hur man normalt sett modellerar objekt där.
För att komma tillbaka till denna tråd:
Är inte lika övertygad som azoapes att företag gör så genomtänkta beslut. Man gör nog väldigt ofta samma sak som alla andra och de som var pionjärer inom branschen valde nog mest det som var "hett" för tillfället.
I vårt fall kör vi C för våra kunder förväntar sig det. Varför de gör det är nog mer tradition än något annat (embedded branschen är extremt konservativ). I.o.f.s. kan man då säga att C ÄR bäst för oss, men det är kanske inte för att det är det "bästa" språket/plattformen. Microsoft har ju i forskningsprojekt visat att man faktiskt kan använda "managed" kod för att bygga OS-kärnor, till och med drivers!
Men i slutändan så är valet av språk långt mycket mindre viktigt än många (och kanske främst vi programmerare) vill tro. Dotnet blir rätt vanligt därför Microsoft gör väldigt mycket reklam för detta och många som ska välja plattform väljer dotnet som "bäst" mest för de hört en massa gott om detta (även fast de kanske inte inser att det var från Microsoft marketing folk) samt många andra använder det. Och dotnet ÄR en bra plattform, så valet blir bra för de flesta. Men det hade in väldigt många fall fungerat precis lika bra med en annan plattform.