Ono, na goto/jump neni nic spatneho. Jen se to musi pouzivat spravne. Goto je prikaz, ktery pouzivaji struktury typu cyklus, funkce, procedury, casovace, switch, if... vsechno, kde se nejakym zpusobem odskakuje.To, co zavrhuje on je pouzivat to mimo linearni struktury, protoze pak se jen tezko orientuje v tom, co program dela nebo, co priste udela. Dobry programator si s tim poradi, ale novacek se ve svem kodu nedokaze pak vyznat.label1: goto label3label2: goto label3label3: goto label4label4: goto label1A mezi temi prikazy jsou dalsi goto odskoky a jine prikazy, podminky. Proste, takhle se v tom nevyznate. A pritom muze jit jen o obycejny while, for cyklus nebo jednoduchou if podminku.Ale, samozrejme, nektere slozitejsi problemy by bylo uspornejsi resit prave pres goto. Linearni struktury pridavaji treba desitky skoku navic, zpomaluji program. Disassembler vam z EXE zpetne da ASM kod programu, neni problem. Ale uz to nedokazete prevezt do bezneho prog. jazyka, ktery nezna goto prikazy :) To je takova dalsi nevyhoda. Nebo vyhoda, ze se ve vasem programu nedokaze orientovat kde kdo, nepozna treba slepe ulicky atd... Byl by to dobry zpusob proti hackerum. Jen ti nejlepsi by takovou ochranu dokazali obejit.
Tak není nic špatného.Jakákoliv nelineární struktura kódu interně vede na skoky, samozřejmě. A všechno to můžete naprogramovat s minimalistickými prostředky (např. původní FORTRAN). Ale člověk se v tom ztratí a nadělá chyby, proto je lepší např. z cyklu přejít na další iteraci pomocí continue nebo vyskočit pomocí break, než použít goto.Algol 60 v tomto nebyl důsledný a goto se v takových případech muselo použít.A mimochodem continue i break se dá obejít a přitom nepoužít goto, ale čitelnosti kódu to neprospěje.Programovací jazyk svými prostředky programátora navádí k nějakému stylu, ale napsat slušný program lze v jakémkoli jazyce a naopak, v jakémkoli jazyce lze spáchat programátorskou prasárnu.Ostatně Knuth: Art of Computer Programming uvádí algoritmy v assembleru.(Bill Gates prý řekl: "If you think you're a really good programmer… read (Knuth's) Art of Computer Programming… You should definitely send me a résumé if you can read the whole thing."
Cyklí se ti to.
bez goto by se zhroutil svět, asembler je plný jumpů B-]jump if not equal B-] jump.. tuc, tuc, jump! B-]
Dijkstra byl hlavně teoretický informatik (tedy v podstatě matematik) a přistupoval k programování velice striktně a formálně (známá je jeho kniha algoritmů, kde poznamenal "žádný z těchto algoritmů jsem v praxi nezkoušel, ale vím, že jsou správně, protože jsem to formálně dokázal"). Nejsem profesionál, ale pokud vím, tak takový striktní přístup je v praxi, zejm. u velkých projektů, nepoužitelný.Na druhou stranu, kdyby každý z nás přistupoval k práci alespoň z 1/10 tak svědomitě jako Dijkstra, svět by byl určitě lepším místem.Rozhodně se jedná o jednu z největších osobností v dějinách informatiky.
"Dijkstrovi rukopisy"?Kdyz uz, tak "rukopisove". 😀
Hned pod tím došlo k přejmenování na Djikstra :-/
Critical section se překládá jako "kritická sekce", ne krizová. A lépe bych to popsal jako část programu, kde je nutno zajistit, aby v danou chvíli mělo pouze jedno vlákno přístup k nějakému sdílenému prostředku (z důvodu zajištění konzistence apod.).Jsou i složitější scénáře, ale takto to asi stačí.
"pouze jedno" není pravda, jsou kritické sekce, kde může být více vláken najednou (třeba když všechny co tam jsou jen data čtou).
Však píšu že jsou i složitější scénáře.
.. a proč by nemohly i zapisovat? v pythonu to není problém.. with lock blabla B-]
..ono taky nemusí do pam. prostoru zasahovat jen "vlákno", počítače z tý doby neměly kopce procáků jak teď, to byl jeden procák jedna cimra B-]
K článku jako vždy není co dodat, vypíchl jsem jednu věc, která mě zaujala v souvislostí s dnešními trendy „volné” výchovy dětí (bezpohlavní výchovu nechám raději stranou, bylo by mi zle – volba přírody ne člověka), případně snahy o snížení objemu učiva na školách, děcka se nám prý „přetěžují” a sice: „Byl rodiči veden ke vzdělání, kterému se mu dostalo v mnoha oblastech na velmi dobré úrovni. Ať už šlo o jazyky, matematiku nebo chemii.”, vychází mi z toho, že jak všichni lidé nejsou stejní a od narození nemají stejné schopnosti a tedy ani možnosti (už tedy víme proč socialismus nefunguje), tak není možné přizpůsobovat úroveň výuky směrem k těm méně schopným (podprůměrným). Příklad, nemáš na to udělat maturitu z matiky, mít ji prostě nebudeš, bez obecných základů nebo minima nutného k tvému oboru prostě ne.
Volná výchova nijak nesouvisí s kvalitou vzdělání. Stejně tak jako s ní nemá souvislost ani trend snižování požadavků na znalosti. Rozuměj - i dítěti s volnou výchovou se může dostat kvalitního vzdělání (výsledek teď opomíjím - podstatná je vzájemná souvislost, která neexistuje) a kvalitní vzdělávací instituce nemusí snižovat nároky, neb z podstaty je institucí výběrovou (aneb nejde o jednotřídku, kde všichni musí všemu rozumět). IMHO celý váš příspěvek je blábol, nadto nijak nesouvisejici s článkem. Doporučuji jít řešit kurikulum, zde by stačilo poděkovat za kvalitní zpracování.
To by me zajimalo co by na to Dijkstrovi rekl Geralt?! B-]
I hate portals.
Potvrďte prosím přezdívku, kterou jsme náhodně vygenerovali, nebo si zvolte jinou. Zajistí, že váš profil bude unikátní.
Tato přezdívka je už obsazená, zvolte prosím jinou.