Dostal jsem pár dotazů na téma, co vlastně používám za programovací jazyky a jaké vývojové nástroje používám pro návrh a vývoj aplikací.
V rámci cyklu Po uzávěrce je tedy čas doplnit několik příspěvků na téma, které jsem již nakousl v úvodu do tématu, když jsem zmínil, že právě RAD Tools pomáhají vytvářet Web aplikace rychle a kvalitně (doporučuji přečíst).
Nejprve tedy ověřené zásady dobrého vývoje, které zajistí úvodní kvalitu řešení i bez ohledu na nějakou použitou technologii a programovací jazyk, které navíc dokážou již v počátku odstranit většinu problémů, se kterými se dodnes potýká skoro každý (špatný) vývojový tým a na co si stále stěžují zákazníci po celém světě.
Co je nejdůležitější při vývoji aplikací?
Jak šel čas, tak jsem měl možnost naučit se různé programovací jazyky, setkal jsem se s mnoha různými vývojovými prostředími, osvojil jsem si různé programovací techniky. Měl jsem asi štěstí na dobré učitele programování ("učitele" v praxi, ne na škole), neboť již v začátcích mi pomohli otevřít oči a pochopit, co je ve světě počítačů a při návrhu aplikací nejdůležitější.
1. Empatie a chápání potřeb zákazníka - tato schopnost se uplatní v každé profesi, kdy bych nikdy netušil, kolik lidí na světě tuhle schopnost naprosto postrádá, nikdo je nenaučil, že mají poslouchat, co vlastně zákazník požaduje, nikdo je nenaučil, že umění naslouchat je v životě mnohem důležitější, jak umění mluvit. Umění dobré komunikace vychází právě ze schopnosti empatie.
Ne nadarmo se také ve všech chytrých knihách praví, že kdo mlčí, tak většinou 2x více slyší jak ten, kdo jen mluví a mluví a nic vlastně neřekne (jen ukecá zákazníka, aby si nějaký nesmysl koupil).
2. Rychlý návrh prototypu aplikace - pomocí dobrých nástrojů je nutné umět rychle připravit první prototyp Web nebo Desktop aplikace a poskytnout ho zákazníkovi k testování a k připomínkám. Je to tisíckrát lepší, jak příprava složité analýzy, což potvrzují i pozdější moderní techniky programování - Extreme Programming, Agile Modeling, které se objevily až mnoho let poté, co jsem jejich zásady začal uplatňovat.
Asi jsem měl to štěstí, že takové zásady mi byly vštěpeny již na začátku mé profesní kariéry a čerpám z nich dosud i bez ohledu na všechny trendy, které se vynořují a zase mizí v propadlišti dějin, či po splasknutí všech bublin ;-)
3. Support a rychlá implementace úprav - to souvisí i s rychlým návrhem, ale doplňuje to o nejdůležitější část celého cyklu návrhu, vývoje, implementace a supportu nějakého řešení pro zákazníka. Být schopen rychle upravit prototyp, rychle doplnit požadované změny, rychle upravit něco na míru, být rychle schopen něco opravit v případě nahlášení nějakého aplikačního problému.
Bez dobrých vývojových nástrojů a týmových nástrojů na hlídání jednotlivých etap se tohle nedá zvládnout, neboť záleží opravdu na kvalitě nástrojů, které celý tento životní cyklus aplikace hlídají a pomáhají ho udržovat. Je totiž nutné, aby všechny úpravy byl schopen rychle provádět i někdo úplně jiný jak původní autor, aby byla k dispozici aktuální dokumentace, zajištěna kvalita kódu, verzování, sledování všech změn, příp. automatické testování, distribuce i instalace.
Dobrý programátorský editor je základ!
Ještě se hodí na úvod zmínit jeden ze základních a obecných nástrojů každého vývojáře, neboť dobrý textový editor je nutný při každé (doplňující) práci s jakýmkoliv vývojovým nástrojem, RAD toolem, CASE nástrojem nebo generátorem kódu. Většina výkonných nástrojů má své zabudované editory, ale extra textový editor se hodí vždy, ať už na něco menšího, rychlé hromadné úpravy, či na přípravu poznámek pro práci.
Každý asi používá nějaký svůj oblíbený, na který je zvyklý a který vyhovuje všemi svými funkcemi. Mně se nejvíce osvědčil UltraEdit - Programmers Editor, nejlepší "text, hex, HTML, ASP, PHP, Java, Javascript, and programmer's editor" na světě. Však také 2 miliony uživatelů o něčem svědčí!
Záložky, sloupcové bloky, zvýraznění syntaxe pro libovolný zdrojový kód, otevírání více souborů (projektů) současně,...
Docela se směju, jak někdo freneticky vykřikuje, že mu stačí Notepad nebo vi editor, neboť bych chtěl vidět tu "produktivitu" takové práce bez pořádného editoru. (Nic proti "vee eye", také ho někdy musím použít, ale svět je již někde úplně jinde.) Navíc, těch pár dolarů za UltraEdit se vrátí hned po pár minutách práce ;-)
Pokračování příště...
V příštím díle v cyklu o RAD Tools tedy již konkrétně na téma, jaké nástroje používám na rychlou tvorbu Web stránek, kdy Desktop aplikace a "Middle-tier" aplikace si nechám až na samotný závěr.
Hezký tropický den přeji ;-)
45 comments :
Ahoj Caymane. Už jsem trochu zareagoval u jiného článku, ale dodatečně mě zaujala tvá poznámka:
Docela se směju, jak někdo freneticky vykřikuje, že mu stačí Notepad nebo vi editor, neboť bych chtěl vidět tu "produktivitu" takové práce bez pořádného editoru. (Nic proti "vee eye", také ho někdy musím použít, ale svět je již někde úplně jinde.)
Máš pravdu, že doba je někde jinde, ale nemyslíš, že i ty jsi zaspal v dnešní době IDE s integrovanou statickou analýzou v reálném čase, kompilací na pozadí apod.? Nezlob se na mě, ale dlouhou dobu jsem čekal s čím přijdeš abys podpořil své tvrzení, že chyby prostě neděláš. Nutno uznat, že jen tím UltraEditem si mě vyrazil dech.
minority: nevím, ale asi jsem to pochopil jinak než ty. Nepřeskočil jsi náhodou tenhle kus článku?
"Většina výkonných nástrojů má své zabudované editory, ale extra textový editor se hodí vždy, ať už na něco menšího, rychlé hromadné úpravy, či na přípravu poznámek pro práci."
Já třeba pro vývoj používám Eclipse, ale taky mám v záloze nějaký ten textový editor (v mém případě PSPad), který používám na rychlou editaci nějakých textů nebo kusu kódu.
dadajax: nepřeskočil, ale možná jsem to špatně pochopil. Každopádně jsem narážel na naší nedávnou debatu s Caymanem u jednoho podobného článku.
Pak to možná trochu lépe zapadá do toho na co jsem narážel.
Osobne si bez IDE nedovedu vetsi praci predstavit. Taky mam v zaloze napr. JEdit ci SciTe, ale ty pouzivam jen okrajove.
2minority: Ty mě neustále překvapuješ! Copak já psal, že v UltraEditu dělám nějaké aplikace nebo něco kompiluji? Nemáš ještě kocovinu ze Silvestra?
Já jsem dřív také používal UltraEdit, ale později jsem přešel na jEdit, hlavně kvůli lepší podpoře znakových sad (UltraEdit neuměl UTF-8, nevím jak je to s podporou teď).
Na jEditu oceňuji nepřeberné množství plug-inů, které lze jedním kliknutím z editoru stáhnout a automaticky za chodu doinstalovat.
Jediná nevýhoda je, že je v Javě (rychlost), ale Windows verze má akcelerátor a ten to zlepšuje.
V PHP Eclipse + PSPad. Na větší věci Eclipse (PDT), na nějaké to drobné opečování (opatchování) PSPad (a nejen proto, že umí ISO-8859-2, Win i UTF-8).
Teď s C# bude volba víceméně jasná. Uvidím, co zaměstnavatel dá navíc k ReSharperu
Nelze než souhlasit. Osobně se mi po dlouhém testování osvědčila kombinace IDE PHPed + Notepad++ na rychlé úpravy textových souborů.
Mno nevím jak Vy, ale co se týká webu, tak PSPad umí zobrazovat i okna nad sebou...
Co se týče kvality práce, tak neshledávám rozdíl, poněvadž upravit si barvu syntaxe lze taky snadno.
Návratnost je spíše u programování, že vyskakují volby jak psát kód lépe...
Pochopil jsem to správně, že také využíváš pokročilejších IDE, ale prostě na rychlé úpravy vytáhneš Ultraedit?
S tím přístupem souhlasím.
Samozřejmě, IDE na vývoj v první řadě, ale na pozadí mám vždy puštěný UE. Ne ale na nějaké úpravy, to jsem asi špatně vyjádřil, když jsem se zmiňoval o jeho výhodách.
UE spíše používám na různé poznámky a podklady, co mám v různých TXT souborech, neboť je to pohodlnější práce jak s DOC soubory.
(Zmínka o něm byla jen taková "vycpávka", aby ten příspěvek nebyl tak krátký, neboť jsem se nechtěl rozepisovat o nějakém RAD toolu, to by zase byl článek moc dlouhý.)
Když jsem si tak pročítal komentáře, tak mi přišlo jakoby tu nikdo ani nezkoušel asi to nejlepší a to Visual Studio?
Ono asi zalezi co kdo dela. Pokud zrovna nevyvijite pro/v Microsoft technologii, tak to Visual Studio moc nepotrebujete. Pro Javu vede Eclipse, i kdyz Intellij Idea (placena) je mnohem lepsi. Ale jsou i jine uzitecne nastroje krome IDE. Docela rad pouzivam Winmerge (i kdyz opet v IDE je ekvivalent), Tortoise CVS/SVN apod. Velmi dobre je se naucit klavesove zkratky a v pripade ze pouzivate vice IDE/nastroju (preci jen je to nekdy nutnost), zkusit je sjednotit. Pomahaji i predem definovane sablony nejcastejsich konstrukci/vzoru. Neocenitelne jsou i "scripty", ktere vam automaticky vygeneruji typickou kostru projektu (to usetri hodne casu). Je potreba mit porad na pameti, ze pocitac je tu od toho, aby provadel pokud mozno vetsinu (nejlepe vsechny) opakujici se cinnosti.
Pro vetsi projekty je nezbytny build system ktery automaticky dokaze vyresit zavislosti na jinych projektech/knihovnach (casto externich) a naimportovat spravnou verzi. Pro oblast sbirani pozadavku, analyzu, design pouzivat UML nastroj (nejlepe takovy ktery vygeneruje zaklady zdrojaku - napr. volny bouml). No, dalo by se napsat na toto tema jiste mnoho dalsich veci. Vyvojarum zdar.
V poslední době hodně dělám aplikace pro MacOS X kde je jediná volba XCode. Dlouhou dobu jsem dělal v Eclipse a lehce zkoušel Netbeans, který jsem ale velice rychle opustil. Troufám si tvrdit, že Visual Studio 2008 + ReSharper je v současnosti asi nejlepší a hlavně nejproduktivnější kombinace na vývoj.
Asi jsem jak se zdá Caymanovu poznámku o UltraEditu nepochopil. Sám se totiž snažím pokud možno vše dělat v rámci IDE. Vzhledem k jejich dnešním možnostem mě pak editory jako UltraEdit, PSPad a podobné přijdou docela zbytečné.
2minority: Správně, nepochopil jsi to ;-)
Textový editor není přece jen na programování, tj. na ruční psaní nějakého kódu. Ta zmínka o tom, že UE zvýrazňuje nějaký programový kód, byla myšlena jako celková charakteristika toho editoru a ne jako to, že v něm snad programuji.
Také dělám všechno v nějakém IDE, ale když si chci napsat nějaké poznámky v čistém textu, když potřebuji třeba rychle naformátovat nějaký text, tak nestartuji vi editor ani Notepad ani Word, ale právě UE.
Možná máte ale ve světě MacOS všechno pošéfované jinak, takže žádný editor ani nepotřebuješ, kdo ví ;-)
2minority: Máme to stejné neboj. Jen ty všemohoucí RAD nástroje, které by nám umožnili vůbec nepouštět IDE a tudíž nedělat chyby k nám ještě nedorazili ;-)
2minority: No, lidi jako ty, s takovým hloupým rýpáním, mi vždy připomínají základní otázku, PROČ jim mám něco vysvětlovat a na něco dobrého je upozorňovat. Napadá tě jeden rozumný důvod, proč bych měl takovým lidem o něčem psát, proč bych jim měl dávat nějaké tipy, když mi "oni" nedají vůbec nic a tupě (z neznalosti) jen rýpají?
Neboj, nenechám se odradit, jen si s dovolením budu sám určovat, o čem budu psát dnes nebo zítra, a kdy nějaký článek vyjde.
Víš něco ti povím. Já stále věřím, že dokážeš napsat, že jsi lhal když jsi napsal, že prostě chyby neděláš. A ono v podstatě na tom co jsi napsal nebylo ani nic špatného a normálně by si člověk jenom řekl "ach jo další machr". Ale mě tenkrát strašně zaujala tvá arogance, s kterou jsi to psal. Možná právě proto neustále čekám a v podstatě jen proto sleduji tvůj blog, abych se dozvěděl jak to tedy děláš.
A jelikož vím, že to prostě není možné nepsat bez chyb pokud se tedy bavíme o běžném programování, tak jen čekám jak se z toho vykecáš.
Jen zopakuji pro ostatní, kdy jsem se zmínil, že umím dělat programy bez chyb, na což stále naráží čtenář minority. Zde je tedy kompletní citát:
"Musím neskromně říci, že "tvořit aplikace bez chyb" umím. Nemyslím teď nějaké překlepy nebo drobnosti, co se opraví hned po první kompilaci, ale většinou mi vše funguje od prvního zmáčknutí "Compile". Debugger jsem např. naposledy použil asi opravdu před 10ti lety ;-)"
2minority: Můžeš mi, prosím, říci, čemu z toho nerozumíš a co považuješ za lež?
Můžeš mi napsat, jaké ty osobně děláš chyby? Moc by mě zajímalo, zda pořád chybuješ v syntaxi nějakých příkazů, zapomínáš někde středníky, děláš nějaké logické chyby díky špatné analýze nebo co vlastně ti nejde?
Na tom co jsi napsal jsou zajímavé dvě věci.
Musím neskromně říci, že "tvořit aplikace bez chyb" umím.
Souhlasím s tím, že kvalitní analýza dokáže předejít spoustě chyb. Každopádně sebelepší analýza nedokáže pokrýt vše a zde je prostor pro chybu. Dokonalou analýzu jsem ještě za svou kariéru nepotkal, ale uznávám, že to nemusíš brát jako argument. Také asi nemá cenu psát v čem chybuji já, protože jak asi chápeš jsou to různorodé problémy.
Jen při pohledu na server secunia.com uvidíš jaké produkty obsahují bezpečnostní chyby. Při pohledu na všechny veřejné bug track systémy uvidíš kolik chyb produkty obsahují. I sám při používání svých oblíbených produktů narážíš na chyby. Prostě chyby jsou všude, ale určitě budeš argumentovat špatnou analýzou, protože ničím jiným se asi argumentovat nedá. Já si myslím, že chyba nejčastěji vznikne například špatným uvědoměním si souvislostí. V projektech nad 100tis. řádků kódů už je docela problém udržet souvislosti. V projektech obsahující více technologií je problém udržet souvislosti. Vyhnout se problémům typu, že jsi zapoměl zkontrolovat jestli máš oprávnění zapsat do adresáře, zapoměl jsi ošetřit kolizi více threadu, zapoměl jsi ošetřit to, že soubor do kterého chceš zapsat už je zamčený pro zápis. Takhle bych mohl pokračovat. Prostě jsou to okamžiky, které si v zápalu implementace nemusí člověk uvědomit a s roustoucí komplexitou riziko roste. Chyba je něco co lidé dělají a programátoři především :-)
Druhou věcí, která mě zaujala byl debugger.
Debugger jsem např. naposledy použil asi opravdu před 10ti lety ;-)
Přiznám se, že bez debuggeru si neumím představit efektivní vývoj. Ano může to souviset s tím, že prostě dělám chyby a kdybych je nedělal tak si stejně nemyslím, že bych ho nepotřeboval. Protože i když chyby nebudu dělat já, tak jiní ano.
Jak bych pak hledal třeba to, že mě aplikace reaguje na určitá data jinak než jsem čekal a mám podezření třeba na špatné reakce aplikačního serveru? Ale to podezření musím nějak dokázat pokud není v mé kompetenci, tzn. bez chyb. Začnu debuggovat co mě od něho chodí, zjístím třeba, že v přechodný rok v konkrétním časovém pásmu z aplikačního serveru chodí blbosti. Což je jen příklad z reálného problému aplikačního serveru BEA a jeho implementaci SOAP. Jednuduše se dá říct, že kód třetí strany způsobuje velmi často problémy, ale k jejich zjištění nemusí vést zrovna lehká cesta. A proto debugger. A jelikož jsem pochopil, že jsi člověk zaměřený hodně na efektivitu, tak mě to zaujalo. Nepředpokládám totiž, že neumíš používat debugger.
2minority: Myslím, že sis odpověděl sám skoro na všechno. Copak já tvrdil, že jsou na trhu produkty, které neobsahují nějaké security bugs? Co tom sem zase pleteš?
To, že např. Oracle databáze obsahuje plno bezpečnostních i jiných chyb a že všechny dB servery na světě se musí pravidelně opatchovávat každé tři měsíce, kdy vychází security patches, to má něco společného s tím, že já dělám klientské aplikace (třeba pro tu Oracle dB) bez chyb?
Ano, většina lidských chyb vzniká "špatným uvědoměním si souvislostí", tj. špatnou analýzou, špatnou technickou dokumentací, špatným testováním, chaotickým vývojem, použitím špatných a nevyhovujících technologií, špatným týmem, špatným vedením projektů atd.
Jak to opět souvisí s činností jednoho programátora, který dělá svůj projekt bez chyb a je zodpovědný za své výsledky? Myslíš, že bych mohl pracovat pro nějaké US firmy, kdybych dělal stále nějaké chyby?
Snad také uznáš, že debuggovat AS je něco jiného, jak použít debugger své vlastní aplikace a svého kódu, o čemž jsem psal já.
Podobně nemám, co říci ke kódu třetí strany, který způsobuje chyby, to snad CHÁPEŠ, že je také o něčem jiném a jen ty osobně si tam přidávaš nějaké jiné významy toho, co jsem napsal já.
Každopádně, ať se ti daří a přeji více kódu bez chyb :-)
Podobně nemám, co říci ke kódu třetí strany, který způsobuje chyby, to snad CHÁPEŠ, že je také o něčem jiném a jen ty osobně si tam přidávaš nějaké jiné významy toho, co jsem napsal já.
Důvod proč používat debugger. Napsal jsem jen realitu, která vede k jeho použití. Tzn. z toho mě napadá jediný závěr a tím je, že kód třetích stran nepoužíváš, takže máš vše vlastní. Trochu proti tvým návodům na to jak být efektivnější ;-)
Jak to opět souvisí s činností jednoho programátora, který dělá svůj projekt bez chyb a je zodpovědný za své výsledky? Myslíš, že bych mohl pracovat pro nějaké US firmy, kdybych dělal stále nějaké chyby?
Proč by jsi nemohl? Chyby dělají firmy jako Microsoft, Sun, IBM apod. a to jsou přeci US firmy, ne? :-)
A jak to souvisí s prací jediného programátora? Zkus si můj příspěvek přečíst znovu. Viz. např. komplexnost apod.
Ano, většina lidských chyb vzniká "špatným uvědoměním si souvislostí", tj. špatnou analýzou, špatnou technickou dokumentací, špatným testováním, chaotickým vývojem, použitím špatných a nevyhovujících technologií, špatným týmem, špatným vedením projektů atd.
Tzn. to není tvůj příklad :-))
Copak já tvrdil, že jsou na trhu produkty, které neobsahují nějaké security bugs? Co tom sem zase pleteš?
Dedukuji, že jsi nikdy žádnou chybu tohoto typu neudělal.
Jsi velice zajímavý programátor. Škoda jen, že se člověk o tvých kvalitách nemůže přesvědčit a je odkázán pouze na tento velice obecný a teoretický blog. Ale nutno uznat, že obecné teorie ti jdou dobře, jen do hloubky už to trochu vázne.
2minority: Takže, ještě jednou a už naposledy, neboť opět jsi ukázal, jak vůbec nechápeš, o čem píšu a jak si hlavně dosazuješ do všeho, co napíšu, své vlastní pomýlené úvahy a závěry (podobně, jak jsi na začátku ani nepochopil použití UltraEditu):
"...mě napadá jediný závěr a tím je, že kód třetích stran nepoužíváš..."
Jak jsi na tohle, prosím, přišel? To jsi opravdu tak omezený, že žádný jiný závěr tě nenapadá? Kód třetích stran, samozřejmě, používám, nemá cenu vymýšlet již vymyšlené. Používám ale takový kód, který funguje, je ověřený a spolehlivý, příp. mi ho dodavatel opraví. Nic to ale znovu nenutí vyvracet mé již stokrát napsané, že nemám potřebu a nepoužívám debugger na svůj vlastní kód.
(Nepoužívám skoro žádné open-source bez záruk, ale placené knihovny a produkty, aby bylo jasno, proč se s chybami u třetích stran nesetkávám tak často jak mnoho jiných vývojářů.)
"Chyby dělají firmy jako Microsoft, Sun, IBM..."
Co to sem zase pleteš? Neustále mě překvapuješ, jak stále dokola hledáš další a další "argumenty", abys mi dokázal jako co? Nejprve vytáhneš "security bugs" v produktech na světě, teď zase tyto firmy. Co to má se mnou společného? To má jako dokázat, že i já osobně musím používat debugger a i já osobně musím udělat chybu? To je tedy logika!
Jasně, že takové firmy dělají chyby, ale víš vůbec, kde mají svá vývojová centra a jak někdy vypadá zacvičování začátečníků v Indii? Tušíš vůbec, že ještě nedávno se u jedné takové velké firmy platili vývojáři v Indii za počet řádků kódu? (Ano, špatný management, špatné vedení, špatní programátoři.) Proč je pak v takových produktech tolik chyb?
Asi chápeš, že vývojář na volné noze si tohle nemůže moc dovolit, jinak by nedostal proplacenou další fakturu. Ano, nemůžu si dovolit dělat chyby ani v analýze, vývoji, ani testování, o špatném vedení týmu ani nemluvě. Security mi např. testuje speciální tým na to určený, neboť většina projektů z poslední doby, na kterých dělám, musí mít certifikaci.
"Škoda jen, že se člověk o tvých kvalitách nemůže přesvědčit a je odkázán pouze na tento velice obecný a teoretický blog..."
Chlapče, chlapče, tento blog nepíšu proto, abych tebe nebo někoho jiného přesvědčovat o svých kvalitách nebo si tady honil triko. Chápeš vůbec, o co v životě jde? Bojím se, že moc ne, vzhledem k naší předchozí diskuzi u jiného článku.
Nevím, co ti více "praktického" chybí, zda bys potřeboval nějaké technické informace, nějaký zdrojový kód v C/C++, Java, ASP, PHP, .NET, SQL, PL/SQL, T-SQL nebo ukázky shell scriptů, dB schémata, či co by tě více zajímalo?
Nemyslíš, že psát o takových věcech nemá vůbec cenu, když na světě již existuje tisíce kvalitních zdrojů? Psaní o takových věcech by bylo stejně zbytečné, jako ztrácet čas programováním MacOS ;-)
Ha, testoval jsem zrovna nový komentářový systém od js-kit.com, tak koukám, že jim nefunguje synchronizace komentářů do originálního komentářového systému na Blogger.com, jak slibovali.
"Every time a visitor leaves a comment on your blog using JS-Kit interface, the comment is instantly copied to Blogger’s built-in commenting system."
Prý, že to jde bez problému zase vypnout. Do háje! Omlouvám se všem komentujícím, minority zvlášť, neboť jeho poslední komentář mě opět vážně pobavil.
Zkusím zapátrat, zda není někde kopie těch posledních...
Proč tu nejsou mé dva komentáře reagující na tvou odpověď z 4. leden 2009 22:45?
Aha, tak já to zkusím znova. Předem si ti omlouvám, že už to nebude stejný komentář, protože to budu muset napsat znova :-)
Vydrž, snad to najdu někde v jejich RSS a pak to sem nakopíruji jako comments od tebe...
minority: nechci tady vstupovat do diskuze, ale zkusím ti uvést jiný příklad, než který píše cayman, aby se ti možná otevřely oči... Nevím jestli víš co to jsou datové sklady a nástroje business inteligence (tady je takový jednoduchý výcuc: http://jdem.cz/arxe2).. A nevím jestli si něco takového už vyvíjel, ale právě na těchto datových skladech jde krásně znázornit, že bez pořádné a důkladné analýzy se zde nehneš.. A i proto vznikají nástroje, které kus práce udělají za tebe (např. framework KXEN podle kvapnikové statistické teorie)... Když to potom implementuješ, tak si chyby nemůžeš podobně jako Cayman při programovaní na volné noze dovolit, protože takový datový sklad často slouží pro kritické rozhodování managerů, kdy vidí názorně například vývoj firmy v posledních pěti letech a kdy se jim nejvíce dařilo apod... Takže implementace může probíhat různě, ale pokud uděláš někde chybu, dostaneš nesmyslný výstup a máš to k ničemu... K zobrazení výstupu a dalším analýzám se pak používají nástroje Business Inteligence, z nichž ty nejlepší jako Business Objects, Advizor, apod... jsou opravdu špičkové nástroje, které ti velmi usnadní práci a také všem, kdo pak s těmi daty ze skladu příjdou do styku (i těm co nejsou IT vzdělaní).. Problém je, že i přesto, že ty ty projekty musíš udělat bezchybně, tak samotný Advizor nebo Business Objects (ale i mnoho dalších) obsahuje integrované chyby, se kterými ty sám nic neuděláš.. Mimochodem jsou to produkty (advizor, BO), které jen tak někdo nezaplatí...
Ale pokud chceš jednoduší příklady, tak si vem třeba Windows nebo cokoliv dalšího... Také má své chyby, ale to nevylučuje, že na něm jdou dělat bezchybné aplikace.. Jen je potřeba být dobrý a znát možnosti, které má daný člověk na talíři...
Cayman + minority... myslím, že to byly tyhle dva komentáře
http://nopaste.ceske-hry.cz/222640
a ten můj co je výše, byla reakce na ten od minority...
Radku, chápu co chceš říct. BI znám a je to hodně specifická oblast a teď se nechci nikoho dotknout, ale je to tak trochu "jiné" programování. Tady je to hlavně o logických chybách, které teoreticky jdou zachytit už na úrovni analýzy. Bohužel tohle jsou argumentace stylu já ne, ty ano. Každopádně ani zde bych nesouhlasil s onou bezchybností. Byl jsem svědkem pár projektů postavených na BI od MS (Dynamics, SQL, ...) a nutno uznat, že to prostě nebylo tak růžové jak píšeš. Ale třeba Logos v jehož podání to bylo nemá takové odborníky ...
Máš pravdu, že na chybném základu "Windows" lze postavit bezchybnou aplikaci. Proč to, všechno jde. Ale já tvrdím, že to možné není. Že lidé dělají chyby, všechny metodiky pro sw vývoj počítají s opravou chyb (ne těch co najdeš hned o spuštění (ty opravíš hned), ale těch co se najdou během testování). Atd. atd. takhle bych mohl pokračovat a pokud Cayman píše, že programuje C/C++, .NET apod. tak já tvrdím, že zde nezle psát bez toho, že nevytvoří chyby. To, že nepoužívá debugger budiž. Není to moc efektivní, ale proč ne.
2minority: Jde o to, že ty si neustále myslíš, že programování je jen psaní ručně tisíce řádků kódu a proto "každý musí dělat chyby". Je úplně jedno, co si představuješ, neboť i na Céčko nebo Javu jsou RAD nástroje, které ti plno kódu vygenerují a chyby neděláš.
Záleží jen na RAD nástrojích, jak dobře a kvalitně to umí udělat, v kolika oblastech ti pomůžou, že veškerou tu ruční dřinu plnou chyb, ti odstraní a chyby eliminují. Ty si ale stále myslíš, že vždy a všude musíš napsat tisíce řádků "custom code" a proto přece "musí" všichni chybovat. To je ten problém a asi základ, proč si nerozumíme.
Když neznáš nástroje, které ti udělají ten kód bez psaní, tak se nedivím, že nevěříš a připadá ti to jako machrování a honění trika ;-)
A to nemám na mysli jen DW nebo čisté dB aplikace, ale i plno systémových utilit, např. kdysi jsem si dělal jako doplněk k čemusi hex-editor, což není nic světoborného, jen že byl "bez chyb" po první kompilaci exe, jestli ho najdu na starém PC, tak pošlu ;-)
Mrkni třeba sem, kde dole je ukázka obrazovky Interactive Reports, kdy ty plně customizované funkce, vznikly "bez programování" a "bez chyb".
Je to programování nebo není? Je potřeba debugger nebo není? Vytvořím tak kvalitní aplikaci bez chyb nebo ne?
Jo, ten poslední comment nějak nemůžu najít, tak ještě jednou se omlouvám, ale trefil ses zrovna při přepínání nového a starého systému.
Jde o to, že ty si neustále myslíš, že programování je jen psaní ručně tisíce řádků kódu a proto "každý musí dělat chyby". Je úplně jedno, co si představuješ, neboť i na Céčko nebo Javu jsou RAD nástroje, které ti plno kódu vygenerují a chyby neděláš.
Nezpochybňuji existenci RAD nástrojů. Jen říkám, že si jen s nimi nevystačíš. Respektive tvrdím, že nelze aplikaci vygenerovat bez nutnosti psaní kódu. Aplikaci typu IM klient, internet banking, mash-up postavený na mapách (bezrealitky), aukční síň (aukro), firemní systém na správu identit apod.
Když neznáš nástroje, které ti udělají ten kód bez psaní, tak se nedivím, že nevěříš a připadá ti to jako machrování a honění trika ;-)
Uveď prosím konkrétní příklady takových RAD nástrojů, které mě pomohu např. v tom, že si chci vygenerovat aukční síť, která bude konkurovat ebay? Vím, jsem snílek, ale mám velké cíle :-)
A to nemám na mysli jen DW nebo čisté dB aplikace, ale i plno systémových utilit, např. kdysi jsem si dělal jako doplněk k čemusi hex-editor, což není nic světoborného, jen že byl "bez chyb" po první kompilaci exe, jestli ho najdu na starém PC, tak pošlu ;-)
To nemusíš. Má argumentace byla postavena mimojiné i na komplexnosti a uvědomění si souvislostí díky čemuž vznikají chyby. A malá doplněk k hex-editoru je trochu jiný případ.
Formuluj správně, ty si s nimi nevystačíš, neboť děláš jiný typ aplikací ;-) Samozřejmě, že žádnou aplikaci nejde jen "vygenerovat", to jsi vydedukovat z čeho prosím? Aha, zase to tvé domýšlení nevyřčeného. Nauč se nejprve chápat, co znamenají holé věty a nepřidávej si k nim jiné významy.
Kde jsem psal, že RAD nástroje ti vygenerují komplet aukční síň? Tys opravdu někde viděl, že bych něco takové psal?
Na vytvoření klonu eBay ale RAD klidně použít můžeš, není to nic složitého - CASE ti vygeneruje dB model dle tvého návrhu, RAD ti vygeneruje GUI; opět doplníš drobnosti a volání extra proc, když je potřebuješ, příp. grafik ti upraví design + nějaké závěrečné úpravy a funkce.
Ruční kód bude ale vždy jen zlomek toho, co ti již nachystal nějaký profi CASE/RAD nástroj a můžeš se v klidu soustředit na těch pár funkcí a obrazovek, které pak uděláš i bez chyb.
Zkus se mrknout třeba na CodeCharge.com, jestli opravdu nevíš o vůbec žádném nástroji. Je to jeden z mnoha RAD, co na něco používám a v čem si můžeš udělat třeba ten klon eBay ;-)
Jinak, co říkáš na ty "Interactive Reports" bez programování a bez chyb, což jsem uváděl výše? To také programuji s chybami?
No snažím se jen přijít na to jak to děláš, že umíš programovat bez chyb. Chápu, že generovaným kódem se chyby vyvaruješ, ale jak sám říkáš jen s ním to nejde.
A já zase tvrdím, že psaním kódu chybu prostě uděláš pokud toho kódu je hodně a projekt není v kategorii "jednoduché".
Takže jak to děláš, že tu chybu prostě neuděláš? :-))
minority: Nemohou za to bezchybné tvpření třeba bohaté zkušenosti s mnoha komplexními projekty?
2Cayman: Aukční síň byl jen příklad reálného projektu, abychom se mohli bavit trochu konkrétněji. Netvrdil jsem, že jsi to někde psal tak nebuď pořád tak vztahovačný.
2Radek: S tím bohužel nemohu souhlasit. Kdyby tu bohaté zkušenosti s komplexními projekty byly jak píšeš, tak by přeci nemohl tak odvážné tvrzení napsat :-) Zkus si pročíst debatu zpět pokud jsi to neudělal, to jak se nepoužití debuggeru mění na použití debuggeru jen pro cizí kód apod. Mě Caymanova tvrzení přijdou příliš nekonzistení a příliš obecná než aby se dokázala brát nějak vážně. A upřímě mě příjdou i příliš nereálná. Taková programátorský idylka :-)
Víš, minority, problém je v tom, že ty stále doplňuješ do mých vět myšlenky, které se ti honí v hlavě a já je nikdy neřekl. To není vztahovačnost, ale smysl pro detail, přesnost a pečlivost. Zdá se mi to nebo opravdu nechápeš, co píšu?
Kde jsem psal, že zase používám debugger pro nějaký "cizí kód"? To jsi zase vzal kde a z čeho jsi vydedukovat tohle:
"...jak se nepoužití debuggeru mění na použití debuggeru jen pro cizí kód..."
Proč si tam doplňuješ své chybné závěry?
Mé vyjádření na téma debugger:
1. "Debugger jsem např. naposledy použil asi opravdu před 10ti lety"
2. "Snad také uznáš, že debuggovat AS je něco jiného, jak použít debugger své vlastní aplikace a svého kódu, o čemž jsem psal já."
3. "...nemám potřebu a nepoužívám debugger na svůj vlastní kód..."
Lžu, když něco z toho napíšu? Vymýšlím si, že jsem nepoužil debugger? Kde to, prosím, vidíš?
Měním svůj názor na debugger? NE, jen ti vysvětluji stále dokola tu svou první větu, kterou asi nedokážeš pochopit.
Už potřetí se ptám, co říkáš na ty "Interactive Reports" bez programování a bez chyb, což jsem uváděl výše? To také programuji s chybami a také musím používat debugger?
Prostor pro poslední příspěvky a závěrečná vyjádření a pak zamykám diskuzi, k ničemu to není.
Myslím, že všechno bylo řečeno, kdo chce zkusí třeba CodeCharge, jako jeden z mnoha dobrých RAD tools, kdo nechce, píše všechno ručně a dělá chyby u každé hlouposti ;-)
Zasádním problémem drtivý většiny "flejmů" v internetových diskusích je podle mě: 1. vzájemný nepochopení aktérů a slovíčkaření
2. chvástání se a provokování. 3. ješitnost aktérů, kteří by nepřenesli přes srdce, kdyby museli slevit a napsat např. něco ve stylu: jo ty to chápeš takhle, no jo... ale já to tak nemyslel, asi jsem to teda moh napsat trošku jinak apod. Zkrátka kohouti si musí něco dokazovat a tak si vzájemně citují větičky a diskuse se valí jako sněhová koule. Neříkám, že tohle vše se zde ukázalo, pořád je to ve velmi slušný rovině, ale něco se nám tu ukazuje, ne že ne.
Už to první sémě "sváru" s tím editorem... Každej kdo si přečte tu inkrim. větu, to může zcela logicky pochopit tak, že Cayman používá pořád "hloupý" editor i na nějaký to programování, vždyť přece jmenuje samej prog. skript. jazyk + HTML jako značkovací aby někdo neryl... A pokud někdo edituje Java, PHP zdrojáky, tak většinou programuje (nebo komentuje). Další věc je ta chybovost. Nepamatuju se, že by nějaká super programátorská hvězda o sobě nekdy prohlašovala, že když napíše kód, kterej se dá buildnout(schroustá ho kompilátor), že to jede PŘESNĚ jak má. A to jsou při vší úctě k neznámému Caymanovi, jiný "bedny". Takže to opět působí provokativně až namachrovaně. Člověk může tzv. aplikace naklikávat a může to bejt aplikace na pár stovek řádek (viz. nástroje od Oracle) a jsem ochotný věřit, že Cayman je schopný takovýho prcka dodat funkčního a bez chyb. Ale už odmítám jako člověk ne zcela blbej věřit, že svoje aplikace vůbec netestuje, nekontroluje, nemá nějaký proces ala QA při kterým by zároveň objevil nějaký ten svůj nedostatek. Příp. že neobjeví po sobě nějaký ten nedostatek na větším projektu. To ať se na mě nezlobí, chybovat je lidské, a Cayman je člověk a už to, že si někdo hraje na neomylnýho (a tady ať mě prosím nikdo nechytá za slovo, protože tak přesně vyznívá), to už většinou smrdí samo o sobě. Každopádně pitomá CRUD aplikace bez globálních transakcí a multithreadingu napsat napoprvý dá, ale to je práce pro juniory... Na závěr bych už jen dodal, že někteří blogeří píší takovým lehce mlhavým příp. provokativním stylem zcela záměrně a chtějí někoho nachystat a pak mu dát čoud, protože pak diskuse nejsou mrtvé, pak lidi navštěvují a debatují, pak to žije. Tím to nechci podsouvat Caymanovi, je to poznámka na okraj :-)
Ano, plně souhlasím, jen si dovolím několik komentářů:
ad 1. vzájemný nepochopení aktérů a slovíčkaření
- To je přesné, slovíčkaření a tahání za slovíčka, což třeba v programování znamená i smysl pro detail, pozornost při tvorbě kódu a eliminaci chyb.
ad 2. chvástání se a provokování.
- Jistě, kdo něco umí, ten působí, že se "chvástá" a svými názory i nechtíc provokuje. Je na tom něco špatného? Vůbec ne, jen to snad motivuje ostatní, aby přemýšleli nad tím, co dělají.
ad 3. ješitnost aktérů, kteří by nepřenesli přes srdce, kdyby museli slevit
- Souhlasím, že ješitnost je ošemetná vlastnost, jak ale vysvětlit někomu, že náš názor není ješitnost, ale pravda? Proč slevovat z vlastních názorů, ověřených praxí, jen proto, že někdo něco nechápe?
"...jsem ochotný věřit, že Cayman je schopný takovýho prcka dodat funkčního a bez chyb..."
No, jsem rád, že alespoň někomu dochází, že jde vytvořit "prcka" aplikaci i bez těch chyb, kdy se jen můžeme pobavit, co to znamená ten "prcek", za který může být i milionová faktura.
Jsem zvědav, zda minority odpoví na tu mou otázku, o "Interactive Reports", či se tomu elegantně vyhne zase nějakou "argumentací", že RAD se na všechno použít nedají :-))
Caymane, tahle debata nikam nevede a myslím, že to je jasné asi každému :-)
Řeknu k tomu asi jen toto. Ani Interactive Reports mě nepřesvědčili o tom, že bych měl přehodnotit svůj přístup k programování.
Doporučím ti zajímavé čtení highscalability.com, kde si můžeš přečíst jak se dělá seriózní vývoj ;-)
Zásadní problém, který vidím na těchto tebou preferovaných nástrojích je ten, že jak zde již bylo trefně poznamenáno, lezou z toho pěkní bumbrlíčci. Postrádá to např. jakékoli optimalizace. Jsi velice omezen pohledem tvůrců onoho nástroje.
Proč myslíš, že na projektech zaměřených na vysokou dostupnost se i v dnešní době píše HTML v podstatě ručně stejně tak jako JavaScript? Myslíš, že je to omezeností autorů? Nemyslím si. Je to prostě jen z důvodu specifických potřeb.
Proč myslíš, že se neustále snaží internetové prohlížeče o zrychlování? Je to specifická potřeba. Myslíš, že to dělají lepším klikáním a následným generováním? Nikoli ...
Takhle bych mohl pokračovat. Chci tím jen říct, že pokud svou práci myslíš vážně a nejde ti jen o to, aby to fungovalo, ale aby to fungovalo po všech stránkách dobře tak bohužel dnešní IT ještě na tom není tak, abych mohl pracovat stylem jako ty. Ano pokud budu pracovat pro malé US firmy, jenž cílí na svůj intranet, či na malý okruh zákazníků tak prostě nakoupím farmu serverů a výkonem hw doženu nedostatky v aplikaci, kterou jsem si vygeneroval. Tam i ten Excel bude plnit účel a zákazník bude spokojený ;-)
My se podle mě hlavně neshodneme v přístupu k programování. Ty chceš výsledek rychle, levně a jak já říkám po mě potopa. Já svou práci beru vážně a dodám produkt, který se bude moci i nadále za přijatelnou cenu rozvíjet dle potřeb, které v době první verze ještě ani nebyly známy s tím, že po stránce výkonu, škálovatelnosti a hlavně použitelnosti budou velice kvalitní.
O mé pravdě mě přesvědčují všichni kromě tebe a nic proti tobě nemám, ale Cayman je kdo? Nikdo. Microsoft, Sun apod. jsou prostě jména a za nimi něco stojí. Neargumentuj Indií, protože a) i Indové jsou velice kvalitní programátoři (z té brutální kupy prostě esa najdeš), b) Microsoft má v podstatě veškerý vývoj koncetrovaný do Seattlu a dělají pro něho esa. Stejně tak stačí abych se podíval na pražskou pobočku Netbeans (Jarda Tulach, ...) a vidím, že i pro Sun dělají esa ve srovnání s lidma co dělají custom vývoj jako Ness, Logos, ty? apod. Ale ani ty custom development firmy nepracují jako ty a to hodně úsilí věnují tomu jak dodat rychle, levně ...
Tohle všechno mě přesvědčuje o tom, že kvalitní vývoj nelze dělat způsobem, který zde prezentuješ ty. Až za tebou bude něco stát, všichni budou Caymana uznávat jako průkopníka IT, který změnil tento svět pak přijdu a pokloním se a uznám jak hluboce jsem se mýlil. Do té doby, nezlob se na mě, ale nemá moc cenu nad tím tady debatovat ;-)
Jsou různé způsoby programování, kdy tvorba uživatelských aplikací pro koncové zákazníky (banky, pojišťovny, telco firmy, školy, úřady, soukromé firmy,...), či tvorba obecných "vertical apps" , vyžaduje něco úplně jiného, jiný přístup a jiné nástroje, podobně jako nějaké "low-level" programování.
Něco jiného je tvorba dB aplikací, DW/BI řešení, založených na kvalitním databázovém modelu, business logice, náročných transakcích a kvalitním GUI,... něco úplně jiného je vývoj OS, web browsers, vývoj dev tools pro vývojáře, kdy je samozřejmě nutné psát kód většinou ručně a s důrazem na vysokou kvalitu a optimalizaci pro více platforem a více verzí různých technologií.
Cayman nemusí být žádný průkopník, který mění svět, když používá např. ten CodeCharge zmíněný výše jako kvalitní RAD nástroj na tvorbu toho prvního typu aplikací, když nepíše ručně kód, který je již vytvořen a stačí ho zahrnout, kdy se mu po asi 20ti letech praxe už daří dělat kód "bez chyb".
Kdo píše ručně tisíce řádků kódu a věnuje se tomu "systémovému" programování, tak samozřejmě chyby dělá a vždy dělat bude, musí používat debugger a náročně vše testovat pro různá prostředí.
Nic to ale nemění na pravdivosti toho mého úvodního vyjádření, že umím tvořit aplikace bez chyb, což působilo jako červený šátek na někoho, kdo nechápe, že existuje více druhů programování aplikací, že neprogramuji ani OS ani aplikace pro iPhone ani žádné komponenty pro NetBeans, čímž vznikla tato dlouhá diskuze.
Jak jsem zmínil výše, že dám prostor ještě pro poslední příspěvky a závěrečná vyjádření, tak nyní (konečně) zamykám diskuzi, neboť v ČR je asi 3:25 am ;-)
>>> DISKUZE UKONČENA <<<