karel minařík: do nitra stroje s programovacím jazykem ruby
TRANSCRIPT
Do nitra stroje s programovacím jazykem Ruby
www.google.com/search?q=karel+mina!ík1
Do nitra stroje s programovacím jazykem Ruby
Pro" se na Studiích nov#ch médií zab#vat (n$jak#m) programováním?2
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
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
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
Kontext vs. konzistenceaneb „Jak uva%uje programátor?”3
Do nitra stroje s programovacím jazykem Ruby
…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
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
Donald A. Norman, The Design of Everyday Things (1988)
Ovládací prvky elektrického va%i$eKterá plot"nka se ovládá kter"m knoflíkem?
Do nitra stroje s programovacím jazykem Ruby
HLEDISKO U$IVATELE
Kontext!
KonzistenceHLEDISKO PROGRAMÁTORA
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
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ánve2. Zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Vzít pánev1. Nalít olej do pánve2. Zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev? Najít olej1. Nalít olej do pánve2. Zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev? Najít olej1. Nalít olej do pánve2. Zapálit plyn? !ím zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev? Najít olej1. Nalít olej do pánve2. Zapálit plyn? !ím zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve
Do nitra stroje s programovacím jazykem Ruby
? Najít pánev? Najít olej1. Nalít olej do pánve2. Zapálit plyn? !ím zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve
OK
Fatal Error
Do!ly vejce
Cancel
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 'íselhttp://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 LOutput: The largest number in the list L
largest " L0for each item in the list L)1, do if the item > largest, then largest " the itemreturn largest
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 }
C
Do nitra stroje s programovacím jazykem Ruby
ZÁPIS V PROGRAMOVACÍM JAZYCE
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 }
Java
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"
Ruby
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
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"
Ruby
1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004
History of Programming Languages
©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
19601954 1965 1970 1975 1980 1985 1990 1995 2000 20022001 2003 2004
For more than half of the fifty years computer programmers have beenwriting code, O’Reilly has provided developers with comprehensive,in-depth technical information. We’ve kept pace with rapidly changingtechnologies as new languages have emerged, developed, andmatured. Whether you want to learn something new or needanswers to tough technical questions, you’ll find what you need in O’Reilly books and on the O’Reilly Network.
This timeline includes fifty of the more than 2500 documented programming languages. It is based on an original diagram createdby Éric Lévénez (www.levenez.com), augmented with suggestionsfrom O’Reilly authors, friends, and conference attendees.
For information and discussion on this poster, go to www.oreilly.com/go/languageposter.
www.oreilly.com
1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004
History of Programming Languages
©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
19601954 1965 1970 1975 1980 1985 1990 1995 2000 20022001 2003 2004
For more than half of the fifty years computer programmers have beenwriting code, O’Reilly has provided developers with comprehensive,in-depth technical information. We’ve kept pace with rapidly changingtechnologies as new languages have emerged, developed, andmatured. Whether you want to learn something new or needanswers to tough technical questions, you’ll find what you need in O’Reilly books and on the O’Reilly Network.
This timeline includes fifty of the more than 2500 documented programming languages. It is based on an original diagram createdby Éric Lévénez (www.levenez.com), augmented with suggestionsfrom O’Reilly authors, friends, and conference attendees.
For information and discussion on this poster, go to www.oreilly.com/go/languageposter.
www.oreilly.com
1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004
History of Programming Languages
©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
19601954 1965 1970 1975 1980 1985 1990 1995 2000 20022001 2003 2004
For more than half of the fifty years computer programmers have beenwriting code, O’Reilly has provided developers with comprehensive,in-depth technical information. We’ve kept pace with rapidly changingtechnologies as new languages have emerged, developed, andmatured. Whether you want to learn something new or needanswers to tough technical questions, you’ll find what you need in O’Reilly books and on the O’Reilly Network.
This timeline includes fifty of the more than 2500 documented programming languages. It is based on an original diagram createdby Éric Lévénez (www.levenez.com), augmented with suggestionsfrom O’Reilly authors, friends, and conference attendees.
For information and discussion on this poster, go to www.oreilly.com/go/languageposter.
www.oreilly.com
1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004
History of Programming Languages
©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
19601954 1965 1970 1975 1980 1985 1990 1995 2000 20022001 2003 2004
For more than half of the fifty years computer programmers have beenwriting code, O’Reilly has provided developers with comprehensive,in-depth technical information. We’ve kept pace with rapidly changingtechnologies as new languages have emerged, developed, andmatured. Whether you want to learn something new or needanswers to tough technical questions, you’ll find what you need in O’Reilly books and on the O’Reilly Network.
This timeline includes fifty of the more than 2500 documented programming languages. It is based on an original diagram createdby Éric Lévénez (www.levenez.com), augmented with suggestionsfrom O’Reilly authors, friends, and conference attendees.
For information and discussion on this poster, go to www.oreilly.com/go/languageposter.
www.oreilly.com
Do nitra stroje s programovacím jazykem Ruby
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
„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
5.times { print "Hurá!" }
print ["banán", "citron", "ananas"].sort.last.capitalize
Syntax
Do nitra stroje s programovacím jazykem Ruby
class Pes def velikost return @velikost end def stekej print “Haf!” endend
Objektov$ orientovan# jazyk
OBJEKT Pes v#c/podstatné jménoVLASTNOST mal# vlastnost/p!ídavné jméno METODA stekej $innost/sloveso
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/rubyNEJBLÁZNIV"J(Í U!EBNICE PROGRAMOVÁNÍ NA SV"T"
Do nitra stroje s programovacím jazykem Ruby
Vyzkou'ejte na http://tryruby.hobix.com