Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Vojtěch Merunka Katedra informačního inženýrství PEF ČZU Praha
Jaký programovací jazyk učit jako první a jak ho učit? Jaký programovací jazyk učit jako první a jak ho učit?
strana 1
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Motivace
dříve
Jaký programovací jazyk učit jako první a jak ho učit?
strana 2
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Motivace ... pokračování
dnes
Jaký programovací jazyk učit jako první a jak ho učit?
strana 3
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Obsah presentace
Vymezení pojmu „informatika“
Přehled programovacích jazyků
Pokus o závěr
Jaký programovací jazyk učit jako první a jak ho učit?
strana 4
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Vymezení pojmu „Informatika“ Computing Sciences Computer Science Software Engineering Information Systems Computer Engineering Information Technology
Jaký programovací jazyk učit jako první a jak ho učit?
strana 5
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Computer Science
Jaký programovací jazyk učit jako první a jak ho učit?
strana 6
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Information Systems
Jaký programovací jazyk učit jako první a jak ho učit?
strana 7
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Software Engineering
Jaký programovací jazyk učit jako první a jak ho učit?
strana 8
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Computer Engineering
Jaký programovací jazyk učit jako první a jak ho učit?
strana 9
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Information Technology
Jaký programovací jazyk učit jako první a jak ho učit?
strana 10
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Univerzální jazyk? Není žádný jediný univerzální programovací jazyk. Každé paradigma a každá oblast použití má svoje jazyky „šité na míru“, které ale nemusí být vhodné jinde. organization issues, information systems application technologies
BPMN BPMN BPEL BPEL Ruby, Ruby, Self, Self, Smalltalk Smalltalk C#, LISP, C#, Delphi, Delphi, Java, Java, Python Python LISP, Scheme Scheme vývojáky vývojáky
software methods and technologies systems infrastructure
strukturostrukturogramy gramy
UML UML
PROLOG PROLOG SQL SQL IDL IDL
XML XML
C C
computer hardware and architecture
asemblery asemblery
objektové
imperativní
funkcionální
deklarativní
paradigma výpočtu Jaký programovací jazyk učit jako první a jak ho učit?
strana 11
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Nejpoužívanější jazyky ve výuce
Nejpoužívanější jazyk je Java (21%). Následuje C (14%), C++, Pascal, Python, Ruby, Scheme, ... Celkem je ale podle sdružení CSAB asi 20 jazyků používaných z více než 1%.
Prestižní university ve světě mají větší variabilitu jazyků, ostatní university preferují více Javu a C na úkor ostatních.
Víceméně rovnoměrně jsou zastoupeny imperativní, objektově-orientované jazyky a funkcionální jazyky.
Logické paradigma téměř vymizelo, nahradilo ho deklarativní programování.
CSAB - Computing Sciences Accreditation Board Jaký programovací jazyk učit jako první a jak ho učit?
strana 12
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Jaké jazyky jsou v praxi nejžádanější? jejich vlastnosti
Java Ruby Python JavaScript Perl AJAX Visual Basic .NET C# PHP C
objektově orientované jazyky
podpora XML
skriptovací jazyky
vyšší programovací jazyky
zdroj: Jaký programovací jazyk učit jako první a jak ho učit?
strana 13
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
4 cesty k výuce programování a algoritmizace 1. varianta
„co nejméně jakéhokoliv jazyka“ (např. vývojové diagramy, CASE nástroje, ...)
2. varianta
„jednoduchý jazyk na začátku, jiný větší později“ (např. D, Logo, Karel, Scheme, ...)
3. varianta
„stejný jazyk roste se studentem“ (např. BlueJ na začátku, Java později)
4. varianta
„úplný jazyk z praxe již od začátku“ (např. Java, Delphi)
SIGCSE - Technical Symposium on Computer Science Education Jaký programovací jazyk učit jako první a jak ho učit?
strana 14
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Zkušenosti z praxe
Wrong Approaches to Introductory Programming Languages
• • •
the „sexless language“ approach the „teach in C" approach the „first programming language should make sure you write good code" approach
Recommendations
• • • • • • • • •
a high-level language should come before C Perl/Python/etc. should come before PHP and Shell C should precede Assembly the first language should be practical, but need not to be from main-stream localised programming languages should be avoided Java should be taught after Perl/Python/etc. learn as if you were to live forever learn as many languages as possible learning how to read code and enhance existing code
Jaký programovací jazyk učit jako první a jak ho učit?
strana 15
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Jaký první jazyk pro výuku? Jazyk pro výuku by měl mít maximální podporu v syntaxi na vykládanou teorii podle příslušnosti k oboru (např. lambda-kalkul, OOP, datové modelování, ...) a co nejméně ostatního syntaktického balastu
co nejjednodušší základní knihovnu
pořadač kódu (browser)
debuger s možností krokování
příkazovou řádku nebo raději pracovní plochu
vazbu na grafické modelovací nástroje (např. UML, strukturogramy, ...) „ACM Curricula Recommendations“ ale neříkají, který jazyk to je.
Jaký programovací jazyk učit jako první a jak ho učit?
strana 16
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Vojtěch Merunka Katedra informačního inženýrství PEF ČZU Praha
Jaký programovací jazyk učit jako první a jak ho učit? Jaký programovací jazyk učit jako první a jak ho učit?
strana 17
Vojtěch Merunka, ČZU Praha
Luhačovice 2008
Slovenské a české zajímavosti
Imagine Logo
Voborníkův český Pascal Baltazar (robot Karel čarodějem)
Petr
Karel 3D Jaký programovací jazyk učit jako první a jak ho učit?
strana 18