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.

 

 

Eerste bevindingen bij het leren van F#

Ik ben nu een korte tijd bezig met het leren van de voor mij nieuwe programeer taal F#.  Er valt voor mij nog veel te leren binnen het functioneel programmeren met behulp van F# maar ik wil hier alvast mijn eerste bevindingen delen die mij zijn opgevallen tijdens het leren van F#.

Immutable

Met F# en schijnt eigenlijk met veel functionele talen te zijn dat variabelen en objecten zo veel mogelijk immutable zijn. Dit wil zeggen als je iets eenmaal aangemaakt hebt dat het niet meer te wijzigen valt. Je kan het expliciet aangeven dat iets wel mutable is maar dit is eigenlijk niet zoals je zou horen te doen in een functionele taal. In “normale talen” is dit wel gebruikelijk en daarom zorgt dit er direct voor dat je op een andere manier moet gaan nadenken om een probleem op te lossen. Ik vind de omslag lastig maar ik zie ook wel voordelen hiervan. Met normaal programmeren heb je kans dat variabelen worden aangepast van ergens anders in je programma. Dit kan onverwacht fouten opleveren wat niet zal gebeuren als je variabelen immutable zijn.

In normaal OOP hebben ze voor dit probleem ook deels een oplossing bedacht en dat is “encapsulation” hiermee kan je je variabelen en fields binnen een object beschermen door ze bijvoorbeeld private te maken. Wat overigens binnen F# ook nog kan.

Als je gevolg hiervan wordt er bijvoorbeeld ook veel sneller recursieve methodes gebruikt om bepaalde problemen op te lossen.

Syntax

De syntax is heel anders dan dat ik gewend ben van andere talen als C# en PHP. Python komt nog het meeste in de buurt wat betreft syntax door het ontbreken van brackets in de syntax. Ik heb tot nu toe alleen nog maar brackets gezien bij het definiëren van een sequens. Dit is een soort lijst maar de items hoeven er nog niet perse in te zitten en kan ook eventueel oneindig lang zijn. De compiler of interpreter bepaalt die dingen die normaal met brackets worden gedaan aan de hand van tabs en spaties. Ook het gebruik van komma’s en haakjes is teruggebracht bij het definiëren en aanroepen van methodes. in plaats daarvan zeg je eerst hoe de methode heet en is daarna na iedere spatie een ander argument. Gebruik je wel haakjes en komma’s dan ben je een tuple aan het definiëren als argument. Deze worden overigens wel een stuk meer gebruikt dan in C# gebruikelijk is maar ze bestaan wel. Daarnaast zal je opvallen dat in een stuk F# code geen return statements staan ondanks de waarschijnlijk vele gedefinieerde functies in de code. Standaard wordt de laatste regel in de functie gereturnt. Naast deze dingen zijn er meestal geen type aanduidingen nodig binnen je code. F# is wel een static typed taal maar het is alleen maar nodig om dit aan te geven als de compiler er zelf niet uit kan komen. Met veel operaties is F# daar prima toe in staat.

Acties op lijsten/verzamelingen

Op lijsten en verzamelingen worden met functionele talen ook veel gedaan met behulp van lambda methodes. Je geeft dan een functie als argument die dan vaak over de hele lijst wordt uitgevoerd. Je ziet dat deze manier ook steeds meer wordt overgenomen door een taal als C# waar je met behulp van Linq extension methods dit ook kan doen tegenwoordig. C# staat je als je wilt inmiddels al voor een belangrijk deel toe wat je in F# ook kan. Wat wel een verschil is dat je vaak ook nog add en remove acties kan uitvoeren wat niet is toegestaan is in F#. Daarnaast is het grootste verschil dat als je F# efficient wilt gebruiken dat je wel wordt geforceerd om in zo’n stijl te programmeren waar dat in C# niet het geval is en je vaak ook nog andere keuzes hebt.

Voorlopige conclusie

Ik vind het nog steeds leuk om F# te leren, het helpt je weer op een andere manier naar problemen te kijken. Deze kennis is eventueel ook toe te passen in niet functionele talen als C# die ook steeds meer functionele concepten gaat ondersteunen. Ik denk wel dat ik het op deze manier beter leer om dat ik nu min of meer wordt gedwongen om echt puur functionele code te schrijven. Wel merk dat de ondersteuning F# binnen Visual Studio minder goed is dan wat het is bij het schrijven van C#. Ik hoop jullie over een tijdje nog eens een update te kunnen geven. Als je alvast wat code van mij wilt bekijken die ik in F# heb geschreven dan kan je hier op mijn github kijken waar ik een aantal problemen van project Euler heb opgelost

© 2016 Blog Barld Boot

Theme by Anders NorenUp ↑