Monday, October 24, 2011

Programmet för kultur och språk

Ibland händer det att förslaget att införa programmering som ämne i skolan dyker upp. Inte överdrivet ofta, men det händer.

Jag diggar det förslaget. Det lärs ut på tok för få språk i skolan över lag.

Nu kanske någon av er undrar - språk? Vad har språk med programmering att göra? Handlar inte programmering mer om logik än om lingvistik?

Ja och nej.

Det första som måste sägas är förstås att det inte finns någonting sådant som "programmering i sig". Precis som med språk så finns det ingenting sådant som att säga någonting rent generellt - en måste alltid använda något specifikt språk för att säga det en råkar vilja säga, vilket det än är. Och det första en måste bestämma sig för när en vill programmera någonting är vilket (programmerings)språk en ska göra det i.

Vilket är en förmåga som kräver en alldeles egen förståelse för den retoriska situation en råkar befinna sig i - i vissa lägen passar det helt enkelt bättre att använda en viss språkdräkt framför en annan.

Hemsidor, exempelvis, skrivs bättre i html än i C, även om bägge är möjliga. Tricket är att kunna skilja på möjlighet och smidighet, och där behövs mycken lingvistisk och retorisk fingerfärdighet. Det är ibland frestande att lägga på lager och lager av språklig komplexitet till sina alster, men det behövs inte överdrivet komplicerade meningsbyggnader för att be någon skicka saltet.

Utöver det så ställer förstås språken i sig sina krav på eventuella användare. De har sina syntaxer, grammatiska regler och oregelbundna verb som inte alltid är helt logiska, men som en måste anpassa sig till ändå. Många aspekter är som de är av ren konvention, och måste helt enkelt läras in för sig.

Jag tittar på dig, PHP.

Det sägs ofta att skolan ska förbereda eleverna för att leva i den vardag de växer upp i. Ändå väcker förslaget om att lära ut programmering i skolan visst motstånd - trots att vi bevisligen lever i en värld där vi pratar med maskiner varje dag. Och, än mer, där så väldigt många av våra problem i vardagen uppstår på grund av att vi inte förstår hur eller varför våra maskiner inte fungerar.

Och då inte bara när det gäller videoapparaten som blinkar 12:00 dagarna i ända.

Flattr this

7 comments:

  1. Jag håller inte riktigt med dig. Även om man behöver ett språk för att programmera, så finns det ett gäng koncept som är återkommande i alla språk - och EMRM är det de som ska läras ut/in. Om en kan skriva en rekursiv loop i ett språk, kan en lära sig att göra det i alla språk - men först måste man begripa konceptet rekursiv loop och förstå det.

    Risken om en kurs annonseras som "programmering i PHP" är att folk tar det som en kurs i PHP, snarare än en kurs i konsten att programmera. Därför ser jag en fördel i att använda ett språk som är mindre vanligt i omvärlden - då tvingas eleverna fundera över hur olika koncept hanteras olika i olika språk. För extra bonus bör man dessutom titta på olika typer av programmeringsspråk - procedurella (t.ex. Perl, C), objektorienterade (t.ex. Java, PHP) och funktionella (t.ex. Erlang, Lisp)

    ReplyDelete
  2. Very much so. I stället för att lära eleverna enstaka ord och fraser (som må vara väl så användbara), så finns det en fördel i att lära dem de mer övergripande grammatiska strukturerna. Inte bara för att de ska slippa behöva gissa hur saker böjs (för det mesta), utan även för att få någon slags struktur när de lär sig andra språk.

    Kicka upp abstraktionsnivån en smula.

    Sedan finns det förstås alltid gatudialekter av språken - aka implementeringar som går bortom allt sunt förnuft men som ändå insisterar på att fungera i verkligheten. Men dem lär sig folk helt på egen hand, utan hjälp av generella grammatiska överblickar. ;)

    ReplyDelete
  3. Hmm. Frågan är om man kan tala om att använda ett språk när man matar in maskinkod som hexadecimala siffror... men jag är en välvillig kille, så ok då!

    Sen vettifan om jag tycker att HTML är ett programmeringsspråk.

    Men bortsett från sådana petitesser så har du din vana trogen fått ihop en artikel som är åsm.

    :)

    ReplyDelete
  4. Visst ja, Christer har rätt - HTML är _inte_ ett programmeringsspråk! Det är ett sätt att märka upp text. Sen kan man använda ett programmeringsspråk för att skapa HTML som presenteras för browsern, men det är en annan sak. Själv är jag svag för Ruby eller Perls HTML::Mason där, men tyvärr är PHP alldeles för vanligt...

    ReplyDelete
  5. Ni märker kanske att jag är mer retoriker och pedagog än programmerare. Programmering ~ ~ att prata med maskiner. En lite bredare definition än programmering proper, med andra ord.

    Vi skulle kunna gå in på djupet vad det betyder att prata med maskiner, men jag anar att det är ett annat inlägg. ^^

    ReplyDelete
  6. Prata med maskiner är för mig just kommunikation med maskinen, d.v.s. saker som syftar till att överföra information och kommandon till maskinen.

    HTML syftar till att överföra information till människor, men innehåller viss information för att maskinen ska kunna presentera informationen på ett förutsägbart sätt. (Sen gör Microsoft m.fl. sitt bästa för att det ändå inte ska vara förutsägbart, men det är en annan historia :-)

    ReplyDelete
  7. IE6 pratar varken med maskiner eller människor. Så är det bara. :D

    ReplyDelete