Programmering 1 för gymnasiet med ruby/Ruby i en grafisk miljö


Ruby i sig är ett språk utan grafik (eller ljud) och för att kunna använda ruby för att skapa det vi vanligtvis tänker oss är dataprogram: program som visar fönster, knappar, menyer osv, så måste ruby kopplas ihop med ett bibliotek som ger detta. Här följer några exempel:

Tcl/Tk

Detta är den grafiska miljö som vi kommer att använda oss av i huvudsak i den här online läroboken. Orsakerna till det är flera (förutom att det följer med automatiskt vid en Windowsinstallation):

  • Tk är gammalt och används i mängder av olika språk, vilket ger den ett gott stöd ute på Internet om man kör fast
  • Tk kanske verkar enkelt, men är mer kraftfullt än man kan tro.
  • Tk har ettcanvas objekt som man kan rita direkt på för att skapa linjer och kurvor, det kan sedan skrivas ut direkt till laserskrivare.
  • Tk har en del inbyggda menyer som t.ex val av fil och val av färg.

För att kontrollera att din Tk installation är korrekt kan du skriva följande rader:

require 'tk'
root = TkRoot.new() { title "Hello, world!" }
Tk.mainloop()

Du skall få upp ett litet vitt fönster med titeln: Hello, world! längst upp. Främsta nackdelen med Tk är att det saknar stöd för svenska tecken, så varje gång du vill skriva å,ä,ö,Å,Ä,Ö får du istället skriva en kod. Å har koden \xC5 t.ex - en lista finns här:

å= \xE5
ä= \xE4
ö= \xF6
Å= \xC5
Ä= \xC4
Ö= \xD6

Om du vill ha en svenk test som titel skriver du alltså istället:

root = TkRoot.new() { title "Hejsan V\xE4rlden!" }


Det finns andra grafiska system också, här följer de vanligaste:


wxRuby

Wx biblioteket var ursprungligen skrivet för C++ men entusiaster har portat över det till ruby. Även om dety inte uppdaterats sedan 2009 har alla kända buggar fixats även efter det. Om man planerar att skriva program för macintosh är wxRuby den miljö som är mest lik i alla operativsystem, det är också lättinstallerat då det installeras som en gem. Du kan läsa mer om det här, enligt uppgifter därute stämmer dock inte lektionerna som postats eftersom de är kopplade till en äldre version.

http://wxruby.rubyforge.org/wiki/wiki.pl


Qt

Qt biblioteket utvecklades ursprungligen av företaget Trolltech för Nokia så att man skulle kunna ha snygga menyer i telefonerna. I dagsläget har Trolltech släppt Qt gratis för alla programmerare att använda. Qt är bra, det är vackert och ger programmen ett modernt intryck.

Du kan läsa mer om hur man använder Qt tillsammans med ruby här:

http://zetcode.com/tutorials/qtrubytutorial/


Fox

Fox, eller FxRuby, är ett relativt enkelt system för att hantera fönster och menyer. Enkelheten måste kopplas till att utseendet mer liknar Windows 98 än ett modernt system. Ändå, enkelheten gör det förträffligt att använda till nybörjarprogram. FxRuby följer med som en Gem och kan installeras med gem-hanteraren. Största nckdelen med fxRuby är att det inte ger stöd till OS X så om du planerar att programmera för mac bör du se dig om efter en annan miljö.


SFML

Om du vill programmera spel i ruby är SFML en trevlig miljö baserad på Open GL. Genom SFML är det också relativt enkelt att spela upp ljud i wav eller ogg format. SFML kan du ladda ner härifrån, men det finns inget stöd för OS X, bara Linux eller Windows:

http://www.sfml-dev.org/download.php


Rubygame

Rubygame är en annan miljö för spelutveckling. Den är äldre än SFML och baseras ursprungligen på spelmiljön SDL som i sin tur baseras på programmeringsspråket C. Här står mer om rubygames (på engelska):

http://rubygame.org/


Shoes

Shoes är ett projekt för ruby som faktiskt är en helt egen ruby-distribution med ett eget grafiskt användargränssnitt. Exempel finns på hemsidan: http://shoesrb.com/ - en annan mer intressant sak på sidan är Hacketi hack, ett enkelt sätt för barn att programmerar i ruby, tyvärr endast på engelska men det skulle vara helt underbart om något liknande gjordes för svenska låg- och mellanstadier.


Vill du läsa om samtliga GUI hanterare som finns kopplade tuill ruby (på engelska) finns de uppskrivna här med både fördelar och nackdelar angivna.

http://en.wikibooks.org/wiki/Ruby_Programming/GUI_Toolkit_Modules