Gamebuster schreef op donderdag 17 april 2014 @ 14:11:
Zijn er al fans van Go(lang) hier? Gebruikt iemand het hier in productie? Waarvoor? Wat zijn je bevindingen tegenover bijv. Ruby, Java, C, C++, enz qua productiviteit, performance, community, beschikbare libraries & frameworks, enz
Wij (vooral ik een collega nu, maar binnen kort al weer een extra) zijn sinds kort bezig om de basis te maken voor een (in de toekomst) behoorlijk uitgebreide API.
Flink onderzoek gedaan (zijn al jaren aan het oriënteren op de achtergrond), paar pogingen gedaan, oa in C++, gekeken naar Java & .NET, mensen aangenomen die in PHP en Symfony aan de slag zijn gegaan.. Maar ik bleef het niet optimaal vinden. Of het was te ingewikkeld om op lange termijn te onderhouden zonder 4 man extra, of het was qua performance niet top.. Eigenlijk altijd wel wat.
Paar weken geleden kwam Go in het vizier, paar dagen ingelezen en toen maar de knoop doorgehakt: Dat ging het worden.
Reden eigenlijk wat hier gezegd wordt: Je hoort er eigenlijk alleen goede dingen over

Dat er nog niet veel libraries zijn valt wel mee, althans, ik ben ook gewend aan het veel zelf moeten maken, dus voor Go zijn er voor mijn doen heel veel libraries. Voordeel is dat ik vind dat de "community" erg open is, libraries worden door veel mensen aangepast en van commentaar voorzien, dus wat er is, dat werkt ook wel.
Tot nu toe dus eigenlijk alleen maar lof, we zitten nog in een beginfase, maar tot nu toe gaat alle werk veel sneller dan verwacht. Golang heeft als doel dat het leuk moet zijn om erin te programmeren en ik dacht "Het zal wel".. Maar ik zit al regelmatig met een smile omdat het onverwacht poepsimpel is om bepaalde dingen te doen, makkelijke implementatie van maps, interfaces, type switches, goroutines, channels en functie-types om maar wat te noemen.
We moeten nog de echte grote stukken gaan schrijven, maar krijg daar een goed gevoel bij, vooral omdat het werken met concurrency-achtige vraagstukken zo diep in de basis van de taal zit. Zeker omdat wij een applicatie gaan bouwen die van een hele hoop bronnen informatie gaat ontvangen en opvragen en die informatie weer naar eindgebruikers en derde partijen moet gaan communiceren worden dingen als channels en goroutines heel aantrekkelijk en leuk. Merkte tijdens een kleine test dat ik op 15 minuten tijd een probleem had opgelost waar ik eerst makkelijk een halve dag mee bezig kon zijn met threads en mutexen en een communcatie-pipe erbij...
Dus je kan heel makkelijk heel algemene code maken. We merken nu al dat we beginnen met functies van 20-30 regels en er na een paar dagen opeens nog maar 10 regels overblijven als je een beetje meer gewend bent.
Groot voordeel is dat de leercurve erg laag is zover, heb zelf ervaring met wat C, C++ en Java en senior in Xbase, maar merk dat ook pure script-mensen als PHPers het goed begrijpen binnen een paar weken.
Ben wel nog erg benieuwd naar de performance in de praktijk, binnen een paar weken gaat een klein project live, dus dan wordt het kijken of de beloftes waar worden gemaakt. Moet zeggen dat het voor iedereen spannend is als je een Apache/NginX webserver gewend bent en zelfs dat vervalt door de ingebouwde net/http server in één binary...
Groot voordeel voor ons is dus wel die enkele file, geen dependencies of grote upgrades, vorige versie teruzetten is één proces sluiten en de vorige weer opstarten..
Zelfs dingen als PostgreSQL connection pooling kunnen we voorlopig even laten vallen zover we kunnen zien, wordt zover ik kan lezen en testen keuring door Go gedaan voor elke goroutine..
Dus ik heb nog geen productie-ervaring, maar ben wel razend enthousiast aan het worden, mede door de communtiy en de zeer heldere uitleg over waarom ze dingen doen zoals ze het doen.
Zal later vast nog wel meer concrete ervaringen delen