Gå til innhold

Hvilket programmerings-språk bør man begynne med?


Anbefalte innlegg

Som artikkelen jeg linket til sier, så begynner alle med å overvurdere hva de er istand til (lære C++ på 2 dager) men så fort de begynner, så undervurderer de seg selv, og tror de aldri kommer til å lære seg dette.

Faktum er at hvem som helst kan lære seg programmering, matematikk, fysikk, kjemi, strikking, tegning, gitar etc. det eneste som er vanskelig er å komme over den første kneika. Mange leter etter noe som gir umiddelbar avkastning, men dessverre er det svært lite som er sånn.

 

Derfor er det viktig å lære seg et enklere språk (som Python) som raskere gir avkastning. Dette vil lønne seg når en senere skal kaste seg på C++. Mye av tankegangen er det samme, som er sant innen nær sagt all imperativ programmering.

Lenke til kommentar
Videoannonse
Annonse

Skjønner ikke hvorfor folk snakker som om C++ vil si det å gå "rett på" når det i flere tilfeller er så lite rett på som det er mulig å komme; altså totalt skivebom og rett bak mål.

 

C er riktignok nyttig å kunne sånn uansett fordi en før eller siden kanskje vil komme til å jobbe nært OSet hvor ting gjerne er skrevet i C(#1), men både C og C++ er i utgangspunktet særdeles svake språk i flere tilfeller.

 

Hvordan kan dere mer eller mindre blindt anbefale C++ fremfor f.eks. Python uten noen som helst gitt sammenheng? Er C++ det eneste språket dere kjenner til?

 

..jeg bare lurer..

 

(..det ligger implisitt i spørsmålet at personen ser C++ (og/eller kanskje C) og Python som alternative veier for ham å gå for fremover..)

 

edit:

En kan også se på det slik; Python er ikke nødvendigvis et enklere språk enn C++ da det er bredere eller har støtte for flere paradigmer enn C++. Er det noen blant C++-folket her som vet hva en meta-klasse er, f.eks.?

 

Og ellers har C++ flere problemer eller irritasjonsmomenter i sammenheng med de verktøy og paradigmer som allerede støttes: http://yosefk.com/c++fqa/ (kort: http://yosefk.com/c++fqa/defective.html ), http://gigamonkeys.wordpress.com/2009/10/16/coders-c-plus-plus/ m.fl.. Dette kommer i veien for ikke bare en som skal lære seg språket, men også for en som allerede kan det godt og skal bruke det.

 

 

#1: Noe som ikke nødvendigvis gjør at en må skrive sitt program i C; en kan kommunisere C <--> AnnetSpråk, men en er nødt til å forstå hva som foregår i "C land" for å gjøre dette.

Endret av worseisworser
Lenke til kommentar

Hei

 

Hvilket språk man bør lære seg først avhenger først og fremst av hvorfor du må/ønsker å lære deg programmering.

 

Hvis du har en spesiell oppgave du skal løse, så er valget av språk enlere da det i de fleste tilfeller vil være slik at typen av oppgaven sterkt begrenser hvilke språk og verktøy som egner seg.

 

Hvis du derimot vil lære deg programmering fordi du ser for deg en fremtid der dette kan være ett yrke, så er valget litt vanskeligere.

 

Like viktig som selve språket og verktøyene rundt språket, er antall brukere av disse verktøyene og mengden med hjelp og eksempler som finnes på nett.

 

 

Liste (langt fra komplett) over type oppgave og hvilke språk/verktøy som egner seg best:

 

- Lage enkle web sider.

Språk: HTML, JavaScript. Verktøy: f.eks Dreamweaver.

 

- Mer komplekse web sites/apps:

Java, Perl, Python, C# (ASP og/eller Silverlight), Flash. Verktøy: Eclipse, Visual Studio, osv

 

- Linux/Unix console programmer (Ingen vinduer/knapper etc):

Språk: C, C++, Java, Perl, Python, Lisp, Scheme, Haskell ++ (stort sett alle språk). Verktøy: Tekstedior og debugger.

 

- Linux/Unix GUI programmer:

Språk: C++ (QT,X ++), Java (Swing, SWT ++), C, ++: Verktøy: Eclipse, QT.

 

- Windows/Dos console programmer:

Språk: C, C++, Java, Perl, Python, Lisp, Scheme, Haskell ++ (stort sett alle språk). Verktøy: Visual Studio, Tekstedior og debugger.

 

- Windows GUI programmer:

C# (WPF og/eller forms), C++ (MFC, QT eller ren windows API), Java (Swing, SWT ++). Verktøy: Visual Studio, Eclipse.

 

- Databaser:

Oracle, SQL server, MY Sql, IBM db2, Access. Flere av disse databasene/verktøyene tilbyr egne utviklings språk/verktøy for utvikling av frontends/applikasjoner.

 

Listen over er som sagt ikke komplett, men har prøvd å velge det jeg anser er de vanligste språk og verktøy. Det er f.eks fullt mulig å lage Windows GUI programmer i Lisp, men det er ikke mange som gjør det (fordi det finnes andre mer egnede språk/verktøy), så derfor er den ikke med på den listen.

 

 

For de fleste programmere i jobb i dag så bestemmes valget av språk og verktøy av hvilken jobb man fikk første gang, og hvilke oppgaver man (tilfeldigvis) ble satt til der. For å få den første jobben er man som oftest avhengig av en utdannelse innen IT. Hvilke språk man lærer på Univeristet og/eller høyskoler variere endel, men tror de vansligste er Java, C# og C++.

 

 

Hvis man skal bli en dyktig og komplett utvikler som kan brukes til det meste, så mener jeg man bør beherske følgende:

 

C/C++.

Fordi: De fleste OS i dag er basert på C/C++, og all minnes og ressurs styring er bestemt av dette. Du må forstå pekere, og evne å skrive ett program som allokerer og deallokere minne og ressurser uten lekkasje og peker feil.

 

C/Pascal:

Fordi: Kunne utvikle programmer i ett rent prosedyre basert språk.

 

C++/Java/C#,Delphi ++:

Fordi: Forstå og beherske Objekt Orientert programmering.

 

Lisp/Scheme/Haskell/F#:

Fordi: Forstå og beherske funksjonell programmering.

 

(Multi)Threading:

Fordi: Forstå og beherske fler trådet eksekvering.

 

GUI:

Fordi: Man må kunne bruke en designer for å lage GUI, samt kunne skrive kode for å oppnå det samme uten en designer.

 

Design:

Fordi: I en konkurranse situasjon er design av bruker grensesnitt/interaksjon minst like viktig som funksjonalitet.

 

Database/SQL:

Fordi: Man må kunne jobbe med databaser, designe tabeller, kunne skrive en SQL setning/kommando osv.

 

HTML:

Fordi: Forstå og beherske oppbygging av en web side.

 

XML:

Fordi: Utveksling av data mellom programmer og systemer foregår ofte på XML. Man bør derfor forstå og beherske design, lagring og lesing av data til og fra XML.

 

Makefiler:

Fordi: Kunne lage/redigere make filer for bygging/kompilering av komplekse applikasjoner og/eller systemer.

 

Eclipse:

Fordi: IDE som kan brukes til mange språk og på de fleste OS.

 

Visual Studio:

Fordi: Vanskelig å komme utenom denne hvis man driver med Windows utvikling.

 

 

Selv har jeg jobbet med programutvikling siden tidlig 90 tallet, og mangler endel for å kunne krysse av alt på listen over.

 

Det finnes mange som kan klare seg godt en hel karriere på kun å beherske ett eller svært få språk/verktøy, men er man entusiast så vil det ofte være naturlig å beherske flere språk og mange verktøy.

Endret av OldMan
  • Liker 2
Lenke til kommentar

Tja. Jeg kan ihvertfall kommentere litt rundt kombinasjonen Lisp og web, oldman.

 

Rimelig standard verktøy og biblioteker for utvikling av web-apps i Lisp er:

 

* Emacs/Slime; egentlig generelt, altså for all utvikling i Lisp; selv en god del av de som bruker kommersielle Lisp-implementasjoner går for denne komboen.

* Web-app server; Hunchentoot: http://weitz.de/hunchentoot/

* HTML DSL; CL-WHO: http://weitz.de/cl-who/

og/eller

* Templating; HTML-TEMPLATE: http://weitz.de/html-template/

* Database/PostgreSQL tilgang; Postmodern: http://marijn.haverbeke.nl/postmodern/

* JSON; CL-JSON: http://common-lisp.net/project/cl-json/

* Generering av JavaScript via Lisp-som-DSL; Parenscript: http://common-lisp.net/project/parenscript/

* XML; Closure XML: http://common-lisp.net/project/cxml/

* Web services; Drakma: http://weitz.de/drakma/ , for tilgang til web-services; Hunchentoot tar seg av ting i "andre enden".

* Regex; CL-PPCRE: http://weitz.de/cl-ppcre/

 

..og det finnes en masse annet å velge i.

 

Jeg er forøvrig enig i at Lisp kanskje ikke er verdt bryet i GUI-sammenheng, men det finnes så klart muligheter: http://common-lisp.net/project/cl-gtk2/ (edit: testet her: http://static.nostdal.org/always-here/cl-gtk2.png ) .. og en kan også bruke Lisp (eller Scheme her da) til visse typer spill f.eks.;

 

PS: Er det noen som har lagt merke til at det er umulig å skrive JavaScript med stor S her?

 

PPS: ..men jeg vil altså ikke anbefale Lisp i web-sammenheng sånn uten videre heller; en må vite litt om sammenheng og mål o.s.v.!

Endret av worseisworser
Lenke til kommentar

Lisp ble jo tidlig brukt i ett avansert web prosjekt, viaweb med Paul Graham osv, men har kanskje ikke tatt helt av etter dette. Ellers er det å få tid til å lære meg funksjonell programmering høyest på min ønskeliste.

 

Ellers syntes jeg det er litt rart att så mange profesjonelle programmere er så "relgiøse" i valg språk, de vil bare bruke favoritt språket sitt, samme hvilken type oppgave det er. Det er klart man sparer litt tid i oppstarten av ett prosjekt fordi man slipper å lære seg ett nytt språk, men det er vanligvis ingenting imot kostnadene over tid ved å ha valgt feil verktøy til jobben. Skulle tro programmere ble glad for å bli betalt for å sette seg inn ny/annen teknologi som jo gjør seg godt på CV'n, men ser stadig at prosjekter startes opp med feil verktøy fordi det er det personen(e) behersker fra før.

 

Jeg har selv klart mest erfaring med C++, men programmerer gjerne i andre språk - det er jo bare verktøy. Arkitektur og intern design av applikasjon er mye mer spennende enn hvilket språk den skrives i, så lenge språket og verktøyene passer til oppgaven.

Lenke til kommentar

Sant nok. Men 99/100 programmeringsprosjekter kan løses i et av de språkene. Hvis det er noen spesiell sammenheng så er forhåpentligvis de som spør klar over dette.

100/100 av programmeringsoppgaver kan løses i assembler. Men abstraksjonsnivå er forholdsvist lavt. Man ønsker ofte et høyere abstraksjonsnivå.

 

Generelt sett så kan man implementere de fleste språk i de fleste andre (Greenspun's 10th. rule).

 

Men kan du bli en bra programmerer hvis du ikke kan Blub?

 

http://video.google.com/videoplay?docid=448441135356213813#

Lenke til kommentar
FPGA programmering også?

Klart det :) Jeg brukte PALASM/ABEL til dette tidlig på 1980-tallet.

 

 

Alternativt er Greenspun: Man skriver bare et synteseverktøy som kan lese Verilog/VHDL, place&route verktøy og et program som laster opp bit-strømmen. Siden Xilinx og Altera ikke gir ut informasjon om programeringsalgoritmene til sine FPGA'er må man bare lage sin egen FPGA arkitektur. Så først bruker man verktøyene man laget ovenfor til å implementere en ASIC, dvs. FPGA arkitekturen.

 

Jeg aner ikke når jeg var for et lavere abstraksjonsnivå, men uansett er dette en tråd om hvilket språk en bør starte med, ikke om hvilket språk som er subjektivt best (C# :D)

 

Jeg påstår ikke du er for et lavere abstraksjonsnivå, men at det at et programmeringsspråk løser en oppgave ikke alltid er en indikasjon at det er det beste språket til oppgaven.

 

Hvilket språk som er best å starte med er avhengig av hva hvilket overordnet mål man har for å starte med programmering.

 

Hvis det målet er å komme raskt i gang med programmering på Android, så er Java kanskje det beste å starte med.

 

Hvis målet er å jobbe mye med matematikk så er kanskje Matlab og Matematica det beste å starte med.

 

Vil man vil vil komme i gang med enkle web sider så er kanskje PHP det beste å starte med (hadde aldri trodd jeg skulle komme til å si det)

 

Vil man få litt generell programeringserfaring så er kanskje Python det beste å starte med.

 

Er målet å innarbeide en god forståelse for mekanismer som finnes i de fleste språk så er Common Lisp det beste å starte med siden det har stort sett alt som finnes i andre språk med unntak av infix notasjon. Men Common Lisp egner seg ikke hvis målet er å lære om minnelekasje the hard way.

Endret av asicman
Lenke til kommentar
  • 5 måneder senere...

Hvorfor bekymrer folk seg for hvilket programmeringsspråk de starter med?

- ett språk kommer aldri til å være "best på alt"; det er derfor man har mer enn hammer i verktøykassa si

- hvordan kan DU vite hvilket språk som passer DEG best, hvis du bare har prøvd ett?

 

Det viktigste er å komme igang; velg ett språk, brett opp ermene og sett i gang!

 

Husk å ta pauser hvis det blir mye motbakker. Lykke til!

Lenke til kommentar

Dersom man ønsker å lage f.eks 2D spill på fritiden, bør man hoppe rett på C/C++ eller er det andre språk som er et bedre alternativ?

 

Hva om man ønsker å videreutvikle 2D-spillet til f.eks 3D?

Jeg vil påstå at nær sagt alle språk er bedre egnet enn C++. Idéen om at C og C++ er godt egnet til spill, henger igjen fra den tiden da en måtte gjøre all jobben selv. Nå har vi raske maskinvareaksellererte API-er for både 2D og 3D grafikk. Under Windows har du Direct2D, Direct3D, og DirectWrite som gir deg maskinvare aksellerasjon for 2D grafikk, 3D grafikk og teksrendering med unicode tegnstøtte. På toppen av dette har du en rekke spillmotorer, mange gratis, som du kan benytte deg av. Å unngå bruk av C++ vil spare deg for MASSEVIS av tid.

 

Vi trenger ikke skrive software rendrere lenger, og vi har rammeverk som Java, .NET og Mono som er svært egnet som scriptingmotorer til spill. Å skrive alt i C++ er bortkastet tid i mine øyne. Du får gjort mye mer, mye fortere med et godt scriptingspråk og en god spillmotor.

Selv anbefaler jeg Unity, både til 2D og 3D. Den er dritbra, og funker på alt du kan forestille deg av plattformer.

Lenke til kommentar

Har man tenkt å jobbe på noe annet enn PC er ikke C/C++ til å unngå.

Jobber man på konsoll er det nødvendig med assembly i tillegg, selv på PS3/X360. (Man skriver ikke assembly per se, men for optimisering må man kunne lese assembly-output fra kompilatoren).

 

Selv OOP er ikke godt nok alltid:

http://gamesfromwithin.com/data-oriented-design

Endret av TheMaister
Lenke til kommentar

Komersielle XBox-spill bruker C++. XNA er kanskje et ok indie-alternativ. På Android brukes NDK for ytelses-kritiske deler. Det er uansett ikke C++ som gir frustrasjon, men heller rammeverkene man bruker.

Mange kommersielle spill skrives i C++ ja, men ofte fordi kodebasen allerede er skrevet i C++.

Unity og Unreal er skrevet i C++. C++ er også mer flyttbart, samt at de fleste tredjeparts biblioteker er skrevet i C++.

 

Det er ingen selvfølge at kode skrevet i C++ er raskere enn kode skrevet i for eksempel C#.

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