Portál AbcLinuxu, 1. května 2025 09:49
It takes confidence to throw work away. You have to be able to think, there's more where that came from. When people first start drawing, for example, they're often reluctant to redo parts that aren't right; they feel they've been lucky to get that far, and if they try to redo something, it will turn out worse. Instead they convince themselves that the drawing is not that bad, really-- in fact, maybe they meant it to look that way.
-- Paul Graham: Hackers & Painters
sorry, ale pausalni odsuzuvani prepisovani je uplne stejna pitomost, jak prepisovat vsechno od zacatku. vetsinou clovek ma dve moznosti... lepit jednu opravu za druhou podle toho jak zrovna prichazeji pozadavky... vetsinou pak projekt pod tihou takovych uprav zkolabuje a je dal ,,neudrzovatelny'' nebo mas moznost to postupne prepisovat dle aktualnich pozadavku a nejnovejsi zkusenosti a je mnohem pravdepodobnejsi, ze to udelas lip, spravneji a obecneji... protoze uz mas zkusenosti z predchozich projektu.
pausalni odsuzovani novych technologii (v tvem slovniku nabozenstvi) je taky totalni blbost. pral bych ti, aby te tvuj sef posadil pred DBase III+, FoxPro 2.6 nebo treba Visual Basic XY a nutil te opravovat chyby, ktere tam jsou vice nez deset let... a ktere treba ani v prostredi dnesnich OS opravit nejdou. ...ale to nic, ... to jsou jenom dve generace stare technologie, to neni potreba prizpusobit dnesni dobe.
Neodsuzuji prepisovani prepisovani pausalne, tvrdim ze se z toho stal kult.moje zkusenost je takova, ze se prepisovani spis brani za kazdou cenu a to i u veci, ktere by to potrebovaly, protoze moralne zastaraly nebo byly prekonany... s vylozene typickyma oduvodnenima: ,,nejsou na to penize'', ,,neni na to cas'', ,,pockame, az to nejaky zakaznik bude chtit zaplatit''
Bezne delam s Delphi 6. A deset let stare bugy jsou i v Jave: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4152790delphi 6 imho neni zase takova vykopavka... vicemene odpovida pozadavkum soucasne doby... ale doporucuji jit si vyzkouset delat opravy v nejakem skladovem hospodarstvi, ktere napsal nekdo pred patnacti/dvaceti lety ve foxpro 2.6 a ma to 100 000+ radku...
Já zase často vidím opačný problém a degradaci slova „implementovat“. Pod ním si představím, spíš tvorbu něčeho nového, psaní softwaru. Ale ouha, dneska se řekne „implementovali jsme u zákazníka nový systém“ a celé to spočívá v tom, že se koupil krabicový software od nějaké cizí firmy, pár týdnů nad ním dodavatel dumal u sebe v kanclu (protože ho ještě nikdy neviděl, ale to se zákazníkovi neříká) a pak ho jde k zákazníkovi instalovat (to je ta „implementace“) a to trvá taky pár týdnu, protože v těch předchozích týdnech se toho moc neudělalo, hlavně se hrály hry a brousil internet, ale teď je potřeba, aby z toho vylezlo něco, co vypadá, že funguje, takže se nad tím musí prosedět nějaký čas u zákazníka. No a to celé se slušně zaplatí a o tom je ta implementace
Kdysy jsem mluvil s chlapkem co v Jave vytvari aplikace pro jeden prazsky radiodispecing. A jasne mi vysvetlil ze se kod v podstate jen kopiruje a upravuje pro zadany ucel. Ztn. najde na netu neco podobneho a upravi k obrazu svemu.
Psat od nuly je podle toho asi sebevrazda.
ze se kod v podstate jen kopiruje a upravuje pro zadany ucel.
Nemá cenu si nic nalhávat – takhle to prostě funguje Člověk buď něco umí, to znamená, že něco podobného už psal – v takovém případě vytáhne staré zdrojáky jiného projektu a opíše to z nich, případně to bylo nedávno a je schopný to napsat z hlavy (ale prakticky taky kopíruje to, co už jednou psal). Nebo to člověk neumí a teprve se tu konkrétní věc nebo postup učí – pak hledá v knihách, na internetu v cizím kódu a inspiruje se tam.
Vymýšlení úplně nového kódu a nových postupů je celkem výjimečná záležitost – s jistou nadsázkou se dá říct, že všechno už bylo naprogramováno (a teď zbývá jen to poskládat dohromady). A když už se něco úplně nového píše, stojí to dost času (a peněz), protože je potřeba být mnohem opatrnější, než když opisujeme něco, co funguje nebo fungovalo jinde.
P.S. tím opisováním nemyslím kopírova&vložit (to ani většinou nejde), ale spíš inspiraci, člověk si přečte starší kód, několik variant a pak napíše ten svůj.
všechno už bylo naprogramovánoTak to je hovadina, protože to, co ostatní skládají, někdo vymyslet musí. A není to zanedbatelné množství.
Psal jsem s nadsázkou … ale něco na tom bude – vezmi si, že většinu skvělých, užitečných aplikací můžeš napsat, aniž bys vymýšlel nějaké nové algoritmy nebo postupy – prostě stačí vhodně poskládat – úspěch té aplikace totiž není až tak v té technice, jako spíš v nápadu. Např. takový Facebook, já ho sice nemám rád, ale musím uznat, že je úspěšný, resp. dokázal nalákat spoustu lidí a získat si uživatele. Jeho autor nepřišel s žándým technicky unikátním řešením, nenaprogramoval nic nového (z programátorského hlediska), ale přišel s nápadem, kterým se trefil do toho, co lidi chtějí (nebo to aspoň udělat tak, aby to chtěli). Prostě se na ten program chytily miliony lidí, aniž by byl po technické stránce nějak objevný.
Ja s tim zapiskem ne uplne souhlasim. A to rikam jako clovek, ktery v praci spravuje 30 let stare aplikace v mainframe assembleru.
Podle me ucelem skoly je ucit, ne vyvolavat nejake dojmy. Pokud bych uvazil vyhody/nevyhody ucit programovani novych aplikaci vs. ucit spravu starych, tak u toho prvniho vyhody prevazuji. Algoritmy nejak decka naucit musite, sprava stareho kodu je jenom remeslo (ktere ovsem vyzaduje trosku premysleni). To ze to prvni budi dojem, ze pak takova bude i realita, je mozna nevyhoda, ale podle me nepodstatna.
Prestoze pracuji na aplikacich starych 30 let, obcas pisu novy kod, a tam se znat nejake algoritmy obcas muze hodit. Obcas take potrebuji nejaky pomocny skript, a pak si vypomaham Pythonem. A nebo si doma hraju s Common Lispem. Kdyby me skola ucila jen spravovat stare programy a zadne algoritmy, musel bych se je stejne naucit sam.
Ucelem skoly nema byt to, aby vychovavala lidi schopne pracovat v kterekoli firme bez zacviku. To si musi firmy osefovat samy (a o tom take je volny trh - proc bychom jim meli jejich investice platit z dani?).
Ve výsledku pak školy chrlí čerstvé absolventy kteří sice umí psát, ale číst se nikdy nenaučili.V tom máte svatou pravdu, a bohužel se to týká i těch, kteří třeba mají co napsat, ale kvůli zmíněné atmosféře to píšou tak, že to pak nikdo nepřečte.
Co bych si nerejp: jestli neměl nadpis znít spíše "Programování - aneb co se na mé škole neučí 2".
Vidim 4 námitky a na FAVce (ZČU Plzeň) jsme se s nima nesetkali. Seznam předmětů? To bude horší, něco bylo ve třeťáku. (Pak jsem už nestudoval.)
No na FEL ČVUT se něco takovéh dělalo třeba v předmětu o LISPu (přednášel to doc. Kolář), pak se v nějakém předmětu (něco jako "Architektura počítačů" nebo tak nějak se to jmenovalo) předělával procesor (byla to legrace, každý student měl udělat něco jiného a myslím, že každý rok se mírně měnil i ten procesor, pá nepříliš poctivých kolegů na tom tehdy pohořelo ). Nějakém sítovém předmětu jme pak "hackovali" TCP/IP stack Linuxu, přednášel to nějaký cizinec - na název si už nevzpomenu, je to už pár let. Osobně jsem si zapisovat spíš teoretičtější předměty (hrabat se v kódu a upravovat ho jsem uměl z praxe případně osobního zájmu, kvůli tomu by byl nesmysl chodit na VŠ), ale určitě není pravda, že prakticky zaměřené neexistovali.
siroka problematika, kterou je mozno vyjadrit jednim jedinym slovem: akademismus.
Na wiki ci jinde je dost definici tohoto pojmu. Jiz po staleti se lidstvo trapi s timto fenomenem, ale je to v nas zakodovano a tedy nereformovatelne. Zde v diskuzi najdete radu mladych kolegu, kteri jsou jeste opojeni svymi pocity nadrazenosti, pramenici z prislusnosti k akademicke obci. Je tezke se tomu pocitu nadrazenosti branit, otec soustruznik, matka prodavacka v zelenine, je tezko se pak po prednasce doma bavit o tom, jaka metoda reseni soustavy parc. difer. rovnic je v nejake konkretni situaci nejvhodnejsi.
Bohuzel, tento pocit nadrazenosti zustava na skolach i v osobach ucitestva a mira teto ignorance zavisi na tom, jak je ve spolecnosti prave nastavena jakasi vseobecna hladina pokory. Jak vime, diky jistym osobam, ktere nyni nechci jmenovat je tato hladina v soucasnosti velmi nizka (dekujeme!) a proto se nelze divit, ze pozorujete ony jevy jak ve vasem blogu popsano.
Jedinou moznosti, jak akademismus prekonat je revelucni situace ve spolecnosti. Jak vime (tedy my, kteri jsme meli jeste marxismus na skole), tak revolucni pohyby ve spolecnosti jsou nezavisle na vedomi jednostlivce a proto nelze revoluci jaksi vedome privodit. Musime cekat, az spolecnost bude tolik u zdi, ze nebude jineho vychodiska.
Ach jo, kdyby to tak bylo! Ale ono je to přesně opačně!
Právě se učí jen lepit hotové kusy kódu. Čím dál méně lidí je schopno napsat kvalitní nový kód, ba dokonce kvalitně opravit starý kód.
Čím dál méně lidí ví co je to quicksort.
Jinak já velmi děkuji, že jsem se učil pořádně teorii, akademismus, a psát nový kód. Kdybych se učil tak, jak si to přeje pouze autor článku, byl bych dnes další programátor na pásu ála lepič hotových komponent. Nikdy bych nic neuměl.
Dnes jsou moje kódy ve většině států světa a zrovna teď (protože to vzniklo jako vedlejší efekt díky mé vynikající znalosti teorie) se podílím na vytváření dokonalejší matematické teorie funkce krevního oběhu (jako jedna část vývoje software).
Chcete-li celý život dělat programátory na pásu a nikdy nerozumět programování, dejte na autora článku. Je to dokonalý návod na řadového nijak nevyčuhujícího programátora. Samozřejmě můžete slušně vydělávat, o tom žádná.
Výše zmíněné odstavce nejsou sebechvála, normálně tajím co dělám, ale jako motivace, abyste šli vlastní cestou. Cesta dobré znalosti teorie je zdlouhavější, ale vede daleko dále. Začnete později, ale dojde o několik řádů dál. Rozmyslete si, co budete napodobovat.
Tady vidím trochu rozpor:
Škola neučí programování jako řemeslo, ale jako vědeckou disciplínu
vs.
At the moment, there is very little science in software development.
Tak má to být věda nebo ne? Podle mého programování i informatika (to není totéž) mají už dnes docela silné teoretické a vědecké základy, bylo o tom napsáno mnoho a mnoho… Druhá věc je, jak tyhle teoretické základy zvládá ta která škola předávat studentům.
Přirovnal bych to k architektuře – na VŠ se člověk učí i ty základy o betonu, maltě, taky si zkusí postavit nějakou zeď… ale v životě bude jeho prací navrhovat stavby, kdežto míchat maltu a skládat cihly bude někdo jiný – tudíž architekt tyhle činnosti nemusí zvládat tak mistrně jako vyučený zedník. I na IT oboru vysoké by se tedy měla učit hlavně ta teorie, plus samozřejmě i další věci, které se už vůbec kódování netýkají (projektové řízení, ekonomika, správa požadavků, motodiky…) a všeobecný rozhled – protože úspěšný SW není až tak o kvalitě kódu, ale spíš o tom, jak se dokážeš trefit do potřeb uživatelů.
V praxi je údržba a opravování chyb 80% práce. 20% je psaní nového kódu.
Tohle otrocké opakování pravidla* 80:20 a snaha napasovat ho úplně na všechno mi už trochu leze krkem. U softwaru to tak většinou není – podívej se třeba na weby, ten jednou někdo namastí (100% psaní nového kódu) a pak už se tam jen přidává nový obsah do databáze. Pak někdo přijde s nápadem udělat redesign webu, všechno se zahodí a znova napíše. Nežíkám, že je to tak správně, ale prostě těch 80:20 neplatí. V případě zakázkového softwaru to tak někdy taky bývá – napíše se, nasadí a pak už do toho nikdo nechce vrtat, aby se to nerozbilo. Za pět až deset let ten software zastará a napíše se znova. Pak jsou zase případy, kdy se software pořád upravuje a rozvíjí – ale i tak stejně jednou dojde do stádia, kdy už to nemá cenu a kompletní přepsání má smysl nebo je dokonce nutné. …prostě mi to přijde jako příliš velká generalizace.
Ale abych jen nekritizoval: bylo by fajn, kdyby se při hodinách programování nejen psalo, ale i četlo – např. by se diskutovaly zajímavé kusy kódu nebo by je studenti měli vysvětlit (dost možná, že se to tak někde dělá). Jenže problém je v tom, že v hodně těch kurzech se studenti s tím jazykem a vůbec programováním teprve seznamují – a jsou rádi, že vůbec dokáží napsat program, který dělá to, co má – kdežto zkoumat cizí kód a hledat v něm chyby by bylo mnohem náročnější, spousta lidí by to nezvládla a i těm, co by to zvládli by to zabralo příliš mnoho času a asi by se to do toho předmětu vůbec nevešlo – muselo by se pracovat s mnohem komplexnějším kódem, než jsou ty semestrální úlohy. Možná by to mohly být zvláštní kurzy pro programátory – ale zase je otázka, jestli takový člověk potřebuje vysokou.
*) původně empirické zjištění, že 80% půdy v Itálii vlastní 20% obyvatel – Vilfredo Pareto
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.