Välj en sida

Så, du har bestämt dig för att det är dags att lära dig programmera? Du kanske till och med har läst mitt tidigare inägg om 3 anledningar till varför du ska lära dig programmera. I vilket fall så vill jag gratulera till ett bra beslut. Aldrig tidigare har det varit så relevant med programmering som idag. Men du undrar kanske, vilket språk ska jag lära mig? Det finns ju en hel uppsjö av språk där ute och jag har inte en aning om vilket jag ska välja. Har man ingen tidigare erfarenhet av programmering så är det inte konstigt att det kan kännas överväldigande. Men det är dettta vi ska gå igenom i denna artikel.

Att lära sig programmera är inget man gör över en natt men det är heller inte något som bara är för några få superintelligenta personer utan de allra flesta kan faktiskt lära sig att programmera om bara intressent finns. Och det verkar det göra hos dig eftersom du läser detta, så låt oss sätta igång.

Några ord innan vi börjar

Först och främst vill jag poängtera att inget programmeringsspråk är fel i sig. Det är inte nödvändigtvis så att ett språk är bättre än det andra utan alla språk är skapade för sitt speciella syfte. Med det sagt så finns det dock vissa kriterier som kan vara avgörande för vilket språk du bör välja som nybörjare. Som jag redan sagt så tar det tid att lära sig att programmera och alla har vi begränsat med tid så man vill självklart investera sin tid väl och lära sig något som man verkligen kommer ha nytta av. Den här artikeln försöker inte komma med något definitivt svar att just det ena eller det andra språket är det perfekta för alla utan snarare ge dig lite riktning och hjälpa dig att välja ett programspråk som passa dig och det du vill göra.

Vilket programmeringsspråk ska jag lära mig?

Det finns en del faktorer som vi ska titta närmare på som kan hjälpa dig att reda ut vilket språk som är bäst för dig, givet dina förutsättningar och vad du vill få ut av att lära dig ett nytt språk. Jag listar punkterna nedan:

  • Vad är syftet med att lära dig programmera?
  • Olika programmeringsparadigm
  • Popularitet
  • Framtidsutsikter för språket
  • Community
  • Jobbmarknad och lön
  • Fun-factor

Vi går igenom dessa punkter en och en och tittar lite på hur det kan hjälpa dig i ditt val av språk.

Vad är syftet med att lära dig programmera?

Som tidigare nämnt så är alla språk skapade för olika syften. Vi börjar med att titta på några saker att tänka på vad gäller just användningsområde och vad språket är skapat för.

Frontend eller backend?

Man brukar dela in utvecklare i tre olika kategorier lite grovt. Nämligen frontend-utvecklare, backend-utvecklare och fullstack-utvecklare. En frontend-utvecklare jobbar ofta mer med det grafiska och det som syns, t.ex. att bygga användargränssnittet för en webbsida. En backend-utvecklare däremot jobbar mer med data och det som händer i bakgrunden som tex. hantera login/logouts, persistering och konvertering av data med mera. Alltså mer av det som inte syns helt enkelt. En full-stack-utvecklare är som du säkert redan förstått en person som behärskar både frontend och backend bra 🙂

Tänk igenom vad du har för syfte med att lära dig programmera. Är målet att skapa webbsidor? Eller vill du skapa appar till mobilen eller drömmer du om att skapa server-applikationer och REST API:er. Kanske är tanken bara att du vill lära dig lite mer om programmering och hur det funkar. Vad ditt syfte är kan påverka valet av språk.

För de som kodar mycket webbsidor så är JavaScript nästan det uteslutande språket (bortsett från HTML och CSS då som inte är några programmeringsspråk). Det som är bra med JavaScript är att det fungerar precis lika bra att skriva kod som körs på serversidan som på klienten (webbläsaren). På serversidan kan man skriva JavaScript med Node.js exempelvis. Så med andra ord behöver du bara lära dig ett språk för att bli en full-stack-utvecklare.

Om du istället är mer intresserad av backend-utveckling, t.ex. att bygga REST API:er eller förstå mer hur systemen fungerar i bakgrunden och mindre av det grafiska, då kan det vara bättre att lära dig t.ex. Java eller C#. Du kanske är intresserad av AI och machine-learning? Då är Python ett populärt språk som många använder till det.

Nu när vi har tittat lite på vad frontend respektive backend är för något så går vi vidare och tittar lite på olika programmeringsparadigm.

Programmeringsparadigm

Programmeringsparadigm tänker du? Vad är det för ett suspekt ord? Lugn! Det finns olika typer av programmeringsparadigm, vilket är ett sätt att klassificera språket efter tankesätt eller centrala koncept i hur språket är uppbyggt. Här listas tre de vanligaste paradigmen:

  • Imperativ programmering
  • Objekt-orienterad programmering
  • Funktionell programmering

Jag tänkte försöka förklara lite kortfattat och väldigt enkelt vad dessa olika paradigm är för något. Detta är inte något du behöver förstå på djupet just nu utan mera känna till och ha hört dessa termer. Det kan hjälpa dig senare att besvara frågan ”vilket programmeringsspråk ska jag lära mig?”.

Ett imperativt språk innebär att man skriver skriver programkoden så att man ger instruktioner exakt hur någonting ska utföras och i vilken ordning. Det är ofta denna typ av programmering man bekantar sig med som ny programmerare. Ett objekt-orienterat språk är ofta imperativt till skillnad från funktionella språk som är en delmängd av deklarativa språk.

Ett objekt-orienterat språk kännetecknas väldigt enkelt beskrivet av att man använder man sig av objekt och klasser för att modellera ”verkliga” saker man vill representera i sitt program. Ett objekt är en instans av en klass och man kan säga att klassen är en ritning av hur själva objektet ser ut när det är instansierat. Detta är numera ett av de vanligaste programmeringsparadigmen. Några exempel på programspråk som är objekt-orienterade är Java, C# eller Python.

Det tredje paradigmet som jag tar upp här är funktionella programspråk. Ett funktionellt språk kännetecknas av att man bygger upp problemen som ska lösas som ett antal matematiska funktioner istället för att modifiera programmets tillstånd. Funktionella språk börjar att bli allt vanligare men det kan vara lite knepigare för en nybörjare att lära sig koda funktionellt. Detta kan vara bra att ha i åtanke när man väljer. Några exempel på funktionella språk är t.ex. LISP, F# eller Haskell.

En annan vanlig typ av språk som kan vara värd att nämna är deklarativa språk. Med ett deklarativt språk försöker man beskriva vad som skall hända snarare än hur man kommer dit. Det vill säga man skriver inte ner exakt hur man skall komma fram till något utan snarare vad man vill ha för resultat. Ett exempel på ett modernt språk som brukar kallas deklarativt är React. Då syftar man oftast på när man bygger UI-komponenter, dvs man beskriver med JSX hur man vill att gränssnittet skall se ut. För övrigt så använder man JavaScript tillsammans med React.

Okej, so what?

Så, varför är detta intressant? Jo för att det finns olika styrkor och svagheter med alla dessa och det kan vara bra att känna till vilket paradigm ett språk tillhör innan man väljer. Det är ofta vanligt att man väljer ett imperativt språk som nybörjare men att man sedan lär sig att koda objekt-orienterat. Det är oftast lite klurigare att lära sig ett funktionellt språk än ett imperativt språk.

Popularitet

Detta är en intressant punkt och förmodligen något av det första man tänker på när man vill välja ett programmeringsspråk. Vilket språk är mest populärt? Vilka är de stora språken som ”alla” använder? Man vill ju inte lägga ner tid på att lära sig något som är utdaterat och som få använder.

Ett vanligt ställe för att kolla programspråkens popularitet är TIOBE Index. Det är en sida som rankar programspråk baserat på data från utvecklare runt hela världen, kurser och sökmotorer. Den listan ser just nu ut såhär:

Vilket programmeringsspråk ska jag lära mig? TIOBE Index.

EDIT 2021: Java har nu tappat två platser och hamnar nere på 3:de plats vilket resulterar i att Python hamnar på plats två och är fortfarande på väg uppåt. C har tagit första plats och ligger nu i topp trots att det är ett språk som anses lite gammalt (men ack så kraftfullt).

En annan bra källa är Github som är en av världens största lagringsplats för kod (code repository). Github kommer du med största säkerhet komma i kontakt med som utvecklare senare. Nåväl, de gör varje år gör en rapport där dom delar data från deras community. Där ser listan över de populäraste språken ut som följande:

Vilket programmeringsspråk ska jag lära mig? Github - The state of the octoverse

Det vi kan se är att Java och Python ligger nästan högst i diagrammen från båda källorna medan JavaScript ligger högst i rapporten från Github men nere på plats 7 från TIOBE index. Men även C, C++, PHP och Visual Basic .NET är populära språk. Alla dessa språk kan vara goda kandidater att lära sig då det är väldigt populära språk som den stora majoriteten använder.

Väljer man ett språk från åtminstone top 10 på TIOBE Index listan kan man vara ganska säker på att det språket kommer inte bli inaktuellt i första taget och det finns förmodligen ett stort community bakom (som vi kommer att prata om senare).

Framtidsutsiker för språket

Det som också kan vara bra att tänka på är hur framtidsutsikerna ser ut för språket man väljer. Jobbmarknaden inom IT är väldigt rörlig och utvecklar sig i snabb takt. Nya produkter och innovationer kommer hela tiden och kraven på språken blir allt högre. Därmed måste språken hela tiden utvecklas och optimeras för att hänga med. Det är inte alltid så lätt att sia om framtiden men man kan titta lite på trender och vad som hänt bakåt.

Om man ser att ett språk har ökat i användning och blivit populärare varje år (under några år) så är det såklart en positiv indikator. Ett exempel, C# i rapporten från Github ser ut att vara på en uppåtgående trend medan Ruby ser ut att vara på en dalande trend. Detta är ju såklart inget man behöver stirra sig blind på men det kan ändå vara av intresse att kolla upp hur intresset och marknaden för språken rör sig över tid.

Community

Jag pratade lite om community tidigare och en superviktig del enligt mig när man väljer ett språk är att ta reda på om det finns ett stort community bakom så att man kan få hjälp när man kör fast. Det är oundvikligt att man kör fast förr eller senare när man kodar och man kommer behöva hjälp ibland. Då är det tråkigt om man får spendera timmar efter timmar på att Googla runt för att försöka hitta hjälp när det inte finns mycket kodexempel. Men om många använder språket kommer det självklart skrivas mycket om det. Ett vanligt ställe att söka hjälp på när man kört fast är Stackoverflow.

Fördelen med om ett språk har ett bra community bakom sig är att då finns det oftast mer och snabbare hjälp att få. Många vanliga problem är redan besvarade.

Jobbmarknad och lön

Beroende på vad du har för anledning att lära dig programmera så är olika saker viktiga. Kanske vill du bara lära dig koda för att det verkar kul? Eller så vill du lära dig programmera för att satsa på en karriär som utvecklare i framtiden? Faktum är att det finns en otroligt lukrativ jobbmarknad inom mjukvaruutveckling och eftersom bristen är stor betalar arbetsgivarna ofta väldigt bra för utvecklare. Beroende på vilken ort du bor på kan det vara intressant att kolla upp utbuden av jobb som finns och vilket språk som mest efterfrågas. Bor du nära Stockholmsregionen är säkert de flesta språk gångbara men det kan ändå vara bra att scanna av marknaden innan du väljer ett språk om anledningen är att lära dig programmera för att kunna jobba med det i framtiden.

Fun-factor

Den här punkten har jag valt att kalla för fun-factor! Glöm inte bort att det allra viktigaste är att språket du väljer måste vara kul att jobba med. Välj inte ett språk som du tycker verkar tråkigt eller extra svårt bara för att du tror att du kan tjäna mest pengar där. Faktum är att programmering kan vara svårt och det tar tid att bli en duktig programmerare så förmodligen kommer du aldrig orka hela vägen om du inte har ett intresse och tycker det är roligt. De flesta människor som lyckas och blir riktigt bra gör det dom brinner för och därefter kommer oftast en karriär. Inte omvänt!

Lär dig grunderna bra, oavsett språk

En viktig sak att tänka på är att vilket språk du väljer är inte det viktigaste. Det som är det viktigaste av allt är att du lär dig koncepten och grunderna väl. I princip alla språk (åtminstone inom samma paradigm, som vi diskuterade tidigare) fungerar på samma sätt. Det är oftast bara syntaxen som skiljer och det är det allra enklaste att lära sig. Det svåra är att lära sig tänket och olika mönster för hur man löser problem.

En viktig sak att tänka på är att vilket språk du väljer är inte det viktigaste!

Så oavsett vilket programmeringsspråk du väljer att lära dig så fokusera på att lära dig grunderna riktigt ordentligt. Och det bästa sättet att lära sig på är att ”get dirty”. Koda koda koda! Ha roligt och testa mycket. Signa upp dig på olika sidor där man kan lösa så kallade ”code-challenges”. En bra sida för det är Codewars. Eller ta kurser på t.ex. Codecademy med mera.

Så, vilket programmeringsspråk ska jag då lära mig?

The million dollar question, vilket språk ska jag välja? Svaret är att det finns inget simpelt svar på den frågan som är lika för alla, men jag hoppas att du har fått lite bättre grund att stå på och lite frågeställningar att fundera på inför valet av språk.

Väg ihop alla faktorer som kan påverka ditt val. Nämligen, vad har du tänkt att använda språket till? Vill du bygga hemsidor eller lära dig mer om hur AI fungerar? Hur populärt är språket? Finns det ett aktivt community som är stort? Verkar språket roligt och tilltalande? Finns det mycket jobb om jag lär mig detta språket? Hur ser det ut i framtiden?

Som vi har sagt tidigare, det är inte superviktigt att du väljer just rätt språk utan det viktigaste är att du lär dig grunderna väl och kommer igång. Genom att fundera lite på ovanstående så ökar du sannolikheten att du kommer tycka det är roligt och utvecklas snabbare i den riktningen du vill gå.

Sammanfattningsvis

Förmodligen kommer ditt val att hamna på något av de stora språken som t.ex. Java, C#, JavaScript, Python, PHP eller nåt annat. Skulle du fortfarande känna dig fundersam så är mitt råd att välja något av top 5 språken i TIOBE Index listan kör på det. I vilket fall så hoppas jag denna artikel har hjälpt dig att navigera i djungeln av alla språk och åsikter när du funderar på vilket programmeringsspråk du ska lära dig under 2020.

Om du tyckte den här artikeln var intressant eller har några kommentarer eller synpunkter så kommentera gärna nedan.

Lycka till och happy coding!