Je mi 71 let, naučil a používal zažil jsem vše od Fortranu přes PL/I až relačním databázím a Javě a nakonec Pythonu a RPii. U Pythonu bych rád skončil. Už jsem v něm napsal vnukovi hru, to bych asi v Javě nedokázal, nyní se pouštím do paralelního programování také je v tom Python excelentní. Python je esencí toho nejlepšího co se kdy na IT poli urodilo. Long life to Python !!!
Já jsem to dokázal jak v Javě tak dokonce i v C++. Pokud jde o OOP v C++ tak jsem si řekl, že už v tom napíši tak akorát ten jeden program. Java je lepší, ale také je to se skřípěním zubů. V Pythonu je to simple clever. Já chci aby se můj vnuk dostal k počítačům tak, že se si v Pythonu naprogramuje pro RPi řízení akvaria pro rybičky nebo autodráhy a ne že bude teoreticky pitvat paradigmata OOP (ala Matfyz), ale že k tomu počítači přijde, zkusí, opraví vylepší a bude mít radost, že mu to něco reálného dělá. A to mu umožní jen Python. Konec konců jak umí Python propojovat části kódů v různých jazycích zejména C, to že má skvělé knihovny zpřístupňující snad každou myslitelnou funkcionalitu. A pokud potřebuji rychlost tak optimalizuji v C a propojím s Pythonem. Kolik už po světě pracuje amatérských robotů řízených kódem v Pythonů a kolik robotů řízených prostřednictvím Java 8.
A propos kolik je vám let, že na potkání tykáte možná o 50 let staršímu člověku, kterého ani neznáte. V KSČM nejsem a ve stejném ročníku na universitě jsme také nestudovali.
Jde o to, že díky silné typovosti je to v javě jednodušší, protože člověk vždy ví, co mu do/z kódu vyleze. A je mnohem jednodušší/bezpečnější/ve výsledku rychlejší program upravovat a rozšiřovat, obzvláště když postupně naroste. Opravdu si to chce vyzkoušet. Dělám v javě a trochu v pythonu.
S tím vykáním - sorry, ale tohle mi ani nenapadlo. Nikdy jsem tu nikomu nevykal, stejně jako většina ostatních. Nic osobně, prostě to tu tak je.
1) python má dnes také typovou kontrolu, v některých ohledech přísnější než Java (null safety).
2) v minulosti jste zde odkazoval na váš projekt na githubu. Nepíšete testy. Ze stylu bylo jasné, že nepoužíváte žádný linter.
V něčem určitě máte pravdu, ale některé vaše špatné zkušenosti mohu plynout z nedodržování best practices.
Pamatuji doby, kdy testování končilo okamžikem, kdy z kompilátoru vypadl kód a né errory. Mezi best practices patžilo rozumné pojmenování proměnných a komentáře k funkcím - plus rozumné odsazování zdrojáku, aby se to líp četlo.
Pak přišly IDE a bylo po legraci.
A nakonec různé automatizované testy, CVS a sdílení kódu - a dnes aby se jeden bál naprogramovat přepis vstupu na výstup, aby mu jiní nevyprášili kožich za bezpečnost kódu, nedodržování standardů či zvyklostí a používání vůdů místo dokumentování kódu.
Taky byly doky, kdy kružnice byla "když (x*x)+(y*y)=(r*r), vybarvi bod";
pak přišlo "nakresli kružnici o poloměru r",
potom "deklaruj geometrický objekt kružnice a poloměrem r, vykresli" -
a dneska nejdřív musí odborník na UX rozhodnout, že od kružnice uživatel očekává, že nebude mít příliš mnoho rohů.
V tom kódu jsem použil maximum typových anotací, co jsem našel. Opravdu rád bych se tu typovou kontrolu naučil, momentálně píšu v pythonu další projekt a chci typovat co nejpřísněji, protože jsem na to z javy zvyklý. Typy proměnných, výstupní typy metod, to vše samozřejmě používám. Hodně bych potřeboval generika kolekcí a "anotační" přetypování na potomka. Máš nějaké linky?
Opravdu nepíši testy, že mi z pole vyleze datový typ ten a ten. Na to jsem zvyklý z javy, že jiný díky generikům nevyleze. Nevidím přínos dynamického typování v tom, že si musím vše následně hlídat testy. Od toho mám v javě kompilátor.
Linter jsem si musel najít, co znamená, psal jsem, že python není moje doména. V pycharmu je samozřejmě integrovaný a není úplně špatný. Leč kouzla nedokáže, když tam ta informace není. Samozřejmě základní typové chyby to s typovými anotacemi hlásí rovnou. Zajímalo by mě, jak jsem tuhle informaci z toho kódu vyčetl.
Už jen třeba přidání proměnné do metody - v javě díky typům zcela spolehlivé, v pycharmu výsledek tristní. I přejmenování metody není stopro spolehlivé, nerozpozná spolehlivě stejně pojmenované metody různých tříd a to je úplný základ. Nebo existuje lepší IDE na python, než pycharm? Opět se rád poučím a využiju to.
Jestli si chce vnuk jen hrát, tak supr, na takové to domácí žvýkání dobré, ale na vážnou, větší práci to už asi stačit nebude, tam je právě pak potřeba to pitvání paradigmat, aby se z kuchtíka stal kuchař (jak tu někdo podotknul). Problémem pak je, když jsou projekty obsazeny takovými kuchtíky, to pak vypadá jak to blikání diodou.
Jako profesní Javista a Pythonista musím říct, že moderní Java (8) se mi líbí víc než Python (2/3).
Python totiž v paralelním programování opravdu excelentní není (přečtěte si něco o Global Interpreter Lock!), pokud nepoužijete čistě IO thready nebo knihovnu multiprocessing. Vytvořit v Javě (čísté! žádný JBoss) thread pool a posílat do něj úlohy je o dost jednodušší než v Pythonu. Silná typová kontrola a ekosystém (maven, funkční refaktoring v IDE..) jsou taky dost ve prospěch Javy.
Na druhou stranu.. Python a NumPy (+ pár dalších) je v tuto chvíli asi nepřekonatelná kombinace na matematické věci a Python je obecně velmi dobrý jazyk na vytváření DSL (Domain specific language), takže pro vědce ideální.
V ostatních věcech je to spíše o tom, co potřebujete. Není třeba moc rozdíl (v principu) mezi Python list comprehensions a Java streams. Funkcionální prvky mají už taky oba jazyky (Java 8). Java je relativně náročná na paměť a čistý Python zase na výkon CPU. Python rychle startuje a Java umí skvěle optimalizovat dlouhoběžící procesy.. atd.
Ale co se tématu týče: Nejlepší jazyk na výuku programování byl podle mě Pascal. Silně typovaný bez nutnosti hned používat ukazatele.. jen by to chtělo doplnit vyšší datové struktury.
Zásadně se nelišíme v názoru. Jen nahodilé poznámky. Moje zkušenosti s Javou jsou malinké, pár věcí se mi na ní líbílo.
Přesto jsem před lety skončil u Py. Má obrovské kouzlo, spojení jednoduchosti a síly či didaktičnosti. Byť tehdy to vypadalo, že nejvíc peněz je v Javě. Tehdy. :-)
Prosím rozlišovat jazyk (Python) a jeho implementaci (např. CPython s GILem).
PyPy je zajímavý na JIT optimalizaci. Zíral jsem, jakého zrychlení je schopen. Stupeň kompatibility je vysoký.
Pro výuku programování například paralelizaci nepotřebuju.
BTW, učím lidi už řadu let a když ilustruju moc modulu multiprocessing v Pythonu, lidičkám svítí oči jako mně. :-)