SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
Ú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ě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
          ×
Konzistence
 HLEDISKO 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ánve
2. Zapálit plyn
3. Vzít vejce
4. Rozklepnout vejce o okraj pánve




                      Úvod do programování Přednáška 2
? 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
? 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
? 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
? 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
? 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
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
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
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
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Ě




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




                                       Úvod do programování Přednáška 2
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
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
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é 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
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
→ (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
ENIAC   Úvod do programování Přednáška 2
ENIAC — „Program“ je nastavení kabelů a přepínačů do programování
                                                Úvod                Přednáška 2
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
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
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
˚
„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
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?




                                                                Úvod do programování Přednáška 2
Děkuji!
 

Weitere ähnliche Inhalte

Ähnlich wie Historie programovacích jazyků

History of programming languages
History of programming languagesHistory of programming languages
History of programming languagessugeladi
 
Intellectual property Strategy
Intellectual property StrategyIntellectual property Strategy
Intellectual property StrategyMurray Hunter
 
Lecture 1 - Knowledge, technological change and Innovation Studies
Lecture 1 - Knowledge, technological change and Innovation StudiesLecture 1 - Knowledge, technological change and Innovation Studies
Lecture 1 - Knowledge, technological change and Innovation StudiesUNU.MERIT
 
Experience Exchange Meeting of Thailand
Experience Exchange Meeting of ThailandExperience Exchange Meeting of Thailand
Experience Exchange Meeting of ThailandDr.Choen Krainara
 
Automating Your Infrastructure
Automating Your InfrastructureAutomating Your Infrastructure
Automating Your InfrastructureDmitry Buzdin
 
2007* Airline Marketing Embraer Day 2007
2007* Airline Marketing Embraer Day 20072007* Airline Marketing Embraer Day 2007
2007* Airline Marketing Embraer Day 2007Embraer RI
 
Leitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progrLeitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progrPROF COMPUTAÇÃO Bordoni
 
The CEO’s Dilemma - How to drive efficient innovation in the organization
The CEO’s Dilemma - How to drive efficient innovation in the organizationThe CEO’s Dilemma - How to drive efficient innovation in the organization
The CEO’s Dilemma - How to drive efficient innovation in the organizationJoeBarkai
 
Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...
Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...
Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...MaRS Discovery District
 
PowerPoint Slide Makeover #75: Transforming Data Dump Slides
PowerPoint Slide Makeover #75: Transforming Data Dump SlidesPowerPoint Slide Makeover #75: Transforming Data Dump Slides
PowerPoint Slide Makeover #75: Transforming Data Dump SlidesDave Paradi
 
Fashion bls spotlight on statistics
Fashion  bls spotlight on statisticsFashion  bls spotlight on statistics
Fashion bls spotlight on statisticsGulnafizka Anfizka
 
Medicon Valley and Life science cluster in Denmark
Medicon Valley and Life science cluster in DenmarkMedicon Valley and Life science cluster in Denmark
Medicon Valley and Life science cluster in DenmarkPramila Das
 
That old Spring magic has me in its SpEL
That old Spring magic has me in its SpELThat old Spring magic has me in its SpEL
That old Spring magic has me in its SpELCraig Walls
 
Social-ecological dynamics and the effects of bonding social capital on local...
Social-ecological dynamics and the effects of bonding social capital on local...Social-ecological dynamics and the effects of bonding social capital on local...
Social-ecological dynamics and the effects of bonding social capital on local...Kemraj Parsram
 
Beyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 KeynoteBeyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 KeynoteEmerson Macedo
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsEelco Visser
 

Ähnlich wie Historie programovacích jazyků (18)

History of programming languages
History of programming languagesHistory of programming languages
History of programming languages
 
Intellectual property Strategy
Intellectual property StrategyIntellectual property Strategy
Intellectual property Strategy
 
Lecture 1 - Knowledge, technological change and Innovation Studies
Lecture 1 - Knowledge, technological change and Innovation StudiesLecture 1 - Knowledge, technological change and Innovation Studies
Lecture 1 - Knowledge, technological change and Innovation Studies
 
Experience Exchange Meeting of Thailand
Experience Exchange Meeting of ThailandExperience Exchange Meeting of Thailand
Experience Exchange Meeting of Thailand
 
Automating Your Infrastructure
Automating Your InfrastructureAutomating Your Infrastructure
Automating Your Infrastructure
 
Release 2T00
Release 2T00Release 2T00
Release 2T00
 
2007* Airline Marketing Embraer Day 2007
2007* Airline Marketing Embraer Day 20072007* Airline Marketing Embraer Day 2007
2007* Airline Marketing Embraer Day 2007
 
The Race for Global Innovation Advantage and U.S. Economic Prospects
The Race for Global Innovation Advantage and U.S. Economic ProspectsThe Race for Global Innovation Advantage and U.S. Economic Prospects
The Race for Global Innovation Advantage and U.S. Economic Prospects
 
Leitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progrLeitura complementar 07 - Linha do tempo, ling.progr
Leitura complementar 07 - Linha do tempo, ling.progr
 
The CEO’s Dilemma - How to drive efficient innovation in the organization
The CEO’s Dilemma - How to drive efficient innovation in the organizationThe CEO’s Dilemma - How to drive efficient innovation in the organization
The CEO’s Dilemma - How to drive efficient innovation in the organization
 
Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...
Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...
Robert Deluce: Gaining altitude in turbulent times – a view from the cockpit ...
 
PowerPoint Slide Makeover #75: Transforming Data Dump Slides
PowerPoint Slide Makeover #75: Transforming Data Dump SlidesPowerPoint Slide Makeover #75: Transforming Data Dump Slides
PowerPoint Slide Makeover #75: Transforming Data Dump Slides
 
Fashion bls spotlight on statistics
Fashion  bls spotlight on statisticsFashion  bls spotlight on statistics
Fashion bls spotlight on statistics
 
Medicon Valley and Life science cluster in Denmark
Medicon Valley and Life science cluster in DenmarkMedicon Valley and Life science cluster in Denmark
Medicon Valley and Life science cluster in Denmark
 
That old Spring magic has me in its SpEL
That old Spring magic has me in its SpELThat old Spring magic has me in its SpEL
That old Spring magic has me in its SpEL
 
Social-ecological dynamics and the effects of bonding social capital on local...
Social-ecological dynamics and the effects of bonding social capital on local...Social-ecological dynamics and the effects of bonding social capital on local...
Social-ecological dynamics and the effects of bonding social capital on local...
 
Beyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 KeynoteBeyond your daily coding - The Conf Brazil 2017 Keynote
Beyond your daily coding - The Conf Brazil 2017 Keynote
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming Linguistics
 

Mehr von Karel Minarik

Vizualizace dat a D3.js [EUROPEN 2014]
Vizualizace dat a D3.js [EUROPEN 2014]Vizualizace dat a D3.js [EUROPEN 2014]
Vizualizace dat a D3.js [EUROPEN 2014]Karel Minarik
 
Elasticsearch (Rubyshift 2013)
Elasticsearch (Rubyshift 2013)Elasticsearch (Rubyshift 2013)
Elasticsearch (Rubyshift 2013)Karel Minarik
 
Elasticsearch in 15 Minutes
Elasticsearch in 15 MinutesElasticsearch in 15 Minutes
Elasticsearch in 15 MinutesKarel Minarik
 
Realtime Analytics With Elasticsearch [New Media Inspiration 2013]
Realtime Analytics With Elasticsearch [New Media Inspiration 2013]Realtime Analytics With Elasticsearch [New Media Inspiration 2013]
Realtime Analytics With Elasticsearch [New Media Inspiration 2013]Karel Minarik
 
Elasticsearch And Ruby [RuPy2012]
Elasticsearch And Ruby [RuPy2012]Elasticsearch And Ruby [RuPy2012]
Elasticsearch And Ruby [RuPy2012]Karel Minarik
 
Shell's Kitchen: Infrastructure As Code (Webexpo 2012)
Shell's Kitchen: Infrastructure As Code (Webexpo 2012)Shell's Kitchen: Infrastructure As Code (Webexpo 2012)
Shell's Kitchen: Infrastructure As Code (Webexpo 2012)Karel Minarik
 
Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)
Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)
Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)Karel Minarik
 
Your Data, Your Search, ElasticSearch (EURUKO 2011)
Your Data, Your Search, ElasticSearch (EURUKO 2011)Your Data, Your Search, ElasticSearch (EURUKO 2011)
Your Data, Your Search, ElasticSearch (EURUKO 2011)Karel Minarik
 
Redis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational DatabasesRedis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational DatabasesKarel Minarik
 
CouchDB – A Database for the Web
CouchDB – A Database for the WebCouchDB – A Database for the Web
CouchDB – A Database for the WebKarel Minarik
 
Spoiling The Youth With Ruby (Euruko 2010)
Spoiling The Youth With Ruby (Euruko 2010)Spoiling The Youth With Ruby (Euruko 2010)
Spoiling The Youth With Ruby (Euruko 2010)Karel Minarik
 
Verzovani kodu s Gitem (Karel Minarik)
Verzovani kodu s Gitem (Karel Minarik)Verzovani kodu s Gitem (Karel Minarik)
Verzovani kodu s Gitem (Karel Minarik)Karel Minarik
 
Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]Karel Minarik
 
Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)
Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)
Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)Karel Minarik
 
Úvod do Ruby on Rails
Úvod do Ruby on RailsÚvod do Ruby on Rails
Úvod do Ruby on RailsKarel Minarik
 
Úvod do programování 7
Úvod do programování 7Úvod do programování 7
Úvod do programování 7Karel Minarik
 
Úvod do programování 6
Úvod do programování 6Úvod do programování 6
Úvod do programování 6Karel Minarik
 
Úvod do programování 5
Úvod do programování 5Úvod do programování 5
Úvod do programování 5Karel Minarik
 
Úvod do programování 4
Úvod do programování 4Úvod do programování 4
Úvod do programování 4Karel Minarik
 
Úvod do programování aneb Do nitra stroje
Úvod do programování aneb Do nitra strojeÚvod do programování aneb Do nitra stroje
Úvod do programování aneb Do nitra strojeKarel Minarik
 

Mehr von Karel Minarik (20)

Vizualizace dat a D3.js [EUROPEN 2014]
Vizualizace dat a D3.js [EUROPEN 2014]Vizualizace dat a D3.js [EUROPEN 2014]
Vizualizace dat a D3.js [EUROPEN 2014]
 
Elasticsearch (Rubyshift 2013)
Elasticsearch (Rubyshift 2013)Elasticsearch (Rubyshift 2013)
Elasticsearch (Rubyshift 2013)
 
Elasticsearch in 15 Minutes
Elasticsearch in 15 MinutesElasticsearch in 15 Minutes
Elasticsearch in 15 Minutes
 
Realtime Analytics With Elasticsearch [New Media Inspiration 2013]
Realtime Analytics With Elasticsearch [New Media Inspiration 2013]Realtime Analytics With Elasticsearch [New Media Inspiration 2013]
Realtime Analytics With Elasticsearch [New Media Inspiration 2013]
 
Elasticsearch And Ruby [RuPy2012]
Elasticsearch And Ruby [RuPy2012]Elasticsearch And Ruby [RuPy2012]
Elasticsearch And Ruby [RuPy2012]
 
Shell's Kitchen: Infrastructure As Code (Webexpo 2012)
Shell's Kitchen: Infrastructure As Code (Webexpo 2012)Shell's Kitchen: Infrastructure As Code (Webexpo 2012)
Shell's Kitchen: Infrastructure As Code (Webexpo 2012)
 
Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)
Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)
Elastic Search: Beyond Ordinary Fulltext Search (Webexpo 2011 Prague)
 
Your Data, Your Search, ElasticSearch (EURUKO 2011)
Your Data, Your Search, ElasticSearch (EURUKO 2011)Your Data, Your Search, ElasticSearch (EURUKO 2011)
Your Data, Your Search, ElasticSearch (EURUKO 2011)
 
Redis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational DatabasesRedis — The AK-47 of Post-relational Databases
Redis — The AK-47 of Post-relational Databases
 
CouchDB – A Database for the Web
CouchDB – A Database for the WebCouchDB – A Database for the Web
CouchDB – A Database for the Web
 
Spoiling The Youth With Ruby (Euruko 2010)
Spoiling The Youth With Ruby (Euruko 2010)Spoiling The Youth With Ruby (Euruko 2010)
Spoiling The Youth With Ruby (Euruko 2010)
 
Verzovani kodu s Gitem (Karel Minarik)
Verzovani kodu s Gitem (Karel Minarik)Verzovani kodu s Gitem (Karel Minarik)
Verzovani kodu s Gitem (Karel Minarik)
 
Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]Představení Ruby on Rails [Junior Internet]
Představení Ruby on Rails [Junior Internet]
 
Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)
Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)
Efektivni vyvoj webovych aplikaci v Ruby on Rails (Webexpo)
 
Úvod do Ruby on Rails
Úvod do Ruby on RailsÚvod do Ruby on Rails
Úvod do Ruby on Rails
 
Úvod do programování 7
Úvod do programování 7Úvod do programování 7
Úvod do programování 7
 
Úvod do programování 6
Úvod do programování 6Úvod do programování 6
Úvod do programování 6
 
Úvod do programování 5
Úvod do programování 5Úvod do programování 5
Úvod do programování 5
 
Úvod do programování 4
Úvod do programování 4Úvod do programování 4
Úvod do programování 4
 
Úvod do programování aneb Do nitra stroje
Úvod do programování aneb Do nitra strojeÚvod do programování aneb Do nitra stroje
Úvod do programování aneb Do nitra stroje
 

Kürzlich hochgeladen

Falcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investorsFalcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investorsFalcon Invoice Discounting
 
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSCROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSpanmisemningshen123
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1kcpayne
 
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTSDurg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTSkajalroy875762
 
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Adnet Communications
 
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecZurliaSoop
 
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service AvailableBerhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Availablepr788182
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizharallensay1
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentationuneakwhite
 
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGBerhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGpr788182
 
Paradip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Paradip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGParadip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Paradip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGpr788182
 
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai KuwaitThe Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwaitdaisycvs
 
GUWAHATI 💋 Call Girl 9827461493 Call Girls in Escort service book now
GUWAHATI 💋 Call Girl 9827461493 Call Girls in  Escort service book nowGUWAHATI 💋 Call Girl 9827461493 Call Girls in  Escort service book now
GUWAHATI 💋 Call Girl 9827461493 Call Girls in Escort service book nowkapoorjyoti4444
 
Lucknow Housewife Escorts by Sexy Bhabhi Service 8250092165
Lucknow Housewife Escorts  by Sexy Bhabhi Service 8250092165Lucknow Housewife Escorts  by Sexy Bhabhi Service 8250092165
Lucknow Housewife Escorts by Sexy Bhabhi Service 8250092165meghakumariji156
 
PARK STREET 💋 Call Girl 9827461493 Call Girls in Escort service book now
PARK STREET 💋 Call Girl 9827461493 Call Girls in  Escort service book nowPARK STREET 💋 Call Girl 9827461493 Call Girls in  Escort service book now
PARK STREET 💋 Call Girl 9827461493 Call Girls in Escort service book nowkapoorjyoti4444
 
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...meghakumariji156
 
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGBerhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGpr788182
 
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in PakistanChallenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistanvineshkumarsajnani12
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptxnandhinijagan9867
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityEric T. Tung
 

Kürzlich hochgeladen (20)

Falcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investorsFalcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investors
 
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSCROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1
 
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTSDurg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
Durg CALL GIRL ❤ 82729*64427❤ CALL GIRLS IN durg ESCORTS
 
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
 
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
 
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service AvailableBerhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
 
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al MizharAl Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
Al Mizhar Dubai Escorts +971561403006 Escorts Service In Al Mizhar
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGBerhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
 
Paradip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Paradip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGParadip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Paradip CALL GIRL❤7091819311❤CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
 
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai KuwaitThe Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
The Abortion pills for sale in Qatar@Doha [+27737758557] []Deira Dubai Kuwait
 
GUWAHATI 💋 Call Girl 9827461493 Call Girls in Escort service book now
GUWAHATI 💋 Call Girl 9827461493 Call Girls in  Escort service book nowGUWAHATI 💋 Call Girl 9827461493 Call Girls in  Escort service book now
GUWAHATI 💋 Call Girl 9827461493 Call Girls in Escort service book now
 
Lucknow Housewife Escorts by Sexy Bhabhi Service 8250092165
Lucknow Housewife Escorts  by Sexy Bhabhi Service 8250092165Lucknow Housewife Escorts  by Sexy Bhabhi Service 8250092165
Lucknow Housewife Escorts by Sexy Bhabhi Service 8250092165
 
PARK STREET 💋 Call Girl 9827461493 Call Girls in Escort service book now
PARK STREET 💋 Call Girl 9827461493 Call Girls in  Escort service book nowPARK STREET 💋 Call Girl 9827461493 Call Girls in  Escort service book now
PARK STREET 💋 Call Girl 9827461493 Call Girls in Escort service book now
 
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
 
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGBerhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
 
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in PakistanChallenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 

Historie programovacích jazyků

  • 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.
  • 8. Úvod do programování Přednáška 2
  • 9. HLEDISKO UŽIVATELE Kontext × Konzistence HLEDISKO PROGRAMÁTORA Úvod do programování Přednáška 2
  • 10. 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
  • 11. 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. ? 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
  • 13. ? 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
  • 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 ? 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
  • 16. ? 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. www.pine.fm/LearnToProgram (původní verze) Úvod do programování Přednáška 2
  • 21. www.poignantguide.net/ruby NEJBLÁZNIVĚJŠÍ UČEBNICE PROGRAMOVÁNÍ NA SVĚTĚ Úvod do programování Přednáška 2
  • 22. Ruby on Rails Úvod do programování Přednáška 2
  • 23. 2 Historie programovacích jazyků Úvod do programování
  • 24. Ada Lovelace programování Přednáška 2 Úvod do (1815—1852)
  • 25. Co je to programovací jazyk? Úvod do programování Přednáška 2
  • 26. 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
  • 27. Programovací jazyk je umělý jazyk, který slouží k formální zápisu algoritmu. Úvod do programování Přednáška 2
  • 28. 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
  • 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 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
  • 32.
  • 33.
  • 34.
  • 35. Jacquardův tkalcovský stav Jacquard’s Loom První „programovatelný stroj“
  • 36. Difference Engine (okolo roku 1850) Charles Babagge
  • 37. Difference Engine (okolo roku 1850) Charles Babagge
  • 38.
  • 39.
  • 40. 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
  • 41. 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
  • 42. …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
  • 43. Česky jako Mašina zázraků Úvod do programování Přednáška 2
  • 44. Programovatelnost Programmability Úvod do programování Přednáška 2
  • 45. 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
  • 46. ENIAC Úvod do programování Přednáška 2
  • 47. ENIAC — „Program“ je nastavení kabelů a přepínačů do programování Úvod Přednáška 2
  • 48.
  • 49. 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
  • 50. 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
  • 51. 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
  • 52. ˚ „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
  • 53. 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
  • 54. MAX/MSP www.cycling74.com/products/maxmsp Úvod do programování Přednáška 2
  • 55.
  • 56. 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