Historie programovacích jazyků
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Historie programovacích jazyků

on

  • 5,364 views

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

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

Statistics

Views

Total Views
5,364
Views on SlideShare
5,353
Embed Views
11

Actions

Likes
0
Downloads
25
Comments
0

3 Embeds 11

http://www.slideshare.net 7
http://www.linkedin.com 3
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Historie programovacích jazyků Presentation Transcript

  • 1. Úvod do programování aneb Do nitra stroje PŘEDNÁŠKA Karel Minařík 2
  • 2. 1 Opakování Úvod do programování
  • 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. Úvod do programování Přednáška 2
  • 5. Vztah ke stroji Úvod do programování Přednáška 2
  • 6. Úvod do programování Přednáška 2
  • 7. Úvod do programování Přednáška 2
  • 8. HLEDISKO UŽIVATELE Kontext × Konzistence HLEDISKO PROGRAMÁTORA Úvod do programování Přednáška 2
  • 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. 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. ? 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. ? 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. ? 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. ? 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. ? 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. 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. 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. 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. www.pine.fm/LearnToProgram (původní verze) Úvod do programování Přednáška 2
  • 20. www.poignantguide.net/ruby NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ Úvod do programování Přednáška 2
  • 21. Ruby on Rails Úvod do programování Přednáška 2
  • 22. 2 Historie programovacích jazyků Úvod do programování
  • 23. Ada Lovelace programování Přednáška 2 Úvod do (1815—1852)
  • 24. Co je to programovací jazyk? Úvod do programování Přednáška 2
  • 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. Programovací jazyk je umělý jazyk, který slouží k formální zápisu algoritmu. Úvod do programování Přednáška 2
  • 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. 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. 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. History of Programmin 1954 1960
  • 31. Jacquardův tkalcovský stav Jacquard’s Loom První „programovatelný stroj“
  • 32. Difference Engine (okolo roku 1850) Charles Babagge
  • 33. Difference Engine (okolo roku 1850) Charles Babagge
  • 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. 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. …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. Česky jako Mašina zázraků Úvod do programování Přednáška 2
  • 38. Programovatelnost Programmability Úvod do programování Přednáška 2
  • 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. ENIAC Úvod do programování Přednáška 2
  • 41. ENIAC — „Program“ je nastavení kabelů a přepínačů do programování Úvod Přednáška 2
  • 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. 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. 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. ˚ „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. 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. MAX/MSP www.cycling74.com/products/maxmsp Úvod do programování Přednáška 2
  • 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. Děkuji! 