Proč je syntaxe programovacích jazyků tak složitá?

Lojza

  • *****
  • 672
    • Zobrazit profil
    • E-mail
Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #30 kdy: 23. 12. 2018, 10:38:42 »
ja myslim ze nad touto otazkou se zamyslely a zamysleji mnohem vetsi mozky nez ja, a vysledek je jaky je takze to nejspis lepe nejde, takze OK presvedcili jste mne ze ten brainfuck musim dat (aspon v tom pythonu kterymu bych se chtel venovat)


Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #31 kdy: 23. 12. 2018, 10:48:28 »


LISP si nejsem jistej jestli bych se neuzavorkoval (musel bych mit neco co mi bude hlidat spravny pocet ()

Paredit. O zavorkach skoro nevim.

PetrN

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #32 kdy: 23. 12. 2018, 10:50:16 »
Jestli se ti zdá syntaxe programovacích jazyků složitá, nikdo ti nebrání používat jen nuly a jedničky. Pak si stačí pamatovat jen dva znaky: 0 a 1. Až zlvádneš napsat něco jen v 0 a 1, pak ti bude připadat syntaxe každého programovacího jazyka jako zázračně jednoduchá a zapamatovatelná.

JSH

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #33 kdy: 23. 12. 2018, 10:55:15 »
sql syntaxe vypada jednoduseji, ale ta slozitost je skryta za tou syntaxi ? (semantika ?), navic sql byl neradil k plnotucnym programovacim jazykum, dela jen cast - prace s databazemi ?
Složitost tam bude vždycky, pokud se řeší nejaký netriviální problém. Buď může být schovaná za nějakýma mocnýma konstrukcema jazyka nebo může být rozplizlá na spoustě stránek zdánlivě jednoduchého kódu. V jednom případě bude náročné se naučit ty mocné konstrukce, v druhém případě bude náročné pročíst a pochopit ty stránky a stránky kódu.

Citace
ale treba ten small basic

http://download.microsoft.com/download/9/0/6/90616372-C4BF-4628-BC82-BD709635220D/Introducing%20Small%20Basic.pdf

vim je to osekana verze basicu ale stejne pripada mi ze nekdo se snazil tu syntaxi zjednodusit
Nemůžu si pomoct ale ten smallbasic mi příjde jako ukázkový protiklad tvého textového kódu. Jsou tam všechny běžné obraty (for, [], =), které jsi nahradil textem. Ani mi nepřijde, že se tam záměrně snažil někdo něco zjednodušovat. Podobnou syntaxi má hromada jazyků (třeba Pascal nebo Lua). Narvali tam osvědčené prvky a tím to zhaslo.

Citace
to same mi pripada u smalltalku
Smalltalk mi přijde jako příklad jazyka, který je pod jednoduchou fasádou hodně složitý. Pokud na to nekoukáš jako na kouzelnou skříňku tak se po odealání zprávy děje docela dost věcí, než se nakonec najde kód k vykonání. A že ta složitost není vidět může být dvojsečné.

Lojza

  • *****
  • 672
    • Zobrazit profil
    • E-mail
Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #34 kdy: 23. 12. 2018, 11:04:42 »

Citace
[/size]
Nemůžu si pomoct ale ten smallbasic mi příjde jako ukázkový protiklad tvého textového kódu. Jsou tam všechny běžné obraty (for, [], =), které jsi nahradil textem. Ani mi nepřijde, že se tam záměrně snažil někdo něco zjednodušovat. Podobnou syntaxi má hromada jazyků (třeba Pascal nebo Lua). Narvali tam osvědčené prvky a tím to zhaslo.


ja jsem si proste procetl ten 80 strankovy manual small basicu a furt jsem se nejak chytal a byl v obraze (zrejme tam chybeji ty slozitejsi "vetne stavby", resp. pouzivaji se jiz zabudovane funkce do jazyka resp. standardni knihovny - to by mi vyhovovalo

coz se treba u Cecka, php, javascriptu ... se mi nikdy nepovedlo okamzite jsem se po par strankacj ztratil v syntaxi, jedine co mi doslo ze kazdy ? opravdovy programovaci jazyk v podstate se sklada z velmi podobnych stavenich bloku (promenne, cykly, podminky, oop..) akorat kazdy jazyk se k nim stavi ruzne, nektery z meho pohledu jednoduseji a jiny sloziteji (syntaxe)
« Poslední změna: 23. 12. 2018, 11:07:23 od Lojza »


Kit

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #35 kdy: 23. 12. 2018, 11:08:27 »
Ja tedy mel na diplomku praci "Semanticke programovani", kde jsem resil ze syntaxe programovacich jazyku je vlastne zcela zbytecna, protoze programy se skladaji z tech samych zakladnich bloku, jako univerzalni transport jsem mel XML, resp. svoji xml databazi, jez mela alternativni automaticky generovane roviny podle vystupniho jazyka (C, PHP, JS a Pascal). Bylo to omezeno z casovych/praktickych duvodu na funkcionalni programovani.

Ten popis univerzálního transportu v XML mě zajímá. Dá se to někde najít?

Kit

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #36 kdy: 23. 12. 2018, 11:20:34 »
sql syntaxe vypada jednoduseji, ale ta slozitost je skryta za tou syntaxi ? (semantika ?), navic sql byl neradil k plnotucnym programovacim jazykum, dela jen cast - prace s databazemi ?

Když se podíváš na PL/SQL, tak ten už je plnotučným programovacím jazykem. Navíc má hodně vlastností z těch, které vyžaduješ a dá se použít i bez databáze.

LISP si nejsem jistej jestli bych se neuzavorkoval (musel bych mit neco co mi bude hlidat spravny pocet ()

Program v Lispu nemá víc závorek než v ostatních jazycích. To jen zbývajícího kódu je podstatně méně a proto jsou ty závorky víc vidět.

Kit

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #37 kdy: 23. 12. 2018, 11:26:37 »
Nevím jak vy, ale syntaxe jazyka mi nedělá zas az takový problém, vždycky se dá vytisknout cheatsheet, ale kde se bezpečné ztracim je chaos v rozlišení vlastních funkci, proměnných, tříd a procedur. A to zejména když luštim cizí kód...

V tom by mělo významně pomáhat barvení syntaxe, kterým dnes už běžné editory disponují. V Notepadu se už moc neprogramuje.

xhamsterr

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #38 kdy: 23. 12. 2018, 11:35:37 »
Jedna stará programátorská pravda hovorí, že ak umožníš programátorom programovať v slovenčine (češtine, angličtine, ...), zistíš, že nevedia po slovensky (česky, anglicky, ...).
Programovat slovensky ... fakt dobrej vtip.

xhamsterr

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #39 kdy: 23. 12. 2018, 11:37:10 »
Vím, že trollové se nekrmí, ale je pro případ že jsi opravdu hloupý tak dodám, že prostě na programování musíš mít mozeček. když ho nemáš tak smůla.

Proč mozeček? Ten se přece stará o pohybový aparát a do programování nekecá. ...
Je pravda, ze vetsina mistnich php opic opravdu mozek k mysleni nepouziva ...

Kit

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #40 kdy: 23. 12. 2018, 11:40:29 »
jedine co mi doslo ze kazdy ? opravdovy programovaci jazyk v podstate se sklada z velmi podobnych stavenich bloku (promenne, cykly, podminky, oop..) akorat kazdy jazyk se k nim stavi ruzne, nektery z meho pohledu jednoduseji a jiny sloziteji (syntaxe)

Každý programovací jazyk tyto stavební bloky používat nemusí. Například v XSLT se obejdeš bez proměnných, cyklů a podmínek, i když v jeho syntaxi jsou.

Lojza

  • *****
  • 672
    • Zobrazit profil
    • E-mail
Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #41 kdy: 23. 12. 2018, 11:47:41 »
nejhorsi je ze mi prijde slozite i "programovani" ve VBA for Applications pro Excel ... ale to se jeste budu pokouset zvladnout casem

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #42 kdy: 23. 12. 2018, 11:48:32 »
Pravda je, co píše RDa výš. Ten textový zápis programu je takový "sjednotitel" několika činností a u žádné z nich se s ním nepracuje úplně ideálně.

Při vzniku programu je postup: myšlenka -> bloky kódu v hlavě -> text programu -> AST -> stroják

V tomhle procesu je tam ten text z pohledu stroje vyloženě přebytečná věc vyžadující zbytečně složitý parser (výjímkou je Lisp, který ho vyrušil ;) )

Ještě horší je to v případě verzování kódu, které by principielně mělo pracovat na úrovni bloků kódu, ale nemá je k dispozici, takže uměle a nešikovně pracuje na úrovni řádků a lokálního kontextu. Vzniká tak vlastně krkolomné

Kód: [Vybrat]
Programátor: myšlenka -> bloky kódu v hlavě -> text programu
CVS: text programu -> [jakýsi kostrbatý proces bez znalosti významu a za použití úplně jiných struktur než bloků kódu] -> [občas naprosto nepřehledné a nečitelné] změny textu programu
Programátor: změny textu programu -> změny bloků kódu -> změny myšlenky

Tohle je vyloženě suboptimální proces, který by třeba na úrovni AST mohl být daleko přímočařejší.

(tohle bylo jenom tak pro ilustraci, podobně suboptimální je i generování stubů IDEčkem)

Takže vlastně jediný, o co v celé věci jde, je mít něco, z čeho se dá strojově generovat AST a zároveň se s tím bude dobře pracovat programátorovi. A to nutně ani nemusí být text. Může to být klidně nějaká vizuální reprezentace. Třeba takové ty pomůcky pro děcka typu Blockly vlastně slouží k manipulaci s vizuální reprezentací AST, takže převod do textu by tam vůbec nemusel být.

Problém ale je, že vizuální reprezentace je sice super pro začátečníka/dítě, ale ne-začátečníkovi práci spíš zpomaluje. IMHO to ale hodně záleží na paradigmatu. Některá paradigmata jsou natolik spojená se strukturami (typicky grafy), že tam začíná být vizuální reprezentace celkem efektivní, alespoň na nejvyšší úrovni.

Například paradigma "streamové zpracování dat pomocí grafu výpočetních uzlů" si o to vyloženě říká - tam je text výrazně nepřehlednější než vizuální reprezentace. Skvělým příkladem je NodeRed (https://youtu.be/f5o4tIz2Zzc?t=148) Podobně zajímavé by to mohlo být i v některých případech event-driven programování.

Každopádně ale nevím o žádném kompletním ekosystému (editor, VCS, překladač, debugger,...), který by byl pro tenhle způsob fungování vyloženě navržený od začátku, takže by tam všechno do sebe perfektně zapadalo. Systémy, o kterých vím, vždycky řeší jenom jednu část a ten "společný sjednotitel" je vždycky text (který se třeba generuje z té vizuální reprezentace) a třeba to vizuální VCS jsem ještě neviděl. Možná nejblíž jsou tomu věci typu Squeak.

Tady by možná nějaký prostor pro výzkum byl. Bylo by to strašně moc práce s nejistým výsledkem a muselo by se to udělat extrémně promyšleně, aby z toho nevznikl paskvil typu VisualBasic, ale tak už to u vymýšlení hodně inovativních věcí bývá :)

Lojza

  • *****
  • 672
    • Zobrazit profil
    • E-mail
Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #43 kdy: 23. 12. 2018, 11:55:24 »

Citace

Každý programovací jazyk tyto stavební bloky používat nemusí. Například v XSLT se obejdeš bez proměnných, cyklů a podmínek, i když v jeho syntaxi jsou.

jestli jsem to dobre pochopil https://cs.wikipedia.org/wiki/Extensible_Stylesheet_Language_Transformations

tak v xslt se nepise primo zdrojovy kod ale pouze transformace na jiny kod ? da se zjednodusene rici ze html, xml, xslt apod. jsou proste rodina "znackovacich jazyku" ?

Kit

Re:Proc je syntaxe programovacich jazyku tak slozita ?
« Odpověď #44 kdy: 23. 12. 2018, 11:56:39 »
nejhorsi je ze mi prijde slozite i "programovani" ve VBA for Applications pro Excel ... ale to se jeste budu pokouset zvladnout casem

Skripty pro Excel jsem dělával tak, že jsem zapnul režim učení, provedl požadované operace a nakonec jsem ten stub upravil do finální podoby. Nemusel jsem tedy psát tu syntaktickou omáčku a šlo to vcelku rychle.