Skrivet av zaibuf:
Var nog otydlig, menade inom webb. Om du skriver backend i exempelvis C#, Java eller nodeJS så kan man applicera samma koncept även om syntax skiljer.
Håller helt med om att det är primärt en syntaxskillnad mellan språk som C# och Java. Däremot är en hyfsat stor del av JS dåliga rykte en konsekvens av att många just hanterar det språket som C#/Java, då blir det rätt mycket kattskit. Ser man i stället JS för vad det är, en LISP med C-lik syntax och istället jobbar idiomatiskt från den ståndpunkten så är det ett långt trevligare språk helt plötsligt!
Redan när man ställer Java/C# mot Kotlin är det ju mer än enbart syntax som skiljer. Då Kotlin är helt kompatibelt med Java går det ändå rätt bra att initialt hantera det som Java med en bättre syntax, men idiomatisk Kotlin har långt mer inslag från funktionell programmering än Java/C#.
Både C#/Java designades för att vara väldigt tillgängliga för de som redan kunde C++. Men likheten i syntax kan här tyvärr göra att riktigt bra C#/Java programmerare skulle producera rätt kass C++ kod.
C++ skapare, Bjarne Stroustrup, har flera gånger påpekat att "C++ behöver ingen skräpsamlare då C++ program normalt sett producerar väldigt lite skräp". Detta uttalande är långt mer än ett försök att vara lustig. I C++ (och än mer i Rust) jobbar man primärt med data "by-value" (allokera data på stacken) medan C#/Java nästan uteslutande jobbar med data "by-reference" (allokera data på heap:en).
Tar man steget till ett språk som Go (och till mindre del JS i form av Node.JS) är ju sättet man lämpligen designar skalbara system rätt fundamentalt annorlunda än hur man angriper det i t.ex. Java/C#. Just i detta fall är likheterna mellan Java/C# och C++/Rust väldigt stora, den optimala grundarkitekturen är densamma, men väldigt olik miljöer som Go/Erlang (dessa två är väldigt lika på denna punkt) samt NodeJS.
Gillar ett språk som kallas R väldigt mycket. Det går att skriva traditionell skalär kod, likt hur man ska programmera C#/Java/C++/Rust/Go. Men det är bortkastat att använda R i det läget, man missar styrkorna och poängen med språket. D.v.s. här är ännu ett exempel på där det är långt mer än en skillnad i syntax. I R måste man hela tiden tänka "data-parallellt", d.v.s. i stället för att loopa över varje element vänder man ut-och-in på processen: man applicerar funktioner på alla data-element logiskt sett samtidigt. Går ändå att köra "if-satser", fast processen blir lite annorlunda då det alltid måste finnas ett resultat för både "true" och "false" fallet.
Det skrivet: håller med det som sägs i tråden att det finns massor med grundläggande byggstenar som är gemensamt för alla programspråk. Olika byggstenar är dock olika viktiga i olika språk, man bör sätta sig in rätt snabbt i vad som är "typiskt" för just det språk man nu väljer att jobba med.
Ett par webbplatser som jag själv gillar att använda till att sätta mig in i nya programspråk (vilket inte är samma sak som att lära sig programmera från scratch, men finns vissa parallella moment) är
Båda dessa har fördelen att man får reda på om man lyckats löst problemet korrekt samt problemet är typiskt väl begränsade och bortsett från de första fallen är det inte triviala program.
Det som saknas är just att man inte alls får någon feedback om hur det optimala sättet att lösa problem i just det språk man sitter med borde se ut.
Och som nämnts i tråden, alla lär sig olika. Jag tillhör de som vill starta med att rakt upp och ned läsa en bok eller motsvarande, det utan att egentligen skriva en enda rad kod. Poängen är att skaffa en känsla för hur språket är tänkt att användas, det innan jag börjar grumla det med mina egna erfarenheter från experiment.
Som andra steg måste det till "hands-on" övningar. Endera har man ett lämpligt projekt att starta med, eller så är just de två webbplatsenerna som listades ovan trevliga och konkreta första övningar!