74
Do nitra stroje s programovacím jazykem Ruby Karel Minařík

Karel Minařík: Do nitra stroje s programovacím jazykem Ruby

Embed Size (px)

Citation preview

Do nitra stroje s programovacím jazykem Ruby

Karel Mina!ík

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

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

Frustrace

Do nitra stroje s programovacím jazykem Ruby

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

Kontext vs. konzistenceaneb „Jak uva%uje programátor?”3

Do nitra stroje s programovacím jazykem RubyAda Lovelace (1815—1852)

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

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

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

„Zm!na“aneb "eho se programáto#i nejvíce bojí...

Do nitra stroje s programovacím jazykem Ruby

HLEDISKO U$IVATELE

Kontext!

KonzistenceHLEDISKO 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

Algoritmus4

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 RubyENIAC — „Program“ je nastavení kabel' a p!epína"'

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

MAX/MSP www.cycling74.com/products/maxmsp

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

Programovací jazyk Ruby5

Do nitra stroje s programovacím jazykem Ruby

— Yukihiro Matsumoto (Matz)

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

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

D"kuji!

d