Koenvh schreef op zondag 1 maart 2020 @ 15:39:
[...]
Uiteraard, voor een taal met een groot budget waar ze geen rekening hoefden te houden met legacyzooi hebben ze de plank wel goed misgeslagen. Waarom moet een ongebruikte import een compilererror zijn? Ik snap 't als warning, maar laat me eerst m'n code testen, dan ruim ik later wel op. Dat, gecombineerd dat veel complexere dingen weggelaten worden (generics o.a.), krijg ik een beetje het gevoel dat ze hun eigen ontwikkelaars niet vertrouwen (of niet serieus nemen), en dat dan op proberen te lossen in de taal zelf. Dat alles maakt dat ik geen zin krijg om überhaupt met Go te beginnen.
Het Go team heeft een redelijk antwoord op waarom unused imports geen warnings zijn in hun
FAQ, maar ik geef je meteen dat het wel wat ferm is voor zoiets. Aan de andere kant snap ik hun redenatie wel.
Generics word atm aan gewerkt en moet met Go 2 geimplementeerd zijn, en op dit moment word er (afaik) over verschillende proposals gediscusieerd. Voor een compleet overzicht (+ linkje naar veel meer):
*klik*. Overigens heb ik eens gelezen dat ze initieel geen generics in hadden gebouwd omdat ze de taal redelijk rap in de handen van developers wouden plaatsen en vervolgens vanuit verschillende taalontwerpers te horen kregen dat ze goed over generics moesten nadenken, omdat schijnbaar de java implementatie niet echt lekker in elkaar steekt door het taalontwerp, helaas kan ik hier de bron zo 1,2,3 niet van terugvinden.
En ja, je hebt zeker wel een punt dat ze het allemaal wat simpel proberen te houden. Maar ik denk niet dat dat per se is omdat ze ontwikkelaars niet vertrouwen, maar omdat het bedoeld is als taal om snel op te kunnen pakken en daar zijn ze volgens mij wel redelijk goed in gelukt.
Dan heb je het ook over operating systems. Go is daar niet de taal voor, voornamelijk omdat het garbage collected is. Talen zoals C(++) en Rust zijn daar gewoon de betere talen/oplossing voor. Je moet het goede gereedschap voor het probleem pakken. Je kan een
heel OS in javascript schrijven, maar dat betekend niet dat het een goed idee is.
Het voornaamste wat ik daar lees is dat het Windows filesystem niet goed geimplementeerd is in Go, wat als ik het zo zie zeker een probleem is, het import systeem (waar ik moeilijk in kan duiken omdat ik daar echt wat kennis mis) en wat kleine dingen waarbij hij heel specifiek op 1 in gaat (wat er inderdaad niet zo lekker uit ziet) en de rest niet noemt. Super handig.
Maar om op de eerste terug te komen: als je kijkt hoe het gebruikt word (
bij het kopje: Development environments), dan werkt het gros van de mensen die met Go ontwikkelen op Linux of Mac en gaat het gros de cloud in op een linux machine of word het in docker gedraaid. Niet om het goed te praten, absoluut niet, het ziet er best wel naar uit en kan absoluut verbetering gebruiken.
Ja, Go heeft wat problemen, maar ik zie er wel potentie in, gebruik het wel graag op het werk en ben benieuwd welke kant het op gaat.