Programovanie a modne trendy?

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #15 kdy: 26. 08. 2017, 11:43:13 »
Ludia nadávajú na OOP dedičnosť je OUT a FP zažíva renesanciu.
Dědičnost je IN, pokud se používá správně. Bez ní by OOP nebylo prakticky použitelné.
To je nesmysl, OOP se bez dědičnosti v pohodě obejde.

Bez použití dědičnosti nenapíšeš ani jednu třídu či objekt.
Zajímavé tvrzení, ale zcela mimo. Už jen “struct A { int x }” je typ a dědičnost nikde nepotřebuje. OOP totiž není o dědičnosti.


Ondra.

Re:Programovanie a modne trendy?
« Odpověď #16 kdy: 26. 08. 2017, 12:05:35 »
Dnes tu máme revolúciu FP jazyky ako Swift
Fakt ?  :o
Swift má rysy FP, ale chybí mu výkonný typový systém. Až přidají typy vyšších řádů (už to je někde v bugtrackeru), bude to pejskokočičí mix Haskellu a ObjC.

Osobne mam ze swiftu pocit, ze jsou to vykradene nejlepsi (nebo modni?) featury z ostatnich oop jazyku a par funkcionalnich konstruktu. Sam ovsem nic noveho neprinasi ani neposouva odvetvi nikam dal. Kdyby to neudeal Apple, tak by si toho nikdo ani nevsiml.

Kit

Re:Programovanie a modne trendy?
« Odpověď #17 kdy: 26. 08. 2017, 12:12:31 »
Bez použití dědičnosti nenapíšeš ani jednu třídu či objekt.
Zajímavé tvrzení, ale zcela mimo. Už jen “struct A { int x }” je typ a dědičnost nikde nepotřebuje. OOP totiž není o dědičnosti.

Ano, je to typ. Je typ třídou nebo objektem?

Fakt, že se denně setkávám s chybně použitou dědičností, vůbec neznamená, že by na dědičnosti samotné bylo něco špatně. Když někdo poruší LSP, tak to samozřejmě špatně je.

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #18 kdy: 26. 08. 2017, 12:32:49 »
Bez použití dědičnosti nenapíšeš ani jednu třídu či objekt.
Zajímavé tvrzení, ale zcela mimo. Už jen “struct A { int x }” je typ a dědičnost nikde nepotřebuje. OOP totiž není o dědičnosti.

Ano, je to typ. Je typ třídou nebo objektem?

Fakt, že se denně setkávám s chybně použitou dědičností, vůbec neznamená, že by na dědičnosti samotné bylo něco špatně. Když někdo poruší LSP, tak to samozřejmě špatně je.
Je to objekt.

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #19 kdy: 26. 08. 2017, 12:39:12 »
Dnes tu máme revolúciu FP jazyky ako Swift
Fakt ?  :o
Swift má rysy FP, ale chybí mu výkonný typový systém. Až přidají typy vyšších řádů (už to je někde v bugtrackeru), bude to pejskokočičí mix Haskellu a ObjC.

Osobne mam ze swiftu pocit, ze jsou to vykradene nejlepsi (nebo modni?) featury z ostatnich oop jazyku a par funkcionalnich konstruktu. Sam ovsem nic noveho neprinasi ani neposouva odvetvi nikam dal. Kdyby to neudeal Apple, tak by si toho nikdo ani nevsiml.
Odvětví dál neposunul žádný jazyk od Lispu. Ono bohatě stačí mít všechny užitečné konstrukce v jednom jazyce, což Swift má. Nejlepší (ve smyslu elegance a bezpečnosti kódu) jsou v něm analogie typových tříd. Jiná otázka je, kde běží, až se stabilizuje ABI, mohl by být swiftí runtime součástí Linuxů (což je momentálně hudba budoucnosti).


Kit

Re:Programovanie a modne trendy?
« Odpověď #20 kdy: 26. 08. 2017, 13:01:56 »
Bez použití dědičnosti nenapíšeš ani jednu třídu či objekt.
Zajímavé tvrzení, ale zcela mimo. Už jen “struct A { int x }” je typ a dědičnost nikde nepotřebuje. OOP totiž není o dědičnosti.

Ano, je to typ. Je typ třídou nebo objektem?

Fakt, že se denně setkávám s chybně použitou dědičností, vůbec neznamená, že by na dědičnosti samotné bylo něco špatně. Když někdo poruší LSP, tak to samozřejmě špatně je.
Je to objekt.

Podle způsobu použití má typ blíže ke třídám, nemyslíš? Pokud bys chtěl 2 takové objekty, tak použiješ struct jen 1×, jinak bys mezi nimi nemohl provést ani přiřazení.

hop

Re:Programovanie a modne trendy?
« Odpověď #21 kdy: 26. 08. 2017, 13:04:22 »
Doporučil bych podívat se na Perl 6. Ten jazyk je dostatečně flexibilní, aby šel ohnout pro jakékoliv paradigma, které bude zrovna v módě.

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #22 kdy: 26. 08. 2017, 13:20:53 »
Bez použití dědičnosti nenapíšeš ani jednu třídu či objekt.
Zajímavé tvrzení, ale zcela mimo. Už jen “struct A { int x }” je typ a dědičnost nikde nepotřebuje. OOP totiž není o dědičnosti.

Ano, je to typ. Je typ třídou nebo objektem?

Fakt, že se denně setkávám s chybně použitou dědičností, vůbec neznamená, že by na dědičnosti samotné bylo něco špatně. Když někdo poruší LSP, tak to samozřejmě špatně je.
Je to objekt.

Podle způsobu použití má typ blíže ke třídám, nemyslíš? Pokud bys chtěl 2 takové objekty, tak použiješ struct jen 1×, jinak bys mezi nimi nemohl provést ani přiřazení.
Nemyslím, ale jde jen o terminologii, já se držím teorie kategorií, když už se tu s ní začalo. Čili ten kus kódu definuje nějaký objekt a když implemenuju nějaký algoritmus, můžu mezi instancemi objektů posílat zprávy, tudíž mám z definice OO program v OO jazyce. Akorát to posílání se většinou jmenuje volání funkce/metody.

Kit

Re:Programovanie a modne trendy?
« Odpověď #23 kdy: 26. 08. 2017, 13:29:50 »
Bez použití dědičnosti nenapíšeš ani jednu třídu či objekt.
Zajímavé tvrzení, ale zcela mimo. Už jen “struct A { int x }” je typ a dědičnost nikde nepotřebuje. OOP totiž není o dědičnosti.

Ano, je to typ. Je typ třídou nebo objektem?

Fakt, že se denně setkávám s chybně použitou dědičností, vůbec neznamená, že by na dědičnosti samotné bylo něco špatně. Když někdo poruší LSP, tak to samozřejmě špatně je.
Je to objekt.

Podle způsobu použití má typ blíže ke třídám, nemyslíš? Pokud bys chtěl 2 takové objekty, tak použiješ struct jen 1×, jinak bys mezi nimi nemohl provést ani přiřazení.
Nemyslím, ale jde jen o terminologii, já se držím teorie kategorií, když už se tu s ní začalo. Čili ten kus kódu definuje nějaký objekt a když implemenuju nějaký algoritmus, můžu mezi instancemi objektů posílat zprávy, tudíž mám z definice OO program v OO jazyce. Akorát to posílání se většinou jmenuje volání funkce/metody.

Nevidím žádnou metodu a ani nevidím atribut, do kterého by se dala uložit nějaká hodnota. Jak vypadá zápis změny stavu u takového objektu? A.x = 42; nebo jak?

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #24 kdy: 26. 08. 2017, 13:51:41 »
Bez použití dědičnosti nenapíšeš ani jednu třídu či objekt.
Zajímavé tvrzení, ale zcela mimo. Už jen “struct A { int x }” je typ a dědičnost nikde nepotřebuje. OOP totiž není o dědičnosti.

Ano, je to typ. Je typ třídou nebo objektem?

Fakt, že se denně setkávám s chybně použitou dědičností, vůbec neznamená, že by na dědičnosti samotné bylo něco špatně. Když někdo poruší LSP, tak to samozřejmě špatně je.
Je to objekt.

Podle způsobu použití má typ blíže ke třídám, nemyslíš? Pokud bys chtěl 2 takové objekty, tak použiješ struct jen 1×, jinak bys mezi nimi nemohl provést ani přiřazení.
Nemyslím, ale jde jen o terminologii, já se držím teorie kategorií, když už se tu s ní začalo. Čili ten kus kódu definuje nějaký objekt a když implemenuju nějaký algoritmus, můžu mezi instancemi objektů posílat zprávy, tudíž mám z definice OO program v OO jazyce. Akorát to posílání se většinou jmenuje volání funkce/metody.

Nevidím žádnou metodu a ani nevidím atribut, do kterého by se dala uložit nějaká hodnota. Jak vypadá zápis změny stavu u takového objektu? A.x = 42; nebo jak?
To je úplně jedno, objekt to je i bez metod. Klidně může být imutabilní.

Ondra.

Re:Programovanie a modne trendy?
« Odpověď #25 kdy: 26. 08. 2017, 14:05:32 »
Nevidím žádnou metodu a ani nevidím atribut, do kterého by se dala uložit nějaká hodnota. Jak vypadá zápis změny stavu u takového objektu? A.x = 42; nebo jak?

C++ struktura muze mit klidne i metody.

Kit

Re:Programovanie a modne trendy?
« Odpověď #26 kdy: 26. 08. 2017, 14:18:13 »
Nevidím žádnou metodu a ani nevidím atribut, do kterého by se dala uložit nějaká hodnota. Jak vypadá zápis změny stavu u takového objektu? A.x = 42; nebo jak?
To je úplně jedno, objekt to je i bez metod. Klidně může být imutabilní.

Jak tedy nastavíš hodnotu atributu tohoto imutabilního objektu na 42? Bez instanciace to podle mne asi nepůjde. V tom případě ale tvůj objekt "A" není objektem, ale třídou.

Kit

Re:Programovanie a modne trendy?
« Odpověď #27 kdy: 26. 08. 2017, 14:22:11 »
Nevidím žádnou metodu a ani nevidím atribut, do kterého by se dala uložit nějaká hodnota. Jak vypadá zápis změny stavu u takového objektu? A.x = 42; nebo jak?

C++ struktura muze mit klidne i metody.

To souhlasí, ale jak nastavíš či změníš hodnotu atributu "x" ve struktuře "A" třeba i nějakou metodou? Jde to vůbec nebo ten atribut "x" je nutné označit jako static?

Aoidhghean

Re:Programovanie a modne trendy?
« Odpověď #28 kdy: 26. 08. 2017, 14:52:19 »
Nevidím žádnou metodu a ani nevidím atribut, do kterého by se dala uložit nějaká hodnota. Jak vypadá zápis změny stavu u takového objektu? A.x = 42; nebo jak?
To je úplně jedno, objekt to je i bez metod. Klidně může být imutabilní.

Jak tedy nastavíš hodnotu atributu tohoto imutabilního objektu na 42?
Od toho je (typový) konstruktor.

Kit

Re:Programovanie a modne trendy?
« Odpověď #29 kdy: 26. 08. 2017, 15:30:34 »
Nevidím žádnou metodu a ani nevidím atribut, do kterého by se dala uložit nějaká hodnota. Jak vypadá zápis změny stavu u takového objektu? A.x = 42; nebo jak?
To je úplně jedno, objekt to je i bez metod. Klidně může být imutabilní.

Jak tedy nastavíš hodnotu atributu tohoto imutabilního objektu na 42?
Od toho je (typový) konstruktor.

No vida, takže struct se nechová jako objekt, ale jako (typová) třída.