Python - Objasnění typu proměnné

Jann

Re:Python - Objasnění typu proměnné
« Odpověď #15 kdy: 15. 07. 2015, 10:32:20 »
Označení „statický člen” je IMHO javismus, vůbec bych to nepoužíval, ani v Javě.

(Lidi naucte se trochu psat; jeden tu tvrdi, ze se neco nema pouzivat, ale aspon mohl napsat, co se tedy pouzivat ma misto toho, dalsi zase pise, ze se neco lisi ale uz nenapise proc si to mysli.)

Takze, co bys misto toho pouzival? To "staticky", jak predpokladam vis, pochazi od klicoveho slova static, ktere pochazi z C. Nejsem si jisty, zda je to tedy skutecne "javismus" (mozna to ma i C++, ted z hlavy nevim) a pripada mi to jako vhodny nazev.

Klíčové slovo static má v C++ (i v Javě) více významů a odvozovoat z něj ještě terminologii pro věci, jež už svou terminologii mají, mi nepřipadá šťastné. Navíc to ani není fakticky správné. Raději bych se držel zavedeného označení třídní/instanční nežli statický(/nestatický?) ve vztahu k členům (resp. atributům).

"staticky clen" a "atribut tridy" jsou samozrejme totez...
Citace
In some languages, class variables and class methods are either statically resolved, not via dynamic dispatch, or their memory statically allocated at compile time (once for the entire class, as static variables), not dynamically allocated at run time (at every instantiation of an object). In other cases, however, either or both of these are dynamic. For example, if classes can be dynamically defined (at run time), class variables of these classes are allocated dynamically when the class is defined, and in some languages class methods are also dispatched dynamically.

Thus in some languages, static member variable or static member function are used synonymously with or in place of "class variable" or "class function", but these are not synonymous across languages. These terms are commonly used in Java, C#, and C++, where class variables and class methods are declared with the static keyword, and referred to as static member variables or static member functions.
https://en.wikipedia.org/wiki/Class_variable

Jinými slovy, C++ a Java mrší zavedenou terminologii OOP nesmyslnými názvy. Člen a atribut nejsou úplně to samé, jelikož členem je i metoda, zatímco atribut se omezuje na datové složky. Mluvíme-li však o datových složkách, pak atribut a člen představují totéž.


Re:Python - Objasnění typu proměnné
« Odpověď #16 kdy: 15. 07. 2015, 10:39:12 »
Jinými slovy, C++ a Java mrší zavedenou terminologii OOP nesmyslnými názvy. Člen a atribut nejsou úplně to samé, jelikož členem je i metoda, zatímco atribut se omezuje na datové složky. Mluvíme-li však o datových složkách, pak atribut a člen představují totéž.
Jak to chápu já, je spíš problém nazývat statické X něco, co není známo v době překladu.

Jann

Re:Python - Objasnění typu proměnné
« Odpověď #17 kdy: 15. 07. 2015, 10:56:32 »
Jinými slovy, C++ a Java mrší zavedenou terminologii OOP nesmyslnými názvy. Člen a atribut nejsou úplně to samé, jelikož členem je i metoda, zatímco atribut se omezuje na datové složky. Mluvíme-li však o datových složkách, pak atribut a člen představují totéž.
Jak to chápu já, je spíš problém nazývat statické X něco, co není známo v době překladu.

To je velmi výstižné.

JS

Re:Python - Objasnění typu proměnné
« Odpověď #18 kdy: 15. 07. 2015, 11:22:20 »
Klíčové slovo static má v C++ (i v Javě) více významů a odvozovoat z něj ještě terminologii pro věci, jež už svou terminologii mají, mi nepřipadá šťastné. Navíc to ani není fakticky správné. Raději bych se držel zavedeného označení třídní/instanční nežli statický(/nestatický?) ve vztahu k členům (resp. atributům).

Problem tak nejak je, ze tu terminologii mely v jine kulture (jinych programovacich jazycich). Samozrejme, bylo by fajn, kdybychom se vzdy globalne shodli na terminologii, ale realita je jina. Takze pak v praxi musis znat oba terminy, at uz se ti to libi nebo ne.

Mne osobne na pojmenovani nezalezi, takze ja k tomu co rikas mam ambivalentni postoj. Podstatne je, aby si lide rozumeli, ne jestli jde o prilehavy nazev, a myslim, ze si tady rozumime.

Jinými slovy, C++ a Java mrší zavedenou terminologii OOP nesmyslnými názvy.

Nekteri by dokonce rekli, ze C++ a Java mrsi cele OOP. :-)

Člen a atribut nejsou úplně to samé, jelikož členem je i metoda, zatímco atribut se omezuje na datové složky. Mluvíme-li však o datových složkách, pak atribut a člen představují totéž.

No, zni to hezky, ale ma to jeden maly problem. V mnoha jazycich, napriklad Pythonu, jsou funkce take hodnoty (neboli data). Tradicni staticky typovane OOP jazyky mezi tim rozlisuji (a pak se to resi pres paskvily jako delegate atd.), ale neni to univerzalni pravidlo.

Jann

Re:Python - Objasnění typu proměnné
« Odpověď #19 kdy: 15. 07. 2015, 12:08:53 »
Jinými slovy, C++ a Java mrší zavedenou terminologii OOP nesmyslnými názvy.

Nekteri by dokonce rekli, ze C++ a Java mrsi cele OOP. :-)

Hlavně nejde o objektové jazyky v pravém slova smyslu (u C++ je to obzvláště markantní, jde o klasické strukturované návrhy, z nějakého nepochopitelného důvodu vecpané do struktur, totiž, ehm, pardon, do class, ale žádný benefit to nepřináší, jen je to celé méně přehledné, hůř se to udržuje a vznikají tam ještě zákeřnější chyby než v C; u Javy je to podobné, ale přeci jen už tam jistý pokrok cítit je, ačkoli o 90% programů se dá říci totéž, co o C++). Stačí si daný program napsat čistě strukturovaně a porovnat s tím „objektovým”. Ale nechci se tu pouštět do flamů.
Zrovna v jednom takovém třicetitisícřádkovém projektíku v C++ potřebuji něco změnit a jeho „objektový” návrh mi to nijak neusnadňuje, ale celé je to kvůli tomu naprosto zbytečně komplikované a nepřehledné – hierarchie tříd umělá, jen kvůli tomu, že se to tak čeká, ve skutečnosti křečovitá, nelogická, neusnadňující znovupoužitelnost kódu, ale komplikující ji, atd. Objektový návrh by vypadal naprosto diametrálně odlišně, počet řádků by byl poloviční a moje týdenní práce by se scvrkla asi tak na půl den.

Člen a atribut nejsou úplně to samé, jelikož členem je i metoda, zatímco atribut se omezuje na datové složky. Mluvíme-li však o datových složkách, pak atribut a člen představují totéž.

No, zni to hezky, ale ma to jeden maly problem. V mnoha jazycich, napriklad Pythonu, jsou funkce take hodnoty (neboli data). Tradicni staticky typovane OOP jazyky mezi tim rozlisuji (a pak se to resi pres paskvily jako delegate atd.), ale neni to univerzalni pravidlo.

Tak tedy jinak. Atribut slouží k uchovávání stavu. Ale taky nepatřím k těm, co by se vyžívali ve slovíčkaření – pokud dané označení nezačíná být až zavádějící. Statická funkce, statická proměnná – to jsou zavedené céčkovské termíny. Statický člen třídy – to je velmi nešťastný název a nešťastně recyklované klíčové slovo, protože má odlišný význam.


Re:Python - Objasnění typu proměnné
« Odpověď #20 kdy: 16. 07. 2015, 09:32:02 »
"staticky clen" a "atribut tridy" jsou samozrejme totez...
Citace
In some languages, class variables and class methods are either statically resolved, not via dynamic dispatch, or their memory statically allocated at compile time (once for the entire class, as static variables), not dynamically allocated at run time (at every instantiation of an object). In other cases, however, either or both of these are dynamic. For example, if classes can be dynamically defined (at run time), class variables of these classes are allocated dynamically when the class is defined, and in some languages class methods are also dispatched dynamically.

Thus in some languages, static member variable or static member function are used synonymously with or in place of "class variable" or "class function", but these are not synonymous across languages. These terms are commonly used in Java, C#, and C++, where class variables and class methods are declared with the static keyword, and referred to as static member variables or static member functions.
https://en.wikipedia.org/wiki/Class_variable

Šmarjá, Ty sis "dovolil" dodat definici odněkud jinud, než jen vlastní, objektivní a jediný správný názor?
To je rouhačství!!!

(stejně se to zvrhne v slovní průjem na téma java/c++/... je/není objektový, neboť blablabla ...)

Re:Python - Objasnění typu proměnné
« Odpověď #21 kdy: 16. 07. 2015, 09:34:02 »
Co jsem říkal.

Takže ještě ty setry a getry ...