Gå til innhold

[Løst] Hvor burde jeg lære programmering og hvilket språk?


Anbefalte innlegg

selve programmet kan man nok si er et vanlig program.

derimot så er det selv styringen av menyvalgene jeg gjør det på denne måten for å slippe alle if setningene

 

Det er rett og slett bare en tabell med linjer og kolonner som inneholder "koder" for styre hvilke valg som skal være aktiv og / eller tilgjengelig

Lenke til kommentar
Videoannonse
Annonse

...

 

Du har en del feil her. Av flere grunner.

Jeg satt ikke likhetstegn mellom ASM og funksjonelle språk. Poenget var at det å starte en nybegynner med et "sært" språk, en kategori hvor de fleste rene funksjonelle språk havner (i allefall LISP og Haskell), sannsynligvis ikke er ideelt, mye av samme grunn som det neppe er særlig ideelt å starte vedkommende med ASM, selv om dette også kan hevdes å ha pedagogiske fordeler.

 

For det første, Lisp impliserer ikke et funksjonelt språk.

For det andre, du må huske at en NYBEGYNNER har INGEN for hånds kunnskaper innenfor programmering. De fleste av oss er vandt med imperative språk, og når vi ser på funksjonelle språk forstår vi ingenting, fordi det er et helt nytt konsept!

 

Nå, hva med en nybegynner som begynner med et funksjonelt språk, som Haskell? Nybegynner vet ikke hvordan programmering "skal gjøres", vis dem imperativ, dem lærer seg imperativ. Lær dem funksjonelt, dem lærer seg funksjonelt. Det er som et morsmål, blir du lært Norsk, tenker du i Norsk. Bli lært Engelsk, og du tenker Engelsk.

 

Nå dem ser på de forskjellige paradigmene setter dem like mange spørsmålstegn hvordan de kan programmere i språk/paradigme X. Akkurat som en person som er vandt med et dynamisk typet språk, har vansker med å forstå hva som er så bra med et type system, og omvendt.

 

 

- En nybegynner er også nybegynner på å lese dokumentasjon og å hente informasjon. Å starte vedkommende med et språk hvor det finnes hauger av tutorials og man ofte har fysisk tilgang på personer kjenner språket og kan hjelpe deg å peke ut at DEN feilmeldingen, den du kanskje overså, den forteller deg hva som er galt, er ofte en stor fordel.

Helt riktig, men dette er ikke et argument for hvilket språk du skal lære. Du har like mye tilgang til både personer (IRC?) og dokumentasjon om f.eks. Haskell, og Lisp Språkene er jo faktisk eldre enn C# og Java!

 

 

- For at en nybegynner skal holde på motivasjonen, så er det for de fleste viktig å kjenne mestring tidlig. Dette er som regel lettere med et språk hvor man kan skrive et par linjer meget enkel kode i en enkel syntax, og øyblikkelig få et resultat.

"Enkelt", du har et begrep for hva som er enkel syntax basert i at du er lært opp med imperativ syntax. For en nybegynner er dette irrelevant. Dem vet ikke forskjellen. Du har også LIKE mye mulighet til å se resultater ØYEBLIKKELIG med Haskell og Lisp. Så igjen, irrelevant.

 

 

- Det viktigste en nybegynner lærer, er å sette opp en algoritme, dvs. å forstå hvor utrolig dum datamaskinen er, hvordan den gjør AKKURAT som du sier - og så hvordan man kan utnytte dette til sin egen fordel. Ikke fancy constructs som gjør ting enklere og mer elegant.

Dette gjelder for alle språk. Kjære-vene, du kan da ikke mene at funksjonelle språk har flere fancy contructs enn imperative? Se på C++ og Java.

Du har like muligheter til å droppe "fancy contructs" i ALLE språk til fordel for noe som er simpelt. Det er en iterativ prosess å lære, du skal ikke lære om alle språk spesifikke ting som gjør språk X bra.

Du lærer funksjoner før klasser, husk det.

 

Kall med påståelig, men jeg har vært med en 16-åring lære seg haskell som sitt første språk. Et og et halvt år senere så forstår han ikke hvordan man kan programmere imperativt. Han har begynt med Python nå og jeg ser han skriver mye renere imperativ kode enn hva hvilken som helst nybegynner i funksjonelle språk ville gjort.

 

 

TL;DR: Vurder et funksjonelt språk som ditt første språk og ikke hør på alle som glorifiserer imperative språk som Python, C++, C# eller Ruby.

Endret av JuletreDuden
Lenke til kommentar

De fleste av oss er vandt med imperative språk, og når vi ser på funksjonelle språk forstår vi ingenting, fordi det er et helt nytt konsept!

Er vel også verdt å nevne at funksjonell programmering er mye mer lik matematikk enn det imperativ programmering er, og matematikk kan de fleste fra før.

 

Bare = i C grenen av språk er jo egentlig helt vanvittig, fordi = betyr ikke "er lik" i det hele tatt. Tror denne merkeligheten dukket først opp med B i 1969 og det er rart at det bare har levd videre, og at JavaScript og PHP til slutt fant ut at de skulle gjøre vondt verre med å introdusere ===.

 

edit: men ihvertfall, bare dette er noe som er forvirrende for nybegynnere, og det er ikke bare C språk som har dette. BASIC grenen har jo etterhvert fått det samme, bortsett fra det litt rare valget om å la = bety forskjellige ting avhengig av kontekst.

Endret av GeirGrusom
Lenke til kommentar

betyr ikke tegnet "=" er lik lenger ?

f.eks at 1=1 , at man da må skrive 1 == 1 for at kompilatoren skal forstå det

 

Da er jo logikken i Pascal bedre

Der skriver man 1=1 for fortelle kompilatoren 1 er lik 1

 

for å sjekke om en verdi stemmer så brukes

IF a = 1 then ....

 

skal man så sette en verdi så gjørman dette :

a:=1

 

og i C relaterte språk :

A==1

 

hvilke språk er da mest logisk oppbygd ?

Lenke til kommentar

Lurer på hva som er korrekt å benytte istedenfor "=" ved tildelings operator?

 

For eksempel:

 

※ (U+203B REFERENCE MARK)

 

Om det var en dedikert tast for dette på tastaturet, hadde jeg uten tvil foretrukket denne over shift+0, og så kunne man brukt enkle "=" ved sammenligning.

 

Avsporing fra tråden, naturligvis.

Endret av rockPaperScissors()
Lenke til kommentar

betyr ikke tegnet "=" er lik lenger ?

f.eks at 1=1 , at man da må skrive 1 == 1 for at kompilatoren skal forstå det

 

Da er jo logikken i Pascal bedre

Der skriver man 1=1 for fortelle kompilatoren 1 er lik 1

 

for å sjekke om en verdi stemmer så brukes

IF a = 1 then ....

 

skal man så sette en verdi så gjørman dette :

a:=1

 

og i C relaterte språk :

A==1

 

hvilke språk er da mest logisk oppbygd ?

Poenget her var egentlig mer at funksjonelle språk kanskje kan være et bedre utgangspunkt for nybegynnere enn det imperative språk (som C og Pascal) grunnet at, vel, de tuller ikke til ting som dette.

Lenke til kommentar

Da må jeg si at jeg ikke oppfatter pascal som noe imperativ språk .

 

man må forholde seg til de strenge reglene for konteksten

 

forresten hva er galt ved å bruke naturlig tegn ( som ':' '+' '-' '=' o.s.v ) når man bruker matematiske utrykk i koding ?

Endret av den andre elgen
Lenke til kommentar

Da må jeg si at jeg ikke oppfatter pascal som noe imperativ språk .

Du gjør vel ikke det. Du er heller overhodet ikke kvalifisert til å faktisk uttale deg med noen autoritet på noe av dette. Et lite hint, kanskje?

 

Lurer på hva som er korrekt å benytte istedenfor "=" ved tildelings operator?

 

For eksempel:

 

※ (U+203B REFERENCE MARK)

 

Om det var en dedikert tast for dette på tastaturet, hadde jeg uten tvil foretrukket denne over shift+0, og så kunne man brukt enkle "=" ved sammenligning.

 

Avsporing fra tråden, naturligvis.

:=, <-

 

Helt ærlig synes jeg ikke = er så ekstremt ille (det kan være fordi jeg er vant til det, men lell). := og <- er det lett å argumentere for at er bedre, men en SÅ stor sak er det ikke.

Endret av Lycantrophe
Lenke til kommentar

Da må jeg si at jeg ikke oppfatter pascal som noe imperativ språk .

Pascal er i aller høyeste grad et imperativt språk.

 

forresten hva er galt ved å bruke naturlig tegn ( som ':' '+' '-' '=' o.s.v ) når man bruker matematiske utrykk i koding ?

Det er ikke noe galt i det, og etter min mening er det egentlig bare for = hvor C språkene tuller det til. Alvorlighetsgraden av det kan en selvsagt diskutere, men det er uansett forvirrende for en nybegynner at = plutselig betyr noe annet i C enn det en er blitt opplært til i hele utdannelsen.

Lenke til kommentar

 

Da må jeg si at jeg ikke oppfatter pascal som noe imperativ språk .

Du gjør vel ikke det. Du er heller overhodet ikke kvalifisert til å faktisk uttale deg med noen autoritet på noe av dette. Et lite hint, kanskje?

 

Det må du kunne begrunne bedre for at jeg skal ta deg seriøst her

Ikke da at jeg helt forstår hvor du vil hen heller

Lenke til kommentar

 

 

Da må jeg si at jeg ikke oppfatter pascal som noe imperativ språk .

Du gjør vel ikke det. Du er heller overhodet ikke kvalifisert til å faktisk uttale deg med noen autoritet på noe av dette. Et lite hint, kanskje?

 

Det må du kunne begrunne bedre for at jeg skal ta deg seriøst her

Ikke da at jeg helt forstår hvor du vil hen heller

 

 

Sitere wikipedia?

In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state. In much the same way that imperative mood in natural languages expresses commands to take action, imperative programs define sequences of commands for the computer to perform.

 

Pascal følger da dette konseptet til punk og prikke? Gjør det ikke?

 

Kan jo sitere http://www.emu.edu.tr/aelci/Courses/D-318/D-318-Files/plbook/imperati.htm

 

The imperative programming paradigm is an abstraction of real computers which in turn are based on the Turing machine and the Von Neumann machine with its registers and store (memory). At the heart of these machines is the concept of a modifiable store. Variables and assignments are the programming language analog of the modifiable store. The store is the object that is manipulated by the program. Imperative programming languages provide a variety of commands to provide structure to code and to manipulate the store. Each imperative programming language defines a particular view of hardware. These views are so distinct that it is common to speak of a Pascal machine, C machine or a Java machine. A compiler implements the virtual machine defined by the programming language in the language supported by the actual hardware and operating system.

 

 

Din oppfatning av hvilket programmeringsspråk som tilhørere hvilket paradigme er jo forøvrig irrelevant.

Endret av JuletreDuden
  • Liker 1
Lenke til kommentar

 

Det jeg mener ar at et programgrinespråk bør være så nært opp til naturlig språk som mulig , også for matematiske uttrykk

 

Interessant synspunkt. Har du jobbet noe med COBOL?

 

nei , jeg har hold meg til pascal

etter å ha prøvd basic og asambler ( som egentlig bare er maskinkoder )

og så har jeg være innom Ada

Lenke til kommentar

Nå er jeg ikke sikker på om jeg helt forstår konseptet dere legger opp til.

 

Det jeg mener ar at et programgrinespråk bør være så nært opp til naturlig språk som mulig , også for matematiske uttrykk

Og det synes jeg pascal klarer ganske bra

 

Jaja, kanskje du hadde likt Fortran aka. FORmulae TRANslation?

 

 

 

Det jeg mener ar at et programgrinespråk bør være så nært opp til naturlig språk som mulig , også for matematiske uttrykk

 

Interessant synspunkt. Har du jobbet noe med COBOL?

 

Hihi :)

Lenke til kommentar

Jeg selv er stor tilhenger av programmeringspråk som både er lettlest og raskt å skrive kode i. Samt at det ikke har for mange fallgruver. Så det betyr f.eks. at jeg foretrekker Pascal fremfor C.

 

Jeg liker også Python, med et unntak - det å bruke indentering til å markere blokker, det er ikke så smart.

  • Liker 1
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å
×
×
  • Opprett ny...