Karel Minařík
1 www.google.com/search?q=karel+minařík
2 Proč se na Studiích nových médií zabývat (nějakým) programováním?
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
Jared Tarbell: Substrate (www.complexification.net)
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í
Demytologizace světa
Rozumět
Frustrace
Vztah ke stroji
Co se děje v nitru stroje? Jak se mu udílí příkazy? Kdo mu je udílí?
3 Kontext vs. konzistence aneb Jak uvažuje programátor?
Ada Lovelace (1815 1852)
the Engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. Ada Lovelace
Příslib techniky
Neexistuje žádný důvod, aby jednotlivci měli v domácnosti počítače. Ken Olsen, ředitel Digital Equipment Corporation, 1977
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
Použitelnost ergonomie ovládání Usability
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)
Zm!na aneb "eho se programáto#i nejvíce bojí...
HLEDISKO UŽIVATELE Kontext! Konzistence HLEDISKO PROGRAMÁTORA
PŘÍKLAD Storno objednávek v aplikaci
Programátoři obtížně řeší kontextově závislé úlohy. Na rozdíl od počítačů.
4 Algoritmus
Algoritmus je základem každého programu Algoritmus je sekvence příkazů
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
1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
? 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
? 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
? 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
? 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
? Najít pánev Fatal Error? Najít olej Do!ly 1. Nalít vejce olej do pánve 2. Zapálit plyn? Čím zapálit Cancel plynok 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve
Počítač nedělá to, co chceme, aby dělal. Počítač dělá přesně to, co mu řekneme, aby dělal.
JEDNODUCHÝ ALGORITMUS Nalezení největšího čísla z neuspořádaného seznamu čísel http://en.wikipedia.org/wiki/algorithm#example
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.
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
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 }
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 }
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"
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č
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
Programovací jazyk je umělý jazyk, který slouží k formální zápisu algoritmu.
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"
MAX/MSP www.cycling74.com/products/maxmsp
History of Programming Languages 1954 1960 1965 1970 1975 1980 1985 1990 1995 2000 2001 2002 2003 2004 1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004 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. 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 1970 1975 1980 1985 1990 1995 2000 2001 2002 2003 2004 1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004 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. 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?
5 Programovací jazyk 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
Syntax 5.times { print "Hurá!" } print ["banán", "citron", "ananas"].sort.last.capitalize
Objektově orientovaný jazyk OBJEKT Pes věc/podstatné jméno VLASTNOST malý vlastnost/přídavné jméno METODA stekej činnost/sloveso class Pes def velikost return @velikost end def stekej print Haf! end end
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.
Zdroje (viz www.ruby-lang.org/en/documentation) www.pine.fm/learntoprogram (původní verze)
www.poignantguide.net/ruby NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ
Ruby on Rails
Ruby on Rails
Vyzkoušejte na http://tryruby.hobix.com
Děkuji! d