Gå til innhold

Hvilket språk å begynne med ?


Anbefalte innlegg

siden det er 9'ende klasse er det jo greit, kjør på med det enkleste dere finner, gjerne noe dere kan fra før.. f.eks. html (hvis det godtaes) er så enkelt at du får M+ hur lett som helst på alle prøver/eksamen, og det kan være godt å ha med seg videre ;) så kan du heller sette deg inn i ting som er vansklige på fritiden, for der spiller det ikke noen rolle hvis du skulle ende opp med å ikke skjønne så mye av det ved skoleårets slutt..

 

altså, velg det enkleste bare for å peise inn en sterk M+ eller 5+ eller hva dere bruker i skolen i disse tider :)

Endret av h0ih0i
Lenke til kommentar
Videoannonse
Annonse
Hva skjer med at folk anbefaler C fremfor C++? C++ gir deg muligheten til å programmere objektorientert om man vil. Dessuten har man et flott standardbibliotek i C++ i tillegg til mange andre ting. Jeg mener at det er ytterst få grunner til å lære C over C++.

 

Ok, her er mine grunner til hvorfor:

 

C++ kan være forvirrende for nybegynnere, blant annet hele operator overloading av << og >> bryter fullstendig med konseptet objektorintering eller engang normal programmeringsskikk. Ja, jeg er klar over at dette er lagt inn for at det skal være enkelt og forståelig men det bryter fullstendig med den generelle konstruksjonen av språket!

Dette er ikke bra for et nybegynnerspråk, det burde være konsekvent og forståelig.

Dessuten, hvor mange nybegynnertutorials benytter seg engang av objektorientering?

En sitter der med 'cout << "Hello World"'

Dette er ikke egentlig objektorientering mer en på et internt nivå, ingen deler av koden tilsier at dette er noe annet enn en ren funksjon.

 

Så for meg synes jeg ikke C++ er et fint språk å lære seg programmering i (eller et fint språk for den saks skyld)

Nå bruker jeg C++ selv, og synes det egner seg flott til enkelte oppgaver, men et opplæringsverktøy synes jeg ikke det er.

 

edit: skal en lære objektorientering er det mange språk som egner seg bedre.

Endret av GeirGrusom
Lenke til kommentar

Bra svar. :)

 

Jeg kan være enig når det gjelder opplæring. Det jeg reagerer på er at jeg stadig ser folk som konsekvent avfeier C++ tilsynelatende uten noen særlig grunn.

 

Hvordan mener du at operator>>/operator<< bryter konstruksjonen i språket? Det implementeres jo som en hvilken som helst annet operator-overlasting, bortsett fra at det gjerne er global funksjon istedenfor en meldemsfunksjon (slik at man jo kan skrive std::cout << objekt istedenfor objekt << std::cout). Hvis du tenker på at det kan forveksles med bitshift-operatoren, tror jeg sjeldent at dette er et reelt problem. Når det gjelder operator<</operator>> og objektorientering er jeg enig, men jeg synes heller ikke at dette har stort å si i praksis, og som du sier er det jo for at det skal være enkelt og greit.

 

Forøvrig enig at C++ kan være inkonsekvent, og at det ikke er optimalt mht. objektorientering, og mange språk gjør en veldig mye bedre jobb her. Men, sammenliknet med C -- som jo ikke støtter objektorientering i det hele tatt -- ser jeg ytterst få grunner til å velge C over C++.

 

:)

Lenke til kommentar

Å velge om man skal begynne med C eller C++ synes jeg er som å velge mellom pest eller kolera. For å sette det på spissen. Ja, C++ gir litt mer på objektorienteringssiden men samtidig synes jeg C++ er et veldig rotete språk og dette gir igjen en enda høyere læringskurve. Riktig nok kommer en del av dette rotet fra forskjellige template bibliotek i C++ men det er bare tåpelig å la være å bruke de hvis man først er i C++.

 

Alt dette med å lære funksjoner, variabler, løkker og alt dette andre grunnleggende innen programmering kan man gjøre i hvilket som helst språk. Det er minimale forskjeller på språkene og hvilken kilde du bruker til læringen din og oppbyggingen av den utgjør hele forskjellen. Så hvis det er alt man vil lære så kan C fungere helt fint. Men så må man bytte språk for å komme videre. Hva har man da igjen for å ha begynt med C? Man har brukt en del tid på å lære seg språkspesifikke ting samtidig som man har lært grunnleggende programmeringsteknikk (if, while, etc). Disse språkspesifikke tingene må man forlate når man bytter språk.

 

Jeg synes det er unødvendig friksjon og at det er bedre å begynne med et språk som lar deg gjøre nesten hva du vil mens du lærer og så lære seg flere språk senere når man har den grunnleggende forståelsen på plass (og da mener jeg forståelse som i "hvordan tenke når man programmerer" ikke "hvordan fungerer løkker"). Da synes jeg C(++) er et godt alternativ, om ikke annet for å forstå hvordan pekere virkelig fungerer, noe som burde være en del av enhver programmerer sin bakgrunn.

 

Se f.eks. på opplegget til C# for Sharp Kids boken. Der er det og fint lite av disse "ignorer dette, vi kommer til det senere". Det kommer av at det første de gjør er å forklare klasser og hendelser. Er enig i at å lære vekk språk som Java og C# hvor alt er bygget opp av klasser uten å forklare klasser først kan virke mot sin hensikt.

 

Jeg mener fortsatt at å skrive konsollapplikasjoner blir fort litt kjedelig og at man kan ha det mye mer moro med vindusapplikasjoner. Moro => lyst til å eksperimentere videre == den beste måten å lære å programere på. Med mindre man sitter på en Mac eller *nix maskin er .Net det beste alternativet, spesielt kombinert med de ressursene på nettet som er tilgjengelige.

 

Sitter man på en Mac er Objective-C et alternativ men jeg lurer på om ikke RubyCocoa hadde vært enda bedre å begynne med? Men jeg er ikke dreven i Mac utvikling så det kan sikkert noen andre svare bedre på. Fordelen med Ruby er at det er en solid community rundt det med en god del læringsressurser, det finnes for flere platformer og er relativt enkelt. Ulempen kan være at mange av disse ressursene er noe ustrukturerte og det kan være en liten læringskurve i begynnelsen.

Lenke til kommentar
Bra svar. :)

 

Jeg kan være enig når det gjelder opplæring. Det jeg reagerer på er at jeg stadig ser folk som konsekvent avfeier C++ tilsynelatende uten noen særlig grunn.

 

Hvordan mener du at operator>>/operator<< bryter konstruksjonen i språket? Det implementeres jo som en hvilken som helst annet operator-overlasting, bortsett fra at det gjerne er global funksjon istedenfor en meldemsfunksjon (slik at man jo kan skrive std::cout << objekt istedenfor objekt << std::cout). Hvis du tenker på at det kan forveksles med bitshift-operatoren, tror jeg sjeldent at dette er et reelt problem. Når det gjelder operator<</operator>> og objektorientering er jeg enig, men jeg synes heller ikke at dette har stort å si i praksis, og som du sier er det jo for at det skal være enkelt og greit.

 

Forøvrig enig at C++ kan være inkonsekvent, og at det ikke er optimalt mht. objektorientering, og mange språk gjør en veldig mye bedre jobb her. Men, sammenliknet med C -- som jo ikke støtter objektorientering i det hele tatt -- ser jeg ytterst få grunner til å velge C over C++.

 

:)

 

Sant, i bunn og grunn kan en konkludere med at det finnes språk som er bedre egnet til å lære seg programmering med en C eller C++, men dette er ihvertfall grunnen til at jeg anbefaler C fremfor C++.

 

Når det gjelder operator << og >> i forbindelse med cout og cin, så bryter dette med den grunnleggende oppbyggningen av språket.

Jeg synes det kan være forvirrende at for eksempel

 

cout << 32 << 4;

cout << (32 << 128);

betyr to VIDT forskjellige ting.

 

Normalt sett så brukes operatorer til matematiske operasjoner, men i dette tilfellet oppfører de seg mer som en funksjon en som en operator.

For meg er ihvertfall ikke logikken bak dette klar nok, det virker nesten som selve språklogikken i C++ tar seg en liten pause for at det skal være enkelt å skrive tekst til streams.

Preprocessoren til C++ er også et ganske idiotisk fenomen, javisst er denne funksjonen utrolig kjekk, men den bryter fullstenidg med C++ og får deler av koden til å ligne mer på QuickBasic (MFC makrodefinisjoner er et godt eksempel) I D manualen om static if kaller forfatteren C++ makroene for "monkey business"

 

Jeg mener fortsatt at å skrive konsollapplikasjoner blir fort litt kjedelig og at man kan ha det mye mer moro med vindusapplikasjoner. Moro => lyst til å eksperimentere videre == den beste måten å lære å programere på. Med mindre man sitter på en Mac eller *nix maskin er .Net det beste alternativet, spesielt kombinert med de ressursene på nettet som er tilgjengelige.

 

Du har rett i at console applikasjoner kan være kjedelig og demotiverende, men i mange språk vil GUI programmering føre til at mange missforstår konsepter i programmering.

Dette er et problem jeg OFTE ser blant nybegynnere i Visual Basic på dette forumet.

De setter seg ned med Form-designeren i Visual Basic og trekker ut kontroller de synes er interessante (som regel den fordømte WebBrowser kontrollen) og prøver å få den til å gjøre noe spennende. Dette fører til at nærmest alle jeg har sett her prøver å skrive sin egen webbrowser, dette lærer en ikke programmering av!

 

Så derfor mener jeg det er lurt å la GUI ligge frem til en har forstått alt om datatyper, variabler og objektorientering.

Endret av GeirGrusom
Lenke til kommentar
Preprocessoren til C++ er også et ganske idiotisk fenomen, javisst er denne funksjonen utrolig kjekk, men den bryter fullstenidg med C++ og får deler av koden til å ligne mer på QuickBasic (MFC makrodefinisjoner er et godt eksempel) I D manualen om static if kaller forfatteren C++ makroene for "monkey business"

 

Du må gjerne gi meg et eksempel på hvordan det får C++ koden til å ligne mer på QBasic.

Og gjerne også hva som skiller den fra en C-macro, og en peker til "monkey business".

Lenke til kommentar
Du må gjerne gi meg et eksempel på hvordan det får C++ koden til å ligne mer på QBasic.

Og gjerne også hva som skiller den fra en C-macro, og en peker til "monkey business".

 

Sånn får du konvertert all VB koden din til C++.

 

#define { Begin

#define } End

 

:thumbup:

Endret av jorn79
Lenke til kommentar
Du har rett i at console applikasjoner kan være kjedelig og demotiverende, men i mange språk vil GUI programmering føre til at mange missforstår konsepter i programmering.

Dette er et problem jeg OFTE ser blant nybegynnere i Visual Basic på dette forumet.

De setter seg ned med Form-designeren i Visual Basic og trekker ut kontroller de synes er interessante (som regel den fordømte WebBrowser kontrollen) og prøver å få den til å gjøre noe spennende. Dette fører til at nærmest alle jeg har sett her prøver å skrive sin egen webbrowser, dette lærer en ikke programmering av!

Helt enig :thumbup: Greit nok det er mye kulere å sykle enn å gå, men man lærer gjerne å gå først.

og en peker til "monkey business".

monkey.jpg

Lenke til kommentar
Du må gjerne gi meg et eksempel på hvordan det får C++ koden til å ligne mer på QBasic.

http://msdn.microsoft.com/en-us/library/s9k6yh5b.aspx

Jeg synes ikke det lignet mye på QBasic, men når det er sagt har jeg heller ingenting imot slik bruk av macroer. Det er mange gode grunner for å lage slike, og ofte ønsker man nettopp at utviklere skal bruke macroene istedet for hva macroene gjør - i såfall kan en enkelt endre oppførsel uten å endre kildekode flere steder.

 

(...) og en peker til "monkey business".

http://www.digitalmars.com/d/2.0/mixin.html

 

Her drar du ting litt ut av sammenhengen, bruksområdet til C macroer er et annet.

At en kan gjøre idiotiske ting med C macroer er en kjent sak, men dette betyr ikke at en bør gjøre det (med mindre man deltar i IOCCC, selvsagt).

Lenke til kommentar
Å velge om man skal begynne med C eller C++ synes jeg er som å velge mellom pest eller kolera. For å sette det på spissen. Ja, C++ gir litt mer på objektorienteringssiden men samtidig synes jeg C++ er et veldig rotete språk og dette gir igjen en enda høyere læringskurve. Riktig nok kommer en del av dette rotet fra forskjellige template bibliotek i C++ men det er bare tåpelig å la være å bruke de hvis man først er i C++.
Jeg ser hva du mener, men kan ikke si meg enig i at templates bidrar til å gjøre ting uryddig. Tvert imot, bare tenk hvordan standardbiblioteket ville vært uten.

 

Alt dette med å lære funksjoner, variabler, løkker og alt dette andre grunnleggende innen programmering kan man gjøre i hvilket som helst språk. Det er minimale forskjeller på språkene og hvilken kilde du bruker til læringen din og oppbyggingen av den utgjør hele forskjellen. Så hvis det er alt man vil lære så kan C fungere helt fint. Men så må man bytte språk for å komme videre. Hva har man da igjen for å ha begynt med C? Man har brukt en del tid på å lære seg språkspesifikke ting samtidig som man har lært grunnleggende programmeringsteknikk (if, while, etc). Disse språkspesifikke tingene må man forlate når man bytter språk.
Vet ikke helt om jeg skjønte hva du mente her. Bytte språk for å "komme videre"? Hvis man lærer C/C++ sitter man om ikke annet igjen med forståelse hvis man vil bytte språk senere. Dette synes jeg er veldig viktig.

 

Jeg synes det er unødvendig friksjon og at det er bedre å begynne med et språk som lar deg gjøre nesten hva du vil mens du lærer og så lære seg flere språk senere når man har den grunnleggende forståelsen på plass (og da mener jeg forståelse som i "hvordan tenke når man programmerer" ikke "hvordan fungerer løkker"). Da synes jeg C(++) er et godt alternativ, om ikke annet for å forstå hvordan pekere virkelig fungerer, noe som burde være en del av enhver programmerer sin bakgrunn.
Jeg er glad for at jeg hadde C++ som førstespråk, da dette har gjort at jeg bedre forstår hvordan det underliggende fungerer. Jeg synes ikke C++ var spesielt vanskelig mht. "hvordan tenke når man programmerer" heller. I f.eks. Ruby (som jeg synes er et veldig flott språk) er det veldig mye som skjer "automagisk". Dette er veldig kjekt og greit, men man får veldig liten innsikt i hvordan ting fungerer i bunn, noe som vel ikke er meningen heller.

 

Sitter man på en Mac er Objective-C et alternativ men jeg lurer på om ikke RubyCocoa hadde vært enda bedre å begynne med? Men jeg er ikke dreven i Mac utvikling så det kan sikkert noen andre svare bedre på. Fordelen med Ruby er at det er en solid community rundt det med en god del læringsressurser, det finnes for flere platformer og er relativt enkelt. Ulempen kan være at mange av disse ressursene er noe ustrukturerte og det kan være en liten læringskurve i begynnelsen.
Veldig enig i det du sier her.
Lenke til kommentar
Her drar du ting litt ut av sammenhengen, bruksområdet til C macroer er et annet.

At en kan gjøre idiotiske ting med C macroer er en kjent sak, men dette betyr ikke at en bør gjøre det (med mindre man deltar i IOCCC, selvsagt).

 

Mulig, men C makroene skiller seg veldig fra språket C++ og tvinger frem en helt annen syntaks (som eksempelet med MFC)

 

Men dette er egentlig litt irrelevant, poenget er at C++ makroer er veldig nyttig, men kan føre til ytterligere forvirring for nybegynnere.

Lenke til kommentar

Jeg mener at man burde ta en titt på alle språk (eller de fleste av dem) og velge det man syns ser morsomst ut. Siden du går i 9. klasse trenger du ikke å velge et språk som garanterer deg en jobb med en gang; velg heller noe som interesserer deg. Du vil få mye mer ut av noe du syns er gøy!

 

All programmering går i konseptet ut på det samme, og det viktigste er at man begynner et sted og danner seg et bilde av hva slags språk som finnes og hva de brukes til, så man senere kan velge det man syns høres lurest ut :)

Lenke til kommentar
Jeg mener at man burde ta en titt på alle språk (eller de fleste av dem) og velge det man syns ser morsomst ut. Siden du går i 9. klasse trenger du ikke å velge et språk som garanterer deg en jobb med en gang; velg heller noe som interesserer deg. Du vil få mye mer ut av noe du syns er gøy!

 

All programmering går i konseptet ut på det samme, og det viktigste er at man begynner et sted og danner seg et bilde av hva slags språk som finnes og hva de brukes til, så man senere kan velge det man syns høres lurest ut :)

Thumbs up for den.

Lenke til kommentar
Jeg mener fortsatt at å skrive konsollapplikasjoner blir fort litt kjedelig og at man kan ha det mye mer moro med vindusapplikasjoner.
Du har rett i at console applikasjoner kan være kjedelig og demotiverende, men i mange språk vil GUI programmering føre til at mange missforstår konsepter i programmering.

Dette er et problem jeg OFTE ser blant nybegynnere i Visual Basic på dette forumet.

De setter seg ned med Form-designeren i Visual Basic og trekker ut kontroller de synes er interessante (som regel den fordømte WebBrowser kontrollen) og prøver å få den til å gjøre noe spennende. Dette fører til at nærmest alle jeg har sett her prøver å skrive sin egen webbrowser, dette lærer en ikke programmering av!

Så derfor mener jeg det er lurt å la GUI ligge frem til en har forstått alt om datatyper, variabler og objektorientering.

Enig i at WebBrowser kontrollen ikke er det beste å lære seg å programmere med ja :D Kan også være enig i at å starte opp Visual Studio/Express og begynne å dra ting frem og tilbake og forsøke å få dette til å bli noe ikke er det beste helt til å begynne med.

Derfor har man innføringer som man følger til å begynne med. F.eks. C# for Sharp Kids som gir deg en grundig innføring i alt om objektorientering, datatyper, variabler og mye mer. Når man så har fulgt en slik guide og har litt roen på det grunnleggende mener jeg at det er bedre å eksperimentere videre med en vindusapplikasjon.

Når det gjelder alle de som vil lage sin egen webbrowser gjetter jeg på at ITPro har skylden for det...

 

Å velge om man skal begynne med C eller C++ synes jeg er som å velge mellom pest eller kolera. For å sette det på spissen. Ja, C++ gir litt mer på objektorienteringssiden men samtidig synes jeg C++ er et veldig rotete språk og dette gir igjen en enda høyere læringskurve. Riktig nok kommer en del av dette rotet fra forskjellige template bibliotek i C++ men det er bare tåpelig å la være å bruke de hvis man først er i C++.
Jeg ser hva du mener, men kan ikke si meg enig i at templates bidrar til å gjøre ting uryddig. Tvert imot, bare tenk hvordan standardbiblioteket ville vært uten.

Jeg har ikke noe problem med templates. Jeg har bare vonde minner fra hine hårde dager når det var en rekke template biblioteker som hadde veldig varierende måter å gjøre ting på. STL-en er en av de bedre tingene med C++.

 

Men så må man bytte språk for å komme videre. Hva har man da igjen for å ha begynt med C? Man har brukt en del tid på å lære seg språkspesifikke ting samtidig som man har lært grunnleggende programmeringsteknikk (if, while, etc). Disse språkspesifikke tingene må man forlate når man bytter språk.
Vet ikke helt om jeg skjønte hva du mente her. Bytte språk for å "komme videre"? Hvis man lærer C/C++ sitter man om ikke annet igjen med forståelse hvis man vil bytte språk senere. Dette synes jeg er veldig viktig.

Når man har lært seg det grunnleggende vil man gjerne gjøre noe mer avansert. F.eks. å lage vindusapplikasjoner. Med mindre du anbefaler en nybegynner å starte med vindusapplikasjoner i C eller la være å lage vindusapplikasjoner i det hele tatt tror jeg at du er enig med meg i at man må bytte språk for å komme videre.

 

For å bruke C til noe mer enn enkle regnestykker og unyttige løkker er man nødt til å komme inn på de forskjellige funksjonene i C. Da bruker man altså en del tid på å lære seg f.eks. strcmp, strcpy, og kanskje malloc og en del til, samt en tvungen og grundig innføring i pekere (ihverfall hvis man vil forstå det man holder på med i C). Ikke at det er noe ille å kunne dette, jeg mener som sagt bare at det er ikke det smarteste å begynne med dette og man kommer sannsynligvis aldri til å få bruk for det andre steder enn i C, som vi allerede har etablert at man må snart forlate. Igjen: unødvendig friksjon.

 

Jeg er glad for at jeg hadde C++ som førstespråk, da dette har gjort at jeg bedre forstår hvordan det underliggende fungerer. Jeg synes ikke C++ var spesielt vanskelig mht. "hvordan tenke når man programmerer" heller. I f.eks. Ruby (som jeg synes er et veldig flott språk) er det veldig mye som skjer "automagisk". Dette er veldig kjekt og greit, men man får veldig liten innsikt i hvordan ting fungerer i bunn, noe som vel ikke er meningen heller.
Jeg mener at C++ (ev C) bør være en del av enhver skikkelig utviklers dannelsesreise. Det er viktig å vite hvordan ting fungerer "under panseret", uten tvil. Jeg mener derimot at det er ikke den rette plassen å begynne. Man lærer mer av å få det store bildet først og så detaljene etterpå. Og hvis man skal holde seg på amatørnivået er det nok ikke nødvendig med detaljene i det hele tatt

 

Forøvrig: enig med Magnus Holm. Det viktigste er å ha det moro og å holde på nysgjerrigheten.

Lenke til kommentar
Enig i at WebBrowser kontrollen ikke er det beste å lære seg å programmere med ja :D Kan også være enig i at å starte opp Visual Studio/Express og begynne å dra ting frem og tilbake og forsøke å få dette til å bli noe ikke er det beste helt til å begynne med.

Derfor har man innføringer som man følger til å begynne med. F.eks. C# for Sharp Kids som gir deg en grundig innføring i alt om objektorientering, datatyper, variabler og mye mer. Når man så har fulgt en slik guide og har litt roen på det grunnleggende mener jeg at det er bedre å eksperimentere videre med en vindusapplikasjon.

Når det gjelder alle de som vil lage sin egen webbrowser gjetter jeg på at ITPro har skylden for det...

 

Innføring er et godt utgangspunkt ja. Å leke med GUI designeren alene er derimot ikke det: agreed.

 

Jeg tror jeg hater ITPro nå... poenget i starten er ikke å lage et fullverdig program, men et program som lærer deg basisen. Å begynne med en kontroll der nesten alt er gjort for deg på forhånd vil da på meg virke som et dårlig utgangspunkt.

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