Gå til innhold

Anbefalte innlegg

Antar at det kan finnes en tråd eller to om emnet fra før, men la gå...

 

Har jobbet med office endel og der lært meg VBA, blitt "bitt av basillen" og kunne tenke meg å lære "seriøs" programmering. Ønsker å lære et språk som gir meg et bredt fundament. Kan være "tungt", men må samtidig kunne gi litt gleder underveis som å lage enkle kalkulatorer/spill/applikasjoner.

 

Antar at svaret vil starte med C,

så hva er pro's og con's med de forskjellige dialektene.

Og hva litteratur vil du anbefale?

Lenke til kommentar
Videoannonse
Annonse

Tror nok jeg ville ha startet med noe som er litt lettere enn C, men som allikevel gir store muligheter. Blant annet fordi C i seg selv ikke er objektorientert slik jeg forstår det (har ikke kodet det selv). Om noe C-ish, så gå for C++. Men vil heller anbefale java.

Java er ganske vanlig å starte med, som det også finnes veldig mye nybegynner-litteratur for på nettet, særlig gjennom forskjellige institusjoner som Høgskolen i Oslo osv.

Er mange som argumenter mot akkurat Java pga. det er kanskje ikke så moderne og lightweight som man skulle ønske, men jeg syns det var et greit språk å lære meg objektorientert programmering med.

Lenke til kommentar

å spørre hvilket språk er best er som å spørre hvilken religion er riktig. Svaret du får avhenger helt av hvem du spør. Men tror det er enighet i at man burde begynne med litt høynivå-språk i begynnelsen om man vil ha en lett introduksjon til programmering. Da sitter du med alternativer som f.eks. Java, C# og python (+++). De er alle veldig gode alternativer.

Lenke til kommentar

Har jobbet med office endel og der lært meg VBA, blitt "bitt av basillen" og kunne tenke meg å lære "seriøs" programmering.

 

"Seriøs" programmering er lite konkret, så det er vanskelig å svare på spørsmålene du kommer med senere i innlegget. Jeg tror det vil bli lettere for oss å gi deg seriøse tips om du forteller litt om hva du kunne tenke deg å drive med. Vil du lage webapplikasjoner? Spill? Trenger du kanskje programmering for databehandling i jobbsammenheng? Hvilke språk du velger kan avhenge av svarene på disse spørsmålene.

Lenke til kommentar

Du må spesifisere litt mer hva du legger i seriøs programmering.

 

Hvis du bare vil lære deg å lage programmer så se på C# eller Java. Hvis du vil lære deg programmering av websider, se på html/ajax/php. Hvis du vil lære deg spillprogrammering må du sette deg inn i c++.

 

Det er ingen fasit for hva du lærer med hva slags språk, men det som er mer relevant er hva folk i de forskjellige bransjene bruker nå. For webprogrammering kunne du begynt med C# eller Java istedenfor html/ajax/php, men jeg syns iallefall at da bør du kunne litt "seriøs" programmering fra før.

 

Jeg vil også anbefale deg til å ikke se på spillprogrammering med det første. Grunnen til det er at hvis du skal lære deg spillprogrammering skikkelig så er det temmelig komplisert og veldig lowlevel. Det er de som da argumenterer for at du kan bare lære deg å lage mods, eller bruke et API som gjør mye av den vanskelige jobben for deg, men du lærer ikke å bli en bra spillprogrammerer av dette.

Lenke til kommentar

Tror nok jeg ville ha startet med noe som er litt lettere enn C, men som allikevel gir store muligheter. Blant annet fordi C i seg selv ikke er objektorientert slik jeg forstår det (har ikke kodet det selv). Om noe C-ish, så gå for C++. Men vil heller anbefale java.

Java er ganske vanlig å starte med, som det også finnes veldig mye nybegynner-litteratur for på nettet, særlig gjennom forskjellige institusjoner som Høgskolen i Oslo osv.

Er mange som argumenter mot akkurat Java pga. det er kanskje ikke så moderne og lightweight som man skulle ønske, men jeg syns det var et greit språk å lære meg objektorientert programmering med.

 

C er prosedyrisk ja, men hvis man skal se på Objektorientering så vil jeg definitivt ikke anbefale C++ hvis man ikke følger et emne på en skole eller på nettet(Som man VET er bra) som et språk å lære seg OO. C++ har ingen satte regler i forhold til hvordan man skal programmere det slik som feks. Java har. Så man er ikke tvunget til å jobbe OO( Som jeg vil påstå er både en styrke og en svakhet med C++), som igjen krever at man forstår OO før man begynner. :)

Endret av Ikon
Lenke til kommentar
Hvis du vil lære deg spillprogrammering må du sette deg inn i c++.
Vil si dette er en myte. Med mindre du skal ha lage ting som source-engine eller crytek-motoren så trenger du ikke C++. Det er utrolig hvor gode spill man kan lage i C# med XNA, bare se på alle indie-spillene. Jeg vil og tro at det er bedre for en indie-programmerer å bruke XNA til å utvikle på, da det gjør ting mye lettere for deg selv.
Lenke til kommentar
Hvis du vil lære deg spillprogrammering må du sette deg inn i c++.
Vil si dette er en myte. Med mindre du skal ha lage ting som source-engine eller crytek-motoren så trenger du ikke C++. Det er utrolig hvor gode spill man kan lage i C# med XNA, bare se på alle indie-spillene. Jeg vil og tro at det er bedre for en indie-programmerer å bruke XNA til å utvikle på, da det gjør ting mye lettere for deg selv.

Indeed. En kan fint lage fulle spillmotorer i C# og Java også, men det største hinderet er overhode ikke ytelse, men tilgjengelige biblioteker, noe C++ er overlegent på. Det er derimot bindings til både Java og .NET for de aller fleste.

Lenke til kommentar

Er klar over at jeg uttrykker meg noe diffus over hva jeg vil med programmeringen, og det skyldest at jeg ærlig talt ikke har noe klart mål, annet enn å tilegne meg en ny ferdighet. Og da et språk som vil være et godt fundament videre. Når jeg nevnte spill, var det heller på et "pek og klikk"-nivå enn Crysis.

Starter trolig på en siv.ing på NTNU neste høst, så det kunne vært greit med en "head start".

 

Det kan virke som C# kan være det jeg er ute etter, så kan jeg siden suplere med java/python.

 

Noe anbefalt litteratur?

Bedre enn: http://www.capris.no/product.aspx?isbn=0470563486 ?

 

ellers, fått tips om denne: http://www.capris.no/product.aspx?isbn=0735611319

Lenke til kommentar

Selv om C# og Java er populære så skal du være klar over at de er skudd sammen spesielt for å la større teams jobbe sammen på enda større prosjekter. En enkelt utvikler er langt mer effektiv i veldig manage sammenhenger om han bruker et dynamisk språk som Ruby eller Python. De er også ideelle for læring, fordi de har mindre "seremoni og staffasje" man må gjennom for å lage noe som fungerer - veien fra en tanke til du ser resultatet på skjermen er kortere.

 

Mitt viktigste råd er dog følgende: Om du kjenner noen som programmerer, og det er mulig for deg å sitte sammen med dem av og til å lære av dem, så bør du velge det språket de bruker. Da spiller det ingen rolle hva det er.

  • Liker 1
Lenke til kommentar

Antar at det kan finnes en tråd eller to om emnet fra før, men la gå...

 

Har jobbet med office endel og der lært meg VBA, blitt "bitt av basillen" og kunne tenke meg å lære "seriøs" programmering. Ønsker å lære et språk som gir meg et bredt fundament. Kan være "tungt", men må samtidig kunne gi litt gleder underveis som å lage enkle kalkulatorer/spill/applikasjoner.

 

Antar at svaret vil starte med C,

så hva er pro's og con's med de forskjellige dialektene.

Og hva litteratur vil du anbefale?

 

Jeg synes at JavaScript burde være et greit sted å starte i dag. Språket har fått sin renessanse, og er til og med blitt griseaktuelt på serversiden også. For fem år siden ville nok svaret vært Java eller C#, men i dag synes jeg nesten det er mer spennende å jobbe med JavaScript, enn med kompilerte språk som f.eks. Java.

 

Du burde titte litt på Node.js, for serverside, og JavaScript + jQuery på klientsiden.

 

Taste the future!

Lenke til kommentar

Selv om C# og Java er populære så skal du være klar over at de er skudd sammen spesielt for å la større teams jobbe sammen på enda større prosjekter. En enkelt utvikler er langt mer effektiv i veldig manage sammenhenger om han bruker et dynamisk språk som Ruby eller Python. De er også ideelle for læring, fordi de har mindre "seremoni og staffasje" man må gjennom for å lage noe som fungerer - veien fra en tanke til du ser resultatet på skjermen er kortere.

Nå er både C# og Java i de nyeste versjonene også dynamiske språk.

 

Men ettersom disse i utgangspunktet er general purpose, mens både Python og Ruby er designet for å være scriptspråk, så må du påberegne deg at en må skrive litt mer (spesielt i Java)

Hvorfor er dette derimot en negativ ting? Og hva er bra med dynamisk typeseting? Jeg har fortsatt til gode å se argumenter for hvorfor det er en god idé å ha tvungen dynamisk typesetting.

Endret av GeirGrusom
Lenke til kommentar
Hvis du vil lære deg spillprogrammering må du sette deg inn i c++.
Vil si dette er en myte. Med mindre du skal ha lage ting som source-engine eller crytek-motoren så trenger du ikke C++. Det er utrolig hvor gode spill man kan lage i C# med XNA, bare se på alle indie-spillene. Jeg vil og tro at det er bedre for en indie-programmerer å bruke XNA til å utvikle på, da det gjør ting mye lettere for deg selv.

Indeed. En kan fint lage fulle spillmotorer i C# og Java også, men det største hinderet er overhode ikke ytelse, men tilgjengelige biblioteker, noe C++ er overlegent på. Det er derimot bindings til både Java og .NET for de aller fleste.

 

Jeg ville absolutt ikke anbefale å begynne å lære deg Java(C# har jeg aldri sett noe på) hvis du skal lage en spillmotor. Grunnen til det er hvor mye som gjøres for deg når du bruker Java, som du aldri ser. Java er nok ikke en versting her, men det er ille nok.

 

Hvis du bare er ute etter å lage små enkle spill, så er det np å bruke Java. Men jeg siktet til spillprogrammering, og da mener jeg spillmotor programmering. Ikke at du nødvendigvis skal lage en motor, det er for stor jobb, men å forstå hvordan en skikkelig spillmotor fungerer. Da må du rett og slett ned i C++. Hvis du har som mål å lage en mod, så trenger du selvfølgelig ikke å vite hvordan en spillmotor fungerer, men skal du lage et spill fra bunn, så er det temmelig nytting å forstå hvorfor du trenger å ha en egen memory manager, eller en resourcemanager, eller hvordan et quadtree fungerer, når du skal bruke shadere og når du ikke skal, shadertrees, memory padding, hva en kompiler gjør med koden din, osv.osv.osv.osv.osv.....

 

Hvis du bare skal lage små enkle spill, så bruk liksågodt flash.(Eller C#, eller Java)

 

 

Jeg kjenner ikke C# og XNA, så jeg vet ikke hvor lavnivå det er mulig å gå der, men du har jo dx11 der. Det jeg har hørt ang. C# er at hvis du bare skal lage spill for xbox/win7 så bruk C#.

 

 

Ang. Indie utviklere så bruker de nok sjeldent XNA. De kjøper oftest lisens til ferdigutviklede rammeverk som feks. Unity, Torque3d eller liknende. Jeg kjenner en indie utvikler som lagde spill i XNA og når jeg spurte dem om XNA var verdt å ta en titt på så fikk jeg i svar at det var for mye leketøy. Hvorvidt de virkelig mente det, eller om de bare var frustrerte etter flere netters hardjobbing, har jeg ingen formening om :)

I tillegg er jo Microsoft kjent for utrolig dårlig behandling av indie utviklere på live market....

Lenke til kommentar

Er klar over at jeg uttrykker meg noe diffus over hva jeg vil med programmeringen, og det skyldest at jeg ærlig talt ikke har noe klart mål, annet enn å tilegne meg en ny ferdighet. Og da et språk som vil være et godt fundament videre. Når jeg nevnte spill, var det heller på et "pek og klikk"-nivå enn Crysis.

Starter trolig på en siv.ing på NTNU neste høst, så det kunne vært greit med en "head start".

 

Det kan virke som C# kan være det jeg er ute etter, så kan jeg siden suplere med java/python.

 

Noe anbefalt litteratur?

Bedre enn: http://www.capris.no/product.aspx?isbn=0470563486 ?

 

ellers, fått tips om denne: http://www.capris.no/product.aspx?isbn=0735611319

 

Da forslår jeg at du finner ut hva slags språk de bruker i utdanningen du skal ta, og ser på det. Siden du ikke har programmert før, så er det nok lurest å lære deg et språk forholdsvis godt, før du hopper over på et annet.

 

og en ting til! Husk at du blir flink til å programmere ved å programmere! En del mennesker tror at de blir flinke i praktiske fag, ved kun å lese. Programmering er et praktisk fag!!!

Endret av Ikon
Lenke til kommentar

Vil og anbefale å se på hvilke språk du kan ta kurs i på NTNU også begynne så smått med det. Jeg tok noen kurs med C++ på UMB og synst det var kjempe interesant. Men når jeg oppdaget Python senere så har jeg ikke sett meg tilbake. Det har nok og mye med at det er svært enkle ting jeg bruker programering til. Og da er python fantastisk enkelt og kjapt.

 

Det er heller ikke så veldig viktig hvilket språk du lærer deg først.

Det som er viktig er å lære seg prinsippene og metodene i programering. Å lære seg gramatikken til et nytt språk senere er ikke så vanskelig.

Lenke til kommentar

Jeg ville absolutt ikke anbefale å begynne å lære deg Java(C# har jeg aldri sett noe på) hvis du skal lage en spillmotor. Grunnen til det er hvor mye som gjøres for deg når du bruker Java, som du aldri ser. Java er nok ikke en versting her, men det er ille nok.

 

Hvis du bare er ute etter å lage små enkle spill, så er det np å bruke Java. Men jeg siktet til spillprogrammering, og da mener jeg spillmotor programmering. Ikke at du nødvendigvis skal lage en motor, det er for stor jobb, men å forstå hvordan en skikkelig spillmotor fungerer. Da må du rett og slett ned i C++. Hvis du har som mål å lage en mod, så trenger du selvfølgelig ikke å vite hvordan en spillmotor fungerer, men skal du lage et spill fra bunn, så er det temmelig nytting å forstå hvorfor du trenger å ha en egen memory manager, eller en resourcemanager, eller hvordan et quadtree fungerer, når du skal bruke shadere og når du ikke skal, shadertrees, memory padding, hva en kompiler gjør med koden din, osv.osv.osv.osv.osv.....

Annet enn at du må krangle med at C++ er temmelig elementært når det kommer til typesystemer, reflection, metainformasjon, låsing og multi-threading, så må du fortsatt gjøre den samme jobben.

Mange ting er derimot vesentlig enklere å gjøre.

 

Du kan fint se på compiler output både fra Java og C# compileren, samt JIT compileren dersom du skulle ønske det.

 

Du må fortsatt skrive resource manager

Du må fortsatt skrive vektor, matrise og kvaternion klasser

Du må fortsatt skrive octree

Du må fortsatt skrive collision detection

Du må fortsatt skrive shadere

Du må fortsatt implementere scriptstøtte

Du må fortsatt implementere støtte for forskjellige ressurser

Lenke til kommentar

Nå er både C# og Java i de nyeste versjonene også dynamiske språk.

 

Men ettersom disse i utgangspunktet er general purpose, mens både Python og Ruby er designet for å være scriptspråk, så må du påberegne deg at en må skrive litt mer (spesielt i Java)

Hvorfor er dette derimot en negativ ting? Og hva er bra med dynamisk typeseting? Jeg har fortsatt til gode å se argumenter for hvorfor det er en god idé å ha tvungen dynamisk typesetting.

C# går i retning mot å bli mer og mer dynamisk, men du kan ikke sette likhetstegn mellom dynamikken i f.eks. Ruby og C#. Statisk/dynamisk er en skala, ikke en bolsk verdi!

 

Du må heller ikke si at C# er et general purpose språk, mens Ruby er et scriptspråk. Dette viser liten innsikt - de er begge general purpose. Definisjonen av scriptspråk er svært flytende, og brukes som regel bare til å benevne dynamiske språk. Men et scriptspråk er først og fremst et språk som brukes til scripting, dvs. en form for orkestrering av APIer i eller mellom applikasjoner. Ruby brukes i svært liten grad til dette, eller sagt på en annen måte: Ruby brukes først og fremst til andre ting enn scripting.

 

Å argumentere for fravær av statisk typesetting er litt vanskelig - til syvende og sist må man lære seg å utnytte det. Men sagt enkelt setter statisk typing en del restriksjoner på hva du kan gjøre i språket ditt, eller mer presist det gjør visse ting vanskeligere.

 

Godene du får med statisk typing er at du kan fange opp feil tidligere (compiletime i stedet for runtime), og at det er enklere å analysere koden (statisk analyse), lage støtteverktøy for refakturering, intellisense o.l. Disse tingene gjør språk bedre egnet til større prosjekter med mange utviklere.

 

Dynamisk typing gjør det derimot enklere å forme koden til å passe bedre til problemet man jobber med. Meta-programmering, som kan redusere mengden kode som må skrives noe helt enormt, blir mye enklere. I C# gjør man f.eks. reflection gjennom et API, mens Ruby er designet fra bunnen av for dette.

 

Ta f.eks. et design patter som Decorator Pattern. I C# krever det en god del kode, og jo mer som skal dekoreres jo mer kode må man ha. I Ruby er decorator mer eller mindre en oneliner - og ikke fordi mønsteret er innebygd, men fordi objektmodellen er så dynamisk.

 

Update: Med DynamicObject i C# kan du nok få til decorator pattern nesten like elegant som i Ruby.

Endret av torbjørn marø
Lenke til kommentar

Nå er både C# og Java i de nyeste versjonene også dynamiske språk.

 

Men ettersom disse i utgangspunktet er general purpose, mens både Python og Ruby er designet for å være scriptspråk, så må du påberegne deg at en må skrive litt mer (spesielt i Java)

Hvorfor er dette derimot en negativ ting? Og hva er bra med dynamisk typeseting? Jeg har fortsatt til gode å se argumenter for hvorfor det er en god idé å ha tvungen dynamisk typesetting.

C# går i retning mot å bli mer og mer dynamisk, men du kan ikke sette likhetstegn mellom dynamikken i f.eks. Ruby og C#. Statisk/dynamisk er en skala, ikke en bolsk verdi!

 

Du må heller ikke si at C# er et general purpose språk, mens Ruby er et scriptspråk. Dette viser liten innsikt - de er begge general purpose. Definisjonen av scriptspråk er svært flytende, og brukes som regel bare til å benevne dynamiske språk. Men et scriptspråk er først og fremst et språk som brukes til scripting, dvs. en form for orkestrering av APIer i eller mellom applikasjoner. Ruby brukes i svært liten grad til dette, eller sagt på en annen måte: Ruby brukes først og fremst til andre ting enn scripting.

Nei, dette var teit av meg. Jeg trekker det tilbake.

 

Å argumentere for fravær av statisk typesetting er litt vanskelig - til syvende og sist må man lære seg å utnytte det. Men sagt enkelt setter statisk typing en del restriksjoner på hva du kan gjøre i språket ditt, eller mer presist det gjør visse ting vanskeligere.

Det er bare nisje-problemer som er enklere med dynamisk typing, du kan godt nevne eksempler på dette, men faktum er at dynamisk typing er nyttig i helt spesielle tilfeller, og derfor mener jeg det er en dårlig idé at det er obligatorisk i et språk. I alle andre tilfeller vil statisk typing medføre at parseren kan plukke opp flere programmeringsfeil, compileren kan lage mer effektiv kode, og parseren i IDE-et kan hjelpe deg mye mer ved å vise dokumentasjon mens du skriver. For en nybegynner er det også ganske viktig å være klar over datatyper. Skal du jobbe med noe annet enn webutvikling, vil du dulte borti språk hvor dette er et ganske sentralt tema.

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...