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? strana 1
Motivace dříve strana 2
Motivace... pokračování dnes strana 3
Obsah presentace Vymezení pojmu informatika Přehled programovacích jazyků Pokus o závěr strana 4
Vymezení pojmu Informatika Computing Sciences Computer Science Information Systems Software Engineering Computer Engineering Information Technology strana 5
Computer Science strana 6
Information Systems strana 7
Software Engineering strana 8
Computer Engineering strana 9
Information Technology strana 10
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 software methods and technologies systems infrastructure UML BPMN Ruby, Self, Smalltalk C#, Delphi, Java, Python LISP, Scheme vývojáky C BPEL strukturogramy PROLOG IDL SQL XML computer hardware and architecture objektové asemblery imperativní funkcionální paradigma výpočtu deklarativní strana 11
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 strana 12
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: strana 13
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 strana 14
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 strana 15
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. strana 16
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? strana 17
Slovenské a české zajímavosti Imagine Logo Baltazar (robot Karel čarodějem) Voborníkův český Pascal Petr Karel 3D strana 18