Úvod do programování aneb Do nitra stroje
PŘEDNÁŠKA                       Karel Minařík
            2
1   Opakování




                Úvod do programování
„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...
Úvod do programování Přednáška 2
Vztah ke stroji




                  Úvod do programování Přednáška 2
Úvod do programování Přednáška 2
Úvod do programování Přednáška 2
HLEDISKO UŽIVATELE


  Kontext
          ×
Konzistence
 HLEDISKO PROGRAMÁTORA




                         Úvod do program...
Algoritmus je konečný seznam uspokojivě
definovaných instrukcí pro splnění určitého
úkolu. Z počátečního stavu algoritmus ...
1. Nalít olej do pánve
2. Zapálit plyn
3. Vzít vejce
4. Rozklepnout vejce o okraj pánve




                      Úvod do ...
? 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 ...
? 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 ...
? Najít pánev
      Fatal Error

   ? Najít olej
Do!lyNalít olej do pánve
   1. vejce
   2. Zapálit plyn
   ? Čím zapálit ...
JEDNODUCHÝ ALGORITMUS
Nalezení největšího čísla
z neuspořádaného seznamu čísel


1. Předpokládejme, že první číslo v sezna...
Java
ZÁPIS V PROGRAMOVACÍM JAZYCE



1 class MaxApp {
2      public static void main (String args[]) {
3          int[] in...
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.eac...
www.pine.fm/LearnToProgram (původní verze)
                                 Úvod do programování Přednáška 2
www.poignantguide.net/ruby
NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ




                                             ...
Ruby on Rails




                Úvod do programování Přednáška 2
2   Historie programovacích jazyků




                                Úvod do programování
Ada Lovelace programování Přednáška 2
       Úvod do (1815—1852)
Co je to programovací jazyk?




                       Úvod do programování Přednáška 2
Algoritmus je konečný seznam uspokojivě
definovaných instrukcí pro splnění určitého
úkolu. Z počátečního stavu algoritmus ...
Programovací jazyk je umělý jazyk, který
slouží k formální zápisu algoritmu.




                                      Úvo...
Počítač nedělá to, co chceme, aby dělal.
Počítač dělá přesně to, co mu řekneme, aby dělal.




                           ...
History of Programming Languages
                                                                                         ...
History of Programming Languages
                                                                                         ...
History of Programmin
 1954       1960
Jacquardův tkalcovský stav
Jacquard’s Loom




První „programovatelný stroj“
Difference Engine (okolo roku 1850)
Charles Babagge
Difference Engine (okolo roku 1850)
Charles Babagge
Difference Engine (1822—1849)
→ Mechanický stroj
→ Zpracování složitých výpočtů
→ Nahrazení lidské práce (logaritmické tab...
Analytical Engine (1837—1871)
→ Parní stroj (externí zdroj energie)
→ Vstup pomocí děrných štítků
→ Výstup: text, obraz a ...
…the Engine might compose elaborate and scientific
pieces of music of any degree of complexity or extent.
— Ada Lovelace (...
Česky jako Mašina zázraků




                            Úvod do programování Přednáška 2
Programovatelnost
  Programmability




                    Úvod do programování Přednáška 2
von Neumannova architektura
→ Oddělení řídící jednotky a paměti
→ Společná paměť pro programy (instrukce) a pro data
→ (mo...
ENIAC   Úvod do programování Přednáška 2
ENIAC — „Program“ je nastavení kabelů a přepínačů do programování
                                                Úvod    ...
Konrad Zuse, 1943
Plankalkül (Gottlob Frege: Begriffsschrift — eine der arithmetischen
nachgebildete Formelsprache des rei...
FORTRAN, 1954
IF, DO (smyčky), GOTO, true/false a základní datové typy (řetězce, čísla)

Lisp, 1958
Dynamické typování, ob...
Perl, 1987
Skriptovací jazyk, práce s textem, knihovny (CPAN), duct-tape of the internet

Java, 1995
Objektový, nezávislý ...
˚
„GENERACE“ PROGRAMOVACÍCH JAZYKU
První generace
Strojový kód: 0 a 1. První počítače: přepínače, nikoliv text. Absolutní ...
PŘÍSTUPY K PROGRAMOVÁNÍ (PARADIGMATA)
Procedurální programování
Bud´synonymum pro imperativní programování — prostá poslou...
MAX/MSP www.cycling74.com/products/maxmsp




                                            Úvod do programování Přednáška 2
The days when it made sense to do your own memory management in a new
program are long over, outside of a few specialty ar...
Děkuji!
 
Historie programovacích jazyků
Historie programovacích jazyků
Historie programovacích jazyků
Historie programovacích jazyků
Historie programovacích jazyků
Historie programovacích jazyků
Historie programovacích jazyků
Historie programovacích jazyků
Upcoming SlideShare
Loading in...5
×

Historie programovacích jazyků

3,788

Published on

Přednáška z cyklu Úvod do programování aneb Do nitra stroje na FFUK v Praze

Published in: Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,788
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Historie programovacích jazyků

  1. 1. Úvod do programování aneb Do nitra stroje PŘEDNÁŠKA Karel Minařík 2
  2. 2. 1 Opakování Úvod do programování
  3. 3. „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 Úvod do programování Přednáška 2
  4. 4. Úvod do programování Přednáška 2
  5. 5. Vztah ke stroji Úvod do programování Přednáška 2
  6. 6. Úvod do programování Přednáška 2
  7. 7. Úvod do programování Přednáška 2
  8. 8. HLEDISKO UŽIVATELE Kontext × Konzistence HLEDISKO PROGRAMÁTORA Úvod do programování Přednáška 2
  9. 9. 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 Úvod do programování Přednáška 2
  10. 10. 1. Nalít olej do pánve 2. Zapálit plyn 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve Úvod do programování Přednáška 2
  11. 11. ? 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 Úvod do programování Přednáška 2
  12. 12. ? 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 Úvod do programování Přednáška 2
  13. 13. ? 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 Úvod do programování Přednáška 2
  14. 14. ? 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 Úvod do programování Přednáška 2
  15. 15. ? Najít pánev Fatal Error ? Najít olej Do!lyNalít olej do pánve 1. vejce 2. Zapálit plyn ? Čím zapálit plyn Cancel OK 3. Vzít vejce 4. Rozklepnout vejce o okraj pánve Úvod do programování Přednáška 2
  16. 16. JEDNODUCHÝ ALGORITMUS Nalezení největšího čísla z neuspořádaného seznamu čísel 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. Úvod do programování Přednáška 2
  17. 17. Java 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(quot;Nejvyšší číslo je: quot; + largest + quot;nquot;); 10 } 11 } Úvod do programování Přednáška 2
  18. 18. 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 quot;Nejvyšší číslo je: #{largest} nquot; Úvod do programování Přednáška 2
  19. 19. www.pine.fm/LearnToProgram (původní verze) Úvod do programování Přednáška 2
  20. 20. www.poignantguide.net/ruby NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ Úvod do programování Přednáška 2
  21. 21. Ruby on Rails Úvod do programování Přednáška 2
  22. 22. 2 Historie programovacích jazyků Úvod do programování
  23. 23. Ada Lovelace programování Přednáška 2 Úvod do (1815—1852)
  24. 24. Co je to programovací jazyk? Úvod do programování Přednáška 2
  25. 25. 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 Úvod do programování Přednáška 2
  26. 26. Programovací jazyk je umělý jazyk, který slouží k formální zápisu algoritmu. Úvod do programování Přednáška 2
  27. 27. Počítač nedělá to, co chceme, aby dělal. Počítač dělá přesně to, co mu řekneme, aby dělal. Úvod do programování Přednáška 2
  28. 28. History of Programming Languages 2002 1990 1995 2003 1965 1975 1980 1985 2000 1954 1960 1970 2004 2001 1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004 For more than half of the fifty years computer programmers have been This timeline includes fifty of the more than 2500 documented writing code, O’Reilly has provided developers with comprehensive, programming languages. It is based on an original diagram created www.oreilly.com in-depth technical information. We’ve kept pace with rapidly changing by Éric Lévénez (www.levenez.com), augmented with suggestions technologies as new languages have emerged, developed, and from O’Reilly authors, friends, and conference attendees. matured. Whether you want to learn something new or need For information and discussion on this poster, answers to tough technical questions, you’ll find what you need go to www.oreilly.com/go/languageposter. in O’Reilly books and on the O’Reilly Network. ©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
  29. 29. History of Programming Languages 2002 1990 1995 2003 1965 1975 1980 1985 2000 1954 1960 1970 2004 2001 1986 1990 1990 1991 1991 1993 1994 1995 1996 1996 1997 1997 2000 2001 2001 2003 2003 2004 For more than half of the fifty years computer programmers have been This timeline includes fifty of the more than 2500 documented writing code, O’Reilly has provided developers with comprehensive, programming languages. It is based on an original diagram created www.oreilly.com in-depth technical information. We’ve kept pace with rapidly changing by Éric Lévénez (www.levenez.com), augmented with suggestions technologies as new languages have emerged, developed, and from O’Reilly authors, friends, and conference attendees. matured. Whether you want to learn something new or need For information and discussion on this poster, answers to tough technical questions, you’ll find what you need go to www.oreilly.com/go/languageposter. in O’Reilly books and on the O’Reilly Network. ©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
  30. 30. History of Programmin 1954 1960
  31. 31. Jacquardův tkalcovský stav Jacquard’s Loom První „programovatelný stroj“
  32. 32. Difference Engine (okolo roku 1850) Charles Babagge
  33. 33. Difference Engine (okolo roku 1850) Charles Babagge
  34. 34. Difference Engine (1822—1849) → Mechanický stroj → Zpracování složitých výpočtů → Nahrazení lidské práce (logaritmické tabulky) → Babaggovi pokračovatelé jej skutečně sestrojili Úvod do programování Přednáška 2
  35. 35. Analytical Engine (1837—1871) → Parní stroj (externí zdroj energie) → Vstup pomocí děrných štítků → Výstup: text, obraz a zvuk (!) → Výstup: děrné štítky (!) „meta-programming“ → Nerealizován Úvod do programování Přednáška 2
  36. 36. …the Engine might compose elaborate and scientific pieces of music of any degree of complexity or extent. — Ada Lovelace (1843) Úvod do programování Přednáška 2
  37. 37. Česky jako Mašina zázraků Úvod do programování Přednáška 2
  38. 38. Programovatelnost Programmability Úvod do programování Přednáška 2
  39. 39. von Neumannova architektura → Oddělení řídící jednotky a paměti → Společná paměť pro programy (instrukce) a pro data → (modifikovatelnost instrukcí programem) → Základní důsledek: počítač je univarzální a lze jej přeprogramovat Úvod do programování Přednáška 2
  40. 40. ENIAC Úvod do programování Přednáška 2
  41. 41. ENIAC — „Program“ je nastavení kabelů a přepínačů do programování Úvod Přednáška 2
  42. 42. Konrad Zuse, 1943 Plankalkül (Gottlob Frege: Begriffsschrift — eine der arithmetischen nachgebildete Formelsprache des reinen Denkens, 1879) John von Neumann, 1945 DVA ZÁKLADNÍ PRINCIPY: „Shared-program technique“ — hardware mý být jednoduchý, nikoliv mít napevno zadané instrukce. Má být řízen komplexními instrukcemi, aby bylo možné hardware snadno přeprogramovat. „Conditional control transfer“ — pojem sub-routine, malého bloku kódu, který lze opakovaně volat a znovu použít. Základní idea, která odlišuje počítačový program od kuchynského receptu (sekvenční, ˇ chronologický). Kód je zapisován binárně, tzn. pomocí „nul a jedniček“. Grace Hopper, 1952 První kompilátor, překladač, který překládá z kódu v lidském jazyce do jazyka počítače pro programovací jazyk A-0. Úvod do programování Přednáška 2
  43. 43. FORTRAN, 1954 IF, DO (smyčky), GOTO, true/false a základní datové typy (řetězce, čísla) Lisp, 1958 Dynamické typování, objektově-orientovaný, matematická syntax, rekurze COBOL, 1959 Grace Hopper: Programovací jazyk by se měl podobat více přirozenému jazyku než jazyku strojů. Common Business Oriented Language: SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST. Smalltalk, 1972 Xerox PARC, objekty a třídy, „čistě objektový“, reflektivní, modifikovatelný za běhu C, 1972 Optimalizovaný, rychlý. Často slouží jako interpreter vyšších programovacích jazyků. Úvod do programování Přednáška 2
  44. 44. Perl, 1987 Skriptovací jazyk, práce s textem, knihovny (CPAN), duct-tape of the internet Java, 1995 Objektový, nezávislý na platformě (Write once, run anywhere). Java <applet> běží v internetových prohlížečích. PHP, 1995 Dynamické webové stránky —  snadná integrace, zprovoznění. Masivní rozšíření — tzv. LAMP. Úvod do programování Přednáška 2
  45. 45. ˚ „GENERACE“ PROGRAMOVACÍCH JAZYKU První generace Strojový kód: 0 a 1. První počítače: přepínače, nikoliv text. Absolutní výkon. Závislý na hardware. Příklad: 10110000 01100001 Druhá generace Assembler (assembly language). Závislý na hardware. Příklad: mov al, 61h Třetí generace Čitelný a snadno zapsatelný lidmi. Většina moderních jazyků. Příklad: let b = c + 2 * d Čtvrtá generace Reportovací nástroje, SQL (structured query language), domain-specific languages. Navržené pro konkrétní účel. Příklad: SELECT * FROM employees ORDER BY surname Pátá generace Synonymum pro vizuální programování nebo označení vývoje pomocí definic omezení, stroj sám má zkonstruovat algoritmus. Akademické použití. Úvod do programování Přednáška 2
  46. 46. PŘÍSTUPY K PROGRAMOVÁNÍ (PARADIGMATA) Procedurální programování Bud´synonymum pro imperativní programování — prostá posloupnost kroků („recept“). Nebo označení pro programování stylem volání procedur (rutina, sub-rutina, funkce). Modularita. Zejména: PHP, Perl Objektově orientované programování Objekty, jejich vlastnosti a vztahy (Malý pes štěká na chlapce). Dědičnost, modularita, polymorfismus, zapouzdření. Zejména: Java, Ruby Funkční programování Nepopisuje kroky algoritmu, ale matematické vztahy. Zejména: Lisp, Erlang Vizuální programování Vytváření instrukcí a posloupností vizuálně, pomocí grafických reprezentací, nikoliv textem. Zejména: Max/MSP, Apple Automator Úvod do programování Přednáška 2
  47. 47. MAX/MSP www.cycling74.com/products/maxmsp Úvod do programování Přednáška 2
  48. 48. 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? Úvod do programování Přednáška 2
  49. 49. Děkuji! 
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×