Varför väljer företag .NET inom webbutveckling?

Permalänk
Medlem

Varför väljer företag .NET inom webbutveckling?

Hejsan,

Som titeln på tråden lyder, varför väljer företag att programmera webblösningar med hjälp av .NET? Är inte det bökigare än exempelvis RoR? PHP? Python?

Visa signatur
Permalänk
Medlem

Nu känner jag inte till de andra du listade, men är det inte så att serversidan och databasen är skriven med tex c# & sql medans själva webbsidan är skrivet i något annat? Varför tycker du .net är bökigt?

Permalänk
Medlem

Jag vet inte om det är bökigare, där frågade jag om det var bökigare. Flera företag erbjuder exempelvis webblösningar i C#. Jag undrar helt enkelt varför man väljer att använda C# framför andra tekniker. Och som sagt, är det inte bökigare med .NET?

Visa signatur
Permalänk
Medlem

Kan det inte ha något att göra med att de får avtal med support om de kör .NET ? Och att .NET är faktiskt ganska bra, speciellt ihop med MsSQL som deras interna .NET system kanske använder sig av? Och jag skulle inte påstå att .NET är bökigare, hur menar du då?

Visa signatur

citera!

Permalänk
Medlem

Det jag menar med bökigt är att det tar längre tid att skapa webblösningar, än vad det gör exempelvis med RoR. Hur är det med att komma igång med webbutveckling inom .NET?

Visa signatur
Permalänk
Medlem

Mina erfarenhet av Ruby och .NET är inte så jätte stora i jämförelse med många andras här MEN om det skulle vara så att det tar längre tid att skapa en webblösning i .NET för en erfaren programmerare än det tar i RoR så är inte det den enda faktorn man kollar på. Man kollar väldigt mycket på underhåll, kompetens inom organisationen, support... ja andra faktorer spelar väldigt stor roll. .NET har ett stort företag i ryggen och det gör jätte mycket.

Visa signatur

citera!

Permalänk

Jag föredrar asp (inte php, my bad) framför asp.net. Det är extremt mycket bloat som kommer igenom .NET imo. Plus att det känns som att det är ett "write more - do less"-språk. Men du borde lära dig lite av varje och jämföra själv.

Visa signatur

Pappy :"Backup: Skyddar mot datafel när du på fyllan raderar 200GB pr0n och laddar hem två säsonger teletubbies istället."
Jocke1100 :"Det är väl en mekanisk kylavledning... Typ analog kylpasta..."

Permalänk
Medlem
Skrivet av fille3002:

Jag föredrar php framför asp.net. Det är extremt mycket bloat som kommer igenom .NET imo. Plus att det känns som att det är ett "write more - do less"-språk. Men du borde lära dig lite av varje och jämföra själv.

Jag känner precis tvärtom. PHP är förmodligen det skräpigaste språk jag känner till, med tonvis med legacykod som ligger i ett globalt namespace. Det går att programmera bra PHP, ingen tvekan om saken, men då kan man ignorera 80 % av alla funktioner.

Ett problem är att PHP blivit lite av ett "lekmannens server side-språk", och dåligt skriven kod måste hållas fungerande mellan versioner.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av fille3002:

Jag föredrar php framför asp.net. Det är extremt mycket bloat som kommer igenom .NET imo. Plus att det känns som att det är ett "write more - do less"-språk. Men du borde lära dig lite av varje och jämföra själv.

Vänta lite nu va... Har jag vaknat upp till en ny värld idag, för i världen jag levde igår så fanns det inget mer bloatat språk än PHP. Det är ju patchat i så många omgångar och inkonsekvent språk det bara kan bli! Det finns flera olika inkompatibla versioner, inga namespace, och allt känns som ett ihop plock av olika inkonsekventa bilbliotek.
Trots detta så använder jag php väldigt mycket, men man måste ju vara medveten om att det har stora brister.
EDit: Haha, oj vad lång tid jag tog på mig att posta, såg inte din post Teknocide...

Visa signatur

citera!

Permalänk
Skrivet av Teknocide:

Jag känner precis tvärtom. PHP är förmodligen det skräpigaste språk jag känner till, med tonvis med legacykod som ligger i ett globalt namespace. Det går att programmera bra PHP, ingen tvekan om saken, men då kan man ignorera 80 % av alla funktioner.

Ett problem är att PHP blivit lite av ett "lekmannens server side-språk", och dåligt skriven kod måste hållas fungerande mellan versioner.

Skrivet av Dosshell:

Vänta lite nu va... Har jag vaknat upp till en ny värld idag, för i världen jag levde igår så fanns det inget mer bloatat språk än PHP. Det är ju patchat i så många omgångar och inkonsekvent språk det bara kan bli! Det finns flera olika inkompatibla versioner, inga namespace, och allt känns som ett ihop plock av olika inkonsekventa bilbliotek.
Trots detta så använder jag php väldigt mycket, men man måste ju vara medveten om att det har stora brister.
EDit: Haha, oj vad lång tid jag tog på mig att posta, såg inte din post Teknocide...

Haha sorry guys - jag menade asp, inte php. Klassisk asp. Now continue the flamewars!

Visa signatur

Pappy :"Backup: Skyddar mot datafel när du på fyllan raderar 200GB pr0n och laddar hem två säsonger teletubbies istället."
Jocke1100 :"Det är väl en mekanisk kylavledning... Typ analog kylpasta..."

Permalänk
Medlem

Är det svår att sätta sig in i webbutveckling med .NET?

Visa signatur
Permalänk
Medlem
Skrivet av Brajan:

Är det svår att sätta sig in i webbutveckling med .NET?

Beror väl helt på dig som person, vad du har för tidigare erfarenheter och hur snabbt du lär dig - men generellt, nej.

Visa signatur

citera!

Permalänk

webprogramering är lätt. Iaf om man jämför med t.ex. c++.

Visa signatur

Pappy :"Backup: Skyddar mot datafel när du på fyllan raderar 200GB pr0n och laddar hem två säsonger teletubbies istället."
Jocke1100 :"Det är väl en mekanisk kylavledning... Typ analog kylpasta..."

Permalänk
Medlem
Skrivet av fille3002:

Haha sorry guys - jag menade asp, inte php. Klassisk asp. Now continue the flamewars!

Föredrar du klassisk ASP framför ASP.NET..?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

ASP.NET MVC är det enda rätta...

att något skulle vara bökigare än något annat är nog rätt olika från person till person skulle jag tro.
själv skulle jag nog tycka att det vore otroligt bökigt att försöka sätta mig in i php, RoR eller ASP.NET nu när jag jobbat med MVC så länge.

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem
Skrivet av jovnas:

ASP.NET MVC är det enda rätta...

att något skulle vara bökigare än något annat är nog rätt olika från person till person skulle jag tro.
själv skulle jag nog tycka att det vore otroligt bökigt att försöka sätta mig in i php, RoR eller ASP.NET nu när jag jobbat med MVC så länge.

Fast MVC är inte språkspecifikt. RoR använder MVC, liksom kan du koda MVC i php.

Visa signatur

citera!

Permalänk
Medlem
Skrivet av Dosshell:

Fast MVC är inte språkspecifikt. RoR använder MVC, liksom kan du koda MVC i php.

jag menade nog mest att andra tekniker och/eller språk kan kännas bökigt när man lärt/vant sig med något.
kikade exempelvis på ett äldre VB.NET winforms-projekt på jobbet idag och fattade knappt hur det fungerade. och då är det ändå jag som skrivit det...

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Skrivet av Teknocide:

Föredrar du klassisk ASP framför ASP.NET..?

Yep. Jag föredrar att göra "allt" före att det ska göras automatiskt. Jag gillar att ha koll på vad som kommer till webbläsaren.

Visa signatur

Pappy :"Backup: Skyddar mot datafel när du på fyllan raderar 200GB pr0n och laddar hem två säsonger teletubbies istället."
Jocke1100 :"Det är väl en mekanisk kylavledning... Typ analog kylpasta..."

Permalänk
Medlem
Skrivet av fille3002:

Yep. Jag föredrar att göra "allt" före att det ska göras automatiskt. Jag gillar att ha koll på vad som kommer till webbläsaren.

Då borde du titta på Asp.Net MVC, där har du full kontroll på vad som renderas och alla http-requests. Klassisk ASP är stenålder.

När det gäller att TS tycker det verkar bökigt med .Net så håller jag inte med för fem öre. Det är i mitt tycke den klart trevligaste miljön att utveckla i, dock har PHP, RoR och Python självklart sina fördelar. Jag tycker bara det är bra att det finns olika språk och sätt att utveckla på.

Att komma igång med ASP.Net kunde knappast varit enklare, finns gratis IDE och massvis med bra tutorials. Ta en titt här exempelvis, http://www.asp.net

Visa signatur

EPoX 8RDA+, XP2500+, 2x256Mb PC3200 (DualCh), Club3D 9800PRO, Seagate 7200.7 160Gb 8Mb Limited edition

Permalänk
Medlem

En hel del företag har väl redan en massa it-infrastruktur från MS som man kanske vill utnyttja. Nu vet jag inte hur bökigt det är att ställa frågor mot AD och liknande från PHP men det känns som om att det borde vara mer jobb. Man har juh mycket sånt gratis i .net.

Sen får jag nog hålla med föregående talare om att Asp.mvc är det som gäller. Webforms är vidrigt i jämförelse och sprutar ut så mycket fulkod att man inte vet var man ska ta vägen.

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue

Permalänk
Skrivet av DarkBob:

En hel del företag har väl redan en massa it-infrastruktur från MS som man kanske vill utnyttja. Nu vet jag inte hur bökigt det är att ställa frågor mot AD och liknande från PHP men det känns som om att det borde vara mer jobb. Man har juh mycket sånt gratis i .net.

Sen får jag nog hålla med föregående talare om att Asp.mvc är det som gäller. Webforms är vidrigt i jämförelse och sprutar ut så mycket fulkod att man inte vet var man ska ta vägen.

There's my point.

Visa signatur

Pappy :"Backup: Skyddar mot datafel när du på fyllan raderar 200GB pr0n och laddar hem två säsonger teletubbies istället."
Jocke1100 :"Det är väl en mekanisk kylavledning... Typ analog kylpasta..."

Permalänk
Medlem
Skrivet av Brajan:

varför väljer företag att programmera webblösningar med hjälp av .NET? Är inte det bökigare än exempelvis RoR? PHP? Python?

Utvecklingen av en webblösning är bara en liten del av projektet. Sen ska webblösningen driftas och övervakas. Har företaget då en stor infrastruktur inom Windows så är det betydligt enklare att integrera andra .NET-lösningar i den också.

Ett annat bra alternativ är en Java-lösning, då kan man använda Linux i större utsträckning. T.ex. är det många större företag och banker som använder Linux+Java, då de tidigare använde Unix på stordatorer.

Min personliga åsikt om RoR, PHP och Python är att de är skitspråk som är dynamiskt typade, vilket gör att du upptäcker fel lite senare. Använder du statiskt typade språk som Java och C# så upptäcker du många fel direkt i IDE:t. Ju tidigare du upptäcker fel desto billigare och fortare går det att utveckla. Men ja, ramverken .NET och Java EE kan vara lite mastigare att använda. Men det har inget med språket att göra. .NET har MVC 3 och Java EE börjar många välja bort till Spring och Play Framework som är inspirerat av Ruby on Rails.

Permalänk
Datavetare
Skrivet av erciz:

Min personliga åsikt om RoR, PHP och Python är att de är skitspråk som är dynamiskt typade, vilket gör att du upptäcker fel lite senare. Använder du statiskt typade språk som Java och C# så upptäcker du många fel direkt i IDE:t. Ju tidigare du upptäcker fel desto billigare och fortare går det att utveckla.

Jag hade exakt samma uppfattning som dig om dynamiskt typade språk, men har omvärderat den ståndpunkten en hel del.

Det finns två ortogonala koncept som folk brukar blanda ihop, säger inte att du blandar ihop dem men nämner det bara för diskussionen skull.

Språk kan vara dynamisk (typen avgörs vid körning) eller statiskt typade (typen avgörs vid kompilering)
Språk kan är också starkt typade (typ A kan inte användas där typ B behövs om inte typ A är en subtyp av B) eller svagt typade.

Python, Ruby, Erlang, Clojure är starkt och dynamiskt typat
C++, C#, Java och Scala är start och statiskt typat
C brukar man räkna som ett svagt typat språk, och det är statiskt typat
PHP, perl är dynamiskt och svagt typade språk (ex "10" + 5 ger ett resultat (blir 15)).

Svagt typade språk brukar leda till en rad skumma och svår-hittade buggar, så tänker inte försvara dessa. Men det finns en rad undersökningar som visar att antalet buggar i ett program är ganska konstant räknat i buggar per rader kod. Dynamiskt typade språk tenderar till att vara kortare än statiskt typade språk -> färre buggar. Har läst att Ericsson gjort undersökning på hur många typ-fel som hittas "runtime" i Erlang (som t.ex. en C++ kompilator skulle ha hitta). Det var tydligt väldigt få och tillförlitligheten på system skrivna i Erlang är extremt höga jämfört med motsvarande system skrivna i t.ex. C++.

Dynamiskt typade språk undviker också rätt mycket "infrastruktur" som arvshierarkier något som ibland kan få system utvecklade i C++, Java och C# bli komplicerade och stela att använda.

Men en stor fördel med start och statiskt typade språk är att de kan utföra en hel del verifikation vid kompilering, något som gör att programmet körs snabbare. Kan vara viktigt i vissa fall.

Jämför dessa fall där man ska skapa ett histogram från en lista, taget från langref.org

C#

using System.Collections.Generic; using System.Linq; public class HistogramMap { public Dictionary<object, int> FromList(List<object> list) { return list.Aggregate( new Dictionary<object, int>(), (map, obj) => { if (!map.ContainsKey(obj)) map[obj] = 0; map[obj]++; return map; } ); } public static void Main() { var map = new HistogramMap().FromList( new List<object>() { 'a', 'b', 'a', 'c', 'b', 'b' } ); System.Console.WriteLine ( string.Join (", ", map.Select( kvp => string.Format("{0} : {1}", kvp.Key, kvp.Value) ).ToArray() ) ); } }

Clojure

(->> [:a :b :a :c :b :b] (group-by identity) (reduce (fn [m e] (assoc m (first e) (count (second e)))) {}))

Och i detta fall används ändå Linq i C#, något som anses vara en "killer" feature just när man ska filterera och manipulera data. Kan själv programmera båda dessa språk och det är BETYDLIGT mycket lättare att begripa vad Clojure version gör, mycket just för att den är så kort. Att den är så pass kort beror till stor del på dynamisk typning.

Edit: För att vara helt korrekt så skriver faktiskt inte Clojure version ut resultat på stdout, lägger vi till detta blir det

(doseq [kvp (->> [:a :b :a :c :b :b] (group-by identity) (reduce (fn [m e] (assoc m (first e) (count (second e)))) {}))] (println (format "%s : %s" (first kvp) (second kvp))))

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

[QUOTE=Yoshman;11284179]...[/QUOTE]

Du kan göra det betydligt enklare än så i C# med Linq:

var histogram = from e in (new[] { 'a', 'b', 'a', 'c', 'b', 'b' }) group e by e into g select new { Value = g.Key, Count = g.Count() }; foreach (var entry in histogram) { Console.WriteLine("{0} : {1}", entry.Value, entry.Count); }

Eller i en alternativ form:

new[] { 'a', 'b', 'a', 'c', 'b', 'b' } .GroupBy(x => x) .Select(g => new { Value = g.Key, Count = g.Count() }) .ToList() .ForEach(e => Console.WriteLine("{0} : {1}", e.Value, e.Count));

Språket är för övrigt både statiskt och dynamiskt typat i och med introduktionen av nyckelordet "dynamic" i version 4.

ps. Linq är verkligen en "killer feature"... om man använder det på rätt sätt.

Visa signatur

"Nothing is impossible because impossible itself says I M Possible..."

Permalänk
Datavetare
Skrivet av Weeblie:

Din version är mer eller mindre identisk med Clojure version (som det var jag som lade upp på langref.org). Jag är däremot inte den som gjorde C# version, men borde ha granskat den bättre innan jag postade den här som "bevis" för min poäng.

Det finns en rad undersökningar som visar att många dynamiskt typade språk leder till kortare kod, men jag valde ett väldigt uselt exempel för att visa detta. Skyller på att det var sent igår när jag svarade och hade tagit ett par glas vin

Skrev ihop en version för C++ (med nya standarden C++11) som jag har lagt upp, den blev ju ännu kortare än min Clojure version och din C# variant, utan Linq och utan dynamiskt typning, så nu har jag även själv "motbevisat" min tes ovan...

map<string,int> hist; for (auto e: { "a","b","a","c","b","b" }) ++hist[e]; for (auto e: hist) | cout << e.first << " : " << e.second << endl; |

Är medveten om att C# fick dynamiskt typning i C#4.0, eller statisk dynamiska typer som Anders Hejlsberg vill kalla det. Man märkte när han presenterade "dynamic" att det var en internstrid som han förlorat, det var inte med någon riktig entuseasm han pratande om just detta. Han påpekade många gånger att han tror extremt mycket på statiskt typade språk och har inte speciellt mycket till övers för dynamiskt typade språk.

BTW: Är det OK om jag lägger upp din version av histogram för C# där då den bättre visar hur man bör göra?

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Jag hade exakt samma uppfattning som dig om dynamiskt typade språk, men har omvärderat den ståndpunkten en hel del.

Det finns två ortogonala koncept som folk brukar blanda ihop, säger inte att du blandar ihop dem men nämner det bara för diskussionen skull.

Språk kan vara dynamisk (typen avgörs vid körning) eller statiskt typade (typen avgörs vid kompilering)
Språk kan är också starkt typade (typ A kan inte användas där typ B behövs om inte typ A är en subtyp av B) eller svagt typade.

Python, Ruby, Erlang, Clojure är starkt och dynamiskt typat
C++, C#, Java och Scala är start och statiskt typat
C brukar man räkna som ett svagt typat språk, och det är statiskt typat
PHP, perl är dynamiskt och svagt typade språk (ex "10" + 5 ger ett resultat (blir 15)).

Svagt typade språk brukar leda till en rad skumma och svår-hittade buggar, så tänker inte försvara dessa. Men det finns en rad undersökningar som visar att antalet buggar i ett program är ganska konstant räknat i buggar per rader kod. Dynamiskt typade språk tenderar till att vara kortare än statiskt typade språk -> färre buggar. Har läst att Ericsson gjort undersökning på hur många typ-fel som hittas "runtime" i Erlang (som t.ex. en C++ kompilator skulle ha hitta). Det var tydligt väldigt få och tillförlitligheten på system skrivna i Erlang är extremt höga jämfört med motsvarande system skrivna i t.ex. C++.

Dynamiskt typade språk undviker också rätt mycket "infrastruktur" som arvshierarkier något som ibland kan få system utvecklade i C++, Java och C# bli komplicerade och stela att använda.

Men en stor fördel med start och statiskt typade språk är att de kan utföra en hel del verifikation vid kompilering, något som gör att programmet körs snabbare. Kan vara viktigt i vissa fall.

Jämför dessa fall där man ska skapa ett histogram från en lista, taget från langref.org

Nej, nej. Nu blandar du ihop olika saker. Du blandar ihop funktionella språk med dynamiskt typade språk. Jag har också läst den där Erlang-undersökningen, och som bekant så blir det oftare kortare program med funktionell programmering. Det finns fler funktionella programmeringsspråk som t.ex. SML, Scala och Clojure som du nämner.

Du blandar ihop paradigmerna igen när du säger "Dynamiskt typade språk undviker också rätt mycket "infrastruktur" som arvshierarkier något som ibland kan få system utvecklade i C++, Java och C# bli komplicerade och stela att använda."

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.

Du kan dela upp språken som:

Python, Ruby är imperativa, starkt typade och dynamiskt typat
Erlang, Clojure är funktionella, starkt typade och dynamiskt typat
C++, C#, Java är imperativa, starkt typade och statiskt typat
Scala, F#, SML är funktionella, starkt typade och statiskt typat.
C brukar man räkna som ett imperativt svagt typat språk, och det är statiskt typat
PHP, perl är dynamiskt, imperativt och svagt typade språk (ex "10" + 5 ger ett resultat (blir 15)).

Funktionella program är oftast kortare än imperativa (mindre kod = färre buggar). Med statiskt typade språk hittar du typfelen direkt i ditt IDE när du programmerar. Med dynamiskt typade språk hittar du felen först när du har testat programmet, och du förhoppningsvis har testat alla möjliga exekveringsvägar i programmet, vilket kan vara lite klurigt. Statiskt typade kan du få lite mer hjälp av din IDE med också. (statiskt typning = hittar felen tidigare i utvecklingen).

Så vill man både ha ett kort program och statiskt, så kan man välja Scala, F#, OCaml eller SML t.ex. Både Scala och F# har rätt bra stöd för att använda imperativ programmering också.

Permalänk
Medlem

... och här kommer ett svar som har med frågan att göra.

Språket är en faktor, men en liten i sammanhanget. Det har bevisats ovan att språk inte skiljer sig så mycket sinsemellan för de som kan hantera dem. De flesta nackdelar ett språk har, går att vänja sig vid och värja sig mot. Alla språk har fördelar och nackdelar, rent subjektivt.

Ramverket är i de flesta fall också sekundärt, beroende på hur stort företaget är. Frågan nämner inte vilken storlek som är intressant att veta, men jag utgår från att det gäller medelstora och stora företag (definition). För små- och mikroföretag är t.ex. PHP väldigt populärt. Mycket tack vare WordPress, vilket leder oss in på svaret på topic-frågan.

Svaret är kortfattat att företag väljer de teknikplattformar som har de bästa produkterna. På samma sätt som PHP är #1 för bloggliknande webbplatser tack vare WordPress, är .NET populärt för medelstora och stora CM-lösningar tack vare produkter som SiteCore, SharePoint, EPiServer (i Sverige), DotNetNuke, Umbraco, Open Text, N2, etc.

För e-handel gäller detsamma; att återanvända arbete i form av att köpa en licens för en CM- och/eller EC-lösning som redan är optimerad, vältestad och som ett annat företag står bakom ekonomiskt.

Permalänk
Datavetare
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.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Men att det är den funktionella delen som gör språken mindre har jag svårt att se.

Funktionella språk innehåller oftast kraftfulla konstruktioner som gör programmen kortare som t.ex Högre ordningens funktioner (exempel: map och foldl), mönstermatchning och rekursion.

Skrivet av Yoshman:

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.

Jag hävdar fortfarande att det är enklare att rätta fel ju tidigare du upptäcker dem. Därför blir jag mer produktiv med ett statiskt typat språk där mitt IDE markerar felet på stuts, eller vid nästa kompilering... och inte behöva vänta till jag har skrivit tester och testat alla delar av programmet.

Skrivet av Yoshman:

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.

Jag kan rekommendera att ta en titt på Scala som använder Traits - något man kan kalla statiskt typad Duck-typing. Och jag håller med stora arvshierarkier är vänrt att undvika.