Gå til innhold

Anbefalt programmeringsspråk for ung nybegynner


Anbefalte innlegg

Jeg har en sønn som etter mitt syn begynner å bli i den alderen at han kunne hatt glede av å prøve seg på litt programmering.

 

I grunnskolen kommer de jo aldri inn på programmeringsdelen av dataundervisningen, selv om jeg vet av egen erfaring at mange kunne hatt glede og nytte av det lenge før de begynner på videregående. (Vi drev med det selv fra 11-års alderen, av ren fornøyelses skyld, og hadde mye moro med det)

 

Så jeg har planer om å tilby poden en liten "tjuvstart" for å se om han viser noe interesse for det. Men det jeg er usikker på er hvilke programmeringsspråk som passer best for en nybegynner i den alderen.

 

Det jeg primært er ute etter er ikke nødvendigvis de språkene han vil ende opp med å foretrekke som voksen. Han er 9 og som niåringer flest, litt utålmodig, så jeg tror et språk hvor man må skrive "hundrevis" av linjer bare for å få opp et "Hello World!" i tekst på skjermen kanskje ikke vil være veldig fengende, men derimot et språk med godt utvalg av kraftige "biblioteker" som gir litt flashy resultater på skjermen med et minimalt antall linjer kode vil nok være et pluss om han skal fatte interesse for dette nå. Litt høy "magi-faktor" rett og slett, er svært ønskelig. (Jeg er klar over at alle språkene krever tålmodighet men det er fremdeles innbyrdes forskjeller mellom dem.) Han er en racer i engelsk så språkmessig vil stort sett det meste gå, selv om instruksjonene ikke er på norsk.

 

Selv har jeg vært borti litt ymse så jeg kan nok støtte ham godt på vei:

Java, C++, (ObjectOriented) Perl, C, Pascal, Basic mm.

 

Så spørsmålene blir da:

 

1) Hvilket programmeringsspråk ville du anbefalt til en utålmodig nybegynner og hvorfor?

2) Noen bestemt bok du da ville anbefalt, eller evt. noen ressurser på nettet som er nyttige?

 

  • Liker 1
Lenke til kommentar
Videoannonse
Annonse

C# (.NET/Mono) er ikke et dumt førstevalg; det er meget relevant for tiden, og tror ikke det blir noe mindre populært med det første. Problemet er kanskje at det tar litt tid å komme i gang fordi man nesten må benytte seg av et IDE (Visual Studio, SharpDevelop/MonoDevelop) for å lage selve prosjektfilene osv. Når man først er i gang har man alle verktøyene man trenger inni ett og samme IDE, og nesten alt av tredjepartsbiblioteker man kan få bruk for er tilgjengelig via NuGet.

PowerShell (også .NET) er ikke så værst som et skriptespråk, og har ganske enkel syntaks. Det jeg synes er litt av problemet med PowerShell er friheten man får til å blande syntaks og dermed skape rot. Derfor vil jeg anbefale å bruke fullt navn på kommandoer (ingen aliaser/forkortelser), og alltid spesifisere navn på parametre.

 

JavaScript, TypeScript eller lignende, blir for tiden mer og mer brukt som språk i cross-platform-applikasjoner. Jeg synes personlig ikke noe om vanlig JavaScript, men det er også et enkelt språk.

 

Det første ordentlige programmeringsspråk jeg brukte var Delphi, og det var min favoritt i årevis helt til jeg gikk over til C++ og C#. Jeg angrer ikke på at jeg brukte Delphi, men skjønner ikke i dag hvorfor jeg likte det. Redigert: Jeg så nå at C# enten ikke hadde kommet ut enda, eller at det kom ut kort tid før jeg begynte med Delphi, så da var det kanskje ikke så rart likevel.

 

Noen gode bøker vet jeg dessverre ikke om, da det jeg for det meste leser er dokumentasjonen til språkene og bibliotekene, og da er det MSDN som gjelder for C# og PowerShell.

 

F.eks. Codeacademy har interaktive læreprogrammer for noen språk, og det kan kanskje være mer interessant å starte med noe slikt i stedet for å lese bøker?

Endret av ahw_
  • Liker 1
Lenke til kommentar

Python

 

Pluss: Veldig enkelt, kan brukes til veldig mye rart, og man kan nyttegjøre seg av det på alle mulige nivåer. Massevis av biblioteker. Laget til dels nettopp for å være lettlært og ikke minst lettlest. Kjempelett og moro å leke med når man får sansen for ren tekst (og det får man fort når man ser hva man kan gjøre). Mye lettere å forholde seg til i starten enn et fullblods kompilert programmeringsspråk.

 

Minus: Likevel full tekstkoding; ikke umiddelbart flashy. I likhet med flere andre forslag kanskje ikke helt passende for en niåring (kommer an på gutten), men da likevel noe å ha i tankene for en senere anledning. Noen vil kanskje si at syntaksen er litt for «snill».

 

Om ikke annet et fint neste steg etter f.eks. Scratch.

Endret av Imsvale
  • Liker 2
Lenke til kommentar

Hvis h*n er 9 år, ville jeg anbefalt å starte med Scratch, hvis h*n ikke har vært borti programmering fra før av. Det kan være litt vanskelig å forstå syntakser etc. for en som er helt ny i programmeringsverdenen. Scratch er veldig greit og godt organisert, som gjør det enkelt å forstå. Senere kan man evt. gå over til python med pygame som rammeverk, eller c# med XNA som rammeverk.

Man kan lage spill i scratch og, og da spesielt 2D-spill.

  • Liker 1
Lenke til kommentar

Hvis h*n er 9 år, ville jeg anbefalt å starte med http://www.squeak.org/, hvis h*n ikke har vært borti programmering fra før av. Det kan være litt vanskelig å forstå syntakser etc. for en som er helt ny i programmeringsverdenen. http://www.squeak.org/ er veldig greit og godt organisert, som gjør det enkelt å forstå. Senere kan man evt. gå over til python med pygame som rammeverk, eller c# med XNA som rammeverk.

Man kan lage spill i http://www.squeak.org/ og, og da spesielt 2D-spill.

Lenke til kommentar

Hvorfor?

Flere grunner.

 

#1: Skitne microsoft-hender.

#2: Ganske komplekst og sølete objektsystem som er ganske nødvendig og mer forivrrende enn nødvendig. Samme grunn som jeg mener at nybegynnere bør styre unna Java.

#3: Det er snakk om å lære å -programmere-, ikke få seg jobb.

 

Det er et språk med implementasjoner som yter bra, og det er ekstremt utbredt i Norge.

Om poden er ni år tror jeg strengt tatt ikke "miljø i Norge" bør være en avgjørende faktor.

 

Kompilatoren er også open source dersom du bryr deg om det.

Selvfølgelig bryr jeg meg om det. Men det er vel bare én av de, hva?

 

edit: pluss at jeg personlig synes språket er litt meh. Det ser ut til å dele masse cruft med C++, men minus fleksibiliteten. Bring the firing squad.

Endret av Lycantrophe
  • Liker 1
Lenke til kommentar

#1: Skitne microsoft-hender.

Wow. Care.

#2: Ganske komplekst og sølete objektsystem som er ganske nødvendig og mer forivrrende enn nødvendig. Samme grunn som jeg mener at nybegynnere bør styre unna Java.

Objektsystemet er da rimelig enkelt...

 

#3: Det er snakk om å lære å -programmere-, ikke få seg jobb.

Jeg er dristig nok til å påstå at et programmeringsspråk med en stor, norsk brukermasse er gunstig for nybegynnere.

 

Selvfølgelig bryr jeg meg om det. Men det er vel bare én av de, hva?

Det finnes minst to open source implementasjoner av C# kompilatoren: Mono (Xamarin og Novell) og Microsoft sin Roslyn implementasjon. Roslyn kompilatoren er skrevet i C# og benytter seg utelukkende av immutable data.

 

edit: pluss at jeg personlig synes språket er litt meh. Det ser ut til å dele masse cruft med C++, men minus fleksibiliteten. Bring the firing squad.

 

C# deler veldig, veldig lite med C++. Det eneste jeg kan tenke på nå er operator overloading og C-pekere. Et eksempel på noe som er helt forskjellig er at om en variabel er en refereanse eller en verdi blir definert av datatype, ikke av variabel deklerasjonen (slik som i C++). Det er også obligatorisk objektorientert, og både dynamisk og statisk typet. Enum er lik C++11s class enum. Generics er mer som Java sine generics enn C++ templates men i motsetning til Java så er generics støttet av runtimen slik at det ikke skjer noen type erasure som er ekstremt gunstig dersom du driver med for eksempel OpenGL (en List<int> blir ikke en wrapper rundt ArrayList med Integer som det gjør i Java. Ettersom det alltid har vært auto-boxing er det heller ikke en egen klasse for boxed integer som i Java).

 

Men ihvertfall: C# har ekstremt lite til felles med C++. De som hevder det gjør det kun fordi C++ har et langt bedre rykte enn det fortjener.

 

Hva er fordelen til C# fremfor C++? Det er langt mer ekspressivt, og garbage collection gjør hverdagen ganske så mye enklere. Det er også et innebygget spørrespråk (sitter og jobber med en LINQ-to-GLSL i OpenGL wrapperen min, men er litt opptatt med personlige ting for tiden, men teorien er at du kan skrive en spørring mot et vertex buffer i C# som blir kompilert til en GLSL shader)

 

LINQ ser slik ut:

 

var alleSomHeterErik = from stud in studenter where stud.Fornavn == "Erik" select new { stud.Fornavn }

Dette er ikke det samme som map og filter i andre språk selv om det er tilsynelatende likt. Grunnen er at dersom studenter er en IQueryable så blir det dannet et uttrykkstre, og ingen kode blir utført. Dette uttrykkstreet kan kompileres til SQL (eller i min OpenGL wrapper sitt tilfelle: GLSL). Derimot hvis studenter er en IEnumerable så er det bare et vanlig filter og map.

 

En fordel er også at du ganske enkelt kan kompilere kode on the fly i C# gjennom System.Linq.Expressions, som er litt som boost::proto pluss en IL kompilator i tillegg.

 

C# er et forholdsvis enkelt men omfattende programmeringsspråk.

 

edit: editoren bare køddet til alle siteringene.

Endret av GeirGrusom
Lenke til kommentar

Wow. Care.

Eller andre verdier.

 

Objektsystemet er da rimelig enkelt...

For en nybegynner? Mhm.

 

Jeg er dristig nok til å påstå at et programmeringsspråk med en stor, norsk brukermasse er gunstig for nybegynnere.

For en niåring?

 

 

Det er også obligatorisk objektorientert, og både dynamisk og statisk typet.

Og dette er bra for en niåring?

 

Enum er lik C++11s class enum. Generics er mer som Java sine generics enn C++ templates men i motsetning til Java så er generics støttet av runtimen slik at det ikke skjer noen type erasure som er ekstremt gunstig dersom du driver med for eksempel OpenGL (en List<int> blir ikke en wrapper rundt ArrayList med Integer som det gjør i Java. Ettersom det alltid har vært auto-boxing er det heller ikke en egen klasse for boxed integer som i Java).

Vel og greit, jeg påsto heller aldri at det var en 1-til-1 med C++. At de har mindre brukne generics enn java er forøvrig ikke en veldig stor prestasjon.

 

Men ihvertfall: C# har ekstremt lite til felles med C++. De som hevder det gjør det kun fordi C++ har et langt bedre rykte enn det fortjener.

k.

 

Hva er fordelen til C# fremfor C++? Det er langt mer ekspressivt, og garbage collection gjør hverdagen ganske så mye enklere. Det er også et innebygget spørrespråk (sitter og jobber med en LINQ-to-GLSL i OpenGL wrapperen min, men er litt opptatt med personlige ting for tiden, men teorien er at du kan skrive en spørring mot et vertex buffer i C# som blir kompilert til en GLSL shader)

Ja, men dette er en niåring.
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...