Dneska je programovani zhruba na urovni pred Kopernikem, takze se od tech majoritnich cirkevnich nazoru distancuju.
Jak myslíš, no. Já bych si spíš vsadil, že to ještě v průběhu života přehodnotíš, ale třeba bych prohrál ![Úsměv :)](http://forum.root.cz/Smileys/default/smiley.gif)
Jakmile vidis, ze to na co lidi pouzivaji tisice az miliony radku kodu jde pouzit par set nebo mozna nizkych tisic, a udelat to zaroven jednodussi, rychlejsi, citelnejsi, tak prehodnotis.
Jestli v programovani existuje silver bullet, pak bych bych vsadil hodne na to, ze to bude jednoduchost (simplicity).
Presne na tohle je dobra vyssi abstrakce, kterou nazyvas nadbytecny syntakticky cukr. Porad to vnimam tak, ze si protirecis.
Az vyresis tuhle kontradikci, naleznes nirvanu.
Syntakticky cukr je derava abstrakce. Dostanes jednu abstrakci dnes, ale uz z ni zitra nevytvoris jeste vyssi abstrakci. Pro nederavy abstrakce potrebujes vysoce kompozitabilni stavebni bloky, napr. nekdo zminil nor nebo mov nebo funkce. Ty slozis do vyssich abstraktnich bloku, ty jeste do vyssich, atd.
Tridy a objekty jsou derava abstrakce. Je to videt kdyz zjistis ze najednou potrebujes metatridy a tvuj jazyk je nema. Smalltalk tridy mozna deravy nejsou, ale ve vetsine jazyku je to abstraktni dira.
Nerozumim pojmu derava abstrakce?
Jak vis co bude zitra?
Nad objekty jako abstrakce imho stoji komponenty. Ale neni nutne aby nad kazdou abstrakci byla jeste vyssi, resp. aby kazda abstrakce byla soucasti ci stavebnim kamenem vyssi abstrakce.
Metatrida je spise implementacni detail, druh tridy za nejakym ucelem, podobne jako je treba abstraktni trida, nez nova vyssi abstrakce. Python manipulaci s metatridami umoznuje, ale myslim ze jsem toho nikdy nevyuzil, takze se nedivim, ze v jinych jazycich nejsou k dispozici. Pokud by to byl problem, je dusledkem nedostatecne implementace, nikoliv chybne abstrakce.
V cem je objekt derava abstrakce?
Trida je derava abstrakce ale smalltalk trida derava neni? Zase si protirecis.
Me tridy nezajimaji, ja je nepouzivam a nejsem na ne expert. Deravy jsou protoze treba nezvladnou dedit z vic rodicu. Nektery jo, protoze maji lrpsi implementaci coz je sada hacku a uz se to nabaluje.
Ja jsem tvrdil ze cukr je derava abstrakce, tridy vem cert.
Derava abstrakce je takova ze ktery neposkladas jeste vyssi abstrakci. Ne vsechny pripady, protoze tam je dira. Treba te to nezajima protoze matlas kod a pouzivas k tomu abstrakce od jinych lidi. Lidi co ale tvori abstrakce hodne zajima jestli k tomu maji dostatecny nastroje.
Tridy jako abstrakce vicenasobnou dedicnost umoznuji. Ze to nektere jazyky neimplementuji neni chyba abstrakce.
Tvrdil jsi, ze tridy a objekty jsou derava abstrakce. Cukr a kafe abstrakce neni.
Ok, derava abstrakce je takova, ktera neslouzi jako zaklad vyssi abstrakce. V tom pripade na nich neni nic spatneho.
Abstrakce tvori kazdy programator, ktery pouziva tridy. Takze nevim jestli ty jo, kdyz je nepouzivas, ja ale ano.
Pokud mas teda jazyk postavenej na neuplny implementaci tridy pak je ten jazyk deravej v abstrakcich. Zapomen na to jestli jsem neco tvrdil o deravych tridach protoze jsme se nikdy neshodli na tom jestli se bavime o implementaci nebo koncepci. Tridu jako abstrakci muzu implementovat pouhym dictem metod a seznamem jak jsem zminil. Tvrdim akorat ze cukr je deravy a tvrdim ze vzdy.
O tridach a objektech tvrdim ze existuje jednodussi mechanismus na kterym zalozit bazi jazyka - napr. prototypy. Clovek pak v implementaci nemusi resit rozdil mezi objektem a tridou, pouze mezi built-in a derivovanym objektem.
Pak je 'deravy' jazyk (coz nicemu nemusi vadit), ale nikoliv abstrakce oop jako paradigma. Bavis se o konkretnim jazyku nebo obecne o oop?
Tridu muzes implementovat jak chces, i pomoci struct a pointeru na funkce v C, v tom spor neni. Spor je v tom, jestli to stejne zjednodusi a zprehledni zapis programu jako tridy nebo ne. Jestli ne, maji tridy zjevny prinos, jestli jo, dokaz to a implementuj pomoci dictu mou ukazku pouziti trid.
Jednodussi mechanismus neznamena jednodussi a prehlednejsi kod.