De programmeertaal C# (CSharp)

programmeertaal c#Toen ik begin jaren 80 vorige eeuw de programmeertaal 'C' leerde kennen was ik onmiddellijk verkocht. Ik heb jarenlang in vele programmeertalen gewerkt maar de taal 'C' bleef mijn favoriete taal. Toen in de jaren 90 de taal evolueerde naar 'C++' was ik eerst wat kritisch maar na het lezen van het boek van Bjarne Stroustrup ook verknocht aan de taal 'C++'. Ik heb in 'C++' nog meegewerkt aan het ontwikkelen van protocol stacks t.b.v. GSM voor de Psion organizers wat later Symbian is geworden. De taal 'C++' was bij voorbaat geschikt voor alles was snel en efficiŽnt moest zijn en in de game industrie was het nog een leidende programmeertaal. Ik heb ook bijna gedwongen in te taal Java moeten programmeren maar heb daar nooit enige liefde voor kunnen opbrengen. Toen ontdekte ik de programmeertaal 'C#' en in 2009 heb ik mijn eerste projecten in 'C#' gebouwd. Ik had een nieuwe favoriete programmeertaal ontdekt en met de komst van Unity was het weer een leuke uitdaging om zo efficiŽnt in 'C#' te programmeren. Ik heb de 'C#' opleiding van Microsoft gevolgd en de laatste jaren programmeer ik nog steeds veel in de taal 'C' en de taal 'C#'. Mijns inziens is de programmeertaal 'C#' en het dotnet framework een serieuze concurrent geworden voor de taal Java en de inmiddels redelijk versplinterde framworks. Met de nieuwe stroming binnen Microsoft waarbij met opensource en Linux omarmt heeft, ben ik ook weer een redelijke Microsoft fan geworden, ik ben (privť) ook een geregistreerde Microsoft app ontwikkelaar. Op deze pagina wil ik gaan uitleggen waarom ik een fan ben van de programmeertaal 'C#' en wil ik tips en hints en nuttige links delen. Vriendelijke groet Hein Pragt.

C# en de Unity game engine

Toen ik een goede Game Engine zocht kwam ik al vrij snel bij Unity uit, het is voor beginnende ontwikkelaars gratis, het is een zeer uitgebreide en stabiele Game Engine en als laatste goede argument, de programmeertaal binnen Unity is 'C#'. Unity zelf is zeer efficiŽnt in het afhandelen van graphics, geluid en controllers, echter om alles aan elkaar te verbinden is er 'C#' code nodig om, bijvoorbeeld events af te handelen, spelonderdelen te laten bewegen en reageren op elkaar en om bijvoorbeeld deuren te openen en de speler te laten bewegen en collisions af te handelen. Hiervoor heeft Unity een eigen framework ontwikkeld wat ze steeds blijven uitbreiden en verbeteren, maar helaas niet altijd backward compatible houden. Bij elke upgrade moet ik wel regelmatig mijn 'C#' code aanpassen, maar daarbij helpt Unity wel. Unity zelf is volledig geÔntegreerd met Microsoft Visual Studio en debuggen gaat ook uitstekend vanuit Visual Studio. Maar ook vanuit de Unity Game Engine zelf kan men veel testen uitvoeren, zeker als het gaat om resources en performance. Ik vind de combinatie Unity en 'C#' een zeer goede combinatie en ik heb er ook een eigen 3D first person Adventure game in geschreven. Vooral het leren kennen van het Unity framework en het Unity Object Model was de grote uitdaging, er is gelukkig wel veel voorbeeld code online te vinden. De GameState engine en de meertalige Localisation engine zijn de grootste uitdagingen geweest omdat deze door mij volledig in 'C#' geÔmplementeerd zijn. De GameState engine is een Singelton, wat me nog wat discussie met OO puristen opgeleverd heeft, ik ben zelf niet tegen het Singleton ontwerppatroon. Toch probeer ik wel zuivere 'C#' code te schrijven en ook datahiding en encapsulation en het modulair opzetten goed toe te passen. Ook is het handig om soms coroutines te gebruiken en blijft het een uitdaging om een goed balans tussen puur OO werken en snel en efficiŽnte code af te wegen. Ik heb het spel begin 2019 zelf uitgebracht en op deze pagina kunt u het bekijken en downloaden.

En versie van het spel Reversi in C#

De volgende uitdaging die ik mijzelf gesteld heb is het compleet herschrijven van het spel Reversi (wat ik oorspronkelijk in 'C' geschreven had) in 'C#' met een goed object model en zuiver OO opgezet. Ik was eerst bezorgd over de performance omdat een evaluatie routine met min-max toch binnen een halve minuut zeker 40 miljoen zetten moet kunnen uitvoeren en analyseren. De optimalisaties die ik in 'C' gemaakt had zoals een bitboard voor het opslaan van een bord in twee unsigned 64 bit integers, kon ik vrij snel in 'C#' implementeren omdat het nog behoorlijk veel overeenkomsten heeft met de programmeertaal 'C' en 'C++'. Het is niet voor niets C++++ met de plussen in elkaar geschoven als # teken. Het goed opdelen van het spel in logische objecten en deze objecten goed met elkaar te laten communiceren was een uitdaging, maar met het gebruik van delegates en events was het uiteindelijk mooi op te lossen. In dat opzicht merk je dat de taal ontworpen is om veelgebruikte programmeer uitdagingen goed en efficiŽnt op te lossen, ik vind 'C#' dan ook een heel praktische programmeertaal. Voor de user interface heb ik er een 'C#' forms applicatie van gemaakt, ook dit is er mijns inzien een goed en efficiŽnt DotNet framwork onderdeel. Mijn grootste zorg was de snelheid van de DotNet code tegenover de gecompileerde native 'C' code, maar uiteindelijk viel me dat heel erg mee, de DotNet code is vrijwel net zo snel als de native code, wat mij vaak verbazen blijft. De applicatie is nog in ontwikkeling en uiteindelijk zal ik van deze versie ook de broncode beschikbaar gaan stellen. Dit legt voor mij de lat om zuivere nette code te schrijven ook hoger.


Boeken over de programmeertaal C# (CSharp)

boekboek bestellenExam Ref 70-483 Programming in C# Dit boek kocht ik voor mijn C# examen bij Microsoft en het is een zeer compleet en duidelijk boek. Dit boek was de voorbereiding voor het Microsoft-examen 70-483 en helpt u de programmeertaal en het DotNet framework goed te doorgronden. Examen Ref is ontworpen voor ervaren C# ontwikkelaars die klaar zijn om hun status te verbeteren en het is een goed naslagwerk voor later. Het boek gaat er wel van uit dat u enige ervaring heeft met programmeren essentiŽle bedrijfslogica voor verschillende soorten applicaties, hardware en softwareplatforms. Ik kan het boek persoonlijk aanraden.

boekboek bestellenVisual C 2010 - De Basis Wanneer u liever een Nederlandstalig boek heeft is dit boek aan te raden. Dit boek helpt beginnende softwareontwikkelaars om zich C# snel eigen te maken. Aan de hand van veel praktische voorbeelden leert u alles wat u moet weten om verschillende toepassingen te maken voor uw eigen computer of voor internet. Een greep uit de inhoud: de belangrijkste elementen van de taal Visual C# Ė objectgeoriŽnteerd programmeren Ė objectverzamelingen Ė gebeurtenissen Ė fouten opsporen en afhandelen Ė werken met gegevens Ė LINQ Ė programmeren voor het web Ė en nog veel meer. Sander Gerz is softwarearchitect bij Solvec, een bedrijf dat gespecialiseerd is in het ontwikkelen en beheren van Windows-toepassingen.

boekboek bestellenThe C# Programmer's Study Guide (MCSD) Dit boek is de opvolger van het eerte boek dat ik beschreef, iets actueler maar ook iets duurder. Bereid je voor op Microsoft-certificeringsexamen 70-483: programmeren in C#. Het What, Why en How van elk concept wordt gepresenteerd samen met snelle samenvattingen, code-uitdagingen en examenvragen om sleutelconcepten te beoordelen en te oefenen. U leert hoe te gebruiken: Lambda-expressies om LINQ-query-expressies te schrijven Asynchrone programmering met de Async en Await-trefwoorden om de prestaties van langzame toepassingen te maximaliseren Reguliere expressies om gebruikersinvoer te valideren Reflectie om typen te maken en af te handelen tijdens runtime en nog veel meer De broncode in de book zal beschikbaar zijn in de vorm van iCanCSharp-notebooks en -scripts waarmee u voorbeelden kunt uitproberen en op interessante manieren kunt uitbreiden. Wat je gaat leren Begrijp de benodigde kennis en vaardigheden om je voor te bereiden op Microsoft-examen 70-483 Bestudeer de code-uitdagingen en oefenvragen over C# die relevant zijn voor het examen Beheers de programmeertaal C# Wie dit boek is voor ervaren C# en .NET programmeurs en ontwikkelaars die klaar zijn om het examen af te leggen en te slagen om gecertificeerd te worden.

Last update: 04-08-2019

Disclaimer: Hoewel de heer Pragt de informatie beschikbaar op deze site met grote zorg samenstelt, sluit hij alle aansprakelijkheid uit met betrekking tot de informatie die via deze site wordt aangeboden. Op de artikelen van de heer Pragt rust auteursrecht, overname van tekst en afbeeldingen is uitsluitend toegestaan na voorafgaande schriftelijke toestemming. Voor vragen hierover kunt u contact opnemen met: (email: mail@heinpragt.com). Heinpragt.com is ingeschreven bij de KvK onder nummer: 73839426 en is gevestigd in Veenendaal.  Lees hier de privacyverklaring van deze site. Voor informatie over adverteren op deze site kunt u contact opnemen met: (email: mail@heinpragt.com).