En introduktion till Python - bakgrund och filosofi

Du har just klickat dig in på en artikel om Python – ett dynamiskt högnivåspråk som både jag, många andra utvecklare samt organisationer som Google och YouTube tycker är grymt att utveckla i.

Den här artikeln fungerar som en enklare introduktion där jag tar upp historien bakom språket, visar en del syntax och helt enkelt ger exempel på varför Python är värt att prova på.

Introduktion och bakgrund

Python klassas som ett dynamiskt programmeringsspråk och är till fullo dynamiskt typat. Det är ett interpreterat språk vars default- och tillika mest använda implementation är skrivet i C (CPython). Python är gratis, open source och hanteras av communityn Python Software Foundation.

I slutet av 80-talet – närmare bestämt i december 1989 – startade holländaren Guido van Rossum implementationen av, vad som 2 år senare, skulle komma att presenteras som den första versionen av Python. Det hela började som ett hobby-projekt där van Rossum ville skapa en förbättrad avkomma till undervisnings- och prototypspråket ABC, ett språk han själv varit med och utvecklat några år tidigare. Förbättringarna skulle leda till ett effektivare programmeringsspråk som lockade mer erfarna utvecklare samtidigt som enkelheten hos ABC skulle bibehållas. Med den bakomliggande tanken code is read more often than it is written hade van Rossum ambitionen att skapa ett språk där fokus låg på läsbarhet och tydlighet. Ett språk där utvecklaren producerade, inte bara kraftfull kod på kort tid, utan också kod som var enkel för andra utvecklare att förstå.

Enkelhet och syntax

Läsbarheten hos Python blir tydlig om man tittar på språkets syntax där ett de mest framträdande kännetecken – taget direkt från ABC – är användandet av indentering för att särskilja kodblock. Nedan följer en exempelklass skriven i Python innehållandes två tämligen meningslösa metoder.

class Example():
 
    def do_useful_stuff(self):
        print 3 in (1, 2, 3, 4)
 
    def do_more_useful_stuff(self):
        for i in range(10):
            print i,
 
e = Example()
e.do_useful_stuff()
e.do_more_useful_stuff()

Eftersom en Pythonfil läses och körs uppifrån och ner kommer, genom instansieringen på rad 10 följt av de två anropen, denna kod att ge följande output:

>>> True 
>>> 0 1 2 3 4 5 6 7 8 9

Vad koden faktiskt gör är dock relativt ointressant då syftet med exemplet endast är att visa hur kod skrivet i Python ser ut. Tittar vi närmare på syntaxen ser vi att kolon används för att öppna upp ett nytt kodblock, statements skiljs åt genom radbrytning (för statements över mer än en rad används backslash) och sedan sköter indenteringen resten.

Nedan följer ett kodexempel i Java är tänkt att fungera som en jämförelse.

import java.util.*;
public class Example{
 
    public void do_useful_stuff(){
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
        if(numbers.contains(3)){
            System.out.println(true);
        }
    }
 
    public void do_more_useful_stuff(){
        for(int i = 0; i < 10; i++){
            System.out.print(i);
        }
    }
 
    public static void main(String[] args){
        Example e = new Example();
        e.do_useful_stuff();
        e.do_more_useful_stuff();
    }
}

Output här blir:

>>> true 
>>> 0123456789

Jag tänker inte hävda att den ena syntaxen är bättre än den andra – och indentering kan man tycka vad man vill om – men att frånvaron av måsvingar och andra skiljetecken gör koden mindre plottrig är svårt att argumentera emot. Med kombinationen avskalad syntax och stort användande av engelska nyckelord där andra språk använder punktnotation (exempelvis användandet av range på rad 7), har van Rossum skapat ett språk som har alla förutsättningar att kunna användas för att producera kod med hög läsbarhet.

Vidare kan man också trycka på att indenteringen ger utvecklaren färre valmöjligheter när det gäller formatering vilket i sig gör Pythonkod mer enhetlig och då enklare att läsa. Det här är något som går hand i hand med en av Pythons starkaste filosofier: there should be one – and preferably only one – obvious way to do it (i kontrast till Perls there is more than one way to do it). Enhetlig kod ger läsbar kod som i sin tur är enklare att återanvända. Win-win!

Användningsområde

Man ska dock inte tro att Python är ett strikt programmeringsspråk som tvingar användaren att utveckla på ett givet sätt – tvärtom. Python är ett multi-paradigm-språk som stödjer flertalet utvecklingsstilar: objektorienterat, strukturerat, funktionellt och aspektorienterat för att nämna några.

Som de flesta dynamiska programmeringsspråk klassas Python som ett skriptspråk och används framgångsrikt och i stor utsträckning till att skriva just skript för olika typer av applikationer. Språket passar perfekt om du har en liten uppgift som du snabbt behöver ha “up and running” då det krävs väldigt få steg för att få koden att köra. Tidigare rådde det oenigheter om huruvida Python även passar för större projekt och utveckling av hela applikationer – anklagelser som mer och mer kommit i skymundan allt eftersom språket förfinats och datorerna blivit allt snabbare och kraftfullare. Det finns idag många applikationer skriva helt och delvis i Python, flertalet stora organisationer som använder språket i sin utveckling och Python har nu kommit att accepterats som ett general-purpose-språk.

Det som många, inklusive jag själv, menar på är Pythons främsta egenskap är användarvänligheten. Man kan lära sig mycket Python på kort tid samtidigt som det inte krävs någon expert för att lära sig använda eller förstå språket. Detta beror dels på den lättlästa syntax jag visat exempel på här ovan men det finns definitivt andra faktorer som spelar in. Bland annat kommer impementationen med en grym interaktiv miljö som ger dig omedelbar respons på din kod. Här kan du snabbt testa olika skript och få till en effektiv utvecklingscykel med kort turnaround-tid mellan utveckling, test och körning. En kommande artikel i denna serie behandlar den interaktiva miljön och jag kommer där att visa hur den används samtidigt som jag tar hjälp av den för att visa hur Python fungerar.

Avslutningsvis kan man säga att Python, med all dess smidighet och enkelhet, möter dig som användare halvvägs. Den låter dig fokusera på den stora bilden och tar hand om många saker som du som utvecklare kanske inte vill lägga tid på. Språket är plattformsoberoende, fungerar out-of-the-box och kommer med en mängd användbara verktyg. Alla dessa egenskaper gör Python till ett språk som alla åtminstone någon gång borde prova på. Dessutom, och tillsammans med det faktum att det härstammar från ett upplärningsspråk, passar Python utmärkt för dig som aldrig tidigare kodat och letar efter ett första språk att prova på.