2. Do nitra stroje s programovacím jazykem Ruby
www.google.com/search?q=karel+minařík1
3. 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
4. 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
7. Do nitra stroje s programovacím jazykem Ruby
Jared Tarbell: Substrate (www.complexification.net)
8. 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í
9. Do nitra stroje s programovacím jazykem Ruby
Demytologizace světa
19. Do nitra stroje s programovacím jazykem Ruby
Kontext vs. konzistence
aneb „Jak uvažuje programátor?”3
20. Do nitra stroje s programovacím jazykem RubyAda Lovelace (1815—1852)
21. 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
22. Do nitra stroje s programovacím jazykem Ruby
Příslib techniky
23. 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
24.
25. 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
27. Do nitra stroje s programovacím jazykem Ruby
Použitelnost — ergonomie ovládání
Usability
28. Do nitra stroje s programovacím jazykem Ruby
Donald A. Norman, The Design of Everyday Things (1988)
Ovládací prvky elektrického vařiče
Která plotýnka se ovládá kterým knoflíkem?
35. Do nitra stroje s programovacím jazykem Ruby
Algoritmus je základem každého programu
Algoritmus je sekvence příkazů
36. 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
37. 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
38. 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
39. 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
40. 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
41. 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
42. 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
OK
Fatal Error
Do!ly vejce
Cancel
43. 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.
44. 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
45. 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.
46. 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
47. 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: %dn", largest);
13 return 0;
14 }
C
48. 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
49. 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
50. 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: %dn", largest);
13 return 0;
14 }
„tajemné umění programovat počítač“
51. 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
52. Do nitra stroje s programovacím jazykem Ruby
Programovací jazyk je umělý jazyk, který
slouží k formální zápisu algoritmu.
53. Do nitra stroje s programovacím jazykem RubyENIAC — „Program“ je nastavení kabelů a přepínačů
54. 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
55. Do nitra stroje s programovacím jazykem Ruby
MAX/MSP www.cycling74.com/products/maxmsp
61. 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?
62. Do nitra stroje s programovacím jazykem Ruby
Programovací jazyk Ruby5
65. 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~
66. Do nitra stroje s programovacím jazykem Ruby
5.times { print "Hurá!" }
print ["banán", "citron", "ananas"].sort.last.capitalize
Syntax
67. Do nitra stroje s programovacím jazykem Ruby
class Pes
def velikost
return @velikost
end
def stekej
print “Haf!”
end
end
Objektově orientovaný jazyk
OBJEKT Pes věc/podstatné jméno
VLASTNOST malý vlastnost/přídavné jméno
METODA stekej činnost/sloveso
68. 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.
…
69. Do nitra stroje s programovacím jazykem Ruby
Zdroje (viz www.ruby-lang.org/en/documentation)
www.pine.fm/LearnToProgram(původní verze)
70. Do nitra stroje s programovacím jazykem Ruby
www.poignantguide.net/ruby
NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ