Software-update: Go 1.14.4 / 1.13.12

Go, ook aangeduid als golang, is een programmeertaal die sinds 2007 wordt ontwikkeld door Google en de opensourcegemeenschap. De taal wordt onder andere door CloudFlare, Google, Netflix en Uber gebruikt. Go-code kan worden gecompileerd voor Android, Linux, macOS, FreeBSD en Windows, op i386-, amd64- en ARM-processorarchitecturen. De syntax van Go is vergelijkbaar met die van C en soortgelijke programmeertalen, hoewel er ook enkele opvallende verschillen zijn. Ook biedt Go de mogelijkheid voor gedistribueerd programmeren, waarbij verschillende processen tegelijk worden uitgevoerd. Het team heeft Go versies 1.14.4 en 1.13.12 vrijgegeven met de volgende aanpassingen:

go1.14.3 includes fixes to cgo, the compiler, the runtime, and the go/doc and math/big packages.
go1.14.4 includes fixes to the go doc command, the runtime, and the encoding/json and os packages.

go1.13.11 includes fixes to the compiler.
go1.13.12 includes fixes to the runtime, and the go/types and math/big packages.
Versienummer 1.14.4 / 1.13.12
Releasestatus Final
Besturingssystemen Windows 7, Linux, BSD, macOS, Solaris, UNIX, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016
Website The Go Programming Language
Download https://golang.org/dl
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Japke Rosink

Meukposter

Update-historie

Reacties (15)

15
15
9
0
0
6
Wijzig sortering
Ik vind go een interessante taal maar het pakket beheer en "namespacing" is een absolute nachtmerrie, dan liever nog C.

Als ze daar nou eens wat aan doen dan zou ik er maar wat graag meer mee aan de slag willen.
kvind go nog steeds beetje iffy omdat het veel issues heeft die C ook heeft. Daarnaast is het ook nog es garbage collected. In mijn ogen is Rust een "Go/C" replacement zonder de downsides. Go zie ik als prototyping, Rust als serieus.

[Reactie gewijzigd door jabwd op 3 juni 2020 01:51]

Garbage collection is op zich geen slechte functionaliteit; het is gewoon geheugen vrijgeven als de refcount 0 is. In Rust geef je het geheugen ook niet handmatig vrij, toch? Volgens mij bepaalt de compiler wanneer geheugen wordt vrijgegeven, in plaats van (zoals bij Go) de executable at runtime.

In mijn ogen zijn Go en Rust beide serieuze talen, met verschillende doeleinden. Go is een goede vervanger voor slome Python scripts. Het heeft alle moderne hippe features van Python, maar dan razendsnel, en zonder de dependency hell. Het is vooral handig voor het snel implementeren van bijvoorbeeld http api's, met zijn ingebouwde http server, channels en go routines. Als Go meer aan populariteit wint zie ik Go Python nog wel eens verdrijven.

Rust zie ik meer als potentiële vervanger van C of C++, al verwacht ik dat veel C/C++-ontwikkelaars de kat uit de boom kijken en Rust daardoor moeilijk van de grond komt. Desalniettemin wil ik als Go-fanboy ook graag Rust leren, het lijkt me een enorm interessante taal. :)

[Reactie gewijzigd door Bergen op 3 juni 2020 06:06]

Ik zie C en C++ eigenlijk langzaam uit het veld verdwijnen. C++ na versie 2011 komt nauwelijks voorbij en C alleen nog in realtime embedded apps waar geen enkele GC taal het zou kunnen vervangen.

Of heb ik dat mis?
C++ wordt nog doorontwikkeld. C++17 is de geldende standaard en C++20 wordt nu uitgewerkt.
Ja, C++ heeft voornamelijk als ‘last’ dat C compatibel moet zijn met C++, maar niet andersom. Daarnaast heeft C++ geen eigenaar.
Beiden hebben andere doeleinden maar ze zijn zeker serieus.

Rust is een "C++ vervanger" voor snelle en veilige applicaties.

Go is een snelle scriptvervanger met focus op de webwereld (heeft bijv. een ingebouwde productieklare webserver).

De gelijkenis met C begrijp ik niet helemaal, wat zijn die issues? Go heeft geen header files, de linker is automatisch, je kunt klasses, interfaces en inheritance gebruiken (op de Go manier), er zijn private members, dealloceren van geheugen wordt door de garage collector afgehandeld en er zijn ingebouwde standard libraries.

[Reactie gewijzigd door Ablaze op 3 juni 2020 07:45]

Go heeft wat iffy dingen, ja. Maar wij zijn er hier erg tevreden over als vervanging van nodejs en php om http microservices in te schrijven. Het is razendsnel, concurrency (goroutines) is eigenlijk een speelgoedversie van de echte mulithreading hell van C++ - in de zin dat het meeste werk voor je gedaan wordt, maar het werkt eigenlijk uitstekend.

Het vervult een (voor ons) grote behoefte - namelijk het snel kunnen ontwikkelen van microservices die aansluiten op onze e-commerce aan de voorkant en caches, AMQP queues en databases aan de achterkant. Alhoewel ik Rust niet heel goed bekeken heb, is het vergeleken met NodeJS een verademing.

En alhoewel ik eerst dacht : wat een "my first programming-language" omdat de taal zelf echt heel simpel is en niet zo heel veel fancy features heeft, is dat tegelijk ook wel de kracht. De eenvoud van de taal zorgt dat het heel leesbaar is en razendsnel te leren is.

[Reactie gewijzigd door Crew One op 3 juni 2020 08:39]

Als je een interessant alternatief wilt, kan je Crystal proberen ( https://crystal-lang.org/ ). Zit deze dagen dicht tegen de 1.0 release en is veel meer krachtige taal ( generics, macros, simpel om te gebruiken, geen gezeik met path structure en geforceerde modules via github ...).
Crystal’s syntax is heavily inspired by Ruby’s, so it feels natural to read and easy to write, and has the added benefit of a lower learning curve for experienced Ruby devs.
Niets mis mee, maar dat is nou niet bepaald een alternatief voor Go.
Kun je daar over uitwijden? Wat is er mis met de namespacing? In het begin is het een beetje raar, als je moet uitvinden wat de 'bedoelde' structuur onder $GOPATH moet zijn, maar sinds de invoer van modules is het veel flexibeler geworden. Het is een kwestie van begrijpen hoe en waar Go precies zoekt naar de packages, dan is het allemaal heel logisch.
Dat valt sinds de invoering van modules, een jaar of wat geleden, toch wel mee? En je hoeft ook geen GOPATH meer te gebruiken.

Of bedoel je dat je meerdere namespaces in een project krijgt? In Go houd je je programma's over het algemeen klein en splits je de hoofdfunctionaliteiten op in packages. Dat gaat goed samen als je microservices maakt en maakt testen makkelijker.


En liever C? Mee eens, voor embedded software en zeer tijdkritische applicaties. Maar voor normale desktop software/CLI's en web zeker niet, dan ben je in Go drie keer zo snel klaar en kun je je project met een commando bouwen voor welk platform dan ook.

[Reactie gewijzigd door Ablaze op 3 juni 2020 08:00]

Is dat zo ja? De applicaties moet onderhouden gebruiken helaas allemaal nog GOPATH, zal er eens induiken of hier omheen te werken is. Zou het al wat werkbaarder maken.
Er wachten hieг gеweldige meidеn oр jе!
-----
http://k­­i­­s­­s­­t­­o­­k­­.­­c­­o­­m
In hoe verre is Go een improvement op Python? Omtrent snelheid, web apps en concurrency? Ik ben benieuwd naar jullie kijk en ervaringen hierop
Naar mijn mening is go prettig compact, concurrency is supersoepel. Python voelt aan als een legodoos met te veel blokjes die bijna hetzelfde kunnen.
Maar ik ben opgegroeid met C en een beetje C++ dus python voelt dan aan als msbasic.
Er staan talloze Go VS Python vergelijkingen op het web, en meestal wint Go (al kan dat aan mij informatiebubble liggen).
Python is alleen onverslaanbaar in AI achtige dingen omdat er fantastische bibliotheken en voorbeelden beschikbaar zijn.

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee