Historie programovacích jazyků

  • View
    3.769

  • Download
    0

  • Category

    Business

Preview:

DESCRIPTION

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

Citation preview

Úvod do programování aneb Do nitra stroje

Karel MinaříkPŘEDNÁŠKA 2

Úvod do programování

Opakování1

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

„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

Ú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×

KonzistenceHLEDISKO PROGRAMÁTORA

Ú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 skončí v definovaném konečném stavu.

— Wikipedia

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

1. Nalít olej do pánve2. Zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve

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

? Vzít pánev1. Nalít olej do pánve2. Zapálit plyn3. Vzít vejce4. Rozklepnout vejce o okraj pánve

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

? 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

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

? 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

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

? 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

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

? 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

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

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

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

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

ZÁPIS V PROGRAMOVACÍM JAZYCE

1 input = [1, 5, 3, 95, 43, 56, 32, 90, 2, 4, 19]2 largest = input.first3 input.each do |i|4 largest = i if i > largest5 end6 print "Nejvyšší číslo je: #{largest} \n"

Ruby

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

www.pine.fm/LearnToProgram (původní verze)

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

www.poignantguide.net/rubyNEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ

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

Ruby on Rails

Úvod do programování

Historie programovacích jazyků2

Úvod do programování Přednáška 2Ada Lovelace (1815—1852)

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

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 skončí v definovaném konečném stavu.

— Wikipedia

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

Programovací jazyk je umělý jazyk, který slouží k formální zápisu algoritmu.

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

Počítač nedělá to, co chceme, aby dělal.

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

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

Jacquardův tkalcovský stavJacquard’s Loom

První „programovatelný stroj“

Difference Engine (okolo roku 1850)Charles Babagge

Difference Engine (okolo roku 1850)Charles Babagge

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

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

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

…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

Česky jako Mašina zázraků

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

ProgramovatelnostProgrammability

Ú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 → (modifikovatelnost instrukcí programem)

→ Základní důsledek: počítač je univarzální a lze jej přeprogramovat

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

Úvod do programování Přednáška 2ENIAC — „Program“ je nastavení kabelů a přepínačů

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

Konrad Zuse, 1943Plankalkül (Gottlob Frege: Begriffsschrift — eine der arithmetischen nachgebildete Formelsprache des reinen Denkens, 1879)

John von Neumann, 1945DVA 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, 1952První 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

FORTRAN, 1954IF, DO (smyčky), GOTO, true/false a základní datové typy (řetězce, čísla)

Lisp, 1958Dynamické typování, objektově-orientovaný, matematická syntax, rekurze

COBOL, 1959Grace 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, 1972Xerox PARC, objekty a třídy, „čistě objektový“, reflektivní, modifikovatelný za běhu

C, 1972Optimalizovaný, rychlý. Často slouží jako interpreter vyšších programovacích jazyků.

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

Perl, 1987Skriptovací jazyk, práce s textem, knihovny (CPAN), duct-tape of the internet

Java, 1995Objektový, nezávislý na platformě (Write once, run anywhere). Java <applet> běží v internetových prohlížečích.

PHP, 1995Dynamické webové stránky —  snadná integrace, zprovoznění. Masivní rozšíření — tzv. LAMP.

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

„GENERACE“ PROGRAMOVACÍCH JAZYKU

První generaceStrojový 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á generaceAssembler (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á generaceReportovací 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á generaceSynonymum 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

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

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 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?

Děkuji!

Recommended