Společnost OpenAI rozšířila své API o nové audio modely. Nový model pro převod textu na řeč (text-to-speech model) lze bez přihlašování vyzkoušet na stránce OpenAI.fm.
Příspěvek Bezpečnost paměti pro webové fonty na blogu Chrome pro vývojáře rozebírá, proč se pro zpracování webových fontů v Chrome místo FreeType nově používá v Rustu napsaná Skrifa z Fontations.
V pátek 21. a v sobotu 22. března proběhnou Arduino Days 2025, tj. každoroční „narozeninová oslava“ platformy Arduino. Na programu je řada zajímavých přednášek. Sledovat je bude možné na YouTube. Zúčastnit se lze i lokálních akcí. V sobotu v Praze na Matfyzu.
Komunitná konferencia Bratislava OpenCamp, ktorá sa uskutoční už o tri týždne 5. 4. 2025 na FIIT STU pozná svoj program – návštevníkom ponúkne 3 paralelné behy prednášok a workshopov na rôzne témy týkajúce sa otvoreného softvéru či otvorených technológií.
Časopis MagPi od nakladatelství Raspberry Pi se s číslem 151 přejmenoval na Raspberry Pi Official Magazine. I pod novým názvem zůstává nadále ve formátu pdf zdarma ke čtení.
Japonská SoftBank Group kupuje firmu Ampere Computing za 6,5 miliardy dolarů. Ampere Computing vyrábí 32-128jádrové procesory Ampere Altra a 192jádrové procesory AmpereOne.
Byla vydána (𝕏) nová verze 2025.1a linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek v oficiálním oznámení na blogu.
Po půl roce vývoje od vydání verze 47 bylo vydáno GNOME 48 s kódovým názvem Bengaluru. Přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře. Vypíchnout lze počáteční podporu HDR, nová výchozí písma Adwaita Sans a Adwaita Mono, přehrávač zvukových souborů Decibely, Pohodu v Nastavení (Digital Wellbeing), …
Engineering Open House v Red Hatu v Brně proběhne v pondělí 31. března [Facebook].
Byla vydána nová stabilní verze 7.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 134. Přehled novinek i s náhledy v příspěvku na blogu.
Řešení dotazu:
V pythonu je aspoň jednoduchá a moc nevyčnívá.Že je jednoduchá… to je relativní pojem, ale že nevyčnívá, to je pravda.
V pythonu use toho dá napsat docela dost jen s tim co mas v builtinech.A hlavně se to dá zkoušet bez napsání jediného skriptu.
V pythonu je prave ta magie velice slozita. Zkuste si popsat treba popsat cyklus for: Na ten potrebujete objekt, pres ktery jde iterovat.Tomu se říká abstrakce. A Python má úroveň abstrakce velmi přívětivou (samozřejmě nejen Python).
Takze musite popsat, co je objekt a jak se iteruje.Není potřeba. Co je to objekt vnímají lidi intuitivně. Iterovatelný objekt se rovněž nemusí vysvětlovat, protože každý někdy viděl (telefonní) seznam (mladší ročníky alespoň ten svůj v mobilu). A každý někdy dělal nějakou rutinní práci, kdy musel z hromady (řady) brát jednu věc za druhou a něco s ní udělat (na což přesně funguje pythoní for cyklus).
Kdyz to same budete delat v C, tak vam staci podminka a skokySkoky použité ke zpracování cyklů jsou pro začátečníka nepříjemně nízkou úrovní abstrakce. Člověk běžně nepřemýšlí na té nejnižší úrovni abstrakce. Například při mytí sklenic se snaží „umýt každou sklenici, která je na lince“, ne „label START, podmínečně skočit na label STOP pokud je na lince nulový počet sklenic, vzít sklenici, umýt sklenici, skočit na label START, label STOP“. Je fajn, že céčko ty skoky umožňuje dělat značně pohodlněji pomocí cyklů, ale pokud člověk neví, jestli kdy bude chtít být programátorem, je mnohem vhodnější úrovní abstrakce ta Pythoní.
A hello world v C++ napisete bez namespacu celkem v pohode, muzete totiz pouzit cstdio.h.Dokonce i v Pythonu se dají posílat řetězce na výstup pomocí POSIXových rutin a oproti nim je ANSI stdio docela vysoká úroveň abstrakce :).
Srovnej si to třeba s Javou kde nejde napsat ani Hello world bez objektu a statické metodyA v čem je problém?
Ale to ich aspon nauci programovat. Ja som dlhe roky pracoval v Pascale, Delphi, a ked som presiel na C, tak som bol mimo. Pascal ma dost "rozmaznal" doslova ma vodil za rucicku toto mozes, toto uz nie. C-cko ma naucilo davat si pozor na to, co robim.
Dnesni programatori robia v style: toto si naklikam, ono to nejako skompiluje, optimalizacia a pochopenie co sa vlastne deje je nulova.
myšleno pro bežného uživatelePro běžného uživatele doporučuju jazyk, kde každý řádek něco znamená a který je co nejméně spjat se znalostí hardware a ke kterému existuje slušný interaktivní interpret. Mně osobně napadá Python 3 (kvůli bordelu, co se naskládal v Pythonu 2). Použitejnost je všude kromě webových browserů. Nicméně, na webovém javascriptu se nic nenaučí, ztratíte příliš mnoho času řešením problémů s běhovým prostředím, nehledě na to, že většina věcí na webu lze bez javascriptu. A ty, co se bez JS neobejdou jsou na začátečníka příliš složité. Jo, kdyby se učili javascript jako obecný jazyk, tak by se to dalo. Ale to se v praxi vyskytuje spíš okrajově a lidi tomu nevěří.
Starší kolega jim chce ukázat makra (12hodin) v excelu a pak s nimi tvořit prezentace a psát ve wordu. To se mi zdá málo. Jaký je váš názor?Python by je alespoň seznámil s příkazovou řádkou a se způsoby, jak dělat věci primitivně a jednoduše, což je dobré. Makra v excelu jsou docela overkill, na to, co se s tím dá rozumně dělat a není při tom vidět, že počítačový program je obyčejný soubor. Jinak kdo bude umět trochu Pythonu, může směřovat do mnohých českých firem, které ho používají na všechno možné. Učit psaní ve wordu je dost náročné, protože ti lidi se to naučí sami a špatně. Ten nástroj je celý špatně postavený (i když v novějších verzích se snažili), takže bych maximálně věnoval chvilku vysvětlení, co jsou to styly a jak se používají a praktické ukázce. Hodina, maximálně dvě. Prezentace? Podle mě ztráta času, ale hodina se tím zabít dá. Lidi by se měli především učit jak prezentovat, ne jak naplácat do slajdu skákající písmeka. Makra v tabulkách se občas hodí, ale spíš bych to viděl na ta nejjednodušší (suma nějakého sloupce apod), rozhodně bych se z nich nesnažil dělat programovací jazyk. Když budou chtít plácat programy do maker, naučí se to mimo školu.
Jo, kdyby se učili javascript jako obecný jazyk, tak by se to dalo. Ale to se v praxi vyskytuje spíš okrajově a lidi tomu nevěří.JavaScript je totiž příšerný jazyk.
No lepší než PHP, ne?Cokoliv, co bylo od začátku navrhováno jako reálný programovací jazyk bude zpravidla lepší než cokoliv, co bylo od začátku navrhováno jako šablonovací systém :). Výjimky se najdou, ale Javascript a PHP jimi rozhodně nebudou :).
var
a je veseloundefined
a null
typeof
0707
je v osmičkové soustavě a číslo 0708
je v desítkové soustavěnew Array(2)
i pole new Array(1, 2)
mají 2
prvkypublikum budou všechno lidi dobří v maticeZáleží, z jakého konce se to vezme. Já bych se inspiroval například kurzem Haskell For Kids: 1-8, kde žádné hluboké znalosti matematiky nejsou třeba.
Pokud chceš jazyk, který se prakticky používá, tak doporučuji Haskell nebo Erlang.Nemám statistiky, zda je více používán Erlang, nebo FORTRAN 77, ale skoro bych se vsadil, že ten druhý. Toť můj komentář k používanosti.
Pokud zkurvíš mozky další generace Pascalem, budiž proklet na věky věkův.Proč?? Náhodou mi přijde ten Pascal z výše vyjmenovaného jako celkem dobrá varianta. Pokud se vykašle na ukazatele, tak je to pohoda - žádný problém se správou paměti, každý řádek kódu je snadno vysvětlitelný. Tak co?
Pokud se vykašle na ukazatele, tak je to pohoda...Vzpomněl jsem si na legendární kód jednoho našeho profesora (schválně, kdo uhodne jeho jméno a fakultu
var LUk, PUk: Tuk;
PS: dokonce i na MIT se donedavna zacinalo Pascalem a Lispem.A čím se tam začíná teď?
V Jave je to vsechno tak nejak "obracene", drive nez studentum vysvetlite co je to promenna, datovy typ, if-else, tak musite nejdrive vytvorit projekt, package, tridu, metodu, static metodu, ...To mi na Javě dost vadí. Když spustím Python a napíšu první příkaz, tak hned vidím, co to udělá. Postupně to mohu rozšiřovat o proměnné, podmínky, cykly, funkce, objekty,... Přesně tak jak potřebuji postupovat a žáci nejsou zahlceni tunou deklarací.
Myslim, ze Pascal nahradili Javou.OK.
Preci jenom dneska, kdyz nekdo nastoupi do prvaku na vejsce, tak tak uz nejaky IDE ovladat umi - neni to uplnej amater.Nevidím souvislost.
Pokud je jde o vyuku zakladu programovani, tak je Borland Pascal skvela vec.Nic skvělého na starém Pascalském kompilátoru, IDE ani tvorbě dosovských aplikací se všemi jejich omezeními v dnešní době jaksi nevidím. Užitečnost nabytých dovedností je taky značně pochybná.
Cely "projekt" mate v jednom souboru,Měl jsem pascalovské projekty ve více souborech a navíc jsem to považoval za výhodu :).
nikde se neda nic nastavitA proto nám padal kód od učitele, dokud jsme nezapnuli zkrácené vyhodnocování, ne?
a vy to musite dostat i do lidi, ktery to vubec nebaviTo je omyl vycházející z dlouhodobé profesní deformace.
Pro vyuku potrebujete co nejjednodussi IDE, ktere se da vysvetlit i tem nejvetsim ignorantum za pul hodiny.Když použiješ s/IDE/nástroje/, tak by se s tím dalo částečně souhlasit.
V Jave je to vsechno tak nejak "obracene", drive nez studentum vysvetlite co je to promenna, datovy typ, if-else, tak musite nejdrive vytvorit projekt, package, tridu, metodu, static metodu, ...Java je značně těžkopádná a osobně bych ji na výuku nedoporučil.
Pokud zkurvíš mozky další generace Pascalem, budiž proklet na věky věkův. Amen.Tolik expresivity a žádné zdůvodnění nevhodnosti Pascalu pro výuku.
Vzato kolem a kolem, python je první co by mě při čtení těchto bodů napadlo. Ale rozhodně ne jediný.Až na silné typování. Už jenom funkce a objekty mají slabé typování (typ argumentů lze kontrolovat jen běhově, atributy i metody se vyhledávají podle jména a jejich existence je opět pouze běhová). Automatická reinterpretace datových typů standardními prostředky jazyka a knihovny taky silnému typování nepřispívá. Zajímal by mě jazyk, který všechny tyto požadavky splňuje a taky by mě v něm zajímal nějaký ukázkový reálný kód a jeho příjemnost či pochopitelnost pro začátečníka.
A většina lidí se víc než jeden jazyk nenaučí.I kdybys měl nakrásně pravdu, je velký rozdíl mezi korelací a kauzalitou. Znalost jednoho jazyka nebrání získání znalosti druhého jazyka. Když člověk umí programovat (přemýšlet o programech), jazyk se naučí během chvilky.
To je na dlouhé povídání. Dám radší příklad – když se v našich krajích začalo prosazovat php, nikoho z pascalovské generace jsem neviděl používat foreach. Nikdy. Lidi byli prostě naučení že jediný způsob jak procházet struktury je přes numerický index, a když jsem se na tohle téma bavil tak se vždy ukázalo že vůbec nechápou princip iterátoru. Pascal je nenaučil programovat, jen opisovat jednu šablonu.Pokud zkurvíš mozky další generace Pascalem, budiž proklet na věky věkův. Amen.Tolik expresivity a žádné zdůvodnění nevhodnosti Pascalu pro výuku.
Pascal je nenaučil programovat, jen opisovat jednu šablonu.V čem se jiné jazyky liší?
V čem se jiné jazyky liší?Pokud to srovnám s pythonem, IMO cokoliv z toho mála co se dá učit na pascalu se dá v pythonu vysvětlit stejně dobře. S tím rozdílem že v pythonu můžu od jednoduchých věcí přejít ke složitým aniž bych musel bojovat se umělými omezeními které měly dokazovat něčí dávno neplatnou fantazii o "správném" programování. Ano, ve světě který by se skládal jen z pascalu a C by pascal měl opodstatnění protože by byl jednoduchý (a skalní pascalisti se zkurvenými mozky tak často svět vidí). Jenže ve skutečném světě je dost dobrých jednoduchých jazyků. Python sám není bůhvíjak skvělý, to Pascal je tak primitivní.
To zní logicky, ale mělo by to znamenat že mezi nepascalisty by měl být podobný poměr mezi začátečníky a profíky. Což se mi nezdá, ale zase tolik nepascalistů neznám takže se hádat nemůžu.Spíš to neznamená v podstatě vůbec nic.
Ale když pak do náš začali na škole nalejvat pascalovský idiosynkrazieSpecifikuj :).
Specifikuj :).První na co si po těch letech ještě vzpomenu je nasrání že to neumí funkce s proměnným počtem argumentů. Nemělo to žádný makrojazyk. Středníky to používalo podivným způsobem takže někam se dávat musely a někam nesměly. Zabudované typy byly nedostatečné a vlastní typy méněcenné. Minimum operátorů. Nedomyšlený knihovní systém který si neporadil s rekurzivními závislostmi. Strukturované konstrukce neměly break ani continue a simulovalo se to přes pomocné proměnné… fuj, je mi blivno jen na ty hovadný léta pomyslím.
Nic z toho mi nepřijde, že by překáželo v základní výuce programování.Jinak řečeno, ten jazyk je blbej, ale ne tak moc aby se nedal použít. Sotva polovina toho co se v něm člověk naučí je zbytečná a vysloveně škodlivá ještě méně tak jakýpak copak… Ať si haranti zvykaj že život není peříčko, co?
Mimochodem pár věcí by mohlo být specifické pro borland a nemuselo by u jiných implementací platit.Většina. Ale tím je to horší, nemohu než citovat klasika (Doporučuji přečíst celé, je to velmi poučné.):
… Because the language is so impotent, it must be extended. But each group extends Pascal in its own direction, to make it look like whatever language they really want. Extensions for separate compilation, Fortran-like COMMON, string data types, internal static variables, initialization, octal numbers, bit operators, etc., all add to the utility of the language for one group, but destroy its portability to others. …To je jádro pudla. Nejde (jenom) o to portabilitu učit, je to hlavně prostředek jak jazyk udržet aktuální. Python byl původně podobně primitivní jako pascal, ale díky lepšímu návrhu a fungujícímu standartizačnímu procesu do něj bylo postupně doplněno spousta věcí (včetně takových drobnůstek jako jsou objekty). Jak vidno z výše citovaného textu pascal byl zastaralý už v době kdy byl stejně starý jako je dnes python a java.
Jinak řečeno, ten jazyk je blbej, ale ne tak moc aby se nedal použít.Tak. I když hodně záleží na dialektu.
Sotva polovina toho co se v něm člověk naučí je zbytečná a vysloveně škodlivá ještě méně tak jakýpak copak…Tady už jsme se myslím shodli na tom, že se neshodnem :).
Ať si haranti zvykaj že život není peříčko, co?To rozhodně, nezávisle na nějakém pascalu.
break
a continue
tam jsou.je nasrání že to neumí funkce s proměnným počtem argumentů - to je spíše dobře.I kdyby na tom bylo něco špatného, tak by to ten jazyk měl umět aby šlo názorně ukázat _proč_ je to špatně. Výuka zatajováním je kravina. Je to něco co se používá neustále a ve spoustě jazyků, nelze zavřít oči a dělat že to neexistuje.
Středníky se používají naprosto normálně, pravděpodobně je to narážka, na středník za „end“ kde se píše jen za „posledním“ (ne před else apod.). To je snad jediné co mě napadá.Středníky jsou v pascalu oddělovač (separator) nikoliv terminátor jako v C & co. V Céčkových jazycích může být všude, i jako "prázdný" výraz. V pascalu se často musel odmazávat nebo přidávat. Žádný moderní jazyk (dokonce ani Java která se jinak v syntaktické buzeraci vyžívá
Zabudované typy byly nedostatečné a vlastní typy méněcenné. co je tím myšleno?String omezený na 255 znaků. Každá délka pole byla vlastní typ. Nedomyšlené priority operátorů. Neexistující asociativní pole. A aby to náhodou nešlo spravit, definice vlastních typů byla dokurvená tak aby byly k ničemu.
Zcela záměrně nejsou a verze pascalu o které je řeč to neuměla (pavlix se ptal na idiosynkrazie který do nás lili ve škole, čili BP 6.0). Wirth je zastánce filozofie "jeden vstupní bod – jeden výstupní bod" která už mezitím zastarala (resp. pro netrivialní programy nikdy nefungovala). A pokud jazyk potřebuje 30+ let na standartizaci takové základní věci, tak to samo o sobě něco říká.break
acontinue
tam jsou.
já se nesměle přidam, možná sem úplně mimo Nedomyšlený knihovní systém který si neporadil s rekurzivními závislostmiPřesně to. Knihovní systém který neumí zbuildit projekt načisto naučí člověka leda to, jak knihovní systém nemá vypadat. BTW ještě než to někdo vypálí – nestandartní rozšíření té nebo oné mutace pascalu na věci nic nezmění, dokud zůstanou "nestandartní". Já si ještě pamatuju jak mi pascalisti říkali že Delphi většinu debilit pascalu nemá a že učit se céčko je ztráta času. A taky jak mi jeden starší fachman trpělivě vysvětloval že "céčko je standartizovaný a co se v něm naučíš, to se nikdy neztratí". Pak Delphi chcíplo a zbytek je historie
jakože tohle?
Středníky jsou v pascalu oddělovač (separator) nikoliv terminátor jako v C & co. … Žádný moderní jazyk (dokonce ani Java která se jinak v syntaktické buzeraci vyžíváV Haskellu středník funguje jako oddělovač. V jazycích z rodiny ML je středník binární operátor, který vyhodnotí levý výraz a zahodí jeho hodnotu, poté vyhodnotí pravý výraz a vrátí jeho hodnotu. Takže funguje také jako oddělovač.) tuhle pitomost nepřevzal.
I kdyby na tom bylo něco špatného, tak by to ten jazyk měl umět aby šlo názorně ukázat _proč_ je to špatně. Výuka zatajováním je kravina.Přeci nechcete, aby první jazyk obsahoval každou špatnost jen kvůli tomu, aby se řeklo, že je to špatné a nemá se to používat.
Přeci nechcete, aby první jazyk obsahoval každou špatnost jen kvůli tomu, aby se řeklo, že je to špatné a nemá se to používat.Nemá používat? Tohle přesně ilustruje jak přihlouplé "výukové" jazyky kazí mozek. Je to součástí většiny moderních jazyků a BUDE se to používat ať se to Wirthovi líbí nebo ne. "Výukový" jazyk by tě tedy měl naučit co je na tom nebezpečné a jak si s tím poradit.
Tohle přesně ilustruje jak přihlouplé "výukové" jazyky kazí mozek.Řekl bych, že omezení na pevný počet argumentů je úplná drobnost proti tomu, jak C++, Java, C# a i další jazyky spojují dědičnost a podtypy – aby jste mohl vytvořit podtyp, musíte použít dědičnost. A přitom obecně podtřída nemusí být podtyp a ani podtyp nemusí být podtřída.
aby jste mohl vytvořit podtyp, musíte použít dědičnost.Interfaces v Javě?
A přitom obecně podtřída nemusí být podtypTo musí být nějaká zvláštní definice podtřídy.
Interfaces v Javě?Máte pravdu, pro C# a Javu jsem měl napsat: podtyp třídy jde vytvořit pouze pomocí dědičnosti (tj. vytvořením podtřídy).
A přitom obecně podtřída nemusí být podtyp.Stačí do nadtřídy dát metodu
foo(x : self)
, kde self
reprezentuje typ aktuální třídy. Když by nadtřída A
měla takovou metodu, tak ji podtřída B != A
zdědí. Ve třídě A
značí self
typ A
, ve třídě B
značí self
typ B
. Když by B <: A
(B
je podtyp A
), tak musí platit foo(x : B) <: foo(x : A)
, a tedy musí A <: B
(pozice argumentu je kontravariantní), což ale neplatí (použitím B <: A
a antisymetrie <:
dostaneme A = B
).
class A { // zde je self typ A bool equals(self x); } class B : A { // zdědí následující metodu, // zde je self typ B bool equals(self x); void novaMetodaKteraNeniVA(); }Když by třída
B
byla podtyp třídy A
, tak můžu instance A
nahradit instancemi B
. V následujícím kódu však nejde nahradit a'
instancí třídy B
, neboť metoda equals
třídy B
požaduje více (konkrétnější typ) než metoda třídy A
:
A a = new A(); A a' = new A(); a'.equals(a);Mnoho staticky typovaných jazyků s podporou OOP však nepodporuje typ
self
– výjimkou je například OCaml.
Pak Delphi chcíplo a zbytek je historie- kéž by, stále si sem tam musím omlátit ruky od psaní begin/end.
To je na dlouhé povídání. Dám radší příklad – když se v našich krajích začalo prosazovat php, nikoho z pascalovské generace jsem neviděl používat foreach.[rejp]To může být i tím, že jim PHP připadalo jako zprasené céčko :).[/rejp]
Nikdy.Myslím, že se ti i tady na Abclinuxu ozve hromada protipříkladů :). Můžeme začít u mě.
Dnes je překonán a nahrazen.Čím?
Vším. Jediný Správný Programovací Jazyk neexistuje. Každý má své nedostatky a přednosti. Mohu napsat název kteréhokoli z nich a najdu tady příznivce i odpůrce. Dělám v PHP, ale vidím jeho chyby. Nemám rád Javu, ale vidím její přednosti. Obdivuji stručnost Pythonu, ale také má své mouchy. Naučit se C++ je náročné, ale výnosné. Co vybrat? Pokud bych šel cestou názornosti, od jednoduššího ke složitějšímu, vybral bych Python. Pokud ho někdo nezvládne, asi nemá smysl ho učit Javu a už vůbec ne C++. Pokud ho zvládne, může ho dál používat jako velmi praktický nástroj. Může také přejít na Javu či C++. Myslím si, že si přenese spíš dobré návyky.Dnes je překonán a nahrazen.Čím?
Já kdybych hledal výukový jazyk tak budu chtít: ...Krom silných typů - MATLAB! Na zamýšlený účel to fakt není, ale při přečtení těch požadavků si na nic jiného nevzpomenu. Ve srovnání snad se všemi jinými jazyky, ve kterých jsem něco dělal, z toho je vidět obrovská inženýrská pragmatičnost. Zajímal by mě názor "hardcore" programátorů, pokud tu někdo takový MATLAB zná. Vždycky si říkám, že tihle lidé dbající na čistotu kódu a konceptů by se zbláznili, vidět jak se v tom programuje. Ale používá se to fakt dobře, i v základních konceptech, když zapomeneme na matematiku a matice.
null
.
Zkuste třeba říct, co a proč dělá následující kód (samozřejmě bez pomoci kompilátoru Integer
nebo vypíše Object
nebo se nepřeloží.
interface A<T> { void doIt(T x); } class B implements A<Integer> { public void doIt(Integer x) { System.out.println("Integer"); } public void doIt(Object x) { System.out.println("Object"); } } class Main { public static void main(String[] args) { B b = new B(); b.doIt(null); } }
Řekl bych, že zrovna tohle je docela logické…Pokud víte, jak Java překládá generika, tak ano.
Další jeho výhodou podle mne je, že pokud chcete přijít na to jak něco udělat, stačí hodit do Googlu požadovanou činnost a LaTeX a dost často, i když ne vždycky najdete co hledáte.A pak nad tím dva dny laborujete, i když máte celou dobu pocit, že je to tak jednoduchá věc a vůbec nechápete, proč to nechce jít. Navíc práce s latexem není moc zábavná, programování ano.
Navíc práce s latexem není moc zábavná, programování ano.To ano, ale k té zábavě se při jedné hodině za týden nedostanou. Nenechte se zmást, třída na průmce není partička zvědavých nadšenců, kteří se budou těšit, až se naučí něco nového, budou hltat každé slovo a zkoušet, jak věci fungují. Nené, ani náhodou. Takový tam bude jeden, dva. Zbytek bude mít dosti velké problémy vymyslet triviální algoritmus, nebo napsat pár řádek kódu. Výuka bude muset být šíleně pomalá, aby se alespoň větší část třídy chytala.
Nenechte se zmást, třída na průmce není partička zvědavých nadšencůMám příliš mnoho zkušeností, abych se nechat zmást mohl ;).
To ano, ale k té zábavě se při jedné hodině za týden nedostanou.Právě proto se ta zábava musí dělat i s „nudnými“ základy. V programování je možné vytyčit cíl (jakkoli malý) a splnit ho. Tedy alespoň při jednoduchých úlohách. S latexem když si vytyčím cíl, tak následuje několik pokusů o splnění a následné hledání kompromisu.
Zbytek bude mít dosti velké problémy vymyslet triviální algoritmus, nebo napsat pár řádek kódu.Musí se přizpůsobit úroveň a způsob výkladu i zadání úkolů.
Naučí se alespoň trochu pracovat s kódem, řešit problémy a třeba to i někteří z nich budou moci prakticky využít.Programování na střední škole není od toho, aby se z někoho v hodinách stal programátor. Jediným cílem by mělo být ukázat lidem možnosti. Dneska se většina lidí podceňuje. Jednoduchý vlastnoručně napsaný program v programovacím jazyce (třeba o deseti řádcích) může mít pro mnohé velký psychologický význam :).
Mě se LaTeX zdá taky jako vcelku dobrý nápad.Mně se zdá příliš složitý a těžkopádný. Kdybych uměl něco jiného, co by splňovalo mé požadavky, tak bych na něj nesáhl ani hráběmi. A nevím jak na průmce, ale na gymlu všichni slintali z barevných věcí a naplácaných obrázků. Mám trochu podezření, že středoškoláci, domácí uživatelé kradených wordů a powerpointů, budou z latexu trochu rozpačití a budou mít pocit, jako bys jim předložil MS-DOS nebo Turbo Pascal.
'+-'*10
) a při 3 řádcích se to už hýbe. Python se mi pro tyto účely jeví jako velmi vhodný.
No abych to shrnul: Vždy jsem doporučoval nízkoúrovňový ale procesoru ne-vzdálený jazyk => C++Obecná užitečnost C++ je myslím čím dál tím menší. Zatímco C samo o sobě neimplementuje OOP (tudíž lze OOP v C vnímat jako flexibilnější) a Java je takový standardizovaný enterprise jazyk střední úrovně, a Python (Ruby, Lua a další) jsou vysokoúrovňové jazyky, C++ z hlediska výuky přináší spíš bordel, než cokoli jiného. Samozřejmě nezpochybňuju C++ v různých výpočetně náročných aplikacích. Ale C++ jako začátečnický jazyk mi přijde jako nesmysl, už jen pro to, že jeho spodní vrstva, které se nelze vyhnout, je C.
Vše co výuka algoritmizace potřebujeNějaký příklad?
Vždy jsem doporučoval nízkoúrovňový ale procesoru ne-vzdálený jazyk => C++, a to platí pořádTo jsem si na SŠ zažil. Měli jsme dobré score, pochopili jsme ho dva z dvaceti, jen proto, že já tou dobou už používal po pascalu python a kolega dělal v PHP, takže měl trochu tušení o čem je řeč. Zbytek třídy .. nemám ani chuť to popisovat, průměrná známka byla někde okolo 4 a při zmínce o programování všichni projevovali takovou známku frustrace, že lepší nevědět. Python jsem se naproti tomu naučil sám a neměl s tím problém ani můj bratr, kterému tenkrát bylo něco okolo 13/14.
většina lidí na programování prostě nemá mozekOmyl.
mozek pokroucený matematikouMatematika IMO spíše pomáhá.
Matematika IMO spíše pomáhá.Některé její oblasti ano, ale většina z ní vyžaduje myšlení velmi odlišné od "programovacího". Jasně že bez logiky, lineární algebry a teorie grafů se člověk pořádně nehne, ale když dojde na to, jak vlastně rozložit obsáhlý problém na části a pak ho zas poskládat do programu, tak je potřeba dost odlišný styl myšlení. Co jsem viděl programy matematiků a lidí vrtajících se hluboko v algoritmech, snad vždy to byl hrozný hnůj. Algoritmy elegantní a efektivní, ale věci jako architektura, udržovatelnost a rozšiřitelnost jim nic neříká.
ale většina z ní vyžaduje myšleníOna je velká výhoda, že většina zní právě požaduje myšlení, byť do jisté míry odlišné.
Co jsem viděl programy matematiků a lidí vrtajících se hluboko v algoritmech, snad vždy to byl hrozný hnůj.To je všechno pravda, jen ten závěr je dle mého názoru zcela chybný. Matematika, logika a schopnost navrhovat efektivní algoritmy jsou pro vývojáře větších celků software velkým plusem. Teda pokud se z něj nestane úchyl na algoritmy a nepíše drobet rychlejší implementaci datových struktur v době, kdy je potřeba řešit, aby program něco dělal. Pochybuju, že kdyby ti tvoji špatní programátoři dokázali zapomenout kus matematiky, že by se tím z nich stali lepší programátoři :).
Tohle je hodně blbě vytržené z kontextu.ale většina z ní vyžaduje myšleníOna je velká výhoda, že většina zní právě požaduje myšlení, byť do jisté míry odlišné.
Pochybuju, že kdyby ti tvoji špatní programátoři dokázali zapomenout kus matematiky, že by se tím z nich stali lepší programátoři :).To ani omylem. Ale myslím, že je lepší začít programováním a pak teprve se k tomu naučit tu matematiku. Tím si člověk na začátku pokroutí mozek vhodným směrem, matematika mu sice bude dělat trochu větší potíže, neboť pro něj bude těžší matematiky pochopit, ale bude o to lépe programovat. Ve výsledku bude mít v hlavě stejné znalosti, ale bude myslet jiným způsobem.
Ale myslím, že je lepší začít programováním a pak teprve se k tomu naučit tu matematiku.A úplně nejlepší je věnovat se tvorbě teorie, zda je lepší začínat bušením kódu nebo učením se matematiky, logiky, algoritmů a dalších teoretických disciplín.
#include <karel.h>
a hotovo. Z toho jim na nic bude jen popis pár funukcí.
Možná bych jim moc nechtěl vysvětlovat třeba abstraktní třídy na Pythonu :DČerná magie by neměla být součástí základní výuky :).
Sáhnul bych po C, ale rozhodně bych vynechal C++. Pokud pak chceš pokročit dál a učit objekty, je rozumný Python nebo Java, ale až budou umět C.Už vidím, jak je za pár hodin naučí ladit C a za dalších pár hodin objekty (třebe v Pythonu, to už je jedno).
Správnost především! Je snazší zrychlit správně pracující program, než donutit rychlý program, aby pracoval správně.
a ejhle, po čase se zjistí, že úprava nebyla co do funkcionality zcela ekvivalentníTo se nemá zjistit po čase, ale hned. Buď můžeš mít napsané testy, které to odhalí (aspoň jednotkové, ale lépe komplexní testy), nebo si uděláš ruční testy před a po velkém refaktoringu/optimalizaci – porovnáš výstupy a chování dvou verzí programu.
Takže je nakonec lepší se tou rychlostí zabývat už během první iterace.Souhlas v tom smyslu, že by se neměly dělat prasárny a očividně neefektivní a hloupý kód. Opačný extrém je ale předčasná optimalizace – tam se vyplácá čas a energie, zhorší se čitelnost, rozšiřitelnost… jenom kvůli optimalizaci, která se projeví jen minimálně nebo vůbec. Z didaktického hlediska mi přijde lepší, když nejdřív člověk programuje neefektivně, ale správně a časem se učí různé fígly, jak to zrychlit a vynechat zbytečné kroky – než aby ze začátku psal rychlé, ale prasácké programy a vytvořil si˙tak špatné návyky ohledně OOP nebo používání funkcí, procedur, stavby programu…
Ja by som asi isiel do toho Pythonu. Nie kvoli tomu, aby som ich naucil programovat, ale preto, aby som im dal moznost zistit, ci by ich take nieco bavilo a mohli sa tomu venovat, pripadne dat im nejake dalsie odporucania, poradit, sukromne poradit, ak niecomu nebudu rozumiet atd.. To je, myslim si, jediny realny ciel, ktory mozete splnit za jednu hodinu tyzdenne.
Potom napiste, ako to skoncilo. Precitat si nejake pozorovanie a vzdy hodi. Drzim palce.
Tiskni
Sdílej: