Programmering 101 - vart börjar man?

Troberg

Sinister eater
Joined
27 Jun 2001
Messages
17,711
Visst, alla språk har sina fördelar och nischer, men vissa är distinkt olämpliga för en nybörjare. Ta tex C, som definitivt har användningsområden, men som är extremt oförlåtande, lägger på (för nybörjare) komplexa koncept, och har en rätt så kryptisk syntax. Det blir som att sätta en som ska ta flygcertifikat i en SR71 istället för ett segelplan.

Jag skulle rekommendera något som är rätt så "skriptspråksnära" för att komma igång.
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Visst, alla språk har sina fördelar och nischer, men vissa är distinkt olämpliga för en nybörjare. Ta tex C, som definitivt har användningsområden, men som är extremt oförlåtande, lägger på (för nybörjare) komplexa koncept, och har en rätt så kryptisk syntax. Det blir som att sätta en som ska ta flygcertifikat i en SR71 istället för ett segelplan.

Jag skulle rekommendera något som är rätt så "skriptspråksnära" för att komma igång.
Jag rekommenderar inte C som nybörjarspråk.

Men för den som vill förstå hur saker faktiskt fungerar så är C unikt.
Däremot är det ju - precis som du skriver - oförlåtande. Det är inte heller speciellt "produktivt".

Det var lättare att trots allt förespråka C när det var defakto-språket, på ett sätt som det inte riktigt är nu (när få nya projekt skrivs i C).

Om man köper en Arduino så kommer den däremot med en C-kompilator (med vissa små C++-inslag).
Så, om man börjar programmera från det enkla hårdvarunära hållet så är C ganska lämpligt.

Jag kan hålla med om det här med "skriptsspråksnära". Men den som vill komma vidare med sin programmering behöver förstå hur strikta typer fungerar (för att undvika att göra dumma saker i otypade mer flexibla språk).

Men jag instämmer med en talare ovan - det bästa språket är det som man faktiskt använder och får något gjort i.
 
Joined
20 Oct 2023
Messages
843
Så, nu har jag gjort lite grejer under veckan som jag i vart fall själv känner att det tagit mig i den riktningen jag vill, nämligen att få programmering att framstå som mindre esoteriskt och börja hänga ihop mer och få mer innebörd.

En sak som jag verkligen kände hjälpte att förstå vad jag behöver kunna var de 10 tipsen @zo0ok skrev i sitt inlägg, samt att jag kollade igenom de första föreläsningarna på CS50 där massa konceptuella grejer förklarades extremt tydligt och det kändes som att det var befriande fritt från den typen av små informationsmissar som ofta sker när folks som är extremt kunniga skall lära folk som är helt okunniga om ett ämne.

Att hitta övningsmiljöer för programmering som MiniScript Try It! och Learn GDScript from Zero känns också som att de, tillsammans med mycket av tipsen i tråden, liksom ger en väg framåt. Det ger något att öva på och samtidigt förstärker koncept om ämnet från flera håll.

Mitt huvudsakliga mål är ju att först och främst lära mig GDScript så jag kan göra saker i Godot, detta är för att jag tycker det verkar roligt och just vad gäller Godot så tycker jag typ allt verkar väldigt logiskt och lätt att lära sig förutom just kodskrivandet. Men som sagt, jag vill lära mig det för att jag vill lära mig det, tillskansandet av kunskap är sin egen belöning, allt behöver inte ha ett ytterligare syfte.

Det som jag i vart fall själv känner är bra med att testa olika språk i olika miljöer och kolla på föreläsningsmaterial är att en del saker reds ut som annars är rätt svåra att identifiera för en absolut nybörjare. Vad är liksom konceptuellt programmering och vad är språkspecifikt, vad är en del av språket i sig och vad kommer från ett bibliotek etc, vad man kan förvänta sig stöta på ofta och vad som är edge-cases osv.
Det blir liksom lättare att identifiera vad som är vad om man får information från flera källor, har olika typer av övningar och inte bara följer en sorts instruktioner. Just nu känns det som att jag kommer greppa detta, om jag ger det rätt tid, fokus och övning.

Jag vet inte om det är rätt sätt att tänka, men från mitt nybörjarintryck så känns det som att det gör att saker klarnar, att man blir introducerad till en idé på ett ställe, får den bekräftad på ett annat, och sedan tydligt och utförligt förklarad på ett ytterligare ett annat osv.

Jag kommer arbeta mig igenom uppgifterna som finns i övningsmiljöerna, försöka läsa på mer och kolla föreläsningar mm, och sen försöka hitta fler och mer avancerade övningar, och sen försöka applicera det i små egna projekt. Det bör funka hyfsat.

Tusen tack för all hjälp!!
 

erikt

Hero
Joined
21 Feb 2014
Messages
1,379
Det som jag i vart fall själv känner är bra med att testa olika språk i olika miljöer och kolla på föreläsningsmaterial är att en del saker reds ut som annars är rätt svåra att identifiera för en absolut nybörjare. Vad är liksom konceptuellt programmering och vad är språkspecifikt, vad är en del av språket i sig och vad kommer från ett bibliotek etc, vad man kan förvänta sig stöta på ofta och vad som är edge-cases osv.
Det blir liksom lättare att identifiera vad som är vad om man får information från flera källor, har olika typer av övningar och inte bara följer en sorts instruktioner. Just nu känns det som att jag kommer greppa detta, om jag ger det rätt tid, fokus och övning.
Mycket bra observationer.
När man börjar lära sig programmera är det lätt att blanda ihop vad som gäller generellt, och vad som är specifikt för just det språk/utvecklingsmiljö man använder.
Det är en anledning till att jag brukar hävda att en bra programmerare måste lära sig flera olika språk - ju mer olika dess bättre. Dels för att det då brukar bli mycket klarare vad som är generellt och vad som är språkspecifikt, men också för att det "naturliga" sättet att lösa vissa problem skiljer sig mellan olika språk vilket gör att man lär sig olika sätt att angripa programmeringsproblem..
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Kompletterar min lista eftersom den åtminstone var lite uppskattad...

---- 11 ----
Vissa språk är tolkade, andra språk är kompilerade.

Om du har ett tolkat språk (som Python) och du har skrivit ett program (hello.py) så kör du typiskt ditt program:
$ python3 hello.py

Om du har ett kompilerat språk (som C) och du har skrivit hello.c så gör du typiskt.
$ cc -o hello hello.c
$ ./hello

I fallet med Python så så finns ett (native) program på din dator som heter python3, och det programmet kör ditt program (hello.py) genom att tolka och utföra det, rad för rad, instruktion för instruktion (något förenklat). Det har till exempel fördelen att du kan kopiera hello.py till en annan dator och köra det där.

I fallet med C så "kompilerar" det första steget ditt program (hello.c) till en "binary"/"executable".
Det andra steget kör programmet (som nu heter bara hello - på windows skulle det heta hello.exe).
Nu kan du ofta (men inte alltid) kopiera till och köra programmet på en annan dator av samma typ (mac till mac, windows till windows).

Det finns andra varianter än "tolkat" eller "kompilerat" (transpilerat, jit-kompilerat, osv), men det viktiga är att förstå att det kan skilja sig.

När du labbar med programmering på websidor för att lära dig programmera så göms dessa detaljer för dig, och ofta finns det bara en knapp "run" eller nåt.

--- 12 ---
De flesta riktiga program består av flera/många filer med (käll)kod.
Ibland finns det också bilder, ljud eller andra filer som tillsammans utgör ditt färdiga program.

Steget/processen att förvandla alla dessa filer till ett program som man kan köra/dela/distribuera kan kallas för bygga/build/make/bundle.

--- 13 ---
Detta är ett enkelt Python-program:

== hello.py (1 rad) ==
print("Hello")

Om du skriver den raden i ett Word-dokument och sparar som hello.docx så blir filen kanske 2k, 20kb, jag vet inte. Och sparar/skriver du till en PDF så blir den också kanske 10kb. Men filen hello.py är 14bytes. Exakt. 13 tecken och en radbrytning.

Källkod är (normalt) bara rena textfiler. Det finns ingen fet text, ingen kursiv text, inga typsnitt, inga färger, inga stående eller liggande A4, inget sånt i källkod till dataprogram. Det betyder att du (normalt) kan ändra dem med vilken "editor" du vill. Programmerare är precis lika oense om vilken editor som är bäst som vilket programmeringsspråk är bäst. Om du programmerar i en "skyddad verkstad" så kommer den ofta med en editor, och då kan du normalt använda den, om du inte har någon annan preferens.

Om du ska välja en editor själv kan du använda Notepad++, Visual Studio Code, vim, emacs eller någon annan editor för programmerare. De har olika för och nackdelar.

Du KAN använda Notepad i Windows. Men gör inte det.
Försök inte använda Word, Google Docs, Wordpad, LibreOffice, eller något annat program som är till för att skriva vackra dokument.

--- 14 ----
Programkod har en typ av formattering som är viktig - indentering.

Detta skulle kunna vara ett program i något påhittat språk (pseudo-kod kallar man det)

Code:
dosomething
for ever enemy
  checkifdead
  move
  shoot
  updatepicture
end for
dosomethingelse
Det är i de flesta programspråk samma sak som


Code:
  dosomething
    for ever enemy
checkifdead
  move
   shoot
 updatepicture
     end for
  dosomethingelse
Jag tror att du kan se varför det första exemplet är överlägset det andra exemplet, även om det är samma sak för datorn.

Många editorer för programmering hjälper dig med detta automatiskt (det kan vara både bra och irriterande).
Månda editorer kan också färglägga vissa nyckelord för att göra din kod lättare att läsa - men färgen sparas in inte i källkoden och om du öppnar filen i Notepad är alla bokstäver svarta som vanligt.

Det är väldigt viktigt att du skriver prydlig kod!
Vad du tycker är prydligt är din sak. Det jag tycker är prydligt tycker du kanske ser fult ut.

---

Lycka till!
 

zo0ok

Rollspelsamatör
Joined
13 Sep 2020
Messages
2,881
Jag hade en kollega för många år sedan som på fullt allvar skrev sin källkod i Notepad. Med teckensnittet inställt på Arial....
Om man envisas med Notepad så är det en sak, men det där med Arial provocerar mig förfärligt...
 

Troberg

Sinister eater
Joined
27 Jun 2001
Messages
17,711
Om man envisas med Notepad så är det en sak, men det där med Arial provocerar mig förfärligt...
Jag har kört proporttionerliga typsnitt vid programmering, funkar utmärkt. Det jag kört mest är Arial, men modifierad så att mellanslagen var lite längre.
 

koraq

Swordsman
Joined
1 Jan 2016
Messages
632
Location
Uppsala
#14 kan man prata mycket om, ibland med religiös övertygelse. Vi skippar det nu, men kan vara bra att veta. ;)
 

Rickard

Urverk speldesign
Joined
15 Oct 2000
Messages
18,990
Location
Helsingborg
Jag skulle rekommendera php eller javascript. Php är enkelt att komma in i men har nackdelen att det krävs en minimal del att installera och köra. Javascript kan köras direkt i webbläsaren och ger direkt visuell respons. Javascript är vad kabel- och rördragning är för att bygga ett hus - det skapar interaktivitet på hemsidor. Nackdelen är att du bör lära dig HTML innan du sätter igång, vilket är motsvarigheten till att skriva [b] runt ett [b]ord[/b], när du skriver ett inlägg, istället för att markera ordet och tycka på B-knappen.

Codeacademy är bra och har en hel del gratiskurser men jag tog mig tiden att titta igenom andra lösningar och här är en bra genomgång av javascript som förklarar dom grundläggande principerna med programmering: variabler, variabel-typer, if statements, loopar och funktioner. Det som saknas är väl klasser (grupperingar av funktioner och variabler). Kan du detta är det enklare att sätta sig in i vilket programmeringsspråk som helst.

Grundkurs för javascript

Grundkurs för HTML (kräver registrering)
 
Last edited:
Top