Du kommer att se att många av dessa böcker är några år gamla, men för det mesta är detta inte ett problem eftersom de flesta programmeringsspråk också är ganska gamla: Java går tillbaka till 1990-talet, C++ till 1980-talet och C till kl. åtminstone 1970-talet (vissa skulle hävda att det sträcker sig ända tillbaka till 1960-talet, eftersom C härrörde från ett språk som heter B, som var baserat på BCPL från den eran). Jag har inte läst alla böckerna på den här sidan, men jag har bläddrat i ett par av dem och de är värda att läsa.
Det du bör komma ihåg när du tittar på en sida som denna är att, eftersom det inte kostar något att köpa dessa böcker, går du vidare till nästa om du startar en och inte gillar den. Om du inte kan förstå hur en författare beskriver något, titta på en annan. Detta är en nyckelprincip när du lär dig programmera, eftersom det finns vissa idéer som du helt enkelt måste förstå på dina egna villkor, och det kan vara så att en persons förklaring kommer att förvirra dig medan en annans förklaring är helt vettig. Jag minns att jag var precis i den positionen när jag lärde mig ett språk som heter Prolog, tills någon förklarade ett enda begrepp på ett sätt som hjälpte mig att förstå det hela.
Programmeringsverktyg med öppen källkod
Nu har du läst några böcker du är redo att skriva några program, och så du kommer att behöva en implementering av ditt valda språk för att få dina program att göra något. Men innan du kan göra det måste du skriva in ditt program i en dator på något sätt, och vid det här laget finns det en frestelse att springa iväg och skaffa en snygg Integrated Development Environment (IDE). Jag skulle motstå den frestelsen, eftersom du först måste lära dig hur program fungerar snarare än hur IDE fungerar.
Bryt istället ut en enkel textredigerare – Notepad eller TextEdit fungerar bra – och då kommer du att behöva en kompilator eller tolk för ditt språk. Låt oss ta en titt på några:
JAVA
Java är fortfarande det valda programmeringsspråket för många programmeringskurser. Det är ett språk som hade en seriös eftertanke, och som gör det relativt svårt att begå många enkla fel eftersom det använder typkontroll (om du försöker lägga till 15 till ”orange”, vilket inte är en siffra, kommer det att klaga ). Det finns en ren Java-implementering med öppen källkod från IBM, och den huvudsakliga Sun-implementeringen från Java.com är också väldigt bra.
C OCH C++
Dessa språk är både tillgängliga i olika paket och är förinstallerade på de flesta Unix-liknande system, eller så är de lätt tillgängliga via ett utvecklarpaket som för Mac OS X. Personligen tror jag inte att de är ett bra val för att börja programmera med: även om inget av dem är ett dåligt språk i sig, gör de båda det alldeles för lätt för nybörjare att glida in i dåliga programmeringsmetoder. C++ är ett enormt språk och är mycket inkonsekvent i sitt tillvägagångssätt: Java uppfanns i grunden för att stryka ut rynkorna i C++, och det är mycket troligt att om du lär dig Java först kommer du att förstå C++ bättre när du kommer till det, och skriva bättre kod i den. Detsamma gäller Java gentemot vanlig gammal C. När det gäller kompilatorer är GNU-samlingen av C++ och C tillgänglig för olika plattformar.
PERL, PYTHON, RUBY OCH VARIANTER
Dessa är alla populära språk för att skriva skript för att köra på webbplatser. Perl har den längsta historien, efter att ha utvecklats från olika Unix-skriptverktyg, medan Python har ett ganska annorlunda arv och är särskilt användbart om du vill engagera dig i Google App-utveckling, eftersom det är Googles valspråk. Återigen finns det många verktyg, men jag skulle nog inte rekommendera något av dem som förstaspråk.
JAVASCRIPT
JavaScripts huvudsakliga användning är för att bygga in applikationsfunktioner på webbsidor: rullgardinsmenyer, till exempel. Du kan göra coola saker i JavaScript, men det är inte ett språk för nybörjare. För att förstå det och få det att fungera måste du förstå hur en webbsida är uppbyggd och implementerad, med hänsyn till hur det kan skilja sig mellan olika webbläsare, vilket allt är en distraktion från grunderna i programmering.
HASKELL, SML, SCHEME, LISP
Dessa skulle alla i princip kunna beskrivas som funktionella språk (även om det finns rasande religiösa dispyter mellan deras anhängare om vilka som är det och vilka som inte är det). De används mycket i universitetskurser i datavetenskap, eftersom funktionell programmeringsstil koncentrerar sig på problemets matematiska kärna snarare än på språket. Men de används knappt i kommersiella applikationer. Verktyg med öppen källkod finns för dem och det finns introduktionsböcker, men du behöver verkligen ”total fördjupning” via en formell undervisningskurs för att uppskatta deras syften.
PHP
PHP är ett hemskt språk som förmodligen borde förbjudas (och jag använder det varje dag). Det finns implementeringar tillgängliga för de flesta maskiner, men du måste verkligen bestämma dig för varför du vill lära dig PHP. Det är ett språk som är mycket anpassat för att skapa webbsidor, men du behöver mer än en enkel PHP-kommandoradstolk för att få ut det mesta av det. Vilket för mig vidare till ämnet ramar.