Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Owl_ 11. 10. 2014, 12:33:40
-
Dobrý den,
druhým rokem se učím PHP a zvažuji, že se naučím ještě Python. Jak PHP tak Python jsou multiparadigmatické jazyky. Já se u PHP učil procedurálnímu programování, které mi připadá jednodušší, navíc se v knihovnách s funkcemi, které jsem si vytvořil, dobře orientuji. Spousta zaměstnavatelů ale požaduje znalosti OOP.
Proto se chci zeptat, jestli se mám přeučovat v PHP na OOP a objekty se v Pythonu učit hned, když mi procedury vyhovují mnohem více a co by pro mě z hlediska uplatnění znamenalo, pokud bych zůstal u procedur.
-
Ma. Nevymyslej kraviny a uc se oop :-)
-
Pokud se chces zivit programovanim a mas vic nez 5-10 let do duchodu, tak bys o tom mel neco vedet.
I kdybys to nikdy nepouzil, tak se ti muze stat, ze narazis na nekoho, kdo "zije objektove", a budes potrebovat se s nim domluvit.
-
Já se u PHP učil procedurálnímu programování, které mi připadá jednodušší, ...
Proto se chci zeptat, jestli se mám přeučovat v PHP na OOP ...
Procedurální programování může být jednodušší pro primitivní skripty na pár set řádek. Jakmile si však zvykneš na OOP, zjistíš, že se v tom programuje velmi pohodlně a elegantně. Přepsáním jedné procedurální aplikace v PHP do OOP jsem ji zkrátil na třetinu. Navíc se stala mnohem robustnější.
-
Upřímně (a bez urážky), doufám, že je ti tak 18 a jen potřebuješ nasměrovat dál. OOP je tak elementární věc, že pokud se chceš webové aplikace vyvíjet profesionálně (z otázky jsem pochopil, že ano), tak není co řešit.
Je to jako kdyby ses ptal, jestli stačí, že umíš jako zedník rozmíchat omítku a jestli má cenu učit se ji i nahodit, když rozmíchávání ti vyhovuje víc.
-
obecny aspekt vidim v autorove vypovedi, ze zamestnavatele pozaduji OOP. Tak to je, je to poplatne dnesni dobe - kdy je pracovni misto to nejvic, co muze clovek v zivote dosahnout. Stesti, zdravi a jine aspekty zivota jsou vedlejsi, kdo nema pracovni misto je odpad spolecnosti a take se s nim tak zachazi. Proto kdyz pozaduje zamestnavatel OOP, tak se to bude delat, kdyz bude zamestnavatel chtit, aby zamestnanci kazde rano skocili z mostu do reky, tak to budou zamestnanci z velke vetsuiny take delat - protoze jak vyse receno - 'pracovi misto!!!
Druhy konkretni aspekt je OOP samo. Zazil jsem dobu, kdy to vypuklo a vsude se mluvilo o tom, jak ted budou programy 'robustnejsi', jak se budou jednoduse zhotovovat a vubec vsechno pobezi jako po masle. Jedine co bude potreba je, aby programatori zmenili sve mysleni a mysleli prave OO. Zjistuji po letech, ze se tyto nadeje nenaplnily, programy padaji jako drive a vyvoj se neustale prodrazuje.
OOP je takova mantra, kterou se daji oblbnout vedouci projektu a manageri. Bjarne Stroustrup (c++) na otazku, zda by se mely delat projekty v c++ odpovedel: 'jestli mas v projektu 5 lidi, co umi cobol, delej ten projekt v cobolu'.
-
... Jedine co bude potreba je, aby programatori zmenili sve mysleni a mysleli prave OO. Zjistuji po letech, ze se tyto nadeje nenaplnily, programy padaji jako drive a vyvoj se neustale prodrazuje.
Pochopit OOP není tak triviální, jak to na první pohled vypadá. Je to mnohem jednodušší, pouze se programátor musí oprostit od procedurálního programování. Viděl jsem hodně aplikací, které byly označeny, že jsou objektově napsány. Ano byly tam třídy, byly tam objekty, ale objektové byly jen vzdáleně. Objektově napsané aplikace nepadají.
-
OOP aplikace nepadaji, tohle si napisu do CV
neslo by s tim udelat tricka ? :)
-
To hlavní na objektově orientovaném programování je členění kódu na menší části, které samy o sobě dávají dobrý smysl, lze je elegantně použít, je u nich zřejmé, co nabízí okolnímu světu. Tedy lze pochopit jejich smysl a funkci, lze je testovat, lze je znovupoužít apod.
U malinkých programů, na kterých dělá jeden autor, to není tak podstatné. Ale u rozsáhlejších programů, zejména na kterých dělá paralelně nebo sériově (předání vývoje někomu jinému - či to alespoň hrozí, protože jde o dlouhodobější projekt) více lidí, je to velmi důležité. Členit program lze různými způsoby a dělá se to v programovacích jazycích, které tzv. nejsou objektově orientované (jako např. jazyk C). Ale vestavěná podpora přímo v jazyku zaprvé ulehčuje vývoj kratšími zápisy, podporou nástrojů (např. IDE) apod. a za druhé sjednocuje způsob, tedy se v tom vyzná snadno i jiný programátor, aniž by musel napřed pochopit nějaké speciální řešení navržené pro ten jeden konkrétní program.
-
... Objektově napsané aplikace nepadají.
:o
-
Ano, ma to smysl a to co nejdrive. Doporucuji zacit teorii OOP a pak tuto teorii aplikovat na vybrany jazyk. Jestli to bude PHP nebo Python, to je vcelku fuk. Me se ted dostala do roky kniha od Pecinovskeho (Java 7 učebnice objektové architektury pro začátečníky) a tam je OOP vysvetleno velice pochopitelne a ctive. Takze i kdyz je zvoleny jazyk Java, s klidem ti tu knihu na zacatek s OOP doporucim.
btw, pokud se jiz 2 roky ucis PHP, nechapu, jaktoze jsi se k OOP jeste nedostal. Teda ne ze by se v PHP bez OOP nedal napsat i vetsi projekt, ale to bych si radeji ukousl nohu, nez se o neco takoveho pokouset.
-
... Jedine co bude potreba je, aby programatori zmenili sve mysleni a mysleli prave OO. Zjistuji po letech, ze se tyto nadeje nenaplnily, programy padaji jako drive a vyvoj se neustale prodrazuje.
.................... Objektově napsané aplikace nepadají.
Tak to by se mělo vytesat do kamene ...... tak dobrý vtip jsem už dlouho neslyšel.
Předtím to byl vtip: "nové Windows nepadají"
Mimochodem, ještě jsem neviděl za posledních 23 let program, který by alespoň jednou nezhavaroval.
I když můžeme polemizovat, zda za zhavarování mohl ten daný program, a nebo BFU co s ním pracovalo.
-
To hlavní na objektově orientovaném programování je členění kódu na menší části, které samy o sobě dávají dobrý smysl, lze je elegantně použít, je u nich zřejmé, co nabízí okolnímu světu. Tedy lze pochopit jejich smysl a funkci, lze je testovat, lze je znovupoužít apod.
U malinkých programů, na kterých dělá jeden autor, to není tak podstatné. Ale u rozsáhlejších programů, zejména na kterých dělá paralelně nebo sériově (předání vývoje někomu jinému - či to alespoň hrozí, protože jde o dlouhodobější projekt) více lidí, je to velmi důležité. Členit program lze různými způsoby a dělá se to v programovacích jazycích, které tzv. nejsou objektově orientované (jako např. jazyk C). Ale vestavěná podpora přímo v jazyku zaprvé ulehčuje vývoj kratšími zápisy, podporou nástrojů (např. IDE) apod. a za druhé sjednocuje způsob, tedy se v tom vyzná snadno i jiný programátor, aniž by musel napřed pochopit nějaké speciální řešení navržené pro ten jeden konkrétní program.
No nevim, videl jsem spoustu kodu, ktery vyuzival OOP a neslo se v nem vyznat.
Rozdil mezi proceduralnim a OOP pristupem je takovy jako stekat psem a nechat psa stekat :). Chvili to trva a je nutne za tim vided proc se ma pouzit OOP, jinka clovek zacne psat spagety i ve tridach.
-
.................... Objektově napsané aplikace nepadají.
Tak to by se mělo vytesat do kamene ...... tak dobrý vtip jsem už dlouho neslyšel.
Tak ještě jeden vtip: Ukaž mi zdroják objektově napsaného programu, který havaruje a já ti dokážu, že není objektově napsaný.
-
Ano, ma to smysl a to co nejdrive. Doporucuji zacit teorii OOP a pak tuto teorii aplikovat na vybrany jazyk.
Zádrhel je v tom, že ani neexistuje přesná a všeobecně uznávaná definice OOP natož pak nějaká teorie, jenž by byla všeobecně aplikovatelná.
-
.................... Objektově napsané aplikace nepadají.
Tak to by se mělo vytesat do kamene ...... tak dobrý vtip jsem už dlouho neslyšel.
Tak ještě jeden vtip: Ukaž mi zdroják objektově napsaného programu, který havaruje a já ti dokážu, že není objektově napsaný.
Fakt je potřeba hledat metodu, která přistupuje špatně k paměti? Nebo takové v OOP neexistují, protože je kompiler sám maže?
-
Dobře, tak řekněme, že v OOP je budoucnost a není jiná možnost, než se ho naučit. Jak začít? Jaký je podle vás nejlepší zdroj informací? Jak jste se učili vy? Díky za rady
-
Ukaž mi zdroják objektově napsaného programu, který havaruje
public class NotAnObject {
public void disintegrate() {
throw new OutOfMemoryError("All your memory are belong to Java");
}
public static void main(String[] args) {
new NotAnObject().disintegrate();
}
}
Jak jste se učili vy? Díky
my sme sa oop ucili v jave, z head first javy a z pecinovskeho
-
.................... Objektově napsané aplikace nepadají.
Tak to by se mělo vytesat do kamene ...... tak dobrý vtip jsem už dlouho neslyšel.
Tak ještě jeden vtip: Ukaž mi zdroják objektově napsaného programu, který havaruje a já ti dokážu, že není objektově napsaný.
:D :D
Dokážeš leda tak velký ... Protože z toho, co jsi napsal, je zřejmé, že to jde všechno mimo tebe. Je to stejná pitomost jako napsat, že auta s automatickou převodovkou nehavarují. Asi tolik k tomu tvému dosti hloupému výroku.
-
Tak ještě jedend vtip: Ukaž mi zdroják objektově napsaného programu, který havaruje a já ti dokážu, že není objektově napsaný.
Zkusme to jinak, dej mi objektově napsaný program, a já ti ho nechám zhavarovat..... to bude rychlejší.
-
Koukám že se to tady nějak zvrhlo... oop jediná cesta, není možné napsat padající oop program apod.
Z mého pohledu oop je seznam technik které je dobre znát, pro některé je potřeba úprava jazyka. Tyhle techniky mohou jednak zjednodušit samotné psaní programu nebo posléze jeho údržbu a rozšíření nebo modifikaci. Paradoxem je ze jazyky požadované zaměstnavateli Java, c#, python, php nejsou objektove ale vyzobavaji si z oop pouze některé části.
Byt tebou vybral bych si jeden z výše uvedených jazyků, seznámil se s výhodami a sám uznal jestli ti to ulehčí práci nebo ne. Vedle toho bych se určitě seznámil s nějakým deklarativnim a funkcionalnim jazykem.
-
Me velmi fascinuje, jak se tu v tom kazdy nimra a kazdy chce ukazat, jak zrovna on o tom vi vic nez ti ostatani. To je takove ... rootovske, co si budem povidat. Urcite ste tim handrkovanim tazateli velmi pomohli.
Je uplne jedno jestli objektove napsany sw pada nebo ne, je uplne jedno, jestli java je uplne objektovy jazyk nebo ne. Dulezite je, ze objektovy pristup existuje, v ruznych urovnich se vyskytuje ve vetsine jazyku a velmi elegantne se s nim da resit velka mnozina problemu. Proto je dulezite praci s objekty znat. Vse ostatni jsou zbytecne kecy :-)
-
Podobná polemika dávala v obecné rovině smysl tak před dvaceti lety. Když si představím, že na webu byl tak před 15 lety docela populární i Frontpage Express, tak dejme tomu na webu měla smysl před deseti lety. Pokud nemáš rok, dva do důchodu, tak není moc co řešit.
-
druhým rokem se učím PHP a zvažuji.... Spousta zaměstnavatelů ale požaduje znalosti OOP.
Předem upozorňuji, že to není pokus vás jakkoliv shodit nebo se vás dotknout. Nic o vás nevím. Ale...
Chcete se živit programováním - jinak byste nezmiňoval zaměstnavatele. Přitom programování vás zajímá jen tak napůl. Umíte PHP, ale nic dalšího vás nezajímá natolik, abyste to prostě začal dělat. Na Python a objekty potřebujete rozhodnutí od lidí tady na Rootu, samotného vás to nezajímá natolik, aby rozhodnutí vzešlo z vašich vlastních tužeb, pohnutek, potřeb a zájmů. Jakou máte motivaci učit se programovat? To to hodláte dělat jen kvůli penězům?
Objektové programování dneska považuji za základní techniku. Můžete najít spoustu oblastí, kde to nemá smysl, nebo je to jednodušší dělat jinak (sám jsem v php vytvořil mraky kódu bez jediného objektu), ale většinou je to s objekty jednodušší a smysluplnější.
Co děláte se svým volným časem, když skončíte s prací na PHP programech? Objektové programování a Python nestudujete, čím si teda krátíte svůj čas? Nenajde se tam něco, čemu byste se věnoval mnohem raději a ve výsledku i s větším úspěchem?
-
Me velmi fascinuje, jak se tu v tom kazdy nimra a kazdy chce ukazat, jak zrovna on o tom vi vic nez ti ostatani. To je takove ... rootovske, co si budem povidat. Urcite ste tim handrkovanim tazateli velmi pomohli.
Tak ode mne to byl jen pokus o vtip.
Na původní otázku zda má smysl se přeučovat na OOP bych odpověděl jedinou větou:
"Pokud se někdo tak hloupě ptá, tak pro něj, ale jen pro tazatele to smysl a cenu nemá."
Pro všechny ostatní platí pravidlo:
"Kolik řečí znáš, tolikrát jsi člověkem"
Přeloženo do IT/programátorské řeči:
"Kolik znáš jazyků, tolikrát jsi programátor"
-
druhým rokem se učím PHP a zvažuji.... Spousta zaměstnavatelů ale požaduje znalosti OOP.
Jakou máte motivaci učit se programovat? To to hodláte dělat jen kvůli penězům?
treba si chce jen napsat vlastni init system. a psat uselessd v php neni zrovna hitparada
-
jaka je vlastne vase motivace znat jeho motivaci?
aby jste mohl vlakno zborit zavadejicimi komentari?
nechci pusobit zaujate jeste vic nez nekteri zde.
-
druhým rokem se učím PHP a zvažuji.... Spousta zaměstnavatelů ale požaduje znalosti OOP.
Předem upozorňuji, že to není pokus vás jakkoliv shodit nebo se vás dotknout. Nic o vás nevím. Ale...
Chcete se živit programováním - jinak byste nezmiňoval zaměstnavatele. Přitom programování vás zajímá jen tak napůl. Umíte PHP, ale nic dalšího vás nezajímá natolik, abyste to prostě začal dělat. Na Python a objekty potřebujete rozhodnutí od lidí tady na Rootu, samotného vás to nezajímá natolik, aby rozhodnutí vzešlo z vašich vlastních tužeb, pohnutek, potřeb a zájmů. Jakou máte motivaci učit se programovat? To to hodláte dělat jen kvůli penězům?
Objektové programování dneska považuji za základní techniku. Můžete najít spoustu oblastí, kde to nemá smysl, nebo je to jednodušší dělat jinak (sám jsem v php vytvořil mraky kódu bez jediného objektu), ale většinou je to s objekty jednodušší a smysluplnější.
Co děláte se svým volným časem, když skončíte s prací na PHP programech? Objektové programování a Python nestudujete, čím si teda krátíte svůj čas? Nenajde se tam něco, čemu byste se věnoval mnohem raději a ve výsledku i s větším úspěchem?
Nechci programovat jenom kvůli penězům - už od chvíle, kdy jsem napsal první menší skript a on fungoval jsem tak nějak věděl, že se chci v tomhle směru zdokonalit a stát se odborníkem. Avšak práce je v dnešní době jedna z nejcennějších věcí, které člověk má a já se jednoduše nechci dostat do problému, protože mě tenhle "tanec" se zaměstnavateli za pár let čeká - k čemu je v dnešní době člověk bez uplatnění, že? Řekněme, že jsem na rozcestí a zmatený možnostmi, které se mi nabízí, proto se radši zeptám lidí z oboru na názor. Chápu, že OOP má své výhody, ale pro mě je především rozhodující, jestli bez něj mám šanci na uplatnění, jaké jsou jeho výhody a kde se jej mám naučit. Teprve začínám studium na SŠ a v PHP jsem samouk (k různým webovým technologiím mě to táhne delší dobu), ale pokud je tu lepší možnost psaní kódu, chci vědět, že to bude cesta správným směrem a ne ztráta času.
-
Chápu, že OOP má své výhody, ale pro mě je především rozhodující, jestli bez něj mám šanci na uplatnění, jaké jsou jeho výhody a kde se jej mám naučit. Teprve začínám studium na SŠ a v PHP jsem samouk (k různým webovým technologiím mě to táhne delší dobu), ale pokud je tu lepší možnost psaní kódu, chci vědět, že to bude cesta správným směrem a ne ztráta času.
Každé paradigma má své výhody a nevýhody. OOP má těch výhod poměrně dost a jednou z nich je například velmi dobře čitelný kód programu. Když je program lépe čitelný, programátor udělá méně chyb a práce mu jde rychleji od ruky. Další výhodou OOP je, že při správném návrhu při jeho rozšiřování o další funkcionalitu zpravidla nemusíš upravovat stávající kód, ale jen přidáš další.
-
Nechci programovat jenom kvůli penězům - už od chvíle, kdy jsem napsal první menší skript a on fungoval jsem tak nějak věděl, že se chci v tomhle směru zdokonalit a stát se odborníkem.
Výborně. Jděte a dělejte to, nikoho se neptejte, jestli se to vyplatí. Naučte se to, naučte se tamto, vyzkoušejte tohle. Na budoucího zaměstnavatele budete působit jako mimozemšťan, když přiznáte nějaké zkušenosti a zájem o obor. K pohovorům chodí spousta lidí "pro zaměstnání", málo lidí chodí uplatnit věci, které umí.
Avšak práce je v dnešní době jedna z nejcennějších věcí, které člověk má a já se jednoduše nechci dostat do problému, protože mě tenhle "tanec" se zaměstnavateli za pár let čeká - k čemu je v dnešní době člověk bez uplatnění, že?
Tak je to zájem, nebo peníze, co vás k programování táhne? Takhle to vypadá, že cennější jsou přece jen ty peníze.
Vykašlete se na uplatnění. Zkoušejte, co vám půjde, vypadá to, že jste mladý a máte na to spoustu času. Zkoušení, experimentování a prozkoumávání nových věcí se vyplatí. Příležitostí je všude spusta a když budete mít vlastních zkušeností dost, budete v budoucím zaměstnání vědět, po čem sáhnout, co budete chtít dělat. Možná budete mít méně peněz, než konzultant sapu, ale budete moci dělat věci podle sebe.
Přestaňte se ptát ostatních, jestli se to vyplatí, oni vám to neřeknou. Nezjistíte to jinak, než že to zkusíte.
Za mě: vyplatí se to. Nastudujte si to.l
-
Áno, určite má zmysel učiť sa OOP. Najdôležitejšie ale je učiť sa ho tak, aby si pochopil princípy - postupovať štýlom "tak teraz sem budeme písať nejaké to class a private a tak" je na nič, pokiaľ nevieš prečo to píšeš práve tak, čo si tým zjednodušíš, prípadne skomplikuješ.
OOP je nástroj a tak k nemu treba pristupovať, na veľa vecí je vhodnejšie než procedurálne programovanie, ale často z rôznych dôvodov vhodné nie je.
Inak, ak chceš programovať profesionálne, určite by si sa mal pozrieť aj na iné jazyky než PHP - je celkom jedno či to bude C++, Java, C#, Python, atď - každý jazyk rieši rôzne veci inak a je vhodný na iné veci (s trochou ohýbania sa skoro každý dá použiť skoro na všetko, ale výsledok často býva žalostný).
-
podla mna nejde o "preucovanie", ale jednoducho dalsi krok v uceni. Ak ho neurobis, budes skratka vediet menej.
-
Vykašlete se na uplatnění. Zkoušejte, co vám půjde, vypadá to, že jste mladý a máte na to spoustu času. Zkoušení, experimentování a prozkoumávání nových věcí se vyplatí. Příležitostí je všude spusta a když budete mít vlastních zkušeností dost, budete v budoucím zaměstnání vědět, po čem sáhnout, co budete chtít dělat. Možná budete mít méně peněz, než konzultant sapu, ale budete moci dělat věci podle sebe.
A čím se bude živit? Je hezké, co mu radíš, ale nefunguje to. Když se tě zeptají, jestli umíš nějakou šílenou knihovnu a ty jim řekneš, že umíš programovat, tak se na tebe vykašlou. Zase mu to nekresli tak hezky. Zájem je dobrá věc, ale uplatnění s tím v ČR je velmi problematické.
-
A čím se bude živit? Je hezké, co mu radíš, ale nefunguje to. Když se tě zeptají, jestli umíš nějakou šílenou knihovnu a ty jim řekneš, že umíš programovat, tak se na tebe vykašlou. Zase mu to nekresli tak hezky. Zájem je dobrá věc, ale uplatnění s tím v ČR je velmi problematické.
Když bude znát nějakou šílenou knihovnu a oni budou chtít jinou šílenou knihovnu, tak se na něj také vykašlou.
Uplatnění jako programátor je problematické, pokud nemáš zájem o programování. Proto také považuji zájem o programování jako prvořadý a teprve v druhé řadě je hledání uplatnění pro konkrétní jazyk.
-
Jenže přesně tak to je. Takže mu radíte, aby byl bez práce. Ale zase plný nadšení. To ho pak brzy přejde :D
Kdo má zájem o programování? Většina programátorů jsou lemplové, kteří tam chodějí jen kvůli penězům. Stejní pak uměj jednu obrovskou knihovnu a lepí dohromady IS za miliony. Takže zase špatně.
Zájem o programování je hlavně zájem o matematku a abstraktní věci. Zkus to někde nabídnout na pohovoru a uvidíš, jak rychle poletíš.
-
Zájem o programování je hlavně zájem o matematku a abstraktní věci. Zkus to někde nabídnout na pohovoru a uvidíš, jak rychle poletíš.
Nejsem si jist, jestli bych chtěl dělat pro firmu, která si najala tak mizerného recruitera.
-
Zájem o programování je hlavně zájem o matematku a abstraktní věci. Zkus to někde nabídnout na pohovoru a uvidíš, jak rychle poletíš.
Nejsem si jist, jestli bych chtěl dělat pro firmu, která si najala tak mizerného recruitera.
Pozor na to, že mluvíš o většině firem. Já to právě zažil. Je to smutné, ale občas bych chtěl také dělat něco za peníze. Recruiteři jsou vždy blbci, HR to stejné. Jenže když je to i šéf a budoucí kolega? Co pak?
-
Recruiteři jsou vždy blbci, HR to stejné. Jenže když je to i šéf a budoucí kolega? Co pak?
Mám jinou zkušenost. Recruiter mě přesvědčoval, abych u nich nastoupil. Nemůžeš všechny házet do jednoho pytle.
-
Cca 20 pohovorů ročně a nová práce každých 6 měsíců. Podle mě nemáš jen zkušenosti. Samozřejmě bych byl rád, kdybys měl pravdu, ale po těch tvých názorech předtím to úplně nevidím.
-
Cca 20 pohovorů ročně a nová práce každých 6 měsíců. Podle mě nemáš jen zkušenosti. Samozřejmě bych byl rád, kdybys měl pravdu, ale po těch tvých názorech předtím to úplně nevidím.
Tvé zkušenosti bych mít nechtěl. V současném zaměstnání jsem už mnoho let a nehodlám to měnit. Své názory (včetně těch předtím) prezentuji denně a jsem respektován. Nemám potřebu chodit na pohovory.
-
O tom to je. Nevíš a radíš. Já mu jen chtěl říct, jak dopadne. Jestli jsi ten Kit z Develu, tak tam ti říkají Babica programování. Což je také určitě respekt. Pokud jsi někdo jiný, tak máš jen stejný styl a prodáváš své podivné názory asi podivným lidem... takovým, které právě potkávám na těch pohovorech.
-
O tom to je. Nevíš a radíš. Já mu jen chtěl říct, jak dopadne. Jestli jsi ten Kit z Develu, tak tam ti říkají Babica programování. Což je také určitě respekt. Pokud jsi někdo jiný, tak máš jen stejný styl a prodáváš své podivné názory asi podivným lidem... takovým, které právě potkávám na těch pohovorech.
Má mu tedy radit člověk, který musí každých 6 měsíců měnit zaměstnání, protože se v něm neudrží?
Ano, jsem ten Kit z Develu. Někteří mě považují za Babicu programování, jiní mi děkují za cenné rady, někteří mi za to i platí.
Zato o tobě jsem nikdy nikde nečetl.
-
To záleží na tom, jaký je. Jestli je neschopný a učí se to jen proto, že IT je fajn a je tam hodně peněz, tak mu může poradit kdokoli.
Pokud by ale opravdu chtěl být odborník a něco umět, tak se mu může stát, že bude mít problém s hledáním. Dneska se totiž programátor říká běžně lidem, kteří jsou lepší uživatelé a lepiči.
Babica má také své publikum, v tom problém nevidím. Plno lidí mu určitě bude vděčných.
Proč bys o mně měl číst? Nejsem nějaký obchodník, abych byl všude. Dělám svoji práci, která vidět není.
-
Dělám svoji práci, která vidět není.
No vidíš. A já dělám svou práci, která vidět je.
O lepičích kódu jsem už slyšel a jejich práci jsem i viděl. A ještě to svádějí na IDE.
-
Kdyz se 2 delnici hadaji, rentier se smeje.
-
Object Oriented Programming is an expensive disaster which must end (http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end)
-
Kdyz se 2 delnici hadaji, rentier se smeje.
Horší je, že pak my servisáci to musíme udržet v chodu, to co ti dělníci postaví... ::) ::) ::) ::) :) ;) ;D
-
Tak a je to tu znovu. Tazatel se neptal na to, kdo z vas je vetsi boss na prijmaci pohovory a jak kdo z vas dokaze s budoucim zamestnavatelem vyjebat. Tazatel se ptal, proc se ucit oop. Take se neptal na to, kam ma smerovat jeho zivotni pout. Opravdu se ptal jen na to oop.
Panove, nebo spise deti, bezte si hrat jinam :-) diky.
-
Object Oriented Programming is an expensive disaster which must end (http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end)
To je dobry clanek. Ale je pomerne tezke mu porozumet, aniz by clovek zkusil naucit se jazyky jako Common Lisp, Clojure nebo Haskell. Take ta Amstrongova dizertace o Erlangu stoji za precteni.
-
Ma. Nevymyslej kraviny a uc se oop :-)
Jak vidím, dal jsi mu stručnou a jasnou odpověď. A vzhledem k tomu, že dotaz byl zodpovězen, můžeme se bavit o kravinách. Nemohu za to, že kdekdo má potřebu se do mne navážet. Veřejné gettery a settery prostě nemám rád a nestydím se za to.
-
To nebylo o navážení. Šlo o to, že kdyby vzal vaši radu správně, tak pak bude mít problém najít práci. Naučit se teorii OOP je na chvíli, tím nic samozřejmě nezkazí.
-
Tazatel se neptal na to, kdo z vas je vetsi boss na prijmaci pohovory a jak kdo z vas dokaze s budoucim zamestnavatelem vyjebat. Tazatel se ptal, proc se ucit oop. Take se neptal na to, kam ma smerovat jeho zivotni pout. Opravdu se ptal jen na to oop.
Nikoliv. Nic takového v původním dotazu nečtu. Tazatel se ptá, jestli má cenu se učit objektové programování a jak se to případně dotkne jeho pracovního uplatnění.
Zkrátím jeho dotaz do absurdna:
Chci programovat. Má smysl se to učit? Co na to řekne můj zaměstnavatel?
Kdyby se zeptal "který jazyk je nejvhodnější na naučení objektově orientovaného programování?", byla by tu debata úplně jiná. Ale dotyčný se zajímá o to, jaký názor na jeho umění bude mít přijímající HR. Proto je v debatě objektové programování shrnuto do prostého "Učte se to, má to smysl" a drtivá většina příspěvků se drží tématu a ukazuje, co si o takovém přístupu pravděpodobně bude HR myslet.
-
To nebylo o navážení. Šlo o to, že kdyby vzal vaši radu správně, tak pak bude mít problém najít práci. Naučit se teorii OOP je na chvíli, tím nic samozřejmě nezkazí.
Srovnávat mě s Babicou bez uvedení souvislostí je navážení, které s tématem nesouvisí.
Teorie OOP je vcelku jednoduchá, ale uvedení do praxe už tak jednoduché není, zejména pokud jsi dlouho programoval procedurálně. Dá dost práce se odnaučit všechny ty zlozvyky kolem cyklů, switchů, elsů, breaků, ... Po dvou letech však ještě programátor není tak zkažený, že by to nezvládl. Naštěstí jsou jazyky PHP a Python multiparadigmatické a různé přístupy se dají výhodně kombinovat.
-
Ano, má cenu OOP se naučit. Není to zase tak složité.
Já tedy OOP znám jenom z Javy ( zapouzdření,dědičnost a polymofismus ). Nedokáži si představit několika 1e4-1e6 řádkový program bez OOP. Zapouzdření se rozhodně hodí při velkých projektech kvůli bezpečnému přístupu, efektivní dědičnost těžce snižuje velikost celkového kódu a s tím polymorfismem je to trochu horší, ne vždycky se elegatně dá využít.
Závěr : jdi do toho
-
Ano, má cenu OOP se naučit. Není to zase tak složité.
Nedokáži si představit několika 1e4-1e6 řádkový program bez OOP.
jadro, user-land-nastroje,apache, databaze, scriptovaci jazyky .... kam se podivam, tam u veklych projektu/programu vidim proceduralni programovani
-
Ještě pro tazatele:
Nepřemýšlejte teď nad svým budoucím zaměstnáním. Máte dost času. PHP je hodně obsáhlá a užitečná oblast, ale je to jen malá část toho, co na počítačích můžete dělat. Otázka, jestli se věnovat objektům, působí hloupě (není hloupá, jen hloupě působí). Ano, naučte se to. Zkuste se naučit nebo se aspoň seznámit s jakoukoli tématikou, která s programování aspoň okrajově souvisí. PHP, grafika, databáze, statistika, zpracování textu, zpracování signálů, android, arm, elektronika... cokoliv.
Jestli se jednou chcete živit programováním, vytvořte si už dnes nějaké vlastní projekty. Cokoliv, co vám udělá radost, co vás bude zajímat, o čem sníte. Jakákoliv hloupost je výborná - většina lidí dělá jen to, co se jim řekne, nikdy nezkusí něco sami. Máte sice jen malou šanci, že to k něčemu bude, ale získáte k problémům přístup, který mají zaměstnavatelé obvykle rádi. Do CV si to pak takové projekty můžete klidně napsat. Personalisti nejsou úplně blbí a vědí, že se ucházíte o své první zaměstnání. Čí CV zaujme více? "Dosud jsem nikde nepracoval, přes programování jsem ing" nebo "Počítače jsou mým koníčkem, dělal jsem projekty takové a makové, přes programování jsem ing"? S tím druhým přístupem je pravděpodobné, že žádné CV ani sepisovat nebudete, prostě si vás někdo dřív všimne a práci vám nabídne. Nějaká CV už mýma rukama prošla a vždy jsem kroutil hlavou nad tím, že se někdo uchází o práci s počítači a mezi tunou zálib počítače neuvede.
-
Ano, má cenu OOP se naučit. Není to zase tak složité.
Nedokáži si představit několika 1e4-1e6 řádkový program bez OOP.
jadro, user-land-nastroje,apache, databaze, scriptovaci jazyky .... kam se podivam, tam u veklych projektu/programu vidim proceduralni programovani
Java zase tak moc procedurální není, ne?
-
Object Oriented Programming is an expensive disaster which must end (http://www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end)
To je dobry clanek. Ale je pomerne tezke mu porozumet, aniz by clovek zkusil naucit se jazyky jako Common Lisp, Clojure nebo Haskell. Take ta Amstrongova dizertace o Erlangu stoji za precteni.
Plně souhlasím s tím, že se musí člověk seznámit s funkcionálními jazyky (a vůbec, ne-mainstream), jinak je prostě mimo. A právě proto mi článek nepřijde dobrý, naopak - celá jeho podstata "lidi mají omezený rozhled, může za to OOP" mi přijde jako jeden velký straw man (plus spousta malých, například můj oblíbený "jazyk nepotřebuje patterny").
Celkově klasický případ falacy "lidi nakecají spoustu o X a většinou neví co mluví, z toho plyne že X je blbost". Jmenuje se to nějak?
Z toho plyne i (IMHO) jediná rozumná rada tazateli: uč se objektový přístup ale hlavně se i uč se funkcionální přístup a dávej si pozor na rozpoznání co je podstata a co je mytologie (pravda, je to těžké). Tedy, pokud máš vyšší ambice než "záskat práci u zaměstnavatele".
-
Z toho plyne i (IMHO) jediná rozumná rada tazateli: uč se objektový přístup ale hlavně se i uč se funkcionální přístup a dávej si pozor na rozpoznání co je podstata a co je mytologie (pravda, je to těžké). Tedy, pokud máš vyšší ambice než "záskat práci u zaměstnavatele".
Pro šťouraly - ano, v podstatě toto zde již bylo mnohokrát různými slovy řečeno.
-
Java zase tak moc procedurální není, ne?
Java je hodně procedurální. Dá se v ní napsat celá aplikace pouze procedurálně. Java prostě nezapře svůj původ v jazyku C.
-
Java zase tak moc procedurální není, ne?
No, Java je sice "OOP" a tedy není není "procedurální", ale troufám si říci že 99% (plus minus) programů je napsáno procedurálně. Pokud se takové tvrzení někomu zdá divné nebo dokonce absurdní, tak by si v tom fakt udělat jasno.
-
Ano, má cenu OOP se naučit. Není to zase tak složité.
Nedokáži si představit několika 1e4-1e6 řádkový program bez OOP.
jadro, user-land-nastroje,apache, databaze, scriptovaci jazyky .... kam se podivam, tam u veklych projektu/programu vidim proceduralni programovani
Například jádro linuxu používá docela často objektový přístup. Zda se jedná o OOP nebo ne, to by asi musela posoudit nějaká komise (a já v ní být nechci).
-
Jeste jsem nevidel informacni system nenapsany objektove. Asi jste tech velkych programu moc nevidel.
-
Java zase tak moc procedurální není, ne?
Java je hodně procedurální. Dá se v ní napsat celá aplikace pouze procedurálně. Java prostě nezapře svůj původ v jazyku C.
Jasný :D
-
Tak a je to tu znovu. Tazatel se neptal na to, kdo z vas je vetsi boss na prijmaci pohovory a jak kdo z vas dokaze s budoucim zamestnavatelem vyjebat. Tazatel se ptal, proc se ucit oop. Take se neptal na to, kam ma smerovat jeho zivotni pout. Opravdu se ptal jen na to oop.
Panove, nebo spise deti, bezte si hrat jinam :-) diky.
to je jen nazorna ukazka, jak dopadne kazdy dlouholety programator. jako male blbe decko.
-
Ano, má cenu OOP se naučit. Není to zase tak složité.
Nedokáži si představit několika 1e4-1e6 řádkový program bez OOP.
jadro, user-land-nastroje,apache, databaze, scriptovaci jazyky .... kam se podivam, tam u veklych projektu/programu vidim proceduralni programovani
jenze to je absurdni priklad, protoze nejde o enterprise. v enterprise se programatori konzumuji jako rohliky, tak proto potrebujes nejaky maslo typu OOP, aby se enterprise nezakuckal.
-
Jeste jsem nevidel informacni system nenapsany objektove. Asi jste tech velkych programu moc nevidel.
Tezko rict, co se mysli pod "informacni system", ale vedel bych o takovem. Nevypada to spatne.
A právě proto mi článek nepřijde dobrý, naopak - celá jeho podstata "lidi mají omezený rozhled, může za to OOP" mi přijde jako jeden velký straw man (plus spousta malých, například můj oblíbený "jazyk nepotřebuje patterny").
Rekl bych, ze jsi ten clanek spatne pochopil, jako hodne lidi. Drtiva vetsina soucasne kritiky OOP (shodou okolnosti vysel na HN taky clanek, ktery to popisuje lepe, ale taky byl vesmes spatne pochopen) je predevsim kritikou konceptu "tridy", "zapouzdreni" a "navrhovych vzoru". Takove je OOP v pojeti jazyku jako C++ nebo Java, ale nezahrnuje to vsechno, co kdy kdo nazval OOP. Tedy, odpurci OOP vetsinou chteji, aby data a funkce byly odlisne objekty, ktere jsou na stejne urovni, pripadne aby bylo mozne vytvaret abstrakce i jinak nez jen jako ruzne podivne kombinace trid. A prave predevsim o tom je i ten zmineny clanek, a ackoli je obcas trochu rozvlacny, poukazuje na alternativy.
Například jádro linuxu používá docela často objektový přístup. Zda se jedná o OOP nebo ne, to by asi musela posoudit nějaká komise (a já v ní být nechci).
V tomto kontextu neni jadro Linuxu predmetem te kritiky, protoze autori Linuxu se nepokouseji o zapouzdreni, a funkce a struktury pro ne predstavuji odlisne abstrakce. Nesnazi se vsechno ostatni vyrobit ze trid, jak se to dela treba v Jave.
-
Preucovat rozhodne ne. Nejpouzivanejsi jazyk je C, tak jestli ti vyhovuje proceduralni tak si najdi nejdi nejaky dobre placeny jobik napr. v C. A nejakou mensi brozurku :-) o OOP by sis precist mel a mozna se ti to zalibi. A urcite nezacinej s OOP v C++ :-)
-
Jeste jsem nevidel informacni system nenapsany objektove. Asi jste tech velkych programu moc nevidel.
A co třeba takové drobnosti jako třeba SAP nebo Siebel?
-
Ja myslim ze to smysl ma. A neskoncil bych jenom u OOP.Podival bych se jeste na funkcionalni a logicky programovani.
I kdyz bys to nakonec primo na nic nepouzil, tak znalost tehle veci z tebe udela lepsiho programatora...
-
Preucovat rozhodne ne. Nejpouzivanejsi jazyk je C, tak jestli ti vyhovuje proceduralni tak si najdi nejdi nejaky dobre placeny jobik napr. v C. A nejakou mensi brozurku :-) o OOP by sis precist mel a mozna se ti to zalibi. A urcite nezacinej s OOP v C++ :-)
Statistiky jsou jako anální otvory, každý máme ten svůj. Co se dneska píše v C? Buď velmi náročné věci, kam v žádném případě nevezmou žádného nedouka.
Anebo věci blízko HW a zejména na non-PC HW. Tam "nedouky" celkem i berou - ale musí se v tom HW orientovat (a samozřejmě se nejedná o žádné dobře placené jobíky).
A je velká otázka, jestli někdo, kdo patlá weby v PHP a neví, jestli by mu bylo k něčemu OOP, bude tomu HW rozumět. Ale jo, je to možné, může to být kluk z elektroprůmky, co si stavěl registry a řadiče z klopných obvodů a to PHP si tak zkusil, takže má slušný základ na C programátora jednočipů a podobných věcí. Ale také to tak být nemusí, že...
-
Cim blbejsi dotaz, tim delsi "diskuse".
Samozrejme, ze pokdu se chce clovek nazyvat programatorem, tak musi zvladat OOP a funkcionalni programovani, at uz ho na danem projektu pouzije nebo ne.
-
Pokud děláš sám, piš si to, jak chceš. Pokud chceš pracovat v týmu, tak se musíš z velké části přizpůsobit (nebo umět přesvědčit lidi o své pravdě). Objektivně je to tak, že OOP smysl má (čím větší projekt, tím víc), ale jeho význam se dost přehání. Jde o to psát přehledný, jednotný, jednoduchý a znovupoužitelný kód, vyhýbat se duplicitám. OOP v tom na velkých projektech trochu pomáhá. U webů v PHP půjde spíš o menší a jednodušší weby s menším významem nějakých přírodních objektů (jako třeba okno v GUI), tj. význam OOP bude menší než u klasického desktopového programování.
-
1. si nedokazu predstavit, kdybych mel dnes v PHP psat neco neobjektove - a to i nejakou mensi vec. Samozrejme zalezi na tom, na co je skript/projekt urceny.
2. Jak myslis "preucovat se do OOP"? OOP je od proceduralniho programovani odlisne, je to jeho nadstavba (snad to tak muzu napsat). OOP urcite, URCITE ano. Uz jen proto, ze na nej narazis (v PHP tuplem) na kazdym rohu.
-
To hlavní na objektově orientovaném programování je členění kódu na menší části, které samy o sobě dávají dobrý smysl, lze je elegantně použít, je u nich zřejmé, co nabízí okolnímu světu. Tedy lze pochopit jejich smysl a funkci, lze je testovat, lze je znovupoužít apod.
ne , tomuhle se rika modularizace
-
1. si nedokazu predstavit, kdybych mel dnes v PHP psat neco neobjektove
ale za to my nemuzeme ...
-
OOP je nic než způsob jak si usnadnit práci a není žádné ne-OOP a OOP programování, programuje se pořád stejně, pouze při OOP stylu některé časté činnosti píše kompilátor za programátora, tudíž se ušetří psaní a mírně se zpřehlední kód.
Tato diskuze vznikla jen a pouze proto, že ohledně OOP už se nakydalo tolik planých řečí že už se v tom začátečníci ztrácejí. OOP je logický vývoj programátorských technik, naučit se ho je třeba bez diskuzí.
-
To hlavní na objektově orientovaném programování je členění kódu na menší části, které samy o sobě dávají dobrý smysl, lze je elegantně použít, je u nich zřejmé, co nabízí okolnímu světu. Tedy lze pochopit jejich smysl a funkci, lze je testovat, lze je znovupoužít apod.
ne , tomuhle se rika modularizace
Mohu poprosit o tvou definici toho co je na OOP to hlavní? Protože zhruba to co h7 napsal jsem si odnesl z těch několika knížek a článků co jsem o tom četl.
-
OOP je nic než způsob jak si usnadnit práci a není žádné ne-OOP a OOP programování, programuje se pořád stejně, pouze při OOP stylu některé časté činnosti píše kompilátor za programátora, tudíž se ušetří psaní a mírně se zpřehlední kód
To sotva. Je to koncepcne neco jineho a je nutne myslet jinak. Samozrejme ze za obojim je nejaka jeste obecnejsi sada myslenek (dekompozice...), daji se najit ruzne analogie, v jednom pristupu si muzes odsimulovat jiny (ostatne turing-churchova teze, zda se, plati)... ale pekny proceduralni kod bude hodne jiny nez pekny oo kod a pekny funkcionalni kod resici ten samy problem.
-
To sotva. Je to koncepcne neco jineho a je nutne myslet jinak.
Tato nepravda se tvrdí tak dlouho, až tomu lidé uvěřili a jsou zmatení :)
Procedurální kód na velkém projektu se limitně blíží koncepci OOP, jenom s tím rozdílem že spousta opakujících se věcí se píše ručně nebo přes makra. Zobecněním těch maker vzniklo OOP a to za účelem ušetření práce.
Funkcionální teď neřeším.
-
Jo, jedno v druhem si odsimulujes. Jak to pak vypada je jina vec.
-
Jo, jedno v druhem si odsimulujes. Jak to pak vypada je jina vec.
Na pohled to vypadá přibližně stejně, s OOP je to mírně přehlednější a pracuje se s tím líp.
Připomínám že nejsem proti OOP, jenom není pravda že OOP je něco naprosto nového a jiného, takže by se toho měli začátečníci bát.
-
Tak pokud prezili "oop" v proceduralnim jazyce, tak se skutecne bat nemuseji.
Jinak na polymorfismu si tyhle pokusy simulovat oop v proceduralnich jazycich vetsinou lamou zuby v okamziku, kdy se pokusis o neco jako mixin.
-
To hlavní na objektově orientovaném programování je členění kódu na menší části, které samy o sobě dávají dobrý smysl, lze je elegantně použít, je u nich zřejmé, co nabízí okolnímu světu. Tedy lze pochopit jejich smysl a funkci, lze je testovat, lze je znovupoužít apod.
ne , tomuhle se rika modularizace
Mohu poprosit o tvou definici toho co je na OOP to hlavní? Protože zhruba to co h7 napsal jsem si odnesl z těch několika knížek a článků co jsem o tom četl.
Mám to chápat tak, že si OOP dělá monopol na knihovny? To, co h7 napsal je jejich celkem přesný popis :)
V OOP se hlavně modeluje pomocí objektů, které poskytují nějaké rozhranní a data jsou schovaná. Způsob návrhu je myslím to hlavní, co dělá OOP, protože jinak se všechny ostatní vlastnosti běžně vyskytují i v neobjektovém programování.
-
které poskytují nějaké rozhranní a data jsou schovaná.
Tohle umí libovolný jazyk s existenciálními typy.
-
Mohu poprosit o tvou definici toho co je na OOP to hlavní? Protože zhruba to co h7 napsal jsem si odnesl z těch několika knížek a článků co jsem o tom četl.
Zajímavým jevem v OOP je rekurze - v definicích metod můžete používat metody, jenž ještě nebyly definovány (budou definovány později v téže třídě nebo dokonce až v podtřídě).
-
Tak pokud prezili "oop" v proceduralnim jazyce
Každý větší projekt k tomu přirozeně a samovolně dospěje, již jsem to uvedl.
Zajímavým jevem v OOP je rekurze - v definicích metod můžete používat metody, jenž ještě nebyly definovány
To také není vynález OOP, který by před OOP neexistoval.
-
...
Zajímavým jevem v OOP je rekurze - v definicích metod můžete používat metody, jenž ještě nebyly definovány (budou definovány později v téže třídě nebo dokonce až v podtřídě).
:o :o :o
To je rekurze?
-
:o :o :o
To je rekurze?
Ano, přesněji se tomu říká otevřená rekurze - viz Closed and Open Recursion (autor Ralf Hinze) (http://www.cs.ox.ac.uk/ralf.hinze/talks/Open.pdf).
-
Teda z téhle diskuse mám takový pocit, že pod OOP někteří schovávají vše, co považují za přínosné a dobré, přitom se vlastně nejsou schopni shodnout na nějaké univerzální definici. To už jsou příznaky náboženství.
...a pak se tu někdo diví, že programy vypadají, jak vypadají, když v 90% se vyžaduje objektový přístup a zároveň 90% vývojářů vlastně pořádně ani neví, co to OOP je a každý si pod tím představuje to svoje. Nakonec se dozvídáme, že strukturování a dekompozice programu na menší funkční bloky je taky vynález OOP, že OOP asi vynalezlo knihovny, že OOP vynalezlo složené datové typy...
Dovolil bych si to tedy shrnout a zobecnit do jedné nábožensky korektní definice: OOP je vše, co je moderní a pokrokové.
:D
-
Podle http://knihy.abz.cz/prodej/objektove-programovani-naucte-se-pravidla-objektoveho-mysleni je OOP volná síť vzájemně komunikujících objektů.
Podle objects.cz je definováno objektové paradigma (tzn. něco obecnějšího než objektové programování):
Prvek v systému nabízí jiným prvkům svou službu možného použití. Jiný prvek přistupuje k tomuto prvku a použije jeho nabízenou službu...
Dále se to dost točí okolo polymorfismu a opětovné použitelnosti kódu.
Který přístup podle vás umožňuje docílit vyšší opětovné použitelnosti, OOP, strukturované programování, nebo něco jiného?
-
Mohu poprosit o tvou definici toho co je na OOP to hlavní? Protože zhruba to co h7 napsal jsem si odnesl z těch několika knížek a článků co jsem o tom četl.
Precti si tento klasicky clanek: http://www.paulgraham.com/reesoo.html (http://www.paulgraham.com/reesoo.html)
OOP neni velmi dobre definovane, tudiz tvoje otazka je nesmyslna. Jak uz jsem rekl, kritici vetsinou kritizuji omezenost toho, co se nazyva OOP u mainstreamovych jazyku jako C++, Java, C#.
-
Podle http://knihy.abz.cz/prodej/objektove-programovani-naucte-se-pravidla-objektoveho-mysleni je OOP volná síť vzájemně komunikujících objektů.
...
Prvek v systému nabízí jiným prvkům svou službu možného použití. Jiný prvek přistupuje k tomuto prvku a použije jeho nabízenou službu...
A kde mas v techto definicich treba SOLID? Volna sit vzajemne komunikujicich objektu muze byt cokoliv... pokud se nejak blize neomezi, co to vlastne ten objekt je. Treba v C takovymi "objekty" jsou funkce, ktere komunikuji predavanim parametru. Ditto druha definice, jen se tem funkcim rika "prvek" a ne "objekt". Tohle jsou v podstate definice kruhem.
-
Podle http://knihy.abz.cz/prodej/objektove-programovani-naucte-se-pravidla-objektoveho-mysleni je OOP volná síť vzájemně komunikujících objektů.
Tedy to zni jako by ty programy zily vlastnim zivotem. Uz se nedivim, ze nektere programy se chovaji dosti nevypocitatelnym zpusobem.
-
Dovolil bych si to tedy shrnout a zobecnit do jedné nábožensky korektní definice: OOP je vše, co je moderní a pokrokové.
Já to tak nechtěl napsat, protože je to už moc flamoidní. Ale nějak tak na mě ten buzzword taky působí.
Tak jediná věc, která podle mě to oop odlišuje je způsob návrhu, kdy se klade hodně důraz na rozhranní a data jsou vedlejší záležitost. Myšlenka, že kód transformuje data, je v oop asi hereze. Pak z toho lezou divočiny typu "posílám zprávu intu, aby k sobě přičetl jiný int a vrátil mi výsledek".
-
Mohu poprosit o tvou definici toho co je na OOP to hlavní? Protože zhruba to co h7 napsal jsem si odnesl z těch několika knížek a článků co jsem o tom četl.
Zajímavým jevem v OOP je rekurze - v definicích metod můžete používat metody, jenž ještě nebyly definovány (budou definovány později v téže třídě nebo dokonce až v podtřídě).
a proceduru z promenne zavolat umis?
-
mi to prijde, ze OOP je jenom oznackovani ovecek, co se boji, ze za ohradou muze byt vlk i kdyz je tam treba uplne vlkoprazdno a zelenejsi travicka. a proto se OOP ovecky nikdy nepodivaji dal nez uvnitr ohrady. nechci to psat jako rovnocenne s "nedouk", protoze se to lisi.
-
Podle http://knihy.abz.cz/prodej/objektove-programovani-naucte-se-pravidla-objektoveho-mysleni je OOP volná síť vzájemně komunikujících objektů.
To jsou právě ty nesmysly, které se pindají tak dlouho až tomu lidi uvěřili.
Podle objects.cz je definováno objektové paradigma (tzn. něco obecnějšího než objektové programování):
Prvek v systému nabízí jiným prvkům svou službu možného použití. Jiný prvek přistupuje k tomuto prvku a použije jeho nabízenou službu...
Dále se to dost točí okolo polymorfismu a opětovné použitelnosti kódu.
OOP není o službách. Polymorfismus nikdo neví co je. Znovupoužitelnost je správně a skutečně jednou z motivací vzniku OOP bylo usnadnění znovupoužitelnosti.
Který přístup podle vás umožňuje docílit vyšší opětovné použitelnosti, OOP, strukturované programování, nebo něco jiného?
Jde to mnoha způsoby, ale s OOP je to asi nejpohodlnější.
Teda z téhle diskuse mám takový pocit, že pod OOP někteří schovávají vše, co považují za přínosné a dobré, přitom se vlastně nejsou schopni shodnout na nějaké univerzální definici. To už jsou příznaky náboženství.
To je proto, že se kolem objektů neustále pindají nesmysly a tak jsou lidi zmatení. Hlavní smysly OOP jsou tyto dva:
- Usnadnění psaní kódu a mírně vyšší přehlednost kódu
- Usnadnění znovupoužitelnosti kódu
A žádné zázraky s OOP se prostě nekonají.
-
Precti si tento klasicky clanek: http://www.paulgraham.com/reesoo.html (http://www.paulgraham.com/reesoo.html)
dikyJS, pěkné shrnutí. Jinak se omlouvám za nevhodně položený dotaz, původní otázka měla směrovat na základ toho co dělá OOP tak odlišným že má, podle některých, vyžadovat úplně jiné myšlení.
Víceméně souhlasím s Kolemjdoucím, ale přeci jen, zde je můj popis jak OOP vnímám:
Já OOP zatím vnímám jako vývoj dopředu. Podobně jako se z podprogramů staly funkce, tak se z "modulů" vynořili objekty.
Něco jako souhrn "best practices" modulů, navíc podpořeno novým velmi zjednodušeným zápisem. Díky tomu lze přenést část zodpovědností a pravidel z programátora na překladač. Navíc nový zjednodušený zápis umožňuje používat "kouzla" jako polyformizmus v rozsahu která by dříve byla neudržitelně složitá(což neznamená že se musí používat aby byl program dle OOP). Také, stále díky zjednodušení, OOP přístup zjemňuje granularitu, takže se jako o objektech uvažuje snadněji v daleko širším měřítku, a ve více úrovních.
Za základ OOP pak považuji to že se návrh (nebo fáze návrhu?) cíleně zaměřuje na hledání toho co lze oddělit a jak to bude spolupracovat. Plus sada kritérií (s proměnou váhou dle situace/programu/..) dle kterých se určování objektů/tříd provádí. Nicméně jako u všech metodik si myslím že je třeba používat je se zdravým rozum a neaplikovat je slepě až do absurdních rozměrů.
Čili není to až tak úplně odlišné, spíš jen vylepšení a kodifikování starších ověřených postupů, vedoucí k novým možnostem.
-
Podle http://knihy.abz.cz/prodej/objektove-programovani-naucte-se-pravidla-objektoveho-mysleni je OOP volná síť vzájemně komunikujících objektů.
To jsou právě ty nesmysly, které se pindají tak dlouho až tomu lidi uvěřili.
A co si pod tim predstavujes ty nepindale?
-
A co si pod tim predstavujes ty nepindale?
Psal jsem to tady už několikrát, si to projdi. OOP je ve zkratce nade vší pochybnost programátorská technika vedoucí k usnadnění práce a usnadnění znovupoužitelnosti kódu, nikoliv nějaký zázrak od bohů.
-
Navíc nový zjednodušený zápis umožňuje používat "kouzla" jako polyformizmus v rozsahu která by dříve byla neudržitelně složitá.
Nikdo neví co je polymorfismus. Dobrý jazyk umí overload i bez OOP.
-
A co si pod tim predstavujes ty nepindale?
Psal jsem to tady už několikrát, si to projdi. OOP je ve zkratce nade vší pochybnost programátorská technika vedoucí k usnadnění práce a usnadnění znovupoužitelnosti kódu, nikoliv nějaký zázrak od bohů.
PResne! To jsi psal, ale neni to definice. To je popis vyhod, ale da se +- aplikovat trebas na modularni programovani nebo funkcnionalni programovani.
-
A co si pod tim predstavujes ty nepindale?
Psal jsem to tady už několikrát, si to projdi. OOP je ve zkratce nade vší pochybnost programátorská technika vedoucí k usnadnění práce a usnadnění znovupoužitelnosti kódu, nikoliv nějaký zázrak od bohů.
Dokopy si ale nenapisal nic, nez vseobecne pindy.
-
Navíc nový zjednodušený zápis umožňuje používat "kouzla" jako polyformizmus v rozsahu která by dříve byla neudržitelně složitá.
Nikdo neví co je polymorfismus. Dobrý jazyk umí overload i bez OOP.
Overload neni polymorfismus, minimalne ne ve smyslyu OOP. Overload pouziva casnou vazbu, polymorfismus pozdni vazbu.
-
PResne! To jsi psal, ale neni to definice. To je popis vyhod, ale da se +- aplikovat trebas na modularni programovani nebo funkcnionalni programovani.
Však ono to také tak je :) Není žádná ultramegahustá definice OOP a správně jsi uvedl, že stejný postup můžeš aplikovat i jinde a jinak. Objektem se rozumí množina dat a množina funkcí k manipulaci s těmito daty a realizovat to lze různě.
-
Overload neni polymorfismus, minimalne ne ve smyslyu OOP. Overload pouziva casnou vazbu, polymorfismus pozdni vazbu.
Na http://cs.wikipedia.org/wiki/Polymorfismus_(programov%C3%A1n%C3%AD) píšou něco jiného a nikdo neví jestli je polymorfismus overload nebo virtuální metoda nebo dokonce šablona. Hádat se o to nechci, jen chci uvést že prakticky nikdo, ani já, neví co to polymorfismus je.
-
Víceméně souhlasím s Kolemjdoucím, ale přeci jen, zde je můj popis jak OOP vnímám:
Já OOP zatím vnímám jako vývoj dopředu. Podobně jako se z podprogramů staly funkce, tak se z "modulů" vynořili objekty.
Objekty a moduly jsou trochu něco jiného. Modul může být jen sada funkcí, které transformují nějakou chytrou datovou strukturu.
Něco jako souhrn "best practices" modulů, navíc podpořeno novým velmi zjednodušeným zápisem.
Ještě že jsou ty "best practices" v úvozovkách. Spousta věcí se skvěle píše stylem u kterého se o objektech nedá vůbec mluvit.
Díky tomu lze přenést část zodpovědností a pravidel z programátora na překladač.
(FLAME) Ne všechny staticky typované jazyky jsou objektové. A design by contract taky není nějaká typická objektová záležitost.
Navíc nový zjednodušený zápis umožňuje používat "kouzla" jako polyformizmus v rozsahu která by dříve byla neudržitelně složitá(což neznamená že se musí používat aby byl program dle OOP).
Evidentně jsi neviděl Classy v Haskellu. To jsou teprve kouzla. A bez objektů.
Za základ OOP pak považuji to že se návrh (nebo fáze návrhu?) cíleně zaměřuje na hledání toho co lze oddělit a jak to bude spolupracovat.
Tohle je modulární programování.
-
Nikdo neví co je polymorfismus. Dobrý jazyk umí overload i bez OOP.
Podle sebe nesuď ostatní. Co se týče Javy, já ho ovládám. Jedná se o neskutečně triviální techniku programování.
-
Co se týče Javy, já ho ovládám.
Výborně a co to tedy podle tebe je ten polymorfismus ?
Overload, override, šablony atd. atd. ovládá mnoho lidí, s tím problém není.
-
Ale na toto som aj ja zvedavy.
-
... Spousta zaměstnavatelů ale požaduje znalosti OOP.
Proto se chci zeptat, jestli se mám přeučovat v PHP na OOP a objekty se v Pythonu učit hned, když mi procedury vyhovují mnohem více a co by pro mě z hlediska uplatnění znamenalo, pokud bych zůstal u procedur.
A už se tady zase poměřují pindíci ...
BTW: http://forum.root.cz/index.php?topic=9861.0 (http://forum.root.cz/index.php?topic=9861.0)
-
PResne! To jsi psal, ale neni to definice. To je popis vyhod, ale da se +- aplikovat trebas na modularni programovani nebo funkcnionalni programovani.
Však ono to také tak je :) Není žádná ultramegahustá definice OOP a správně jsi uvedl, že stejný postup můžeš aplikovat i jinde a jinak. Objektem se rozumí množina dat a množina funkcí k manipulaci s těmito daty a realizovat to lze různě.
Mnozina hodnot a operaci je typ, ne objekt. Do te tve definice se v pohode vejde i Integer v Pascalu ;)
(ciste pro jistotu - class v OOP neni uplne to same jako typ, protoze ne kazdy objekt musi nutne byt instanci class)
-
Mnozina hodnot a operaci je typ, ne objekt. Do te tve definice se v pohode vejde i Integer v Pascalu ;)
Záleží na terminologii a implementaci, ale v zásadě je možno pomocí OOP definovat i vlastní typy, pochopitelně. (V Pascalu nikoliv, to je ale vedlejší).
-
Mnozina hodnot a operaci je typ, ne objekt. Do te tve definice se v pohode vejde i Integer v Pascalu ;)
Záleží na terminologii a implementaci, ale v zásadě je možno pomocí OOP definovat i vlastní typy, pochopitelně. (V Pascalu nikoliv, to je ale vedlejší).
Ale samozrejme, ze v Pascalu (a tim myslim uz Wirthuv pascal, ne nejakou pozdejisi odvozeninu) slo delat vlastni typy.
Ale pointa je neco jineho. Pletes si obecnejsi - moznost udelat si typ, modularizaci, s tim, jak to resi OOP.
-
...
S komentáři pod jednotlivými částmi nemám až tak velký problém, Takže jen pár bodů:
-Souhlas že Modul a Objekt nejsou to samé, ani jsem to tak nenapsal.
-Ano úvozovky jsem tam dal schválně :) skoro jsi se trefil
-classy v haskelu jem opravdu neviděl takže to ohodnotit neumím.
Jednotlivé body, tak jak jsi je postavil samostatně nejsou (dle mne) jedinými pravými částmi OOP nebo jeho definice a nejspíš to nevyznělo tk jak jsem chtěl.
Pod OOP si představuji souhrn těchto bodů včetně jejich vzájemného propojení. Nemyslím že OOP je to nějaký úplně nový vynález z jiného světa, spíš to vnímám výběr a souhrn různých postupů co se z (nějakých hledisek) osvědčili a kterému se dal nový kabátek aby se s tím dobře pracovalo,plus díky určitému odstřižení jiných variant došlo ke zjednodušení které vede k možnosti mastit kód do tolika vrstev až až až už se špagety neuvaří :) . Prostě je to metodika jako každá jiná z něčeho vychází a někam vede - možná :D
Nj. už si dělám srandu. Není ale třeba zakládat požár, třeba změním názor po nějaké jiné knížce, nebo až na nějako dobrou definici narazím (rád uvítám tvojí :) , nedělám si nárok na jedinou správnou pravdu tm.