Citat:
Ursprungligen postat av
Pr33
Du verkar ju veta allt redan. Tycker bara att det är märkligt att i princip alla skolor i USA och väldigt många i Sverige som lär ut OOP och programmering för den delen i just Java. Jag hade inga problem alls att lära mig OOP i Java. Gjorde dessutom ett av mina internships i Java miljö och märkte inte av "horribla java-monolither". Jobbar för nuvarande på Amazon som också är Java miljö och ser inga "java-monolither" här heller?? Det kanske bara är ni på ditt företag som är på lägre nivå och inte riktigt vet hur ni ska använda det?
Har hört att C# är nice, till och med bättre än Java på många sätt. Men att säga att Java är helt värdelöst är väl kanske o ta i lite?
Det spelar sällan någon som helst roll för en applikation om den drivs av JVM eller .NET, och både Java och C# innebär liknande robusthet. C# innebär väl i de flesta kontexter något bättre optimering(smöjligheter), men det är väldigt sällan viktigt.
Vad som däremot är viktigt när man lär sig OOP är att C# i alla år pushat för att lära utvecklare rimlig arkitektur. Detta tog extra fart senaste 6-7 åren via Core (i gamla .NET framework blir ju hela miljön en grotesk monolith ändå). Så dels kommer .NET Core i det närmaste tvinga dig mot dependency inversion, dels kommer C# pusha dig mot decoupled och lättviktig kod. Du
kan skriva klassisk horribel Java-arkitektur i C#, men du kommer behöva anstränga dig för det.
Till detta har vi historien*, där Java har ett enormt legacy som under lång tid enda open source, lättillgängliga språk med vettig reach. Det betyder att en
väldans massa Java-applikationer, tutorials och dokumentation skrevs en tid då de flesta var (med dagens mått mätt) helt dumma i huvudet och trodde att monolitisk OOP och "FaCtorY-FActoRy-FActoRy" var smartaste sättet att kapsla in data. På den tiden var Microsoft C# ett Micro
$oft C# som öppen IT inte rörde med tång. Redan då låg C# före vad gäller syntax (props och dylikt hjälpte för att hålla kodbaserna renare), men framförallt har språken sprungit åt helt olika håll. Medan Microsoft blev världens största open source-leverantör och C# varje år pushar för att göra OOP mindre skevt (tex via mycket inspiration från funktionell programmering - i och med i år är faktiskt funktioner first class [ish]) blev JVM en grotesk enteripri$e-gegga som Sun gjort sitt bästa för att förstöra.
För JVM kan du självklart med fördel istället använda Kotlin. Men i slutändan är Kotlin bara syntax, och blir inget argument för att det vore rimligare att lära sig Kotlin/Java än C# om man vill lära sig OOP. Däremot kommer du stöta på mindre horribel Java-legacy om du fokuserar på Kotlin (om än långt ifrån perfekt - ofta kombinerar applikationer Kotlin/Java, så halva ditt system är någorlunda fräsht och resten ser ut som skit ihopsklistrat från stack overflow).
*Där vi även hittar varför Java är standard OOP på universitet, men jag orkade inte kommentera det mer då det faktum att du inte vet detta tyder på att du ljuger om något.