Programmering, var/hur ska man börja?

Permalänk
Medlem

Programmering, var/hur ska man börja?

Tjena, skulle vilja lära mig att programmera. Är intresserad av datorer men har inga tidigare erfarenheter av programmering. Så jag undrar om ni har tips om hur man ska göra. Böcker? Internet? Guider?

Tacksam för svar.

Mvh Filatov

(OBS, ska börja tvåan på gymnasiet nästa år då kommer jag gå kurser som Programmering A och B men vill ligga steget före.)

Permalänk
Medlem

Om du iaf har lite koll på engelska kanske den här gratis-boken är nått: http://inventwithpython.com/ Har inte läst igenom hela själv utan bara tittat lite (eftersom jag redan kan programmera), men den ser ut att vara enkel att förstå med roliga exempel.

Om du har väldigt svårt för engelska kanske något på svenska är lättare, men engelska är språket #1 när det gäller programmering så det är i stort sett lika bra att vänja sig direkt om det inte blir alldeles för jobbigt

Kanske skulle säga oxå att boken lär ut programmeringsspråket python. Det är ganska liten chans att ni kommer använda just python i skolan om inte läraren är väldigt engagerad och kunnig, men det är absolut inte bortkastat med python även om ni i programmering A använder tex Java som är ganska vanligt.

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk
Medlem

http://www.blinkenlights.se/ finns en nybörjarguide på svenska för C++. Troligen det språk som du kommer att läsa på skolan också.

Permalänk
Medlem

Tror att det är Java som vi ska lära oss i Programmering A. Vilket är det första språket som man bör lära sig?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av achnorr
http://www.blinkenlights.se/ finns en nybörjarguide på svenska för C++. Troligen det språk som du kommer att läsa på skolan också.

Ska man lära sig dem i den ordningen som de står i på hemsidan?
C++, Java, Python?

Jag har kikat lite i C++ guiden och den verkar vara riktigt bra. Orkar inte börja idag med att ladda ner program osv. Eftersom jag får en ny dator imorn;)

Permalänk
Medlem

Java är förhållandevis enkelt att lära sig.

Börja inte med c++, då manuell minneshantering kan vara krångligt att greppa, att man antigen kan hantera object som pekare eller som värden (och då måste man fixa konstruktorer, kopieringskonsturktorer, tildelningsoperator, och destructor).

Sen får man inga fina felmeddelanden (stacktrances) som i java, utan ("Ett fel har inträffat på minnesplats x00001000", eller som i unix "Segmentation fault").

Java direkt av skanholm är väl en enkel nybörjarbok.

F.ö. 1: om man inte vill lära sig ett "högnivå"-språk som Java är C mycket finare än C++!

F.ö. 2: Smalltalk är mycket bra som nybörjarspråk! Dock kommer ni förmodligen inte lära er det i Programmering A, men det ger förståelse. Och kan man ett språk är det enkelt att lära sig fler (som bygger på samma princip (imperativt, gärna klassbaserat objektorienterat)). Logiska och funktionella språk är väl inget alternativ antar jag?

F.ö. 3: Tanka inte hem en stor fet IDE (Eclipse, Netbeans, Visual Studio, med flera) det kommer att minska inlärningen avsevärt! Att ha "code completion", rättninga av fel, refactoring är fint (som fan) när man lärt sig språket. Innan dess gör det bara att inlärningen blir mindre (långsammare).

F.ö. 4: Programmera inte i Notepad, den lämpar sig inte för det. Välj en editor med "syntax highlighting", Emacs är mycket bra, men problematisk för nybörjare (visar det sig). Välj t.ex notepad++, editplus2, eller liknande. Finns en trevlig wikipedia sida för detta [0, 1].

[0] http://en.wikipedia.org/wiki/Text_editor
[1] http://en.wikipedia.org/wiki/List_of_text_editors

Permalänk
Medlem

Känns som att jag ska börja med Java dels för vad du skrev Kejsarn men också för att vi kommer att lära oss det i tvåan så kan jag brilljera

Permalänk
Medlem

Nej, det är helt olika saker. Java och C++ är släkt, Java bygger till stor del på C++ men många delar har också ändrats och moderniserats. Python används istället oftast till script-applikationer och kan anropa t.ex. kompilerad Java- eller C++kod för komplexare uppgifter.

Java är betydligt lättare att använda om man behöver ett grafiskt användargränssnitt medan C++ ger fler möjligheter att gå långt in i koden och skriva mycket mer optimerad, maskinnära kod. Nackdelen med C++ är att man kan kompilera nästan vad som helst som slutar med ett semikolon, riktigt så förlåtande är inte Java (striktare typning).

Jag har läst flera olika programmeringsspråk men det viktigaste är inte att man kan varenda liten genväg i ett specifikt språk utan att man lär sig tänket, hur angriper man ett problem och formulerar en algoritm? På många data-vetenskapliga kurser på högskolenivå skriver man inte en enda rad riktig kod utan lär sig bara tänket, i andra kurser får man välja språk själv för att genomföra inlämningar och lab-uppgifter, det spelar ingen roll om du gör det i Haskell eller Java.

Skansholms böcker har använts som kursböcker på Chalmers i många år, framförallt i nybörjarkurserna. Själv hade jag "Ada från början" när jag gick där

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk
Medlem

Men skulle ni rekommendera att jag köpte Skanholms bok om Java eller ska jag börja med C++? Känns som att det skulle vara bra att kunna C++ också. Tackar för era tips.

Permalänk
Medlem

Mitt tips, som synes ovanför är: undvik c++ därför att:

* Manuellminneshantering är en konceptuell missmatch med Objektorientering (intressant diskussion, visst?)

* Manuellminneshantering är något som man som nybörjare inte vill tänka på.

* Att definera egna typer är krångligare. (Ska jag välja struct eller class, ska den få hanteras utan pekare? Slicing vid arv).

med mera. Men jag tror att de flesta, tycker som jag, att c++ inte är ett optimalt nybörjarspråk.

Permalänk
Medlem

Skulle ni kunna ge exempel på BRA böcker för en som ALDRIG har programmerat? Har kollat runt lite och sett att det finns olika standarder och liknande :S Blir lite förvirrad. Men så länge så beställer jag Jan Skanholms bok. Kanske också hans bok om C++ för skoj skull. Såg även ett tips på internet om "Problem Solving with C++ 5th Ed" för en total nybörjare någon som har erfarenhet av den?

Permalänk
Medlem

När jag gick programmering A i 2:an på gymnasiet så började i alla fall vi med c++ som språk, och vi fick endast lära oss det allra mest grundläggande, som inmatning, utmatning o.s.v.

Lite fail var det också, vi började INTE med "Hello World"...

Visa signatur

|| Intel 8700K || MSI GTX 1080 TI Gaming X || Xonar DG || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || XFX XXX 650W || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Avstängd

Börja med maskinkod och assembler, gå över till C och sedan till något objektsorienterat som C++, C# eller Java.

Permalänk
Medlem

Jag håller med tidigare skribenter, håller på med mitt PA nu som jag skriver i C++. Och det är faktiskt väldigt svårt. Där man ska ha koll på det mesta med minne och pekare osv. Där grunderna är simpla och inte så användbara i klasser och objekt som man då bygger spel på.

Så därför kan java vara en bra början. För där gör du allting med klasser. Vilket är bra sen då du kanske börjar göra något grafiskt sen vad vet jag.

Dock har jag en klasskompis som läste Programmering A i Java i en annan klass, sen så börja han i vår klass och kom till Programmering B med C++, vilket han då inte förstod nånting.

Den boken jag använder i C++ är, C++ programmering av Stephen Prata, väldigt bra bok då han tar upp nästan allting. Dock så har den slutat sälja. Kanske kan gå att få tag på tradera. Där jag köpte min

Visa signatur

ATX: Intel Core i5 4690k | Asus Z97-A | MSI R9 390 8GB | 2x Corsair DDR3 2133Mhz | Crucial BX480Gb | Corsair TX650W | Fractal Design Define R4
mITX: Intel Core i3 6100 | Asus B150I | 2x8Gb Corsair DDR4 2133Mhz | Samsung 850 Evo 500GB | Cooler Master V750 | Fractal Design Define Nano S

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Filatov
Tror att det är Java som vi ska lära oss i Programmering A. Vilket är det första språket som man bör lära sig?

Om det är så att ni ska lära er Java i kursen tycker jag att du ska börja med Java redan nu. Tror bara det blir krångligt om du börjar i ett språk och sedan måste ändra. Det är enklare att fokusera på ett språk åt gången om man inte har kunskaper i ämnet sedan tidigare.

Permalänk
Medlem

Kan säga att Fadil Galjic's java böcker är grymt bra. Den man vill ha är Java principboken och exempelsamlingen. Övningsboken är bra men inget man använder speciellt mycket.

Hade han som lärare också men var aldrig på några lektioner.

Adlibris

Visa signatur

Ei bor i stockholm och tar inget ansvar för allt som han säger
i5 2500k, 16 gig ram, radeon 6950
Solna arbetscenter

Permalänk
Medlem

Kan inte tänka mig att dom program som skrivs på en kurs på gymnasiet skulle vara så komplexa så att minneshanteringen i C++ skulle vara ett problem. Jag tror att det är bra om man börjar på den nvån så att man redan från början lär sig att städa efter sig s.a.s

Visa signatur

https://valid.x86.fr/pyrh0w
https://valid.x86.fr/hc225t
https://valid.x86.fr/6dilbx
Ryzen 9 7950X, Asus X670E Hero, 64GB ram, Zotac RTX 4090 AMP Extreme AIRO, Seasonic SnowSilent 1050, CORSAIR 7000D Airflow, Custom loop för CPU med ett Phanteks Glacier C360A CPU Block.
Det enda jag med säkerhet vet är att jag ingenting med säkerhet vet

Permalänk

Grundläggande assembler kan nog vara nyttigt för att få ett hum om vad som egentligen händer och hur processorn jobbar men om man tar det som allra första grej så kanske man blir avskräckt

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Filatov
Men skulle ni rekommendera att jag köpte Skanholms bok om Java eller ska jag börja med C++? Känns som att det skulle vara bra att kunna C++ också. Tackar för era tips.

Äh, vet du att du kommer köra Java nästa år är det lika bra att börja med det nu, om du måste välja. Tjacka Skansholms bok och gör lite övningar ur den, sedan kan du ge dig på några av de labb-uppgifter som finns här, långt ner på sidan. Det är grundkursen i programmering som ges i första årskursen på Elektroteknik på Chalmers.

Min egen första kurs i programmering på Chalmers var mycket riktigt assembler, då på Motorola 68HC11. Det var en jäkla massa registerhantering och stackar men roligt var det. Året därpå läste vi programmeringsteknik och använde ADA95 som övningsspråk.

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk
Medlem

Jag tycker helt klart du ska välja ett objektorienterat högnivå språk.

Jag skulle föreslå antingen Java vilket är det vanligaste "akademiska" språket just nu eller C# som är ett bra alternativ.

Kan du skriva Java eller C# är det väldigt lätt att lära sig nya språk efter det.

Permalänk
Avstängd

Undvik Assembler och maskinkod, det kommer att krävas mycket programmering innan du ens kan göra någonting vettigt.

Om du ska använda Java senare, kanske du bör börja med Java därför att du vill ligga före. Om du lär dig C++ (vilket är ett jobbigt språk och bör undvikas) så kommer du inte hunnit så långt eftersom det är så svårt.

Java och C++ är väldigt lika. Börja med det enklare Java, sen kan du hoppa över till C++, och då blir det ganska enkelt för dig. Om du börjar med det svårare C++ så har du mycket lång uppförsbacke.

Jag tycker du ska börja med Java, som även används i nybörjarkurserna på KTH civilingenjörsprogram i datateknik. Som nybörjare vill du komma igång med programmering, använda ett ganska enkelt språk, du vill inte sitta timmar med att installera miljön och försöka kompilera - utan framgång. Så enkelt som möjligt. Om du ska börja spela strategispel, vad är bäst? Dam/schack eller typ World in Flames som kan ta flera dagar och som har massor utav regler? Du kommer tröttna innan du hunnit läsa sidan 130 i World In Flames. Skippa C++. Kör på Java.

Det finns en gratis bok utav Bruce Eckel om Java, som är bra. Sök efter den.

Permalänk
Medlem

Börjar med att säga det som jag alltid brukar säga när det gäller att lära sig programmera: Vad vill du uppnå? Du gillar datorer, men vad tycker du är det mest intressanta? Är det program med grafiska gränssnitt? Ar det webbapplikationer (webbsidor med databas)? Är det spel? Om spel: är det själva spellogiken, grafik eller nått annat?

Jag förstår att det inte är så lätt i början, men ta dig lite tid och tänk efter så kan man ge lite bättre tips sedan, det kan t.ex. vara värt att lära sig ett svårare språk tidigt om man vill inrikta sig på något där det språket ofta används.

Själv tycker jag att man gärna ska börja lära sig programmera i en lite mer abstrakt miljö, för att sedan gå över till språk med mer komplex syntax. Scheme och ev. Python är språk jag själv skulle rekommendera för att komma in i själva programmerings-"tänket", hur du definierar ett problem och hur du bryter ner det i beståndsdelar du kan lösa. http://www.htdp.org/2003-09-26/Book/ ger en bra början.

EDIT: Får säkert en hel del bashing för detta men att programmera är väldigt språkoberoende egentligen. Det gäller ofta bara olika sätt att tänka på och de olika sätten går ofta att uttrycka i många språk. Att lära sig C och Scheme/Python är nog vad som skulle ge den bästa täckningen IMHO, men det är vara för att de i grund och botten lär ut olika tänk. Dessa går sedan att applicera på de andra språken för att kunna skriva bättre program.

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk

Jag gick programmering A med C++ som språk i gymnasiet och kan bara säga att minneshanteringen inte blev något problem. Det är ju bara 50p kurs, vilket ger ca 40h tid. På den tiden hinner man inte gå in på djupet något. Är som en vecka på universitetet. Därför går det även bra om du skulle gå C++ som första språk.

Visa signatur

| i5 10600k@4,7 Ghz | AMD 6800 | 4Ghz RAM | 1 TB m.2 |
http://www.carpediem86.se

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jdv
[...] EDIT: Får säkert en hel del bashing för detta men att programmera är väldigt språkoberoende egentligen. Det gäller ofta bara olika sätt att tänka på och de olika sätten går ofta att uttrycka i många språk. [...]

Nej, jag tycker du har helt rätt; det är tänket som är det viktiga, inte syntaxen.

Visa signatur

Det finns bara två sorters hårddiskar: de som har gått sönder och de som skall gå sönder.

Permalänk
Medlem

Jag snackade med min lärare idag, C# ska vi läsa i Progammering A. Det skulle tydligen vara ett nyare version av C++ och även likt Java. Har ni något att kommentera om detta?

Permalänk
Avstängd
Citat:

Ursprungligen inskrivet av Filatov
Jag snackade med min lärare idag, C# ska vi läsa i Progammering A. Det skulle tydligen vara ett nyare version av C++ och även likt Java. Har ni något att kommentera om detta?

Ja men helt fel det han säger. C# är mera likt Java än C++.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Filatov
Jag snackade med min lärare idag, C# ska vi läsa i Progammering A. Det skulle tydligen vara ett nyare version av C++ och även likt Java. Har ni något att kommentera om detta?

Det är inte en nyare version av C++. Det är Microsofts svar på Java som de valde att kalla C# för att få det att se ut som en nyare version av C++.

Permalänk
Medlem

C# är väl dessutom Microsoft specifikt

Visa signatur

https://valid.x86.fr/pyrh0w
https://valid.x86.fr/hc225t
https://valid.x86.fr/6dilbx
Ryzen 9 7950X, Asus X670E Hero, 64GB ram, Zotac RTX 4090 AMP Extreme AIRO, Seasonic SnowSilent 1050, CORSAIR 7000D Airflow, Custom loop för CPU med ett Phanteks Glacier C360A CPU Block.
Det enda jag med säkerhet vet är att jag ingenting med säkerhet vet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MarkSix
C# är väl dessutom Microsoft specifikt

Nej. Vad du nu än menar med ovanstående, så är svaret nej...

Permalänk
Medlem

Ok! Nice måste ta en ny titt på C#. Jag hade för mig att det endast fanns i MS Visual miljö. Några fördelar/nackdelar med C# mot Java?

Visa signatur

https://valid.x86.fr/pyrh0w
https://valid.x86.fr/hc225t
https://valid.x86.fr/6dilbx
Ryzen 9 7950X, Asus X670E Hero, 64GB ram, Zotac RTX 4090 AMP Extreme AIRO, Seasonic SnowSilent 1050, CORSAIR 7000D Airflow, Custom loop för CPU med ett Phanteks Glacier C360A CPU Block.
Det enda jag med säkerhet vet är att jag ingenting med säkerhet vet