Nighthawk.dk

Lær at programmere

Skrevet d. 2. Sept. 2020 af Claus Nielsen.

Alle bør prøve at programmere. Ikke fordi alle behøver være softwareudviklere, men for at opnå en dybere forståelse for al den teknologi vi omgiver os med. Men er det ikke svært? Ikke nødvendigvis. Og hvordan kommer man i gang? Læs med her!

Der kan være mange gode grunde til at lære at programmere, men uanset hvad der driver dig, er det vigtigt at du har lyst til at lære det og at du er villig til at bruge noget tid på det: det er ligesom at lære at cykle - det kræver lidt øvelse før man er kørende.

Når det er så er sagt, så tror jeg som udgangspunkt på at alle kan lære at programmere, og det kan være utroligt sjovt.

Det bedste råd jeg kan give er derfor, at du skal finde et projekt du har lyst til at lave - og som du synes det er sjovt at lave - og så finde ud af hvad det kræver at lave det!

Det behøver ikke være noget nyt og revolutionerende, men det er vigtigt at have et mål, at arbejde hen imod. På denne måde får du praktisk erfaring med programmering fra starten, og det er alt andet lige den bedste måde at lære at programmere på - det er også nemmere at læse op på teorien senere hvis man rent faktisk har prøvet lidt først!

Mange former for programmering

Man bruger programmering til mange forskellige ting, det kunne blandt andet være:

  • Almindelige programmer til f.eks. Windows eller Linux.
  • Spil, f.eks. til computere eller konsoller som PlayStation eller Xbox.
  • Websider (frontend), dvs. det der vises hos klienten, der besøger en webside.
  • Webapp backend, dvs. alt hvad der sker på server-siden.
  • Data-analyse af store datamængder, inkl. udtræk af relevante data.

Det kræver forskellige tilgange at arbejde med hvert af disse områder, og du bør derfor fokusere på ét bestemt område ad gangen - selvom man selvfølgelig sagtens kan arbejde på et projekt der indeholder flere forskellige komponenter.

Hvis du f.eks. vil lave et computerspil, vil du måske have brug for at have en webside tilknyttet hvor man opretter sin brugerprofil til spillet. Desuden kunne man indsamle data om hvordan spillerne håndterer udfordringerne i spillet, som efterfølgende skal analyseres for at blive klogere på hvordan spillet kan forbedres.

Det er særligt frontend-webprogrammering der skiller sig ud - sprogene HTML og CSS (men IKKE JavaScript), som bruges til en stor del af frontend-udviklingen, fungerer meget anderledes end "traditionelle" programmeringssprog. Bortset fra disse to sprog (samt SQL, der bruges til databaser), så har de fleste programmeringssprog mange fællestræk, og lærer du først ét sprog er det nemmere at lære et andet.

Når de grundlæggende begreber som variabler, betingelser (if statements), løkker (loops), funktioner/rutiner, osv. er på plads, så er nogle programmeringssprog også objektorienterede. Uden at gå i detaljer her, så skal det bemærkes at der er stor forskel på hvordan et program opbygges alt efter om man bruger objektorienteret programmering (OOP) eller ej. Sprog som C#, C++, Java og Python er objektorienterede, mens f.eks. C og de fleste scripting-sprog ikke er.

Hvordan kommer jeg så i gang?

Her er mine personlige anbefalinger:

  • Programmer til Windows: Her er C# (udtales C-Sharp) et rigtigt godt valg, og hvis du f.eks. bruger Visual Studio eller SharpDevelop kan du nemt designe vinduer med knapper, tekstbokse, osv.
  • Computerspil: Find en game engine som f.eks. 3D Gamestudio eller den mere moderne Unity engine. Start med at følge nogle tutorials, og find evt. nogle open-source-projekter lavet i den engine du har valgt som du kan prøve at modificere ved at lave ændringer i deres kode.
    Se min 3D Gamestudio-tutorial her.
  • Web (frontend): Først og fremmest skal du lære HTML og CSS, og når det grundlæggende der er på plads bør du se på JavaScript. W3Schools er et godt sted at starte. Bemærk at du nok også får brug for lidt backend-programmering (f.eks. ASP/PHP sammen med SSI, eller et webapp framework).
  • Web (backend): Jeg vil ikke længere anbefale at bruge PHP/ASP/ASP.NET eller lign. til andet end meget simple sider; vælg i stedet et framework som .NET Core, Node.JS eller Django. Det skal bemærkes at det kræver noget mere at sætte et framework op, end bare at bruge f.eks. PHP, så PHP er stadig ok i nogle tilfælde. Jeg har brugt Django til Nighthawk.dk (tidligere har jeg brugt ASP og PHP).
  • Data-analyse: Her kan shellscripting faktisk være ret nyttigt, læs mere i denne artikel, men ellers vil et sprog som Python være oplagt. Matlab/Octave er ofte godt til selve analysen, men shellscripting eller Python kan hjælpe med at trække data ud i et læsbart format.
  • Prøv IKKE på at starte med C++: Sproget C++ er hvis ikke det sværeste at mestre, så i hvert fald det sprog hvor man lettest laver fejl. Hvis det er muligt, til dit behov, så kig på C# i stedet - det kan meget af det samme, men man laver ikke alle de fejl med håndtering af ressourcer som man nemt kommer ud for i C++.

Når du har fået lidt erfaring med programmering i f.eks. C#, vil jeg også anbefale at prøve sproget C, hvor man ofte selv skal håndtere brug af computerens hukommelse. Dette gør på den ene side sproget sværere end en del andre sprog, men samtidig giver det også mulighed for at lære mere omkring hvordan en computer fungerer på et lidt mere fundamentalt niveau.

Hvis du vil programmere skal du have værktøjet i orden - du skal have en god text editor med features som syntax highlighting, auto-indentation, auto-completion, osv. I princippet kan du klare dig med f.eks. Notesblok (notepad) på Windows, men det bliver du hurtigt træt af. Bemærk dog at hvis du vil lave computerspil følger der udvikler-værktøjer med til de fleste game engines (f.eks. 3D Gamestudios Script EDitor, SED).

Et godt bud på en text editor er Microsofts Visual Studio Code (bemærk, IKKE Visual Studio her, men VS Code), og på Linux kan programmet "gedit" sættes op med lignende features (jeg skrev faktisk hele MolSpin-softwaren i gedit). Et andet bud kunne være Notepad++.

I den lidt tungere ende kan du også vælge at bruge et Integrated Development Environment (IDE) som f.eks. Microsofts Visual Studio (bemærk, IKKE VS Code her), der er et omfattende værktøj, som indeholder rigtig mange værktøjer udover bare en text editor. Der findes dog også mange andre IDE'er derude.

Relaterede ressourcer
W3Schools

Tutorials til web-udvikling.

Se mere her

Unity Engine

Game-engine til udvikling af 3D-spil.

Se mere her

3D Gamestudio

Game-engine til udvikling af 3D-spil.

Se mere her