Skrivet av oflytbara:
Vart börjar man? Är det något språk som är framtidssäkert än andra som man bör lära sig? Finns ju så många språk att lära sig känns lite som utav en djungel...
Frågan "vilket språk är bäst för att lära sig programmera?" är väldigt mycket som att ställa frågan "vilket bilmärke är bäst att lära sig köra bil i?".
Du vill inte lära dig språk X, du vill lära dig programmera.
Vad som är bäst för dig beror på en rad faktorer. Ska du lära dig på egen hand så försök hitta ett vardagsproblem som är rimligt att lösa med lite programmering.
@SAFA förslog Arduino, tycker det är ett utmärkt förslag av en rad anledningar.
Om man väljer en Arduino UNO har man en plattform som är så pass enkelt att den går att lära sig fullt ut på rätt kort tid. Det är också den plattform som man alltid kan förutsätta finns med från start i de olika Arduino-miljöer som finns.
Arduino-miljön använder sig av C++. I praktiken används en extremt liten delmängd av C++ i majoriteten av de flesta projekt, men det är ju perfekt för nybörjaren!
I första steget bör man förstå grundläggande saker som villkor ("if-satser"), loopar ("for- och while-satser"), uppdelning av programmet i funktioner samt hur man håller redan på ett tillstånd (variabler). För väldigt många Arduino-projekt räcker dessa saker helt och fullt!
Till och med diskussionen kring funktionell vs objektorienterad programmering går att utforska i denna miljö när/om man känner för det (dock inget krav). Detta då Arduino-miljön idag använder sig av C++ kompilatorer som stödjer C++11 (tyvärr stöds inte C++14/17). I C++11 är funktioner första ordningens objekt.
Skulle ändå vänta med sådana koncept. Framförallt då det som är fördelen med funktionell programmering, som "referential transparency" är den direkta motsatsen till objekt orienterad programmering där hela grundkonceptet går ut på att knyta en uppsättning funktioner (klass metoder) till ett tillstånd (objektet, d.v.s. instans av en klass).
Är inte heller någon vurmare för funktionella språk. De löser vissa problem, men de skapar minst lika många nya. Man trodde t.ex. att funktionella språk skulle ta rejäl fart nu när den enklaste CPU har flera kärnor, men det området är ett lysande exempel på något där man löste några enstaka problem men där många riktigt svåra problem blev långt värre än i traditionella språk som C++, Java och C#.
Fördelen med att välja någon mainstream språk som första språk är att det finns mer information kring specifika problem du kan tänkas stöta på. Finns normalt bättre hjälpmedel i form av utvecklingsmiljöer.
Personligen tycker jag ESP8266 eller ESP32 är en roligare plattform för Arduino då WiFi ingår och man har rätt mycket mer RAM och mer CPU-kraft. Men är tyvärr lite svårare att komma igång med jämfört med Arduino UNO, framförallt om man startar med Arduino IDE (men är fullt möjligt).
Själv använder jag Visual Studio Code + Plattform I/O. Hyfsat lätt att komma igång då Platform I/O finns som färdigt tillägg till Visual Studio Code, så installationen är riktigt enkel. Med Platform I/O är det egentligen lika enkelt att köra med vilken krets som helst som har stöd, d.v.s. Arduino UNO eller ESP8266 (NodeMCU) kvittar. Är nog ändå inte fullt lika enkelt för en nybörjare som Arduino IDE.
Skrivet av oflytbara:
Skulle man kunna sätta sig in i det igenom rent av köpa sig en utbildningsbok och sen diverse tutorials här och där?
Kan man helt enkelt bli självlärd inom sånt här eller är det något som man bör gå en utbildning i?
Finns väldigt många som är självlärda programmerare, skadar absolut inte att ha en akademisk bakgrund men inte något krav. Har själv en civ.ing i kemiteknik, men spenderat hela mitt arbetsliv inom IT-branschen (hade programmerat rätt mycket innan och läste i.o.f.s. en del parallellt på datateknik).
Kan programmera i ett tjugotal språk (på en nivå så jag skulle kunna konsulta utan att på något sätt skämmas). Men i praktiken har jag använt C/C++ till 90 % i min karriär. Utöver C/C++ är det Python, Java och JavaScript som används professionellt. Kan C# rätt bra, men har så här långt aldrig haft ett jobb där det används (men det är populärt och det är specifikt anledning varför jag lärt mig språket privat).
Skulle jag bara lära mig ett enda språk idag skulle det nog vara JavaScript. Det är "assembler of the Web" och kommer bara bli viktigare framöver. Efter det skulle jag säga C++, hela IT-världen är byggd på C och C++. OS-kärnorna är utvecklade i C och nästan all infrastruktur (och nästan alla PC-spel och applikationer) är skrivna i C++ till största del.