Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Má OOP vliv na chyby?

Aktivity
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
MadaraCZech:28.8.2014 16:32

Když v OOP JS dělají jen profíkové, tak je mnohem menší šance, že v těch aplikacích budou nějaké bugy. To je pro uživatele velká výhoda.

 
Odpovědět
28.8.2014 16:32
Avatar
Odpovídá na MadaraCZech
Michal Žůrek - misaz:28.8.2014 17:45

jak souvisí OOP s bugy?

 
Nahoru Odpovědět
28.8.2014 17:45
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
MadaraCZech:28.8.2014 17:58

Větší aplikace se v OOP programují. A když v tom dělají jen profíci, tak větší aplikace budou bez chyb, jelikož si na tohle dávají pozor.

 
Nahoru Odpovědět
28.8.2014 17:58
Avatar
coells
Tvůrce
Avatar
Odpovídá na MadaraCZech
coells:28.8.2014 19:16

:-D Jakožto profesionál tě můžu ujistit, že ani OOP, ani "profíci" v týmu, dokonce ani žádný podobný další faktor, nemají absolutně žádný vliv na počet chyb v kódu. To, že je aplikace bez chyb, souvisí jen a pouze s testováním. Čím více testů a čím vyšší kvalita testů, tím nižší je pravděpodobnost výskytu chyb. Neexistuje totiž aplikace, která by byla bez chyb. Viz Murphyho zákon, který mám moc rád: "Počet chyb v programu rovná se tronásobku počtu chyb objevených." Když se nad tím zamyslíš, tak říká, že oprava libovolné chyby zavede do programu další tři chyby.

 
Nahoru Odpovědět
28.8.2014 19:16
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na coells
MadaraCZech:28.8.2014 21:01

Já neříkám, že takové programy jsou bez chyb. Říkám, že je menší pravděpodobnost, že tam nějaká chyb bude. Narozdíl od někoho, kdo programuje poprvé a tohle neřeší.

 
Nahoru Odpovědět
28.8.2014 21:01
Avatar
coells
Tvůrce
Avatar
Odpovídá na MadaraCZech
coells:28.8.2014 21:09

Ve skutečnosti jsi řekl přesně, "A když v tom dělají jen profíci, tak větší aplikace budou bez chyb, jelikož si na tohle dávají pozor." Nicméně chápu, co se teď snažíš říct a je to stejný omyl. Pravděpodobnost chyby v programu je úplně stejná u "profesionála" i u začátečníka. Stále platí, že jediný faktor, který má vliv na počet chyb, je testování.

 
Nahoru Odpovědět
28.8.2014 21:09
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na coells
MadaraCZech:28.8.2014 21:24

Mluvím i o testování. Profíci vědí, co je potřeba pro vývoj, jak efektivně programovat, jak testovat. Neříkám profíci nedělají chyby, říkám, že je pravděpodobnější, že si to správně zkontrolují a opraví.

Editováno 28.8.2014 21:25
 
Nahoru Odpovědět
28.8.2014 21:24
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:28.8.2014 21:34

Profík by neměl mít potřebu kontrolovat se a opravovat. Jinak je to amatér. Profík si to rozmyslí dopředu.

 
Nahoru Odpovědět
28.8.2014 21:34
Avatar
Michal Žůrek - misaz:28.8.2014 21:48

Diskuze o OOP, bug a profesionálech byla přesunuta: http://www.itnetwork.cz/…3ff86e3c4125

 
Nahoru Odpovědět
28.8.2014 21:48
Avatar
Odpovídá na 1Pupik1989
Martin Konečný (pavelco1998):28.8.2014 21:54

Chceš tím říct, že profík si promyslí dopředu, jak bude program vypadat a pak to z fleku napíše všechno správně?

Nahoru Odpovědět
28.8.2014 21:54
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
coells
Tvůrce
Avatar
Odpovídá na MadaraCZech
coells:28.8.2014 21:59

A já se ti snažím sundat ty růžové brýle, abys pochopil, že to tak není. Problém ale je, že si meleš svou a nejsi ochotný si pečlivě přečíst, co jsem ti napsal.

Důslednost, pečlivost, spolehlivost a osobní odpovědnost jsou důležité prvky profesionality, ale v reálném životě takových lidí najdeš velmi málo bez ohledu na profesi. O to smutnější fakt, že tohle jsou vlastnosti, nikoliv znalosti. Nedá se to naučit ani vytrénovat. Programátoři, kteří to nemají na začátku, to nebudou mít nikdy.

Profíci, které popisuješ (nebo si je alespoň takhle představuješ), mají většinou tendence, o kterých mluví 1Pupik1989 - jsou příliš dobří, než aby se kontrolovali a opravovali. A právě to je nejčastější příčina chyb. Skuteční profesionálové se neustále kontrolují a opravují, nechávají se kontrolovat ostatními, protože vědí, že pravděpodobnost, že udělali chybu, je naprosto stejná, jako když začínali.

 
Nahoru Odpovědět
28.8.2014 21:59
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na coells
MadaraCZech:28.8.2014 22:04

Ale vy to nechápete. Já jen reagoval na toto :
"Pracovat se soubory umí v C# začátečník, v JavaScriptu jen profesionál (nehledě na to, že to ani příliš nejde). programovat objektově umí v C# taky relativně začátečník, ale v JavaScriptu jen profík."

To znamená, že bude méně nekvalitního kódu, když to neumí každý. Ale musíme se tu určitě hádat, že ? :)

 
Nahoru Odpovědět
28.8.2014 22:04
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na MadaraCZech
tomisoka:28.8.2014 22:28

"To znamená, že bude méně nekvalitního kódu, když to neumí každý." - proč mám takový pocit, že realita je přesně opačná? Přece když to umí jen malé množství lidí tak zbytek potřebných míst zaberou lidi, kteří to pořádně neumějí, ne?

 
Nahoru Odpovědět
28.8.2014 22:28
Avatar
Michal Žůrek - misaz:28.8.2014 22:43

ta zamotaná diskuze o začátečnících, což se rozšířilo na OOP a kvalita kódu je zmatená proto že si nerozumíme kdo je to začátečník a kam se začátečník může dostat. každý jednou začínal, Coells, já, Madara, prostě všichni jsem jednou začínali a byli začátečníci. Neuměli jsem pracovat se soubory ani v C# ani JavaScriptu. Já jsem to že v C# se soubory zvládne pracovat začátečník a v javaScriptu profesional myslel tak, že zatímco v C# máme práci se soubory zahrnutou jak v knížkách pro začátečníky, tak v takřka všech sériích tutoriálů. Situace na straně JavaScriptu je úplně opačná. Práce se soubory je tak složitá a těžkopádná, že to nikdo nechce rozebírat - proto to v knížkách a tutoriálech je jednoduší vypustit, protože by to stejně cílová skupina (začátečníci) nepochopili.

I právě ten začátečník může dostat na úroveň a nejspíše dostane, kdy se sám naučí (třeba z nějakých hodně odborných článků) pracovat se soubory v JavaScriptu, jen to bude trvat mnohem déle než se to naučí programátor v C#.

Editováno 28.8.2014 22:45
 
Nahoru Odpovědět
28.8.2014 22:43
Avatar
1Pupik1989
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
1Pupik1989:28.8.2014 22:48

Přesně tak. Já sice nejsem profík, ale dám si minimálně 2 kafe na přemýšlení a počmárám tak 3 papíry, než něco napíšu. Naplánuji strukturu celého objektu, jak co spolu bude fungovat, jak budou vypadat vstupy a výstupy. Pro běžného kodéra v Js asi k ničemu, jenže já to pak portuji do Javy, takže už musím mít navrhnutou strukturu a nejlépe jí už neměnit. Jsem na to zvyklý z C++ a nehodlám to měnit.

PS.: Na ovládání souborů v JS (co se týče čtení) jsem měl napsaný objekt asi za 15 minut. Včetně načítání binárních souborů ve starších IE. Ještě před třemi lety bych to jednou napsal (asi tak za měsíc), smazal a napsal to znovu.

 
Nahoru Odpovědět
28.8.2014 22:48
Avatar
Odpovídá na 1Pupik1989
Michal Žůrek - misaz:28.8.2014 22:50

Ty jsi ten profesionál, začátečník to píše zhruba 10× dýl, než to pochopí.

 
Nahoru Odpovědět
28.8.2014 22:50
Avatar
1Pupik1989
Člen
Avatar
Odpovídá na coells
1Pupik1989:28.8.2014 22:52

Není to nejčastější příčina chyb. Profíci na to mají testery. Nemají hledat problémy, to není jejich práce. To platí hlavně třeba u her. Posledních 5% trvá nejdéle a naseká se tam nejvíce chyb. Pak jdou na řadu testeři. S jejich pomocí se vychytá 80% chyb. Dalších 18% objeví uživatelé. Zbylé 2% většinou nikdo neobjeví, ale přeci tam jsou. Ať je to díra v zabezpečení, v GUI nebo v čemkoliv jiném.

 
Nahoru Odpovědět
28.8.2014 22:52
Avatar
1Pupik1989
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
1Pupik1989:28.8.2014 22:57

Taky mám takové ty chvilky kdy bych do toho kopnul. Už se ale za ty roky celkem orientuji. Jen jsem si pro jednoho člověka ukousl trochu velké sousto. Přeci jen softwarový rendering, ještě navíc v javascriptu, není lehký. Nciméně jsem dokázal simulovat základní GLSL zápis vertex shaderu.

attribute vec3 aVertexPosition;

uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;

uniform int val;

void main(void) {
  gl_Position = uPMatrix * uMVMatrix * vec4(normalize(aVertexPosition),1);
}

Před dvěma lety jsem se rozhodl, že vytvořím knihovnu, která bude podporovat 3D ve všech prohlížečích. No a před měsícem, že bude mít kompletně stejný zápis ve všech prohlížečích. THREE.JS se už moc lišilo v zápisech pro různé podpory.

Teď už to vypadá, že se asi moc chvástám, ale opravdu jsem na to pyšný. :D V Opeře 12.15 zatím běží 5000 trianglů při 45 fps v klasickém Canvasu (nikoliv WebGL). Operu pokládám za jeden z nejpomalejších prohlížečů.

Editováno 28.8.2014 22:59
 
Nahoru Odpovědět
28.8.2014 22:57
Avatar
Odpovídá na 1Pupik1989
Martin Konečný (pavelco1998):28.8.2014 23:04

Chápu, že by se nad tím mělo před psaním kódu přemýšlet, dělat si diagramy apod., ale dá se tím předejít všem možným chybám? Např. něco je na papíře jasné, ale v kódu se pak zjistí, že přesně ten postup použít nelze, protože jazyk něco nepodporuje (nebo je nějaký jiný problém, co se technologie týče).

Nahoru Odpovědět
28.8.2014 23:04
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
1Pupik1989
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
1Pupik1989:29.8.2014 0:01

Důležitá je dokumentace, pokud to píšeš i pro jiné skriptaře nebo už si ve finále nepamatuješ co je jak a jaké argumenty tam přijdou. Pokud pak někdo pošle špatný argument do metody kam nepatří, tak to není chyba metody, nýbrž je debil. S tím se setkávám dnes a denně. Proto nesnáším lepiče kódů. Jak mě takový někde napíšu, tak ho odmítnu. Píšu veškerý kód bez vychytávání vyjímek, jinak bych se nejspíš roztrhnul a ten kód by měl místo 200kB asi tak 1MB.

Každý kloudný programátor ať s diagramem či bez si dokáže rozvrhnout co do jaké funkce půjde. Pokud má být vstup pole, tak tam přeci nebudu cpát objekt. Proto miluji funkce a objekty, na které uživatel vůbec nesahá. Jsou schované někde v closure a jen nadřazená metoda jim řekne, co mají dělat. Maximálně vrátí "false" a je vyřešeno. Vyvolávání chyb se snažím úplně vyhnout, strašně mě to rozčiluje. Pořád

if(!blabla){ throw new Error('Blábol'); }

Zbytečná věc.

 
Nahoru Odpovědět
29.8.2014 0:01
Avatar
hanpari
Člen
Avatar
hanpari:29.8.2014 9:24

Celá ta diskuze mi přijde trochu zastaralá :)

Možná se pletu, ale OOP mělo spasit svět před imperativním programováním už kdysi dávno.
Podle posledních módy má zachránit lidi před děláním chyb funkcionální programování.

 
Nahoru Odpovědět
29.8.2014 9:24
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:29.8.2014 22:51

Jak by si to řešil jinak? Procedurálním programováním? Jedna věc je psát objektově a druhá vědět co objektově píšeš. I začátek je tuhý, ale lepiči se ptají dokola. No a ti co nepochopili mou třetí věti, jsou lemplové nebo lepiči. Na obojí mám alergii. Nesnáším, když někdo něci dělá a neumí ani zàkladx.

 
Nahoru Odpovědět
29.8.2014 22:51
Avatar
mkub
Tvůrce
Avatar
Odpovídá na MadaraCZech
mkub:30.8.2014 13:53

kazdy jeden z nas, ci uz zaciatocnik, pokrocily, alebo profesional robi chyby v kode, casto su tie chyby aj z nepozornosti (profesional nemusi vediet vychytat vsetky chyby) a cim je projekt zlozitejsie, tym je v nom viac a viach chyb a nesuvisi to od toho, ci je ten programator zaciatocnik, alebo profik, ale zalezi to priamoumerne od zlozitosti danej aplikacie...

a raz som si v jednej knizke precital vetu: "Aplikacie maju chyby, budu mat chyby"...

 
Nahoru Odpovědět
30.8.2014 13:53
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na mkub
MadaraCZech:30.8.2014 13:58

Už jsem několikrát psal, že tím myslím, že profíci mají tendenci si to kontrolvat a opravovat, nepsal jsem, že profíci nedělají chyby !!

 
Nahoru Odpovědět
30.8.2014 13:58
Avatar
mkub
Tvůrce
Avatar
Odpovídá na MadaraCZech
mkub:30.8.2014 16:37

myslis, ze zaciatocnici si taktiez svoje vytvory netestuju? testuju, aj ked nie je v ich moci pisat kvalitne testy na aplikaciu...

a okrem toho aka je hranica medzi zaciatocnikom a profikom?

 
Nahoru Odpovědět
30.8.2014 16:37
Avatar
MadaraCZech
Tvůrce
Avatar
Odpovídá na mkub
MadaraCZech:30.8.2014 20:56

Já jen reagoval na Misaze, který psal, že OOP JS zvládají jen profíkové.

 
Nahoru Odpovědět
30.8.2014 20:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 26 zpráv z 26.