Do nitra stroje s programovacím jazykem Ruby Karel Minařík
1
www.google.com/search?q=karel+minařík
Do nitra stroje s programovacím jazykem Ruby
2
Proč se na Studiích nových médií zabývat (nějakým) programováním?
Do nitra stroje s programovacím jazykem Ruby
„Používat nějaký nástroj na počítači vyžaduje zřídkakdy více než umět klikat myší;vytvořit takový nástroj vyžaduje rozumět tajemnému umění programovat počítač“ — John Maeda, Creative Code
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
Jared Tarbell: Substrate (www.complexification.net)
Do nitra stroje s programovacím jazykem Ruby
Orientace na rozumění člověku a společnosti SPOLEČENSKÉ VĚDY !
PŘÍRODNÍ VĚDY
Orientace na rozumění přírodě a postižení zákonitostí
Do nitra stroje s programovacím jazykem Ruby
Demytologizace světa
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
Rozumět
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
Frustrace
Vztah ke stroji
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
Co se děje v „nitru stroje“? Jak se mu „udílí příkazy“? Kdo mu je udílí?
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
3
Kontext vs. konzistence
aneb „Jak uvažuje programátor?”
Do nitra stroje s programovacím jazykem Ruby
Do nitraLovelace stroje s programovacím jazykem Ruby Ada (1815—1852)
…the Engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. — Ada Lovelace
Do nitra stroje s programovacím jazykem Ruby
Příslib techniky
Do nitra stroje s programovacím jazykem Ruby
Neexistuje žádný důvod, aby jednotlivci měli v domácnosti počítače. — Ken Olsen, ředitel Digital Equipment Corporation, 1977
Do nitra stroje s programovacím jazykem Ruby
„Programátoři počítačů píšou, testují a udržují v chodu detailní instrukce, nazývané počítačové programy, které počítače dodržují, aby vykonávaly své funkce. Programátoři také vymýšlejí, navrhují a testují logické struktury pro řešení problémů za pomoci počítače.“ —Wikipedia.org
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
Použitelnost — ergonomie ovládání Usability
Do nitra stroje s programovacím jazykem Ruby
Ovládací prvky elektrického vařiče
Která plotýnka se ovládá kterým knoflíkem?
Donald A. Norman, The Design of Everyday Things
(1988)
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
„Zm!na“
aneb "eho se programáto#i nejvíce bojí...
HLEDISKO UŽIVATELE
Kontext !
Konzistence HLEDISKO PROGRAMÁTORA
Do nitra stroje s programovacím jazykem Ruby
PŘÍKLAD
Storno objednávek v aplikaci Do nitra stroje s programovacím jazykem Ruby
Programátoři obtížně řeší kontextově závislé úlohy. Na rozdíl od počítačů.
Do nitra stroje s programovacím jazykem Ruby
4
Algoritmus
Do nitra stroje s programovacím jazykem Ruby
Algoritmus je základem každého programu Algoritmus je sekvence příkazů
Do nitra stroje s programovacím jazykem Ruby
Algoritmus je konečný seznam uspokojivě definovaných instrukcí pro splnění určitého úkolu. Z počátečního stavu algoritmus skončí v definovaném konečném stavu. — Wikipedia
Do nitra stroje s programovacím jazykem Ruby
1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Vzít pánev 1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev ? Najít olej 1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev ? Najít olej 1. Nalít olej do pánve 2. Zapálit plyn ? Čím zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev ? Najít olej 1. Nalít olej do pánve 2. Zapálit plyn ? Čím zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev ? Najít olej Do!ly vejce 1. Nalít olej do pánve 2. Zapálit plyn ? Čím zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve Fatal Error
Cancel
OK
Do nitra stroje s programovacím jazykem Ruby
Počítač nedělá to, co chceme, aby dělal. Počítač dělá přesně to, co mu řekneme, aby dělal.
Do nitra stroje s programovacím jazykem Ruby
JEDNODUCHÝ ALGORITMUS
Nalezení největšího čísla z neuspořádaného seznamu čísel http://en.wikipedia.org/wiki/Algorithm#Example
Do nitra stroje s programovacím jazykem Ruby
POPIS
1. Předpokládejme, že první číslo v seznamu je největší. 2. Podívejme se na postupně na každé zbývající číslo v seznamu. Pokud je větší než dosud největší číslo, zapišme si je. 3. Jakmile jsme prošli všechna čísla, je poslední zapsané číslo největším číslem v seznamu.
Do nitra stroje s programovacím jazykem Ruby
FORMÁLNÍ ZÁPIS V ANGLIČTINĚ
Input: A non-empty list of numbers L Output: The largest number in the list L
largest " L0 for each item in the list L≥1, do if the item > largest, then largest " the item return largest
Do nitra stroje s programovacím jazykem Ruby
ZÁPIS V PROGRAMOVACÍM JAZYCE
C
1 #include <stdio.h> 2 #define SIZE 11 3 int main() 4 { 5
int input[SIZE] = {1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19};
6
int largest = input[0];
7
int i;
8
for (i = 1; i < SIZE; i++) {
9
if (input[i] > largest)
10
largest = input[i];
11
}
12
printf("Nejvy!!í "íslo je: %d\n", largest);
13
return 0;
14 }
Do nitra stroje s programovacím jazykem Ruby
ZÁPIS V PROGRAMOVACÍM JAZYCE
Java
1 class MaxApp { 2
public static void main (String args[]) {
3
int[] input = {1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19};
4
int largest = input[0];
5
for (int i = 0; i < input.length; i++) {
6
if (input[i] > largest)
7
largest = input[i];
8
}
9
System.out.println("Nejvy!!í "íslo je: " + largest + "\n");
10
}
11 }
Do nitra stroje s programovacím jazykem Ruby
ZÁPIS V PROGRAMOVACÍM JAZYCE
Ruby
1 input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19] 2 largest = input.first 3 input.each do |i| 4
largest = i if i > largest
5 end 6 print "Nejvy!!í "íslo je: #{largest} \n"
Do nitra stroje s programovacím jazykem Ruby
ZÁPIS V PROGRAMOVACÍM JAZYCE
1 #include <stdio.h> 2 #define SIZE 11 3 int main() 4 { 5
int input[SIZE] = {1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19};
6
int largest = input[0];
7
int i;
8
for (i = 1; i < SIZE; i++) {
9
if (input[i] > largest)
10
largest = input[i];
11
}
12
printf("Nejvy!!í "íslo je: %d\n", largest);
13
return 0;
14 }
„tajemné umění programovat počítač“
Do nitra stroje s programovacím jazykem Ruby
ZÁPIS V PROGRAMOVACÍM JAZYCE
1 input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19] 2 largest = input.first 3 input.each do |i| 4
largest = i if i > largest
5 end 6 print "Nejvy!!í "íslo je: #{largest} \n"
„tajemné umění programovat počítač“
Syntax
Do nitra stroje s programovacím jazykem Ruby
Programovací jazyk je umělý jazyk, který slouží k formální zápisu algoritmu.
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby ENIAC — „Program“ je nastavení kabelů a přepínačů
ZÁPIS V PROGRAMOVACÍM JAZYCE
Ruby
1 input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19] 2 largest = input.first 3 input.each do |i| 4
largest = i if i > largest
5 end 6 print "Nejvy!!í "íslo je: #{largest} \n"
Do nitra stroje s programovacím jazykem Ruby
MAX/MSP www.cycling74.com/products/maxmsp
Do nitra stroje s programovacím jazykem Ruby
History of Programming Languages 1954
1960
1965
1975
1970
1986
www.oreilly.com
For more than half of the fifty years computer programmers have been writing code, O’Reilly has provided developers with comprehensive, in-depth technical information. We’ve kept pace with rapidly changing technologies as new languages have emerged, developed, and matured. Whether you want to learn something new or need answers to tough technical questions, you’ll find what you need in O’Reilly books and on the O’Reilly Network.
1990
1980
1990
1991
1990
1985
1991
1993
1994
1995
1995
1996
1996
1997
2000
1997
2000
2001
2001
2002
2001
2003
2003
2004
2003
2004
This timeline includes fifty of the more than 2500 documented programming languages. It is based on an original diagram created by Éric Lévénez (www.levenez.com), augmented with suggestions from O’Reilly authors, friends, and conference attendees. For information and discussion on this poster, go to www.oreilly.com/go/languageposter. ©2004 O’Reilly Media, Inc. O’Reilly logo is a registered trademark of O’Reilly Media, Inc. All other trademarks are property of their respective owners. part#30417
History of Programming Languages 1954
1960
1965
1975
1970
1986
www.oreilly.com
For more than half of the fifty years computer programmers have been writing code, O’Reilly has provided developers with comprehensive, in-depth technical information. We’ve kept pace with rapidly changing technologies as new languages have emerged, developed, and matured. Whether you want to learn something new or need answers to tough technical questions, you’ll find what you need in O’Reilly books and on the O’Reilly Network.
1990
1980
1990
1991
1990
1985
1991
1993
1994
1995
1995
1996
1996
1997
2000
1997
2000
2001
2001
2002
2001
2003
2003
2004
2003
2004
This timeline includes fifty of the more than 2500 documented programming languages. It is based on an original diagram created by Éric Lévénez (www.levenez.com), augmented with suggestions from O’Reilly authors, friends, and conference attendees. For information and discussion on this poster, go to www.oreilly.com/go/languageposter. ©2004 O’Reilly Media, Inc. O’Reilly logo is a registered trademark of O’Reilly Media, Inc. All other trademarks are property of their respective owners. part#30417
History of Programmin 1954
1960
The days when it made sense to do your own memory management in a new program are long over, outside of a few specialty areas like kernel hacking, scientific computing and 3-D graphics—places where you absolutely must get maximum speed and tight control of memory usage, because you need to push the hardware as hard as possible. For most other situations, accepting the debugging overhead of buffer overruns, pointer-aliasing problems, malloc/free memory leaks and all the other associated ills is just crazy on today's machines. Far better to trade a few cycles and a few kilobytes of memory for the overhead of a scripting language's memory manager and economize on far more valuable human time. — Eric Raymond, Why Python?
Do nitra stroje s programovacím jazykem Ruby
5
Programovací jazyk Ruby
Do nitra stroje s programovacím jazykem Ruby
Do nitra stroje s programovacím jazykem Ruby
— Yukihiro Matsumoto (Matz)
„Věřím, že – alespoň do jisté míry – je smyslem života být šťastný. Na základě tohoto přesvědčení je Ruby navrženo tak, že je nejenom snadné, ale i zábavné v něm programovat. Ruby vám umožňuje soustředit se na kreativní stránku programování, a nepřidělává vám další starosti.“ ~ Yukihiro Matsumoto, p#edmluva k prvnímu vydání knihy Programming Ruby
Do nitra stroje s programovacím jazykem Ruby
Syntax 5.times { print "Hurá!" } print ["banán", "citron", "ananas"].sort.last.capitalize
Do nitra stroje s programovacím jazykem Ruby
Objektově orientovaný jazyk OBJEKT VLASTNOST METODA
Pes
malý stekej
věc/podstatné jméno vlastnost/přídavné jméno činnost/sloveso
class Pes def velikost return @velikost end def stekej print “Haf!” end end
Do nitra stroje s programovacím jazykem Ruby
Knihovny … google-geo (2.0, 1.0) A simple, elegant library for getting geocoding information from Google Maps. … googlecalendar (0.0.5, 0.0.4, 0.0.3, 0.0.2) Google Calendar api for Ruby … iphoto2 (1.0.1, 1.0.0) iphoto contains methods to parse and access the contents of the iPhoto pictures. … net-sftp (1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.5.0) Net::SFTP is a pure-Ruby implementation of the SFTP client protocol. … pdf-writer (1.1.3, 1.1.2, 1.1.1, 1.1.0, 1.0.1, 1.0.0) A pure Ruby PDF document creation library. … yahoo-weather (1.0.0) A Ruby object-oriented interface to the Yahoo! Weather service. … youtube (0.8.6, 0.8.5, 0.8.0, 0.1.1, 0.1.0, 0.0.1) A Ruby object-oriented interface to the YouTube REST API. …
Do nitra stroje s programovacím jazykem Ruby
Zdroje
(viz www.ruby-lang.org/en/documentation)
www.pine.fm/LearnToProgram (původní verze) Do nitra stroje s programovacím jazykem Ruby
www.poignantguide.net/ruby NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ
Do nitra stroje s programovacím jazykem Ruby
Ruby on Rails
Do nitra stroje s programovacím jazykem Ruby
Ruby on Rails
Do nitra stroje s programovacím jazykem Ruby
Vyzkoušejte na http://tryruby.hobix.com
Do nitra stroje s programovacím jazykem Ruby
Děkuji! d