Programmering 1 för gymnasiet med ruby/Introduktion
Jag har undervisat olika klasser i teknik- och IT-programmet i programmering A, B och C i programmeringsspråket C++ och det har inte gått smärtfritt. C++ är industristandard, men det är ett osedvanligt komplext och avancerat språk med hög inlärningströskel. Normalt sett har jag en till tre elever i en grupp som förstår språket så bra efter avslutad kurs att de kan fortsätta vidareutbilda sig på egen hand, och oftast är det samma elever som suttit med språket på kvällstid. Man kan gott jämföra det med att lära sig ett nytt språk. Skulle jag försöka lära klassen ryska skulle de som bara satt och jobbade med språket på lektionstid inte förstå det på samma sätt som de elever som kanske lägger 100 extra timmar på fritiden. Av den anledningen måste helt enkelt språket vara så enkelt att man förstår det efter avslutad 100p. programmeringskurs när man bara suttit och jobbat med språket i klassrummet, och det är inte C++.
Kort sagt, språket har för hög inlärningströskel för att lämpa sig som nybörjarspråk, så vad tar man för OOP språk istället? Mitt eget val föll på tre olika språk:
- Java: men det dras i dagsläget med liknande problem som C++, det är överdrivet krångligt att lära sig och har med sig en hel del rester från tidigare, ej OOP inriktade programmeringsspråk.
- Python: vilket är ett bra språk. Enkelt att lära sig och kan användas till både webapplikationer och fristående program.
- Ruby: ett språk som är (minst) lika lätt att lära sig som python, som är till 100% OOP från version 1.9x, som många servrar har stöd för och som kan användas till i princip alla plattformar och alla syften. Valet mellan ruby och java var lätt, det mellan ruby och python svårare, men i slutändan har ruby mer att ge på ett enklare sätt. Har man lärt sig ruby är det dessutom väldigt lätt att lära sig python eftersom de tillhör samma familj, ungefär som det är lätt att lära sig java om man kan programmera C++.
Vad finns det för nackdelar med ruby?
[redigera]Allt är inte guld och gröna skogar. Ruby är inte lika snabbt som C++, inte ens lika snabbt som python, så om man tänker tillverka grafikintensiva spel är ruby det sämsta valet. Å andra sidan finns inte den tid som krävs för att programmera avancerade grafikintensiva spel i gymnasiet även om man lägger ner hundratals timmar på fritiden. Om man däremot vill göra enkla spel som kortspel, luffarschack eller enkla plattformsspel liknande Super Mario fungerar ruby väl tillsammans med andra spelbibliotek som SFML eller SDL.
Ruby saknar fönsterhanterare, i sitt grundutförande har man bara en svart ruta att titta på där resultatet av koden visas upp. Det är inte unikt för ruby utan likadant i t.ex. C++ och python. Det är enkelt att koppla till olika fönsterhanterare som t.ex. Qt så att man får en grafisk miljö. Fördelen med ruby är att den miljön blir exakt likadan oberoende av operativsystem.
Vad är de främsta fördelarna med ruby?
[redigera]- Ruby är ett scriptspråk, koden kompileras inte, så det går fort att se hur förändringar i koden visar sig i programmet.
- Rubys syntax, sättet språket skrivs på, är likt det sätt vi talar så det är lätt att lära sig syntaxen utantill vilket gör att det går snabbat att programmera.
- Med ”Ruby on rails” har man en utvecklingsmiljö som passar webservrar så att det är enkelt att skapa serverdrivna hemsidor med hjälp av ruby som programmeringsspråk. ”Det kan man väl med PHP eller python också?” kanske du tänker och visst kan man det, men ruby har mycket mer av OOP fördelarna än PHP och har en större bas av programmerare för webmiljö än python.
- Ruby har mängder med nätverksfunktioner och internet bibliotek integrerade direkt från installation som fungerar direkt oavsett operativsystem. Om du någon gång försökt att programmera ett enkelt chatt-program i C++ förstår du hur oändligt mycket roligare det är att programmera liknande program i ruby. C++ är jättebra till många olika saker, men just till att hantera nätverksprotokoll är det en katastrof, och från 2011 är många av målen i gymnasieskolan kopplade just till programmering i nätverksmiljöer.
- Ruby går även att använda för att programmera mobilapplikationer, till samtliga mobilplattformar. Dvs. det räcker med att lära sig ruby för att kunna skriva appar till iPhone, Android och t.o.m. även Sybian och Windows 8.
Slutsats
[redigera]- Ruby är lättare att programmera och passar bättre för nybörjare än C++.
- Ruby kan, precis som Java, användas direkt på hemsidor.
- Ruby kan användas till spelprogrammering oberoende av operativsystem
- Ruby kan användas till att programmera mobilappar
- Ruby kan ha ett grafiskt användargränssnitt som är oberoende av operativsystem
- Ruby har mer stöd ute på olika forum än python om man kör fast i programmeringen och behöver hjälp
- Ruby har bland de bästa biblioteken för nätverksprogrammering
Så, som jag ser det, finns det ingen anledning att hålla fast vid C++ eller java i gymnasieskolan. Har man intresse för programmering kan man lära sig de språken på högskolor och universitet. Inlärningströskeln är trots allt lägre om man går från ruby till C++ jämfört med om man går direkt från ingen förkunskap alls till C++.