Mijn eerste ervaring met GoLang

 

Inmiddels al weer een tijdje geleden begonnen met het leren van een voor mij nieuwe programmeer taal GoLang. In dit artikel wil ik mijn eerste ervaring en mening over deze taal delen.

GoLang ook wel een gewoon Go genoemd bestaat sinds 2009 en is ontwikkeld door de internet reus Google. Het is een taal waarover je de afgelopen jaren al regelmatig iets van hebt kunnen horen. Een van de meest bekende projecten ontwikkeld in GoLang is Docker. Dat het mogelijk was om zo’n succesvol project te ontwikkelen in GoLang heeft bijgedragen aan de populariteit en de groei van een online community.

Low level geheugen beheer

Ik vind persoonlijke deze keus die ze hebben gemaakt wel leuk. Je moet namelijk weer een beetje gaan nadenken over pointers. Alle in iedere geval zelf gedefineerde data types zijn een struct. Dit betekent dat ze standaard als value type worden behandeld in tegenstelling tot veel ander High level talen waar je zelf gedefinieerde types meestal maakt met een class. Deze nieuwe datatypes zijn standaard reference types dit is regelmatig zelfs niet eens te veranderen. Bij Go is dit ook mogelijk je kan namelijk een pointer naar de waarde geven. Hierdoor kan je wel de originele waardes aanpassen en hoeft er ook geen kopie van een object te worden gemaakt.

Ik vind het leuk dat je daar zelf invloed op hebt. In het eerste jaar hebben we behoorlijk wat theorie gehad over stack en heap maar nu mag je het ook werkelijk zelf bewust toepassen in de praktijk. Normaal was het alleen handig om door te hebben dat de programmeer taal dat op de achtergrond voor je doet. Je kon verklaren waarom er bepaald gedrag was.

GoLang is clean en simpel

Er bestaan in Go maar relatief weinig concepten en syntax. Daarnaast is Golang erg streng op formatting. De code moet gewoon aan een bepaalde code convention voldoen anders compiled het vaak niet eens. Ook zit er standaard een formatting tool in de compiler. Dit alles zorgt ervoor dat vrijwel alle code door wie het ook ontwikkeld er behoorlijk consistent uit ziet wat betreft stijl. Dit vind ik een groot voordeel omdat het gewoon makkelijk leesbaar is. En een ander voordeel is dat je minder discussie zal moeten voeren over code stijl. De compiler dwingt je om het op een bepaalde manier te doen zo simpel is het. Als je net begint kan het wel eens wat verwarrend zijn en je irriteren als het niet wil compilen maar dat wordt vanzelf beter. Voorbeelden zijn dat curly bracket direct na de if of for loop moet staan en dat er geen unused variabele in je code mag zitten.

Daarnaast is het een vrij simpele taal die vrij weinig concepten bevat. Zo is er geen ondersteuning voor uitgebreide inheritance. Ook missen er nog allemaal andere dingen zoals bijvoorbeeld generics dingen markeren als read only of verschillende soorten loops. Het is prettig omdat je snel alle concepten snel kan leren en je zelf of je groepsgenoten code minder makkelijk complex kan maken. Vaak is er wel om heen te werken maar zelf mis ik soms toch nog wel dingen zoals als Generics.

GoRoutines

Dit is waarschijnlijk een van de belangrijkste redenen waarom je zou kiezen om go te gaan leren en gebruiken. Met GoRoutines kan je makkelijk zonder veel kosten code asynchroon laten draaien. Dit komt mede doordat de stack van GoLang een dynamische grote heeft. Je zet “go” voor je statement en je code wordt parallel uitgevoerd het is nog steeds niet simpel maar maakt het wel een stuk simpeler. Daarnaast bestaan er channels om data weer te kunnen synchroniseren. Om dingen parallel te laten lopen vraagt weer om een andere manier van denken waar je beter in kan worden door gewoon veel te trainen of wel gewoon oefenen en het veel proberen net zoals het leren OOP en FP.

Wat ik allemaal heb gedaan

Ik ben begonnen met doornemen van de Go tour op https://tour.golang.org/ . Als je dit hebt doorgenomen dan ben je al een heel eind op weg. De volgende uitdaging was om een lokale developement omgeving op te zetten. Dit was nog wel een uitdaging, zeker door hebben hoe alle paden moeten staan was wel even lastig. Mogelijk snap ik dat nog steeds niet zo goed maar dat vind ik ook een minder punt aan GoLang. Daarna natuurlijk wat kleine proef dingetjes en scriptjes geschreven. Een voorbeeld hiervan is de socket chat die ik met een klasgenoot heb proberen te schrijven. (https://github.com/Daan-Grashoff/Golang_socket_chat)

De toekomst

Wat ik tot nu toe heb ervaren is het een prettige taal op een paar nadelen na. Ik denk dat als ik er verder mee ga dat ik er nog veel van kan leren. Als alles volgens plan verloopt hopen we voor ons komende project de backend op de server ook in GoLang te gaan ontwikkelen. Ik hoop dat we daar als team veel van kunnen leren op gebiedt van specifiek de taal GoLang te leren maar ook de concepten van concurrent programmeren beter gaan begrijpen.

 

 

 

advent of code 2016

Net als dit vorig jaar start er ook dit jaar weer een serie of advent of code (http://adventofcode.com/). Op de website wordt in de advent periode (de periode voor kerst) iedere dag  twee nieuwe opdrachten geplaatst.

Waarom ik het leuk vind om mee te doen

Ik vind het leuk om dit soort algoritmische oefeningen te maken. Het zijn over het algemene wat kortere taken, die je binnen een beperkte tijd kan oplossen waardoor je gewoon direct kan beginnen. Je wordt uitgedaagd om goed na te denken over een probleem. En natuurlijk ook leuk je krijgt direct feedback of je het wel of niet goed hebt.

Redenen waarom jij ook mee zou moeten doen

Ik ga er hier natuurlijk van uit dat je het zelf leuk vind om te programmeren. Maar je hebt vast wel eens dat je wel wilt programmeren maar je geen idee hebt wat je moet gaan programmeren. Nou hier heb je iets te doen en je zit er ook niet voor een langere periode aan vast. Daarnaast is het een mooie gelegenheid om eens een keer een nieuwe programmeertaal op te pakken of jezelf te verbeteren in een taal. En natuurlijk ook niet onbelangrijk je traint jezelf in logische nadenken of houdt het in stand

Andere websites

Op internet zijn ook verschillende andere websites te vinden waar je ook algoritmische problemen voorgeschoteld krijgt. Vind je dit leuk dan is het ook de moeite waard om bijvoorbeeld te kijken naar https://projecteuler.net/ of https://www.codeeval.com. En zo zijn er nog een hoop te vinden op het net. Wil je nou weten wat mijn voortgang is met advent of code dan kan je op mijn GitHub kijken: https://github.com/barld/AdventOfCode2016 . Wil je nou zelf meedoen dan zou ik wel proberen om het eerst zelf op te lossen.

immutability en referential transparency

In dit blog bericht is een een verslag bijgesloten over immutability en referential transparency.  Ik heb dit voor school geschreven voornamelijk om aan mijn schrijfvaardighedennte Werke . Daarnaast vond ik het ook een interessant onderwerp om over te schrijven. Het is één van de fundamenten binnen het functioneel programmeren. Het is een van de aspecten waar je rekening mee kan houden tijdens het programmeren om hogere kwaliteit code op leveren. De tekst is voornamelijk toegepast op C#, hierin is het ook redelijk toe te passen. Ook kan het verklaren waarom bepaalde stukken software zich vreemd lijken te gedragen.

Voor meer informatie kunt hieronder mijn rapport erover lezen.

Terugblik 2015

Afgelopen jaar heb ik verschillende dingen gedaan. Ik ben het jaar begonnen met mijn kerntaak examens voor mijn MBO opleiding. Vrij kort hier na ben ik begonnen met mijn afsluitende stage bij Coders Academy. Dit alles heb ik gelukkig vlak voor de zomervakantie kunnen afronden met het behalen van mijn diploma tot applicatieontwikkelaar.

In de laatste periode heb ik ook de beslissing genomen om Informatica te gaan studeren aan de Hogeschool Rotterdam. Het hoe en waarom heb ik al een keer eerder toegelicht. Op dit moment ben ik nog steeds bezig met deze opleiding. Op dit moment heb ik het idee dat het mij soms nog iets te makkelijk af gaat. Dit is zeker het geval bij het vak development. Ik denk dan ook dat het jammer is dat ze geen mogelijkheid meer aanbieden voor het versnellen van de opleiding voor MBO’ers. Heb ik dan niks geleerd? Nee dat zeker niet maar het is voornamelijk theorie achter dingen die je in de praktijk al gebruikt. Mijn praktische ervaring die ik heb opgedaan in mijn MBO periode geeft mij hierbij een ruime voorsprong. De theoretische verklaringen erachter zijn dan vrij makkelijk te doorgronden.
Halverwege dit jaar ook gestart met functioneel programmeren. Hier ben ik nog steeds met enige regelmaat mee bezig. Ook van uit school kan ik de nodige hulp en feedback voor krijgen. Dit is wel prettig. Je merkt in de lessen dat mijn leraar voorstander is van het functioneel programmeren. Hij laat dit ook wel zien in zijn stijl bij het programmeren in python wat deze eerste twee periodes de standaard taal bij de les is.

Jaar 2016

Komend jaar hoop ik verder te gaan met mijn opleiding Informatica en mijn propedeuse te gaan halen. Dit beginnend met in de tweede lesweek van het jaar een toetsweek en daaropvolgend drie weken project waarbij we een van de bordspellen die in de vorige periode door een groepje is gemaakt te gaan digitaliseren. Daarnaast hoop ik verder te gaan met het functioneel programmeren in F#. Er valt voor mij nog veel te ontdekken en leren. Dit hoop ik te bereiken door er meer over te lezen maar het ook vooral veel te gebruiken.

Waarom Informatica gaan studeren

Na dat ik afgelopen school jaar mijn opleiding Applicatieontwikkeling aan het Zadkine heb afgerond ga ik komend schooljaar beginnen met de opleiding Informatica  aan de Hogeschool Rotterdam.

keuzes na afronding van mijn studie

Na mijn opleiding had ik eigenlijk twee keuzes. Een baan zoeken ofwel verder studeren. Ik heb er uiteindelijk voor gekozen om verder te studeren. Het was voor mij zelf duidelijk dat ik in ieder geval verder zou willen gaan als programmeur. Hieronder waarom ik er uiteindelijk voor heb gekozen om toch Informatica te gaan studeren.

Geld

Je zou verder kunnen studeren om later meer te kunnen verdienen. Dit was voor mij geen zwaarwegende reden. Dat je als Hbo’er meer kan verdienen dan een MBO’er geloof ik best. Toch is dit zeker niet de reden dat ik heb gekozen voor het HBO. Voor het HBO moet ik nog vier jaar naar school, in die tijd zou ik als ontwikkelaar al vier jaar salaris kunnen ontvangen. Voor dat je dit verschil hebt terugverdiend zal je echt behoorlijk wat jaren flink meer verdienen voor dat je dit weer hebt ingehaald. Ik zeg niet dat ik niet graag een goed salaris zou willen ontvangen maar ik denk niet dat het de goede motivatie is om deze studie te gaan doen.

Kennis en uitdaging

Waar gaat de keuze voor een vervolg studie dan wel over? Kennis en uitdaging. Ik heb binnen het MBO zeker al wel aardig wat kennis opgedaan. Ondanks dat weet ik dat er nog genoeg te leren valt. Ik heb niet de illusie dat ik na deze studie niks meer te leren maar hoop toch wel weer een stuk meer te weten. Dit is ook wel een van de leuke dingen van het vak dat je nooit ben uitgeleerd. Veel basis dingen zijn steeds makkelijker te doen en kosten bovendien steeds minder tijd om te realiseren. Ik heb de laatste tijd gewerkt met verschillende web MVC’s je ziet dat hierin al heleboel dingen zijn te genereren. Hier hoeven vaak alleen maar wat basis aanpassingen te worden gedaan om het product naar wens te maken. Dit is denk ik de reden dat je in de toekomst je echt iets moet kunnen toevoegen als ontwikkelaar. Hiervoor is het belangrijk dat je genoeg kennis hebt en dat je het hele plaatje kan overzien. Ik hoop dat het HBO papiertje uiteindelijk makkelijker toegang geeft tot een uitdagende baan. Voor veel uitdagende banen als software ontwikkelaar zie je toch dat er wel veel wordt gevraagd naar iemand met een HBO papiertje al dan niet terecht. Uiteraard doe ik het niet uitsluitend voor het papiertje maar hoop ik dat de studie zelf mij ook zeker goed weet uit te dagen. Anders is het natuurlijk ook nog altijd mogelijk om jezelf wat meer uit te dagen binnen projecten.

Studies

Zoals ik al eerder schreef in dit artikel wist ik zeker dat ik programmeur zou willen worden. Of ik nou verder zou willen studeren of niet. Ik had hierbij twee studies op het oog namelijk Informatica en Technische Informatica. Daarnaast heb je de nog media achtige studies waar je ook leert programmeren. Deze vielen voor mij af omdat de logica zelf mij vooral aantrekt, Ik ben  hierbij veel minder geïnteresseerd hoe het er uiteindelijk visueel uit ziet voor de eindgebruiker. Er zullen dus veel dingen worden behandelt die ik persoonlijk niet zo interessant vind en daarnaast vraag ik mij af of ik technische genoeg wordt uitgedaagd tijdens deze studie.

Ik heb wel getwijfeld om de studie Technische Informatica te gaan doen. Het klinkt toch prachtig als je computer techniek diep weet te doorgronden. Je verdiepen in de basis onderwerpen als compilers en geheugen management. Daarnaast de koppeling kunnen maken tussen hardware en software. Hiermee  zijn veel interessante dingen te bedenken en zijn de mogelijkheden vrijwel onmogelijk. Dit zou speelgoed kunnen wezen maar bijvoorbeeld ook de aansturing van de hardware in simulators of wat voor systeem ook waar tegenwoordig hardware bij komt kijken. Toch heb ik niet gekozen voor deze studie. Waarom? De opleiding Informatica leek mij toch geschikter voor mij. Door dat de opleiding Informatica minder diep ingaat op sommige onderwerpen is het naar mijn idee ook een bredere opleiding dan Technische Informatica. Dit gaat dan meer over design paterns om makkelijker grote projecten te beheerden en werk methoden om uiteindelijk goed samen te kunnen werken met andere team leden en daarnaast betere oplossingen aan klanten te kunnen leveren. En nog een belangerijke reden is dat de kans dat ik voor deze studie slaag groter acht mede omdat ze hier minder van je verwachten op het gebied van wiskunde. Ik vind wiskunde zeker geen vervelend vak maar ik weet gewoon dat ik hierin een achterstand zal hebben wegens het ontbreken van het vak wiskunde op het MBO.

Wat verwacht ik van de studie Informatica

Er breekt een nieuwe periode aan in mijn leven waar in de nodige veranderingen zullen plaatsvinden. Ik ga naar een nieuwe school. Ik ga nieuwe mensen leren kennen, er zijn ook nog wel een aantal klasgenoten van mij die dezelfde studie gaan doen natuurlijk ook leuk om jullie weer te zien komend jaar. Daarnaast hoop ik natuurlijk vooral veel nieuwe kennis op te gaan doen, hier ga je immers een studie voor doen. Ik weet dat ik zeker in het eerste jaar ook Java ga leren. Als jullie mij een beetje kennen dan weten jullie ook dat ik op dit moment vooral graag in C# ontwikkel en ik het idee heb dat Java op sommige punten wat  gaat achter lopen. Maar ik heb eigenlijk geen ervaring in het programmeren in Java. Ik wil het dan ook een eerlijke kans geven en het is nou eenmaal een taal die wereldwijd in de Enterprise wereld ook heel veel wordt gebruikt. Over hoe ik dit ervaar (het werken met Java) zal ik vast nog wel eens een blog schrijven. Ik ga in ieder geval met verse energie binnen kort de studie Informatica starten en hoop dat de studie niet tegenvalt en ook uitdagend is voor studenten die al wat ervaring hebben binnen het programmeren. Ik hoop jullie in de toekomst nog via deze weg op de hoogte te houden van mijn voortgang van mijn studie Informatica.

 

 

© 2017 Blog Barld Boot

Theme by Anders NorénUp ↑