Vlákno názorů k článku Základní základy editoru Vim od Biktop - "Ale vždyť snad nemůžeme říct, že cokoli bez...

  • Článek je starý, nové názory již nelze přidávat.
  • 15. 4. 2007 0:52

    Biktop (neregistrovaný)
    "Ale vždyť snad nemůžeme říct, že cokoli bez příkazového režimu je mizerné." - je mi líto, ale mé celoživotní zkušenosti ukazují, že cokoli, co nemá příkazový režim, se dá považovat pouze za polotovar.

    "Mě zajímá GUI (a UI obecně) ve smyslu rozhraní mezi programem a člověkem. Bohužel v této diskusi ne na to dívá hodně lidí v mnohem užším smyslu bez širších souvislostí (vidí jen to nabouchání textu do souboru)...sliboval jsem si od toho, že se tu rozvine i hlubší diskuse o uživatelském rozhraní obecně..." - tak to jsme na tom podobně, ale nyní už mne GUI zajímá spíše jako zajímavost, která ale efektivní používání výpočetní techniky spíše brzdí, i když zároveň toto použití značně zjednodušuje. S nejrůznějšími typy GUI jsem se setkal už od mých začátků na C64 v druhé půlce 80. let, kdy jsem si hrál s GEOSem. Ale po těch dvaceti letech dospívám k závěru, který jsem napsal výše. GUI vypadá přitažlivě, je snadné, neboť je založeno na několika skutečně směšně jednoduchých úkonech, tím pádem je velmi intuitivní. Ale to je právě ten problém, který způsobuje, že GUI má své hranice použitelnosti, které však mnohem starší textový přístup nemá: snaží se být tak jednoduché a intuitivní, že pro složitější operace s jejich komplexností se tato primitivnost (nikoli v hanlivém smyslu) stává stále větší překážkou, až nakonec použití GUI začne být zcela kontraproduktivní. GUI se pokouší o to, abyste měl vše před očima, jak jste tu napsal, aby vám co nejvíce ulehčilo práci, abyste se toho co nejméně musel učit nazpaměť, co nejvíce funkcí co nejlépe organisovaných do logické stromovité struktury. Jenže to je právě zároveň také to neodstranitelné omezení: obrazovka vašeho monitoru, ať je jakákoliv, nikdy nemůže obsáhnout tolik informací, kolik jich může obsáhnout vaše hlava, a jednoduchost a uniformita ovládání GUI nikdy nemůže konkurovat flexibilitě a různorodosti myšlenkových procesů lidského mozku, myš a tlačítka na obrazovce nikdy nemohou v efektivitě ovládání dosáhnout deset lidských prstů pohybujících se řekněme po 64 klávesách.
    Nepopírám zásadní a klíčovou zásluhu GUI v masovém rozšíření výpočetní techniky a jejímu zpřístupnění nejširším vrstvám, které bylo umožněno tím, že GUI sejmulo z uživatele břemeno prvních znalostí a postupů, kterým se v dobách před GUI musel každý naučit. Není to nic jiného, než že vlastně část toho, co by jinak musel dělat mozek uživatele, dělá program GUI. To je jistě v počátečních fázích obrovské ulehčení pro uživatele. Jenže v určitém okamžiku je toto počáteční ulehčení tvrdě vykoupeno. To, co v počátcích obrovským způsobem zjednodušilo práci a nutnost učení vlastně zredukovalo na nulu, se nyní stává nepřekonatelnou překážkou. Samozřejmě že každý program má své limity, ale GUI pod tyto limity zbytečně staví limity nové. Je to asi jakobyste se pokusil zcela oprostit od klasického programování, od programovacího jazyka v klasickém smyslu, a nahradil ho jakýmisi obrázky propojenými různými čarami a podobně - musel byste jít ještě dál, než kam jde vizuální návrh programu, zkrátka tak daleko, abyste nutnost psaní nějakého kódu redukoval téměř (nebo úplně) na nulu. Takto by se každý naučil programovat hned, programování by se stalo skutečně intuitivní záležitostí, naklikat si prvních pár jednoduchých programů by bylo směšně jednoduché. Ale s rostoucími nároky na to, co vlastně všechno ten vámi tvořený program má umět, by tento způsob programování začal být stále více omezující a zpomalující. V každém případě - jak v tomto hypotetickém, tak v případě GUI vs textový přístup - existuje bod, v němž GUI práci neusnadňuje, ale komplikuje a zároveň ji i zneefektivňuje, a co víc, existuje bod, který pro GUI tvoří pevnou hranici, ten zmiňovaný nadbytečný limit.
    Když například kreslím elektronické schéma - jako pro začátečníka je pro mne obrovské usnadnění mít po kraji obrazovky čudlíky s různými entitami schématu, je pro mne intuitivní natáhnout drát a propojit s tím něco jiného. Ale s rostoucí dobou praxe mě to začne omezovat, těch drátů tam musím namalovat hodně, z pohledu mého mozku mají samozřejmě všechny nějakou logickou strukturu a z pohledu počítače velká část, ale kdyby tam existovalo jen GUI, tak tu logickou strukturu můžu klidně zapomenout, protože ji těžko vysvětlím GUI, které je navržené pro jednoduché úkony, jelikož pro složitější úkony už ze své podstaty použitelné není. Je pro mne jednodušší a ušetří mi mnoho času, když mohu napsat cosi jako "c U1.A[0..15] U2.Q[1..16] U5.FIFOADDR[0..3] via bus A". Je to směšně snadné implementovat i pro programátora té aplikace na kreslení schémat, aby tomu ten program rozuměl a provedl co chci. Ale GUI mi zde staví zbytečné omezení, jelikož toto je jedna z tísíců věcí, která mě může napadnout a kterou je možné snadno poskládat pomocí příkazů a jmen objektů, tedy s použitím textového přístupu, ale mimořádně náročná, ne-li nemožná, na úrovni GUI. GUI za mne někdo vymyslel, aby mi usnadnil použití něčeho jiného, někdo přede mnou poskládal množinu možných operací, což samozřejmě platí i u textového přístupu, ale narozdíl od něj, on je poskládal tak, aby vyhovovaly primitivní logice GUI, která ani zdaleka nedosahuje úrovně i velmi jednoduchého formálního jazyka. Což je obrovský a hlavně zcela zbytečný handicap!
    Historicky to můžeme dokladovat asi tak - člověk si zjednodušoval práci různými stroji, až měl stroje a přístroje velmi složité, se spoustou tlačítek a kontrolek. Ale odedávna snil o tom, že sestrojí stroj, kterému stačí jen poručit co má udělat a on to udělá. Když se ten stroj podařilo zkonstruovat, tak nakonec na tuto převratnou výhodu rezignuje a vybaví ho "nadstavbou", která tomuto stroji dodá virtuální páčky, čudlíky a kontrolky, které dokonce vypadají jako skutečné, i když ve skutečnosti neexistují a jejich existence je často zcela neopodstatnělá. A to prosím jen z toho důvodu, že by bylo nutné ostatní lidi naučit mluvit jazykem, jakým mluví ten stroj. Ten stroj však v praxi používá jazyků více, každý pro to, na co se hodí, takže by se mohlo zdát, že je to pěkný babylon na jednom stole, ovšem nutno dodat, že všechny ty jazyky mají jasnou logiku a jsou jednoduché. Jenže povaha věcí, k jejichž vykonávání byl tento stroj primárně sestrojen, je tak komplexní, že je není možné obsáhnout páčkami a čudlíky. Můžeme samozřejmě pro každou činnost najít množinu čudlíků a formulářů (chtěl jsem původně napsat lejster kvůli podobnosti s realitou). Ale bude to vždy méně flexibilní, než najít pro tento účel množinu objektů, jež mohu propojovat na způsob jazyka, byť by byl velmi primitivní.
    GUI je jako byste nahradil komunikaci mezi dvěma lidmi komunikací ve stylu lejster, která si budete vyměňovat. Pro základní komunikaci je to intuitivní a jednoduché - pár piktogramů... dovedu si to představit například na recepci hotelu, nebo v restauraci. Dostanete formulář, zaškrtnete obrázky, odevzdáte a je to. Výhody tohoto přístupu našli už když vymysleli úřady a formuláře. Na problémy narazíte v okamžiku, kdy chcete vyřídit něco, co formulář už neobsahuje. Ano, musíte se kvůli tomu naučit komunikovat, ale výhoda je obrovská - jednak můžete vyřizovat i věci, na něž formuláře nejsou, nebo jsou, ale jsou příliš komplikované, jednak můžete - tedy bohužel toto platí jen u počítačů - "osobně", místo nutnosti vyplňování formulářů v kombinaci s ukazování prstem, říct "chci to a to". Na tomto hypotetickém GUI byste mohl založit i reálný hotel, jehož personál by nemusel s klienty prohodit mluveného slova. Ale čím více služeb a více možných problémů či přání zákazníků byste chtěl podchytit, tím více formulářů a stále více komplikovaných byste musel vymýšlet, tisknout a zpracovávat. Až narazíte na problémy, které by byly prostě neřešitelné tímto způsobem, nebo jejich řešení by bylo neúnosně nepřehledné a komplikované.


    ZÁVĚR - GUI může být, ale co nejjednodušší a obsahující pouze základní funkce pro první seznámení. Těžištěm musí být jazykově orientovaná komunikace, která umožní totéž, co GUI, ale přímočařejší formou, a navíc ještě přidá tu mnohem větší nadmnožinu operací, které je nutno postupně zvládnout intelektem, pro něž je GUI nepraktické. Z tohoto pohledu se jeví cesta Microsoftu a věci jako Windows (a Vista zvláště) v naprostém rozporu s cestou efektivní (netvrdím prosím "pro počáteční seznámení se", ale pro praktickou práci) aplikace výpočetní techniky. Osobně jsem přesvědčen o tom, že během příštích deseti, patnácti let se postupně ukáže, že cesta stále namakanějších, nápaditějších a rafinovanějších GUI je slepá, že tato novější a novější GUI stejně nic nového kromě jiného vzhledu či ovládání nepřinášejí, jen vyžadují stále výkonnější a výkonnější hardware. Vývoj GUI byl v podstatě završen nedlouho po jeho představení. Vše ostatní se už vymyká filosofii jednoduchosti hraničící s primitivitou, jež stála u zrodu GUI, a nic užitečného nepřináší.
    Počítač nemá lidský intelekt nahrazovat, ale doplňovat. GUI se pokouší o to první, jazykový přístup o to druhé.
    Toť můj závěr po dvaceti letech používání obého.
  • 15. 4. 2007 9:51

    bez přezdívky
    Váš článek mi připomíná mé zkušenosti z "programování" v nástroji Agilent VEE na střední škole. VEE je grafický program pro tvorbu automatických měřících systémů a převodníků. Na textové příkazy v něm narazíte pouze když chcete do objektu k tomu určenému zapsat matematický vzorec.

    A teď jeden příklad pro srovnání s textovým jazykem. Zadání bylo vytvořit digitální filtr typu IIR. V běžném textovém programovacím jazyce je to záležitost 10 řádek kódu, protože vlastně jen v cyklu přičítáte a odečítáte vhodné násobky předchozích výsledků. V programu VEE na stejnou triviální úlohu potřebujete dva objekty Formula (matematický vzorec) a jeden objekt Shift register (posuvný registr). Problém je, že narozdíl od běžného textového programovacího jazyka musíte zvolit pevný řád filtru, do jednotlivých objektů přidat správný počet vstupních a výstupních kontaktů a nakonec mezi těmito kontakty natahat spoje. Zájemcům mohu poslat screenshot hotového IIR filtru 6. řádu.

    Na Internetu jsem nedávno potkal jeden článek o pokusu posadit před Linuxovou příkazovou řádku úplné začátečníky, kteří ještě neznají grafické rozhraní. Tady je

    Nakonec jeden článeček pro zasmání: Master Foo Discourses on the Graphical User Interface
  • 16. 4. 2007 0:49

    Biktop (neregistrovaný)
    Velmi mi to připomíná ovládací program k jednomu syntezátoru. V podstatě šlo o plochu, kam bylo možné umísťovat různé obrázky (generátory průběhů, filtry, kruhové modulátory, atd...) a propojovat je barevnými čarami. Pro jednoduchou věc velmi intuitivní a přehledné. Pro komplikovanější - použití prakticky nemožné. Člověk musel přemýšlet nad důmyslným rozmístěním jednotlivých obrázků, aby se v tom vůbec vyznal, až se nakonec v té změti drátů ztratil a byl konec. A to už vůbec nemluvím o tom, když by bylo zapotřebí někde provést nějakou triviální úpravu - něco odebrat nebo přidat.

    Ostatně podobně těžkopádně by mohl vypadat i návrh s hradlovým polem - také je jednodušší použít VHDL, než si skládat tisíce klopných obvodů ručně pomocí myši. Sice by to bylo velmi intuitivní a člověk se nemusí učit VHDL, ale pro praktickou práci je to dosti nešikovné.

    A pokud jde o ten výzkum - někde jsem četl, jak se v jakési letecké společnosti podivili, když po výměně HW a SW za nový rapidně poklesla efektivita práce. Původní systém pocházel někdy ze 70. let a tomu také odpovídalo ovládání - klasické "zelené" terminály, každá operace měla číselný kód, který se musel zadat ve stylu dávky s potřebnými parametry. Každodenním používáním se desítky těch kódů operátorky naučily nazpaměť a většina operací tak pro ně znamenala napsat jednořádkovou dávku. Nový systém byl postaven na o dvacet let modernějším železe a moderním SW samozřejmě založeném na GUI :-)
  • 15. 4. 2007 10:14

    anonymní
    zrejme tu musite byt ponekud nestastny, protoze svet je zrejme plny polotovaru...

    takove programovani kreslenim skutecne existuje a pouziva se zejmena pro ruzne enterprise aplikace, at jiz v proprietalnich frameworcich pouzivanych nekterymi organizacemi (napr. k propojeni existujicich mensich modulu procesne mezi sebou), ale take v podobe ruznych (velmi profesionalnich) nastroju pro navrh, ktere generuji kod bud zcela (napr. sql) nebo alespon jeho kostru (moduly, tridy, metody, ...)
    samozrejme, ze se tim snizuje flexibilita, ale vysoce tim roste produktivita pro danou vymezenou oblast (samozrejme ze ale pak pomoci toho vizualniho ER modelleru nevygenerujete dokument v TeXu)


    ve vyctu kladu GUI jste zapomnel na jednu velmi zasadni vec - standardnost, univerzalnost - grafika proste je velmi univerzalni a pouzitelna pro libovolnou aplikaci, prikazovy rezim je ze zasady individualni, zcela rozdilny pro ruzne aplikace
    vimu nikdo nevycita to, ze se da ovladat rychle, ale to, ze se musite ucit ho ovladat, ze neumoznuje postupny presun od snadneho ovladani casto pouzivanych funkci k jejich efektivnimu ovladani. je tam proste ta oproti jinym aplikacim velmi vysoka vstupni bariera

    u prkladu komunikace mezi dvema lidmi je to ale o tom, ze kdyz chcete komunikovat se tretim, tak ten uz ale mluvi uplne jinym jazykem, ktery se musite naucit (i proto se pouzivaji piktogramy - jsou univerzalni)

    GUI samozrejme neni jenom menu, ty funkce a nadmnoziny (ty ktere jsou pouzitelne pro 80-95 % uzivatelu) je mozne zabalit do dialogu pro 90 % uzivatelu se tim otevre moznost pouzit snadno pozadovanou funkcionalitu, pro 10 % uzivatelu ne.


    Zatim vyvoji k zavrzeni GUI nic nenasvedcuje, spise naopak. Davno nezijeme v dobe, kdy by pocitace pouzivali pouze programatori, pro ktere je prirozene se vyjadrovat v sekvencich prikazu neprirozeneho symbolickeho jazyka.

    Prikazovy rezim (zejmena ten ve vim) je takovym programovanim operaci nad textem, behem jeho psani.
  • 15. 4. 2007 12:49

    Biktop (neregistrovaný)
    Roste tím produktivita pouze pro velmi úzce profilovanou a poměrně jednoduchou činnost.

    Jenže ta standardnost a univerzálnost je způsobena tou primitivitou. Je pravdou že primitivní, jednoduché věci jsou geniální, ale na druhou stranu je pravdou, že věci mají být tak jednoduché, jak je to jen možné, ale víc už ne! Pro spoustu aplikací s GUI právě tato druhá podmínka už není splněna.

    Cokoli, co je netriviální, se musíte učit! To byste mohl vyčítat programovacím jazykům, že se je musíte učit, že neumožňují "plynulý přechod"... Otázkou je, jestli se vám tato investice do učení vyplatí. To už si každý musí zvážit/zkusit sám.

    Piktogramy jsou sice univerzální, ale nejsou všespásné. Nevím jak vy, ale já si staroegyptský nápis nepřečtu, přestože původně šlo v podstatě o samé piktogramy. Piktogramy se totiž hodí pouze k jednoduchým věcem, jakmile je budete chtít použít ke složitějším, tvrdě začnete narážet na jejich přílišnou stručnost. Jakmile se tuto stručnost pokusíte odstranit, začne být tento přístup naopak mimořádně nepřehledný a nesrozumitelný - viz egyptské hieroglyfy. Jde tak psát, ale je to nepraktické.

    Ano, o tom ale mluvím. Můžete zabalit spoustu té funkcionality do nějakého GUI a stane se to tak přístupným pro 80-90% uživatelů. Jenže je otázkou, jestli těchto 80-90% uživatelů ty funkce vůbec využije a pro ty, kteří je skutečně využijí, to bude velmi nepohodlné a zdlouhavé a navíc další funkce, které by se jim mohly hodit a které by byly přístupné jazykovým přístupem budou zcela nedostupné. Zářným příkladem je MS Word - 90% funkcí obsažených v jeho GUI 90% uživatelů stejně nepoužije a když, tak jen zřídka. Navíc jak se noříte hlouběji do složitějších funkcí, stává se GUI čím dál méně srozumitelné a intuitivní, jelikož autoři musejí ty impementované funkce přizpůsobit vlastnostem GUI, jelikož naopak to nejde. Výsledkem jsou velmi neohrabané přístupy, které svou nevhodnou implementací nové uživatele od jejich použití spíše odradí a ti se pak raději spokojí s těmi 10% funkcionality než aby se prokousávali tímhle, a ty, kteří je skutečně vyžadují k své práci, budou velmi omezovat a zdržovat. Například od té doby, co jsem se setkal s (La)TeXem mě nikdo nedonutí používat MS Word, jeho ovládání mi připadá nestandardní, nepohodlné, nelogické. Jiné totiž ani nemůže být - ruce svazuje právě ono GUI. Funkce, které jsou v TeXu přístupné příkazem nebo jejich kombinací, která je naprosto logická, jsou ve Wordu zahrabané kdesi ve struktuře GUI, musím přemýšlet "kdybych byl tvůrce Wordu, kam bych to asi schoval..." Když už tu funkci naleznu, její použití je velmi obtížné, neintuitivní, jelikož se musela přizpůsobit přístupu menu a formulářů, který skutečně pro mnoho složitějších věcí je absolutně nevhodný. Ano, viděl jsem dvě obsáhlé knížky vytvořené pomocí MS Wordu (jedna matematická, druhá o jazyku C++), ale považuji to spíše za kuriozitu, takové to "no, taky je to možné". Nicméně si troufám tvrdit, že totéž bych v TeXu dal dohromady rychleji a snadněji.

    Já netvrdím, že GUI se má zavrhnout, to jste mne špatně pochopil. Já jen tvrdím, že se na GUI nemá šroubovat to, pro co není vhodné, tj. vše, co není svou podstatou jednoduché. A myslím si, že v tomto ohledu nemáte tak úplně pravdu. Jazyková forma komunikace JE pro člověka přirozená, i když by mělo jít o umělý jazyk. GUI má podle mne sloužit jen pro usnadnění práce s počítačem u lidí, kteří nepotřebují pokročilou práci na tom kterém problému. V žádném případě by nemělo nahrazovat jazykovou komunikaci s počítače!
    Trochu bych to přirovnal k Morseově abecedě - také se ji musíte nejdříve postupně naučit, jestli chcete komunikovat telegrafem. Aby to pro lidi bylo jednodušší, vymyslel kdosi cosi jako pomocná slova - "akát, A (.-), lupíneček, L (.-..) atd..." Je to intuitivní, výrazně to usnadňuje naučení se této abecedy, žel, má to jeden velmi, velmi podstatný nedostatek - takto naučená Morseova abeceda je prakticky nepoužitelná. Ano, můžete si pak psát depeše na papír pomocí teček a čárek, ovšem na papíře jsou k tomu i vhodnější prostředky, že, například normální písmo. K tomu, abyste komunikoval pomocí rádia, kdy se vám do ucha sype třeba 120 znaků za minutu, jsou nějaké akáty a lupínečky naprosto k ničemu. Abyste ta pomocná slova mohl využít, musel byste komunikovat tak pomalu, že praktický užitek je takřka nulový. Abyste mohl komunikovat tak ryhle, aby to mělo nějaký smysl, jsou zase akáty a lupínečky úplně na nic. S GUI je to podobné. Považovat GUI za všespasitelné a universální je obrovská chyba a omyl. Už ze své podstaty takové není a nikdy být nemůže.
  • 15. 4. 2007 14:01

    Franta Kučera
    Budu reagovat jen na ten LaTeX: taky ho teď používám a pro moje současné potřeby (strukturovaný text + matematika) je to optimální nástroj (a jsem za něj velmi vděčný). Ale když budu stát před úkolem vytvořit stránku s x sloupci textu a složitým grafickým rozvržením, tak si spíš vyberu nějaký DTP program s GUI než LaTeX, protože ty (graficky) složitější věci je velmi náročné vyjádřit pomocí příkazů TeXu, kdežto v GUI to jde mnohem rychleji a intuitivně, navíc: když píšu text, stačí mi vidět zdroják (plus Kile mi ukazuje stromovou strukturu kapitol), ale když budu tvořit grafiku, tak to budu chtít vidět "on-line", budu chtít vidět výsledek už během toho vytváření, je to důležité pro celkovou představu a kompozici (tam nestačí koukat na zpětná lomítka a složené závorky).
  • 15. 4. 2007 18:12

    Biktop (neregistrovaný)
    Však také ani TeX, ani LaTeX nebyly určeny pro to, co říkáte, ale primárně pro sazbu technických publikací :-) Naopak DTP systém obyčejně není vhodný pro činnosti, v nichž vyniká TeX.
  • 15. 4. 2007 19:41

    Franta Kučera
    Přesně tak. Doufám, že ten můj předchozí příspěvek nikdo nepochopil jako kritiku LaTeXu nebo TeXu. Už tu delší dobu říkám, že je vhodné používat specializované nástroje -- tudíž LaTeX na to, co dělám teď a DTP zase na jiný druh sazby.
  • 15. 4. 2007 12:29

    Franta Kučera

    1) Moje úvahy vycházejí z předpokladu, že uživatel většinou řeší úkoly, které už řešil někdo před ním. Proto existuje typový software a tak často se používá, zatímco individuální software se používá jen v nutných případech (protože je drahý).

    2) Jestliže známe potřeby uživatelů, můžeme takovou funkčnost zadrátovat do GUI. Tato funkčnost je posloupností primitivních operací, které by uživatel zadával v příkazovém režimu.

    Můžeme si to ukázat třeba na příkladu přehrávače Amarok: tenhle přehrávač implementuje nějakou množinu funkcí, které uživatelé potřebují. Přehrávač sice neumí funkci XY, ale protože ji nikdo nepotřebuje, tak to nevadí. Když se najdou uživatelé, kteří funkci XY potřebují, mohou poslat vývojářům požadavek, nebo funkci sami naprogramovat a poslat jim rovnou patch.

    Druhou možností je, že žádný Amarok (nebo jiný GUI přehrávač) mít nebudeme a každý uživatel si vytvoří vlastní sadu skriptů, které budou obsluhovat jeho potřeby. Skript bude volat příkazy jako artsplay a mixer a další a ovládat ho bude uživatel přes standardní vstup. Tento přístup dá uživateli neomezenou variabilitu, ale otázkou je, jestli to má smysl. Proč by si každý uživatel měl dělat svoji sadu skriptů, když uživatelé mají společné potřeby a mohou sdílet program, který tyto potřeby uspokojuje skrze GUI?

    Podobný příklad je TeX vs. LaTeX: ten LaTeX mne svým způsobem omezuje a čistý TeX by mi nabízel mnohem víc možností, ale množina funkcí, které má LaTeX mi plně postačuje, takže mohu využívat výhod, které mi oproti TeXu nabízí.

    3) Velikost obrazovky je omezená a je jasné, že se na ni nedají nacpat všechna tlačítka a menu. Ale GUI se dá konfigurovat (hezky to má třeba Opera, ale i spousta jiných programů), takže uživatel má tlačítka jen těch funkcí, které používá a ty se mu na obrazovku vejdou.

    4) Jak píšeš, každý program omezuje uživatele, každý má nějaké limity. Jediný program, který mne neomezuje, je ten, který si napíšu sám, protože si v něm můžu implementovat 100% svých potřeb. Důležité ale není, jestli tyto limity jsou vyšší nebo nižší, důležitější je, jestli jsou dostatečně nebo nedostatečně vysoké vzhledem k potřebám uživatele.

    Příklad: můžu mít dvě auta, jedno bude jezdit max. 300 km/h a druhé 400 km/h. Z hlediska potřeb řidiče jsou limity obou těchto aut dostatečně vysoké, proto je irelevantní, který z těchto limitů je vyšší. A uživatel může do rozhodování zapojit jiná kritéria.

    5) GUI mne omezuje, příkazový režim mne omezuje méně* a programovací jazyk mne omezuje ještě méně. Otázkou tedy je, proč bych si měl vybrat VIM s jeho příkazovým režimem (který mne omezuje), když mohu použít programovací jazyk (který mne neomezuje prakticky vůbec).

    6) Asi řeknete, že jsem idealista :-) ale moje představa je takováhle: kvalitní GUI + otevřené formáty (založené pravděpodobně na XML). Ve většině případů využije člověk to GUI, protože neobjevuje Ameriku, ale řeší totéž, co už někdo před ním, takže už to v tom GUI je a pohodlně. A v případech, kdy má jedinečné potřeby, buď vylepší GUI (pokud to má smysl a je tu šance, že totéž bude potřebovat ještě někdo po něm) nebo si napíše vlastní program, který bude pracovat s otevřeným formátem, nebo použije univerzální (XML) editor, kterým soubor upraví.

    *) I když s tímhle tak úplně nesouhlasím, protože: textový režim mne zase omezuje ve vizualizaci -- v CLI toho nejde vyjádřit tolik jako v GUI, to se týká hlavně směru počítač --> člověk (takový diagram tříd nebo databázový model vyjádřený v ASCII Artu je teda "lahůdka"). A někdy i ve směru člověk --> počítač, protože některé věci bez GUI prakticky nejdou (kreslení obrázku by zadáváním příkazů bylo neskutečně nepohodlné, nehledě na to, že by grafik vůbec nevěděl, co kreslí).

  • 15. 4. 2007 13:00

    mys elf (neregistrovaný)
    Zajímavý příspěvek, odpovím jenom na jednu jeho otázku:

    > Otázkou tedy je, proč bych si měl vybrat VIM s jeho příkazovým režimem (který mne omezuje), když mohu použít programovací jazyk (který mne neomezuje prakticky vůbec).

    Právě proto, že VIM lze (mimo jiné) krásně spojit s externími programy, tzv. filtry. A umožňuje tyto filtry aplikovat na celý soubor nebo na jeho část vyjádřenou logicky nebo pomocí selekce ve vizuálním režimu. Já mám takových filtrů napsaných několik a s oblibou je používám. Právě okamžitá vizuální kontrola nad provedenou operací je velká přednost Vimu oproti samostatnému spouštění nějakého programu nad celým souborem.

    A ještě dodatek: Vim je přece takový Amarok! Používají ho spousty lidí a řeší přesně ty problémy, které v minulosti lidé s editací a prohlížením souborů měli.
  • 15. 4. 2007 13:02

    mys elf (neregistrovaný)
    O možnostech Vimu včetně externích filtrů (a o tom, jak uživatele při editaci "omezuje") se může zájemce dočíst zde: http://www.vim.org/htmldoc/change.html
  • 15. 4. 2007 13:33

    Biktop (neregistrovaný)
    ad 1) Jednak většina nejsou všichni a jednak je to podle mne dost zkreslené. Ve Wordu třeba většina lidí bude používat nevhodný mezerník a odřádkování spíše než by si navolila nějaký styl, protože to pro ně není tak intuitivní a ve wordovské implementaci je to dost omezující. Museli by se s tím naučit zacházet, že...

    ad 2) Je otázkou, do jaké míry známe potřeby uživatelů. Já mám spíše z většiny GUI pocit, že do mých potřeb se příliš netrefili. Že se ten software pokouší myslet za mě. Jenže to je přesně to, co nechci. Od myšlení je tu někdo jiný, SW je jen nástroj :-)
    Vy to zase vedete do extrému na příkladu toho přehrávače...
    A pokud jde o ten LaTeX - jen si přiznejte, kolikrát jste nějakou věc raději udělal jinak než jste si původně představoval, než byste přesvědčoval LaTeX aby to vysázel jinak, než jak to má zadrátované. Ale tento příklad patří ještě mezi ty případy, kdy to sice může být složité, ale jde to. U GUI to většinou nejde vůbec.

    ad 4) No právě. Jenže vy děláte, jako kdyby GUI omezovalo na 300. Jenže ono to je často spíše na 80 a to už fakt jako silné omezení cítím.

    ad 5) To jsem netvrdil a ani si to nemyslím. Porovnával jsem jen jazykový přístup (tj. nad nějakou gramatikou a lexikonem) s GUI.

    ad 6) Kvalitní GUI IMHO= jednoduché a přehledné GUI. U čeho musím při vývoji GUI aplikace přemýšlet, jak to napasovat do GUI, u toho bych na GUI implementaci raději rezignoval a implementoval to pouze v CLI (nic nebrání tomu, aby aplikace byla vybavena obojím a GUI nedělalo nic jiného, než generovalo příkazy pro CLI část). XML je dle mého názoru zase nějaká móda, ale je to opět jako s tím GUI - není to všespásné a na obrovské množství věcí je to nevhodné. Rozhodně bych varoval před masovým a neuváženým nasazováním XML. Má to své limity.

    ad *) neříkal jsem textový režim, ale textový, či spíše jazykový přístup. A u toho kreslení... profesionální CADař vedle myši klávesnici ke "kreslení" používá velmi hojně. Některé věci je zkrátka vhodnější tomu CADu "popsat slovy" :-) Ostatně v knížce máte taky obvykle jak text, tak obrázky. Jsou případy, kdyby to bez obrázku prostě nešlo nebo by to bylo velmi těžkopádné a naopak, kdy obrázek bez komentáře není dostatečně názorný.
  • 15. 4. 2007 14:24

    Franta Kučera

    2) Přiznám se, že jsem na limity LaTeXu ještě nenarazil (asi sázím moc primitivní dokumenty :-) Zásadní otázkou při řešení případných problémů s limity ale je, jestli:

    a) se snížit na nižší úroveň -- použít příkazy TeXu b) vylepšit LaTeX (nebo jinou vyšší úroveň) tak, aby odpovídal mým potřebám.

    Možnost a) je vhodná pouze v případě, kdy moje potřeby jsou zcela jedinečné. Možnost b) je vhodná v případě, kdy na světě existují i jiní lidé, kteří řeší stejné věci jako já, kteří narazili na stejné limity LaTeXu. V drtivé většině případů jsou na světě i jiní lidé, kteří mají stejné potřeby jako já.

    IMHO je tedy vhodnější vylepšovat tu vyšší úroveň (LaTeX, vyšší programovací jazyky, GUI...) tak, aby odpovídala aktuálním lidským potřebám, než se vracet na tu nižší úroveň, což nutí každého uživatele znovu a znovu vynalézat kolo, objevovat Ameriku...

    Ta nižší úroveň je vhodnější (a nutná) jen v jedinečných a neopakovatelných případech a nebo v případech opakovatelných, ale takových, kdy je potřeba něco implementovat a nasadit ve velmi krátkém čase -- pak se to to prostě nějak narychlo zbastlí, než aby se udělalo pořádné řešení, které by bylo znovupoužitelné a přineslo užitek i někomu jinému.

  • 15. 4. 2007 18:07

    Biktop (neregistrovaný)
    To se docela divím :-) Ono ale často stačí donutit LaTeX, aby pracoval trochu odlišně od toho, jak pracuje implicitně. Když pak porovnáte ty dva přístupy, tj. měnit LaTeX, nebo definice vlastních příkazů v TeXu, tak zjistíte, že druhá varianta je ve většině případů mnohem jednodušší. Důvod je prostý - LaTeX, jako všechno, co se pokouší být nástavbou, co se pokouší za uživatele nějak myslet, nějak mu ušetřit intelektuální práci, musí být dostatečně komplexní, aby to opravdu postihlo co nejvíce možných přání uživatele. Jakmile se však narazí na něco, s čím autor nepočítal - a vždycky najdete nějakou takovou pitomůstku - začne být velmi obtížné přizpůsobit chování něčeho, co k tomu nebylo určeno, vašim představám. V TeXu toto většinou nehrozí, v TeXu máte hromadu šroubků a matiček a udělejte si z toho co chcete. V LaTeXu máte už hotové funkční a poměrně komplexní konstrukce a ty je třeba přizpůsobovat si, když nevyhovují, což kvůli té komplexnosti je často zatraceně obtížné. Také častěji používám LaTeX, protože když je třeba napsat nějaký článek nebo zprávu, je to vyhovující. Ale třeba když jsem jako student musel vypracovávat protokoly z praktik a ty protokoly měly mít nějakou předem danou formu, bylo přizpůsobení LaTeXu pro mne tak obtížné a nešikovné (různá přičítání záporných délek aby se tím vykompenzovala jiná délka nebo aby se nějaký nápis dostal před jiný, protože pořadí bylo fixně dané, apod...), že jsem se raději naučil základy TeXu a celkem snadno a přímočaře si vytvořil elegantní sadu příkazů, s jejichž pomocí jsem mohl sázet přesně tak, jak jsem si představoval, a zdrojový text vypadal krásně čistě a přehledně.
    Já tvrdím, že se velmi mýlíte ve své úvaze. Ty vaše odlišnosti v případě a) vůbec nemusejí být zásadní! Právě naopak - velmi často jde o zdánlivě drobnost, kterou je třeba udělat. Pak zjistíte, že kvůli této zdánlivé drobnosti byste musel předělat hromadu dalších maker, která na to nebyla stavěna. Místo aby se člověk soustředil na to, jak má vypadat výstup, soustředí se spíš na to, jak hotová makra ošálit, aby produkovala to, co chci já, a ne to, co chce původní autor. Přitom původním záměrem autora bylo usnadnit mi práci. Ano, u jednoduchých věcí mi ji skutečně usnadnil, ale pokud bych chtěl něco, co se byť téměř v detailech liší od jeho díla, je mi to takřka k ničemu.
    Taky se domnívám, že mícháte dohromady různé pojmy.

    - TeX je program, který dělá práci sázecího stroje - řeknu jak chci sázet a on tak sází - čistě mechanická, snadno automatisovatelná činnost. LaTeX je sada maker, která se pokouší dělat navíc ještě práci sazeče. Jenže to už je činnost vyžadující nějaký intelekt. V jednoduchých případech může být výsledek uspokojivý, v komplikovanějších už tomu tak nebude. Když někdo navrhuje plošné spoje, může použít autorouter, který se o návrh postará - v jednoduchých případech je to často uspokojivé, ale ve složitějších to stejně nakonec musíte udělat ručně.

    - programovací jazyk je věc, která naopak umožňuje s počítačem komunikovat jazykem blízkým tomu lidskému, nepokouší se za vás řešit problém (tedy mluvím o klasických jazycích), jen automatisuje věci, které jsou snadno automatisovatelné - podobně jako TeX automatisuje sazbu.

    - GUI už tvoří určitý rámec pro řešení problémů. V podstatě každá položka GUI představuje buď nějaké nastavení vlastností, nebo nějakou akci. Ale tu množinu VŠECH možných akcí už máte danou. GUI není uzpůsobeno k tomu, abyste si na základě elementárních akcí definoval nové a z těch skládal to co potřebujete. To už za vás udělal autor aplikace - jenže to je to, o čem neustále hovořím. Autor se pokusil ušetřit vám intelektuální práci a pokud se úplně netrefil do vašich představ (ruku na srdce, k naprosté shodě nemůže dojít nikdy), máte svázané ruce. Místo aby počítač prováděl to, co vy chcete po něm, ve skutečnosti, aniž byste si to uvědomoval, vlastně vy děláte to, co vám počítač dovolí, k čemu vás on navede.
  • 15. 4. 2007 20:09

    Franta Kučera
    Bohužel jsi nepochopil tu hlavní myšlenku, kterou se tu snažím sdělit: lidské potřeby většinou nejsou jedinečné, stejné potřeby má i spousta jiných lidí. Takže pokud je LaTeX nevhodný pro mne, tak je nevhodný i pro další lidi. A v tom případě má smysl, tuto nadstavbu přizpůsobit potřebám uživatelů (nebo udělat novou nadstavbu).

    Považuji za nesmyslné, aby si každý uživatel psal vlastní makra TeXu, aby lidé dělali znova a znova totéž, to je plýtvání lidským časem, kapitálem, energiemi...

    Je to, jako kdyby sis nekoupil auto v obchodě, protože to auto není přesně podle tvých potřeb, a raději si ho sám smontoval v garáži ze šroubků, matiček, plechů... Nelíbí se ti mléko a jogurty v obchodě? Tak si kup krávu a vyráběj si to sám, budeš mít potraviny 100% odpovídající tvým potřebám.

    Používáš linuxové jádro? Nebo jiný UNIX? Proč si nenapíšeš vlastní operační systém? Vždyť ten Linux udělaný tak nějak universálně pro všechny, Linus (a další) ho nenapsal přímo na míru tvým potřebám.

    Myslím, že příkladů už bylo dost na to, aby sis uvědomil, jak absurdní jsou tvoje myšlenkové pochody.

    Ale ještě jeden bonus na závěr :-)
    Někdy se při programování ve vyšších jazycích vyskytne potřeba napsat nějakou část aplikace v assembleru nebo v céčku. Co to znamená? Programátor ve vyšším jazyce napsal program, napsal proceduru, co se má udělat. Ale kompilátor vyššího jazyka tento zdrojový kód přeložil neefektivně. Výše jsem psal, kdy je vhodné se vrátit na nižší úroveň:
    a) máme nějakou jedinečnou a neopakovatelnou potřebu --> část aplikace prostě napíšeme v ASM, protože lepší systémovější řešení by nikdo jiný nevyužil.
    b) tlačí nás čas a potřebujeme to vyvinout velmi rychle --> nemáme čas na nějaké kvalitní a systémově správné řešení, takže to nějak zbastlíme aby to prostě fungovalo.

    Pokud ale neplatí možnost a) ani b), pak je vhodné vylepšit kompilátor vyššího jazyka, upravit ho našim potřebám. Cokoli jiného je totiž plýtvání prostředky a brzda pokroku.

    Pokud to totiž neuděláme (nevylepšíme kompilátor), tak za měsíc nebo za týden nebo zítra bude nějaký jiný programátor řešit totéž co my dneska a bude znovu psát tentýž kód jako my.
  • 15. 4. 2007 21:58

    Ondrej "SanTiago" Zajicek (neregistrovaný)
    > Bohužel jsi nepochopil tu hlavní myšlenku, kterou se tu snažím sdělit: lidské potřeby většinou nejsou jedinečné, stejné potřeby má i spousta jiných lidí. Takže pokud je LaTeX nevhodný pro mne, tak je nevhodný i pro další lidi. A v tom případě má smysl, tuto nadstavbu přizpůsobit potřebám uživatelů (nebo udělat novou nadstavbu).

    Moje zkusenosti se specializovanymi nastroji jsou zhruba tyto:

    1) Clovek musi vynalozit cas na jejich nauceni, oproti univerzalnimu nastroji, s kterym uz umi pracovat.

    2) Clovek pak pri praci casto narazi na jejich nedostatky, ktere lze jen komplikovane obchazet.

    Myslim, ze tvuj priklad s prekladacem vyssiho jazyka neni prilis vhodny. Velka cast vyssich jazyku neni o moc vic specializovanejsi nez assembler.

    Specializovane nastroje casto uzaviraji reseny problem do nejake koncepce ci teorie, ktera neprijemne svazuje pri jejich pouzivani. Opravit je dost dobre nejde - to omezeni casto vychazi z jejich koncepce a dalsi zobecnovani by obvykle zkomplikovalo pouzivani v souladu s koncepci.
  • 16. 4. 2007 10:38

    anonymní
    ale v ta koncepce ci teorie je casto proverena mnoha predchozimi pouzitimi tehoz v nespecializovanych nastrojich, pripadne i teoretickymi az vedeckymi pracemi

    jsou to proste best practices te oblasti (nikoliv ovladani konkretniho nastroje), ktere se stejne musis naucit, pokud to chces psat dobre i v nespecializovanem nastroji
  • 16. 4. 2007 11:53

    Franta Kučera
    Viz třeba obecný/universální CAD versus ArchiCAD pro architekty.
    Navrhovat stavby v obecném CADu by bylo značně neefektivní a pomalé, zatímco v ArchiCADu je to hračka a architekt se nemusí soustředit na to, jak nakreslit jakou čáru, ale na to, jak by dům měl vypadat.

    A samozřejmě že se vyskytnou i nedostatky a omezení tohoto specializovaného programu, ale to není důvod snižovat se k obecnému CADu, to je důvod k vylepšení specializovaného nástroje -- k přizpůsobení lidským potřebám -- počítače/software by se měly přizpůsobovat člověku, ne člověk počítači.
  • 17. 4. 2007 1:51

    Biktop (neregistrovaný)
    To už jsme se skutečně trochu moc odklonili od původního problému, tj. ovládání vimu, resp. UI :-)
    Co říkáš nikdo nepopírá (i když jsou situace, kdy se stane, že udělat novou nástavbu je snažší a čistší, než ohýbat přes koleno stávající, která na takové změny nebyla připravena).
    Jenže konkrétně když se vrátíme k tomu vimu, tak to rozhodně není značně neefektivní a pomalé, přesto že je to dostatečně obecné. Jediný problém tam byl v tom, že to vyžaduje nějaké učení se.

    Tu úplně poslední větu tvrdím od samého začátku - jenže čím specifičtější problém, tím hůře se přizpůsobuje. Kdybych to přirovnal k OOP, tak je pro mne snazší a čistší si odvodit kombajn z vozidla, než z traktoru nebo dokonce náklaďáku. Takže nevím, jestli už chápeš kam celou dobu mířím - že současný trend je zahlcovat lidi hromadou příliš specifických "tříd", které chrlí někdo jiný tak, že přemýšlí, co by tak ještě kdo mohl potřebovat, aniž by jim byl dán přístup k těm obecnějším a bylo na každém z nás, jestli použije specifickou "třídu" nebo modifikovanou specifickou "třídu", nebo si odvodí vlastní z něčeho obecnějšího. V případě TeX vs. LaTeX to samozřejmě jde, zde žádný problém není, ale kupř. u GUI aplikací už ten problém nastává.
  • 17. 4. 2007 9:49

    anonymní
    to uceni by ani tak nevadilo, pokud by to ale bylo vyuzitelne obecneji
    zda se mi proste jako velke plytvani ucit se neco, co nelze vyuzit obecne ale pouze v jednom nastroji (byt treba genialnim)


    k druhemu odstavci asi jenom tolik - lide ale nechteji pouzivat vozidla, ale kombajny, traktory, formule...
    ne vsichni jsou programatori aby si odvozovali sve tridy a i kdyz by to treba nejak zvladli, proc slozite vymyslet neco, co uz existuje a je odladene, odzkousene, fungujici, podporovane...
  • 17. 4. 2007 15:23

    Petr Mach (neregistrovaný)
    Ale právě proto, že Vim je univerzální, tak je obecně použitelný. Nemusím se učit používat několik editorů, stačí mi Vim, který je navíc ze všech nejlepší. A cena je malá, naučit se používat Vim. Jde jen o to, jak moc je člověk krátkozraký.

    Všichni nejsou programátoři, ale někteří ano a pro ně tu je Vim. A že Vim je profesionální nástroj a není pro všechny a pro masy jsem zde už napsal xkrát, tak proč sem pořád cpeš myšlenku o všech?
  • 17. 4. 2007 16:06

    anonymní
    Ale copak by pouzivate na pocitaci jenom plaintextovy editor? Bootujete do nej? Mozna v dobach mainframu a terminalu, ze ktere vim pochazi, ale dnes?

    Ja na svem soucasnem pocitaci delam tedy i mnoho jinych veci - lezu po internetu, ctu a pisu maily, nastavuji a upravuji parametry systemu a ruznych aplikaci, spravuji soubory, pracuji s grafikou, prehravam hudbu, sleduji a zpracovavam video, sleduji televizi, pisu, tisknu a skenuju textove dokumenty, pracuji ve spreadsheetu, obcas udelam i nejakou tu prezentaci, prevadim dokumenty v ruznych formatech, modeluji a navrhuji databaze a programy, ... a urcite jsem na spoustu veci zapomnel

    Na to vsechno mi jiste nestaci vim a opravdu vsechny tyto aplikace maji ovladani temer stejne.

    Ale ani zdaleka ne 'vsichni' profesionalni programatori vim pouzivaji a povazuji za nejlepsi pro svou praci. A to, ze je nekdo programator (mimochodem programatori na ruznych urovni se od sebe velmi lisi) jeste neznamena, ze potrebuje neco tak univerzalniho (a 'divne' ovladaneho) jako vim.
  • 17. 4. 2007 18:33

    mys elf (neregistrovaný)
    No jistě, prohlížeč TV má stejné ovládání jako Excel, zavírá se takovým tím křížkem vpravo nahoře. Tohle byl zatím nejlepší příspěvek z celé diskuse :-D
  • 17. 4. 2007 22:14

    anonymní
    no vystihl jste to celkem presne - ano i kdyz jsem tu aplikaci nikdy predtim nevidel, vim, ze se zavira krizkem a nemusi me upozornovat na to, ze se to dela :q nebo necim uplne jinym - efektivnejsim :)

    tv alikace ma menu a v nem nabidky, ma dialogova okna (napr. na ladeni kanalu), ma kontextove menu, pripadne kontextovou napovedu (i kdyz ta temer neni potreba) naproti tomu nema zadny prikazovy mod (pokud za nej tedy nepovazujeme dalkove ovladani)
    nepotrebuju studovat navod, abych vedel, kde a co lze nastavit a kam se dostat, probehnu menu a poznam to

    a kdyz s ni budu chtit pracovat efektivne, zjistim si, ze kanaly muzu prepinat na numericke klavesnici, jak si rychle otevrit teletext, jak jednim tlacitkem zacit nahravat... a kdyz to nahodou zapomenu, nevadi udelam to v menu

    a stejne tak maji takto koncipovane ovladani i ostatni nastroje
  • 18. 4. 2007 17:24

    Petr Mach (neregistrovaný)
    Vim ale taky zavřete křížkem :-).

    To že všechno najdete v menu je pěkný, ale problémem je to, že a) se tam toho moc nevejde b) má to velmi omezenou vyjadřovací schopnost c) je to neefektivní. Je-li vaším cílem udělat efektivní ovládání, nemůže být založeno na menu. A smiřte se s tím, že u Vimu to cílem je a jeho uživatelé ho mají za to rádi, už proto, že neexistuje žádná alternativa, Vim je jedinečný (když nepočítám další klony VI).
  • 18. 4. 2007 17:29

    anonymní
    a jini uzivatele ho zase prave pro to ovladani (a pro nic jineho) 'nenavidi' :)

    a u jinych aplikaci se takove ovladani neobjevuje
    cili maximalne efektivni ovladani neni to, co obecne uzivatele (i vyvojari) chteji

    jeste efektivnejsi by bylo optimalizovat i fyzicke rozhrani - treba specialni klavesnici nebo dokonce displejem, ale v zajmu univerzalnosti takoveho rozhrani se to nedela
  • 18. 4. 2007 19:26

    bez přezdívky
    Seznam jsem tu už psal:
    ed, sed, ex, less, man, vimdiff, vimperator a další + možnost integrace VIMu do různých vývojových prostředí jako M$ Visual Studio apod.
  • 17. 4. 2007 23:22

    Franta Kučera
    Tohle chce mít nějaký cit pro OOP a/nebo znát základní pravidla. Abych třída A byla potomkem třídy B, tak musí platit věta: každé A je zároveň B.

    Takže můžu oddědit psa od zvířete, nebo rodinný dům od budovy... Ale je nesmysl, aby kombajn byl potomkem náklaďáku. Takové úvahy chtějí trochu víc soudnosti.

    "snazší a čistší si odvodit kombajn z vozidla" nejen to, z tohoto výčtu je to jediná správná možnost, všechno ostatní by mělo být řešeno přes rozhraní (řečeno názvoslovím javy) nebo skládáním.
  • 18. 4. 2007 15:03

    Biktop (neregistrovaný)
    Myslíte, jo? :-)
    Tak schválně, kolik aplikací je takhle čistě uděláno...
    Klasický příklad - dá se ze třídy "bod" odvodit děděním "přímka"?
  • 18. 4. 2007 15:10

    anonymní
    da se ledacos, ale to rozhodne neni uplne ciste

    mnohem lepsi to je udelat skladanim - vzit dva body, zustane to univerzalni a logicky spravne (a pokud potrebuji pracovat s bodem a primkou jako s grafickymi objekty oba budou potomci spolecne graficke nadtridy)

    ale zase zalezi, co s temi body a primkami chci delat
    pokud chci pozdeji pracovat i s jendotlivymi body na primce, bude ali lepsi pouzit bod a vektor, ale ani tak bych to nededil primo z bodu
  • 18. 4. 2007 17:47

    Biktop (neregistrovaný)
    Právě... jde to, ale není to logicky nejčistší. Přímka není zvláštním případem bodu. Ale když nemám k disposici abstraktnější třídu... Tak se pak člověk uchyluje k takovýmhle improvizacím. A to bylo to, na co jsem původně narážel.
  • 18. 4. 2007 19:34

    bez přezdívky
    Jak se to vezme. Bod je 0-dimenzionální vektorový prostor, přímka 1-dimenzionální, rovina 2-dimenzionální, prostor 3-dimenzionální atd. Dál mají společné, že každý vektorový prostor zobrazený do vektorového prostoru vyšší dimenze je nadrovinou, tedy například bod, přímka i rovina jsou nadroviny v prostoru. Tedy určitý logický vztah tu je.
  • 18. 4. 2007 20:26

    anonymní
    ale dedicnost neni realizaci "urciteho logickeho vztahu", ale presne definovaneho logckeho vztahu a sice generalizace-specializace a to navic tak, ze kazdy potomek je zaroven plnohodnotnym predkem

    pokud budes mit obecnou tridu rovina, nebo vektorovyProstor, pak jejimi potomky budou bod i primka, ale odvozovat primku od bodu je koledovani si o problemy

    v tomhle dost pomahaji i prave ty vizualizacni nastroje treba pro kresleni diagramu trid :) a tu chvilku, co vam to zabere vam zase usetri to, ze pak za vas vygeneruji kostru kodu
  • 18. 4. 2007 21:28

    Franta Kučera
    Nedá, resp. není to správné.
    Přímku vytvoříme skládáním (dva body, které ji určují). Nebo složením z objektů bod a vektor. Nebo uděláme úplně nový objekt přímka.

    Vytvoření přímky jako potomka bodu je nesmyslné. Kromě toho, že je to nepraktické a k ničemu to odporuje i pravidlu: o přímce totiž nemůžeme říct, že je zároveň bodem.

    Přímka je (kromě jiného) množinou bodů -- a je nesmyslné, aby třída množiny nějakých objektů byla potomkem třídy těchto objektů.

    "Tak schválně, kolik aplikací je takhle čistě uděláno..." Těžko říct, některé aplikace jsou čisté, jiné jsou zprasené, ale to by nás přece nemělo zajímat, když píšeme svoje programy :-)
  • 19. 4. 2007 15:15

    Biktop (neregistrovaný)
    Svoje programy píšeme s pomocí tříd, které mám už k disposici. Jestliže budu potřebovat přímku a mám k disposici jen bod, klidně to naprogramuju tak, že přímka bude potomkem bodu. Fungovat to bude, i když je to dost prasečinka. Celé je to jen narážka na to, co nám někdo jiný poskytne či ne. Když mám dělat aplikaci tvrdě pod "GUI-paradigmatem", taky do toho GUI narvu ledasco - ale to provedení bude často velice kulhat.
  • 19. 4. 2007 23:20

    Franta Kučera
    Čekal jsem co z tebe (a z téhle diskuse o dědičnosti) vypadne. Ale tohle je opravdu hodně vykonstruovaná a nepovedená analogie.

    GUI není cíl, GUI je prostředek mezi člověkem a programem. Dobrý vývojář dělá aplikaci tak, aby byla užitečná svým uživatelům a aby se jim s ní dobře pracovalo. To že se použije často GUI, je důsledek, ne příčina nebo dokonce záměr. Kromě toho GUI je i velká svoboda při návrhu, stačí si uvědomit, že neexistují jen textová pole a tlačítka, ale spousty jiných ovládacích prvků, případně si můžeš navrhnout svoje.

    Už jednou jsem tu psal, že za ideál považuji kvalitní GUI + otevřené formáty. Výhodu vidím v tom, že to GUI ti dá pohodlí a v 99% i efektivitu, protože se trefí do tvých potřeb. A v tom jednom procentu, kdy máš nějaké jedinečné potřeby si díky otevřenému formátu můžeš napsat skript, který soubory poupraví přesně tak jak potřebuješ. A klidně si ho napiš ve VIMu :-) když tě to uspokojí.

    Někde výše/níže jsi tu psal tvoji vizi, která se dost rozcházela s realitou a prorokoval jsi tu úpadek GUI a všeobecný vzestup příkazové řádky.

    Já věřím spíš té druhé cestě, že budou existovat specializované nástroje a otevřené formáty, což dává dohromady pohodlí, efektivitu i svobodu. A k tomu VIMu a ruční (bez GUI) editaci souborů se můžeš vrátit kdykoli, ale bude se to využívat jen ve výjimečných případech, protože dobré GUI většinou uživatelům dobře poslouží a nemají potřebu/čas/chuť se s tím pachtit ručně nebo pomocí nějakých obecných universálních nástrojů.
  • 20. 4. 2007 18:19

    Biktop (neregistrovaný)
    GUI není cíl, GUI je prostředek mezi člověkem a programem. Dobrý vývojář dělá aplikaci tak, aby byla užitečná svým uživatelům a aby se jim s ní dobře pracovalo.
    Mně (a veliké spoustě jiných) se dobře pracuje například s vimem. Dobře se mně (nejen mně) pracuje s unixovským shellem. Dobře se mně, a spoustě jiných lidí, pracuje s něčím, nad čím lidé jako vy ohrnují nos a ohrnovali by nad tím nos i - nebojím se to říct - rozmazlení uživatelé, kteří si zvykli na to, že všechno jde "samo" a že se nemusí nic učit. Proboha žádné jiné ovládání, než na jaké si zvykli! To je pro některé přímo noční můra, jak se zdá. Potřebuji bagr - ale ať se ovládá jako můj osobák. Potřebuji letadlo - totéž. Potřebuji loď - totéž. Jsem přesvědčen, že udělat letadlo tak, aby se ovládalo takřka stejně jako auto, by nebyl až takový problém, otázkou je, jestli by to skutečně byl k řízení letadla ten rozumný přístup. Sice se nepotřebujete učit nové řízení, ale asi by se s tím zrovna dvakrát dobře létat nedalo. Máš pravdu - UI je jen prostředek! A proto by se měl vždy použít co nejvhodnější prostředek a ne bezmyšlenkovitě bazírovat na jednom konkrétním, byť ne zcela vhodném, ale za to rozšířeném a zvládnutelném i pro úplné idioty, kteří spoustu programů, kam je toto UI implementováno, sotva kdy mohou použít vzhledem ke svému omezení danému přírodou. A stále nechápu, proč by se měl vývojář omezovat jen na to GUI? Argument, že se nemusí omezovat jen na textová pole a čudlíky přece nemůže obstát. Jsou věci, které jsou dávno vymyšlené, ověřené a ideální v CLI, tak proč to šroubovat na GUI? Jen proto, že někdo není schopen/ochoten věnovat trochu času, aby se naučil něco trochu jiného, avšak pro danou věc vhodnějšího?
    Už jednou jsem tu psal, že za ideál považuji kvalitní GUI + otevřené formáty. Výhodu vidím v tom, že to GUI ti dá pohodlí a v 99% i efektivitu, protože se trefí do tvých potřeb. A v tom jednom procentu, kdy máš nějaké jedinečné potřeby si díky otevřenému formátu můžeš napsat skript, který soubory poupraví přesně tak jak potřebuješ. A klidně si ho napiš ve VIMu :-) když tě to uspokojí.
    Aneb proč dělat věci jednoduše, když to jde složitě, že... Jestli si někdo myslí, že CLI se dá nahradit otevřenými formáty + skripty, tak mám pocit, že hluboce nepochopil, oč v CLI jde. BTW by mne docela zajímalo, kolik procent vývojářů například v Microsoftu má na starosti vývoj GUI a kolik jich pracuje skutečně na něčem smysluplném. Snad to není v tom samém poměru, v jakém jsou nároky jejich OS - 80% režie spolknutá uživatelským rozhraním.
    Někde výše/níže jsi tu psal tvoji vizi, která se dost rozcházela s realitou a prorokoval jsi tu úpadek GUI a všeobecný vzestup příkazové řádky.
    Tak to jsme si nerozuměli. Neprorokoval jsem všeobecný úpadek GUI, jen tvrdím, že v rámci GUI už není co nového vymýšlet a na flexibilitu CLI zdaleka nestačí a nikdy stačit nebude. Také tvrdím, že kdo bude chtít počítač využívat skutečně efektivně, ten se bez CLI zkrátka neobejde.
  • 20. 4. 2007 20:44

    anonymní

    v rámci GUI už není co nového vymýšlet

    A muzu se zeptat, co treba povazujete za takovy vrchol GUI? Nejakou konkretni aplikaci, ktera ma GUI tak dokonale, ze jiz nelze vylepsit. Pripadne (protoze ji asi nebudu znat) cim je to GUI tak na vysi? Je to linuxova aplikace? Je treba naprosto nove GUI v MS Office 2007 krokem do prazdna a dukazem, ze uz neni co vylepsovat?

  • 20. 4. 2007 21:57

    Biktop (neregistrovaný)
    Jak už jsem napsal výše... GUI se dostalo na dohled vrcholu prakticky okamžikem, kdy spatřilo světlo světa. Dokonalost GUI je dost relativní pojem... Jak to chcete porovnávat? Za 20 let jsem poznal spoustu GUI a těžko říct... Jisté je, že posledních 10 let jsou ta vaše vylepšení jen samé drobnosti, o nic už nejde. Roletová menu, popup menu, dialogová okna, textboxy, comboboxy, tlačítka, přepínače, posuvníky, kontextová nápověda, horké klávesy... to všechno už tu bylo v 80. letech. Jediné, co se posledních 10 let neustále mění, je výtvarné pojetí. Nejdříve jednoduché hranaté čudlíky konce 70. let, pak zaoblené známé z Maců, pak zase hranaté, teď zase zaoblené, 3d vzhled, postupné rozbalování oken, tlačítko "Start" (sloužící zároveň k vypnutí počítače - vskutku velmi intuitivní řešení), různé miniaplikace do různých lišt po krajích obrazovky - a kde je něco nového? Jen samé kosmetické serepetičky, nic, co by doopravdy ulehčovalo práci. Jediné, co neustále, a neustále rychleji, se na GUI doopravdy významně rozvíjí, jsou požadavky na systémové zdroje. Fakt, že pouze k tomu, abych uspokojil nároky uživatelského rozhraní, které, jak jsme se snad shodli, je pouze prostředkem a nikoliv cílem, a které opět vůbec nic nového užitečného nepřináší, musím mít giga paměti a dvougigahertzový procesor, je alarmující.
  • 20. 4. 2007 21:00

    anonymní
    ano nebazirovat bezmyslenkovite na zadnem konkretnim ovladani (at uz je to nejaka forma GUI nebo prikazovy mod :))

    ale brat ho tak se vsemi jeho vyhodami a nevyhodami a v kontextu ovladani jinych nastroju a aplikaci, ktere dany uzivatel pouziva

    pro standardizovane GUI hovori zejmena ten kontext

    ale treba mnoho her ma v ramci efektivity ovladani zcela rozdilne a nikomu to neprijde az tak divne, pokud to ovladani dobre slouzi svemu ucelu
  • 20. 4. 2007 21:55

    anonymní

    Jsou věci, které jsou dávno vymyšlené, ověřené a ideální v CLI, tak proč to šroubovat na GUI?

    Rekl bych, ze z podobneho duvodu, proc na CD a DVD znovu vychazeji ty nahravky a filmy, ktere jiz predtim vysly na LP a VHS. (A ted mi nejde o kvalitu nahravky, ktera je mimochodem na LP vyssi nez na CD.)

  • 17. 4. 2007 15:28

    Petr Mach (neregistrovaný)
    To je jen otázkou toho, jak je ten "obecný" CAD opravdu univerzální a použitelný. Kdybys tu měl CAD, který ti umožní dobře kreslit architekturu, el. schémata, 2 a 3D strojařské výkresy, zajisté bys mu dal přednost před pořízením si a učením se čtyř speciálních CADů. V CADech asi takový univerzální program není, u editorů ale ano, jmenuje se Vim. Důkazem je jeho obliba a k čemu všemu ho lidé používají.
  • 17. 4. 2007 16:10

    anonymní
    Ale copak nekdo zvlada profesionalne navrhovat architekturu, strojarinu a elektrotechniku zaroven??

    A i kdyby, tak ty 4 CADy by se nejspise ovladaly velmi podobne (standardne - graficky, menu, kontextovym menu, mysi, tabletem) a lisily se jen v konkretnich specialitach. Pokud by se ovsem ovladaly "efektivne" jako vim, pak by se takovy novodoby da vinci skutecne musel nejspis ucit 4 ruzne lokalne efektivni sady prikazovych jazyku.
  • 17. 4. 2007 23:38

    Franta Kučera
    1) proč bych měl mít v paměti a na disku CAD, který umí ještě další 3 obory kromě toho jednoho, který potřebuji.

    2) Proč bych měl kupovat - platit vývoj - všeho, když potřebuji jen jednu třetinu (to se netýká jen komerčního SW, i když to vyvíjejí dobrovolníci, tak není důvod plýtvat zdroji).

    3) Jeden vývojář nemůže rozumět elektronice, architektuře a třeba strojařině... Totéž platí pro jednoho analytika. Takže i když seženeme x odborníků aby takový software vyvinuli, bude to nejen drahé ale i neefektivní. Ne nadarmo se říká: devět řemesel desátá bída.

    CAD je prostě jen kategorie programů, mohou být dva CADy a budou k sobě mít opravdu hodně daleko, přestože každý bude špičkou ve svém oboru. Je to jako kdybys po kancelářském programu chtěl aby uměl všechno, jako kdybys řekl, že jsi se jednou naučil ovládat Word a chceš v něm dělat prezentace, nebo tabulky. Ano svým způsobem by šlo do Wordu nacpat funkce pro dělání prezentací nebo tabulek (ty tam částečně jsou), ale bylo by to značně neefektivní. Proto máme více specializovaných aplikací.

    I kdyby se tohle všechno povedlo, tak stejně uživatel bude stát před volbou, jak si daný program přizpůsobit svému oboru (jak obecný CAD nakonfigurovat pro architekturu), což znamená spoustu zbytečné práce navíc a také to často znemožňuje normální práci (příliš mnoho možností pro příliš mnoho účelů/oborů, které uživatel vůbec nepotřebuje, ho zahlcují).
  • 18. 4. 2007 17:32

    Petr Mach (neregistrovaný)
    1) Protože vy jste řešil několik CADů a protože vy jste tvrdil, že budete radši používat několik editorů.

    2) Viz 1).

    3) Ale jeden uživatel může editovat řadu různých textů, od plain textu přes cfg. soubory, značkovací jazyky až po programovací jazyky.

    Jestliže tvrdíte, že jeden člověk nemůže zvládnout dva+ CADy, pak jste vy sám zvolil nevhodný příklad a je zbytečné ho řešit. O editorech to neplatí, sám jste tvrdil, že jich několik používáte. Já radši používám jeden nejlepší, i když jsem se ho musel naučit ovládat.

    Bohaté možnosti přizpůsobit si Vim individuálním potřebám je jedna z jeho velkých výhod. Nezahlcuje mě to, naopak mi to velmi pomáhá.
  • 18. 4. 2007 17:57

    anonymní
    1) hovorili jsme o plaintext editorech a specializovanym nadstavbam nad plaintextem pro programovani a psani formatovanych dokumentu
    tuto kombinaci jiste obsahne razantne vetsi mnozstvi lidi nez tri ruzne navrharske discipliny, nebo mi uvedte priklad, pri kterem potrebujete architekturu, strojarinu, a alektro (napada mne leda kdyz si na kolene stavite malou vodni elektrarnu :))
    priklad (la)tex+java+sql je naproti tomu celkem bezny (namatkou bakalarska prace se zamerenim na programovani, prispevek na konferenci psany programatorem, ...)

    3) jiste a pokud si pritom chce ulehcit (dusevni) praci, tak pouzije specializovane nadstavby nad plaintextem pro generovani a praci na vyssi urovni
    pokud se spokoji s plaintextem a chce si jenom urychlit datlovani a nestandardni operace, pouzije univerzalni plaintextovy editor s efektivnim ovladanim
  • 18. 4. 2007 21:52

    Franta Kučera
    Bakalářka nebo příspěvek na konferenci samozřejmě může obsahovat ukázky zdrojových kódů, ale to neznamená, že to všechno musím napsat v jednom editoru. A už vůbec to neznamená, že bych to musel napsat všechno ve stejnou dobu.

    Modelová situace: vyvinu nějaký software v IDE. Napíšu o tom bakalářku a do ní na ukázku přidám části zdrojových kódů. Ty zdrojové kódy ale vznikaly v jiné aplikaci, bylo je potřeba vyvinout, otestovat, sestavit, přeložit. A pak jsem teprve ty hotové zdrojáky vložil do bakalářky. Přece nebudu psát jen tak z hlavy zdrojáky rovnou do textu práce, snad je jasné, že si je nejdřív přeložím, vyzkouším, abych pak nebyl za blbce.* A to právě udělám v jiném programu, než ve kterém píši text práce.

    *) Totéž platí pro konference: je docela trapas, když má někdo v prezentaci zdroják, který pak nejde spustit nebo obsahuje chyby. A přitom by bylo řešení docela snadné: zdroják vyvinout a vyzkoušet ve správném editoru nebo IDE a pak teprve překopírovat do prezentace.
  • 18. 4. 2007 22:15

    bez přezdívky
    Stejně tak přece mohou vzniknout odděleně v jednom editoru. Že ve VIMu ladíte C++ program vám přece nijak nebrání psát k němu i *TeXovou dokumentaci ve VIMu.
  • 18. 4. 2007 21:43

    Franta Kučera
    1) tenhle "argument" nechápu. Pokud budu architekt, budu mít jeden specializovaný CAD, pokud budu elektrikář, budu mít jiný specializovaný CAD... Pokud budu architekt i elektrikář, budu tam mít dva CADy. Ale rozhodně tam nebudu mít jedno monstrum, které vydá za 4 programy. Nebudu používat program, ze kterého 3/4 funkcí nevyužiji... (což by byl ideální případ, kdy by universální nástroj uměl všechno, ale tak to není).

    Ten všeuměl obvykle má nejvíce funkcí, ale to proto, že fušuje do více oborů, když se omezíme na jeden obor, který nás v danou chvíli zajímá, zjistíme, že všeuměl je v tomto oboru pozadu za specialistou.

    Profesionální editor pro mne není něco, v čem pár výstředních vousatých unixářů mastí BASH skripty. Za profi nástroj pro psaní programů pokládám třeba Eclipse nebo Netbeans, to se používá ve firmách, kde se vyvíjí skutečný profesionální software (viz praxe).
  • 19. 4. 2007 15:00

    Ash (neregistrovaný)
    Váš rozhled ("viz praxe") je velmi omezený, měl byste se nad sebou zamyslet. Trochu mi teď připadáte jako ti typičtí "víš já vyvíjim software v .NET" a přitom neuměj napsat ani stavový automat. Vývojové prostředí programátora nedělá, i když se to snaží řada firem předstírat. Už jste během diskuze dost dal najevo že o UI moc znalostí nemáte (ale chcete mít což je chválihodné), tak nicméně prosím (...) ještě k tomu neprovokujte, že vim není nástroj pro psaní profesionálního software, to běžte rovnou krafat na zive.cz :D a vývojáře nechte v být.

    I když vaše pohádky o "firmě kde se profesionálně vyvíjí software s využitím nástrojů umožňující vyšší abstrakci ulehčující práci prgramátorům" jsou milé, smutné je když pak na těch zdrojákách je poznat, že se do nich ...opravdu nikdy nikdo nedíval :D a pracoval jen abstraktně, pak si to vygeneroval, udělal refaktorizaci, připsal nějakou klíčovou část a měl hotovo.

    Samozř. existují lidé, kteří v Eclipse dokáži napsat "dobrý" kód. Stejně tak exstují lidé, kteří toto dokáží ve vimu a používají nepřívětivé a "nestandardní" (:D) aplikace jako man nebo info.
  • 19. 4. 2007 16:09

    anonymní
    Zacinate zklouzavat k osobnim utokum a to tu jeste nemame ani 700 prispevku :))

    Ale stejne tak programatora v .netu nebo jinem vyssim objektovem jazyce nedela to, ze umi napsat stavovy automat, ze? :))

    To je totez jako tvrdit, ze konstrukterem nemuze byt nekdo, kdo neumi kalit ocel, architektem nekdo, kdo neumi namichat maltu, a fotografem ten, kdo si neumi vyvolat film.

    Cas proste leti a doba se meni. Lide (a jejich nastroje) se specializuji. Driv na olympiade taky vsestrani sportovci ziskavali medaile v sesti naprosto ruznych disciplinach. To je dnes nemyslitelne (rozhodne nemyslim sest plaveckych disciplin). Psat rozsahle projekty pouze v plaintextu a s mnimalni podporou je podobne blahove.

    Rozcilovat se nad vygenerovanym kodem je o uroven vys asi totez, jako nechat si prelozit kod prekladacem a pak se hrabat v jednotlivych instrkcich a nadavat, ze se na ne nikdo nikdy nepodival a ze to je neefektivni a vy byste to zvladl mnohem lepe. Ano jiste, ale rozhodne ne tak rychle a tak rozsahly system a i kdyby, pak jste jiste mnohem drazsi, nez ten, kdo to zvladne s tim smutnym nastrojem.

    Smirte se proste s tim, ze programatorem dnes neni jenom ten "poctivy oldskool koder" schopny psat v cecku na papir a zaroven ho podvedome debugovat. Programator je i ten, co sklada hotove tridy ci jeste komplexnejsi moduly aby sestavil informatickou podporu pro nejaky proces. Stejne tak je programator i ten, kdo ve visual basicu pise makra do wordu a excelu, protoze zrovna ty jsou krome webu velmi oblibene jako interface pro ruzne obchodni systemy (ani i proto, ze s nimi 'sekretarky' umi alespon trochu zachazet). Programator je i ten, kdo bastli objekty v PHPku (ackoliv to objektivne ani moc nejde). Muzete si rikat, ze to je proti vam povl a zduvodnovat si to treba tim, ze neumi ani napsat stavovy automat nebo psat ve vim, muzete o tom napsat clanek, ale to je asi tak vsechno co s tim muzete delat.
  • 20. 4. 2007 0:08

    Ash (neregistrovaný)
    No, tak já právě člověka co zvládne alespoň dát dohromady primitivní algoritmus (třeba namalovat do písku) už za malého programátora považuji a tedy tato schopnost z něj z mého pohledu programátora dělá, přestože by nezvládl ani trochu rozsáhlejší projekt v nějakém nástroji, protože se zatím jaksi nenaučil syntaxi či ovládat ten klikací nástroj :D

    Jinak ale chápu :) Pokud považujete za programátora člověka, který nedokáže dát dohromady primitivní algoritmus a několika stavech tak, aby mu program dělal to, co má, a nikoliv to, co program zrovna napadne (když se dostane do stavu, který "programátor" jaksi "nevzal v úvahu" a jeho existenci a dosažitelnost ignoroval) tak pak se rozcházíme v základní terminologii.

    Pokud naopak člověka, který dělá něco, co vypadá jako programování a jehož výsledkem jsou programy ale které dělají něco jiného, než bylo v plánu za p. považujete, pak se zase rozcházíme.

    Zdá se, že vám to nepřipadá "zvláštní", tak pak je jasné, že jste mi takového člověka začal připomínat, ale to neberte prosím jako útok. Vaše progr. schopnosti neznám a je mi to jedno :) jen váš pohled na diskutovaný obor je velmi ve stylu jako že "rychlokvašky jsou zpěváci, vždyť přece zpívají na nejsledovanější TV, kdyby nebyli zpěváci tak by tam být nemohli a lidé by je neposlouchali" a nebo "člověk který napsal alespoň jednu knihu či povídku je tím pádem automaticky spisovatel". Pokud by to tak bylo, mohu z gruntu zítra udělat 20 věcí, které ze mne udělají člověka 20ti povolání, ale ...většina ostatních lidí správně pochopí, že to neznamená že já jsem v tom i ten povolaný a bude to samozř. ve stylu 9ero řemesel, 10. bída.

    Ano, doba taková je, lidé kteří neumí zpívat zpívají, kdo neumí vařit dělá kuchaře a kdo se nikdy nic neučil v oboru dělá programátora v mylném domnění, že to "jde". Nástroje ale člověka nedělají, vařečka s čepicí nedělá kuchaře, to jenom vypadá jako kuchař.

    ***
    Bohužel ale takového člověka nelze respektovat jako autoritu a pokud něco komentuje v daném oboru, jedná se o frašku. Právě a jen proto navrhuji lidi dělit na povolané a nepovolané, řekněme zpěváky a lidi, kteří zpívají. Je krásné si zpívat, ale není nutné o sobě tvrdit, že jsem zpěvák, dokud jím ještě nejsem. (To lidé dělají v dětství, že si hrají na něco co nejsou.) Mohu programovat v .NET, ale myslet si, že vizuální nástroje a intellisense doplní mezery ve vzdělání a dělají ze mne tím pádem programátora - jen proto že ty nástroje (chybně) používám je úvaha mylná.
    ***

    Samozř. se nabízí otázka, kde stanovit hranici. Ale já jen navrhuji, aby ta hranice byla stanovena - tedy na hladině > 0. Podle toho co jsem zatím četl vy jste ochoten ji nestanovovat vůbec, což se mi zdá kontraproduktivní - dochází pak ke zmatení jazyků a devalvaci všeho, na co takový přístup aplikujeme.

    K těm VB a PHPkům vs. C a dbg - programátora zcela určitě nedělá jazyk, ve kterém zrovna píše. Může psát makra ve Wordu, psát nádherné třídy v PHPku, nebo si jen malovat na papír ten stavový automat (bez toho to vážně nejde, to je nejzákladnější věc, není to nic těžkého alespoň z toho hlediska, z jakého jsem to myslel). Ale hodně záleží na tom, jak to dělá. A pokud postrádá základní schopnosti, vizuální nástroje mu v tom vůbec nepomohou. Pouze mu pomohou "něco" napsat, ale to "něco" nebude dělat to, co to dělat mělo.

    Jako lze tvrdit i o každém, kdo v něčem vyprodukoval stránku dostupnou protokolem HTTP na nějakém webserveru za webmastera, ale snad víte co myslím. Když to tak uděláme tak budou webmastři všichni a devalvujem hodnoty a snad i jazyk...
  • 20. 4. 2007 9:13

    anonymní
    A zase: Kdo bude rozhodovat o tom vasem 'deleni' lidi? :) Na zaklade ceho? Jestli umi napsat stavovy automat?? Budou komise?

    Jak pracovat se stavy, to uz je vec konkretni metodiky vyvoje, ktera se odviji od spousty veci (mj. zkusenost vyvojaru, rozsahlost projektu, ...). Rozhodne ale ne kazdy program potrebuje predem definovat a osetrovat veskere stavy (kdyz uz tak spis ohlidat vstupy). Ten v cecku ale pravdepodobneji ano. A pokud se nekdo rozhodne stavy resit, existuji na to vcelku moderni metody jako treba STD v UML a jeho alternativy.

    S neznalosti syntaxe to uz trochu prehanite.

    Pokud jsou jini lide ochotni poslouchat ty co neumi zpivat, pak proc ne. Je to jejich svoboda.

    pokud tim clovekem komentujicim cosi v oboru myslite mne, tak mne nerespektujte :) nebude mi to vubec vadit (pisu sem sve nazory a konfrontuji je s nazory tech ostatnich, neni mym cilem primarne tu ziskavat respekt), pokud ne, tak jsem tu poznamku jenom spatne pochopil :)


    ano opravdu si nemyslim, ze by se mela stanovovat nejaka hranice. kdo by ji mel stanovovat? statni zkouska z programovani? nejaky glejt ze skoleni? zalozime cech programatoru? budou ti pravi programatori ziskavat zvlastni titul?
    pomerne kvalitni (rozumej kvality dostacujici pro brzne potreby, nikoliv spickovy nebo genialni) programator se da z toho, kdo ma to spravne mysleni (ano i s pomoci pokrocilych nastroju) relativne dobre vychovat i v praxi, a ten, kdo ho nema vetsinou nema takove ambice se programatorem stat.

    proste jako v kazdem oboru, spickovych a kvalitnich lidi je malo a jsou drazi, pokud jich je potreba hodne, pak se musi nutne sahnout i k tem mene kvalitnim
    jestlize se povazujete za jednoho z te lepsi skupiny, tim lepe pro vas (zejmena pokud vas za nej povazuji i ostatni)


    praxe neni jenom to, jestli nekdo konkretni pise lepsi kod nez druhy a v cem ho pise rychleji. roli hraje spousta dalsich veci - kapacity, schopnosti, lidi, spoluprace, metodky, penize, cas, ...
  • 20. 4. 2007 11:25

    Biktop (neregistrovaný)
    Co je podle vás "poměrně kvalitní"? Že to "něco" dělá? Je novinář, který neumí napsat článek stylisticky dobře a bez pravopisných chyb, ale pochopíme z něho, co chtěl říct, "poměrně kvalitní"?
    Jakou máte záruku, že ten váš "poměrně kvalitní" programátor někde nespáchal podstatnou chybu?
    V praxi se dá naučit řemeslo, takže pokud chápete programování jako řemeslo, tj. spíše manuální práci, která nevyžaduje inovativní myšlení, pak ano.

    BTW: cechy byly mimo jiné kvůli tomu, aby se fachmani distancovali od "takyřemeslníků". Možná by to nebylo od věci - pokud programování je řemeslo. Pokud není, tak na to glejty ze škol už jsou, to nemusíte zavádět nic nového.
  • 20. 4. 2007 12:08

    anonymní
    pomerne kvalitni znamena, ze za ty penize co bere podava vyhovujici vykony
    dela to, co se po nem chce a nedela to az tak spatne

    u novinaru (alespon odborne nespecializovanych) si dovolim tvrdit, ze u nas temer zadne kvalitni nemame, presto vychazeji noviny...

    zadna zaruka neni 100%, ale pravdepodobnost chyby snizuje vhodna metodika a organizace prace
    0) pomahaji ty ruzne nadstavby
    1) to rozhodne nepise sam natoz aby delal sam navrh
    2) se vysledek testuje na ruznych urovnich

    samotne 'bezne' programovani opravdu nepovazuji za neco, co vyzaduje pronikave inovativni mysleni - znacny pocet algoritmu je standardizovan, optimalizovan, popsan, existuji best practices, jak to spravne udelat (mj. jak dedit :), jak resit standardni problemy - treba design patterns, jak delat komentare a pojmenovavat promenne, jak sdilet kod, ...)

    neco jineho je analyza a navrh
    u nekterych (hlavne mensich nebo individualnejsich s malym tymem) projektu to splyva, jinde je to docela oddelene...
  • 20. 4. 2007 23:12

    Biktop (neregistrovaný)
    Snad nikdy jsem neslyšel, že by se neustále někdo tak rozčiloval nad všemi možnými programy, jako v poslední době. Zrovna tenhle týden jsem měl tu čest pracovat s "profesionálním" výtvorem. Něco hrozného! Ale, pravda, vymalováno to bylo pěkně. Jen to bylo celé velmi nešikovně navrženo. Jeden můj známý, majitel restaurace, mi ukazoval, jakou zhůvěřilost používají na vedení účtů hostů. Ani zápočet bych za něco takového neudělil! Ale toto stálo 50 tisíc a prodává se to (on ten podnik koupil už s tímhle výtvorem).
    Ano, vzniká toho hodně, a obecně se dá říct, že je to bída. Domnívám se, že aby "to dělalo co se po tom chce a nedělalo to zase tak špatně" jsou velmi minimalistické nároky. To je jako chtít po někom dům, který vypadá zhruba tak, jak jsem si představoval, a nebyl úplně na spadnutí. Nebo doktor, který zhruba nějak léčí angínu a přitom to nedělá až tak špatně.

    Máte pravdu, noviny vycházejí, ale ta úroveň! Cokoli je z mého oboru, dá se o tom říct, že 80% informací o tom je nesmyslných. Totéž mi potvrzují i kamarádi z jiných oborů. Takže se dá vyvodit, že 80% informací jsou nesmysly. Jestli vás toto zjištění uspokojuje, tak máte velmi skromné požadavky.

    Netrvdím, že existuje 100% záruka. Ale když mi dům staví fachmani, nemusím po nich kontrolovat každý úhel a každou svislost a vodorovnost. Když to budou dělat samí žabaři, tak už není v mých silách vše kontrolovat. Totéž u vývoje SW - do testování jde produkt, který obsahuje mnoho chyb a vždy se nějaké procento neobjeví. Čím více chyb, tím víc se jich pochopitelně neobjeví. Navíc spousta produktů je vyloženě šita horkou jehlou, jsou použity nevhodné koncepty, neumožňující rozumnou údržbu. Dá se říct, že už dlouho jsem neviděl novou aplikaci, která by svou neohrabaností nepůsobila dojmem beta verze.

    "existuji best practices, jak to spravne udelat (mj. jak dedit :), jak resit standardni problemy - treba design patterns, jak delat komentare a pojmenovavat promenne, jak sdilet kod, ...)" --- to snad nemůžete ani myslet vážně! Resp. - domníváte se, že takové znalosti jsou dostačující? Ani zdaleka ne! Ale uznávám, že stav současného SW naznačuje, že současný trend je, že to stačí. Každý problém je svým způsobem unikátní a považuji za úpadek SW inženýrství k tomu přistupovat jako při stavbě panelového sídliště. Nad každým problémem se přeci musím zamyslet, než začnu bezmyšlenkovitě chrlit nějaké standardní optimalizované algoritmy a plodit názvy proměnných a metod. I na toto zamyšlení existuje spousta "best practices", ale ne žádná universální a ne tak, že si to někde letmo přečtu a umím programovat. Tohle je třeba tvrdě nadrilovat, mít proti sobě odborníka, který upozorní na každou drobnost, která není špatně, ale za určitých okolností by mohla být, nebo je prostě nešikovná a proč. Programování je tvůrčí intelektuální činnost! Jakmile někdo propadne iluzi, že stačí znát "best practices" a mít dobrý vývojový nástroj, je ztracen. Největší boty vznikají právě tím, že si někdo řekne "to je jasné, použiju tohle, udělám to tak - no, jako obvykle".
  • 20. 4. 2007 23:46

    anonymní
    Tam nebylo aby to (software) delalo... ale aby ten (programator) delal.

    Nejde o to co mne uspokojuje. Osobne noviny uz nekupuji a nectu, maximalne proletim headlines z ruznych zdroju.

    Proste je nedostatek fachmanu ale velka poptavka po domech. Ja tu situaci neobhajuji, ale snazim se pochopit a vysvetlit jeji priciny.
    Vsak se take uz (alespon ti velci) zakaznici odvraci od trendu 90. a 100. :) let - uz nechteji technologie za jakoukoliv cenu, ale uz chteji reseni svych problemu za cenu ktera jim umozni zvysit konkurenceschopnost. Ti, kteri jim to nedokazou nabidnout se presunuji do segmentu tech malych zakazniku, kteri si na to jeste nevykli. A protoze malych zakazniku je hodne a nejaky ten levnejsi sw uz si muzou dovolit a osvedcenych typovych reseni tolik neni (nebo je neznaji), nechavaji si vyvijet na miru. A casto za nejnizsi cenu aniz by meli zkusenosti a vedeli, co vlastne chteji (oni nechteji udrzbu, neuvazuji o ni, nenapadne je).

    Opet musime rozlisovat (obecny konceptualni) navrh a jeho implementaci. Ve strednich a vetsich projektech je to casto oddeleno i personalne.
    Premyslet o konceptech a vymyslet nova reseni (ovsem pokud ta stara a osvedcena a hlavne otestovana a proverena nejsou vyhovujici) je potreba hlavne pri navrhu. Implementace je jiz potom rutina za pouziti tech (implementacnich a navrhovych ale jiz na nizsi urovni) best-practices.

    Pripadne vecne chyby odhali dukladne testovani a predchazi jim navrh na zaklade dobre analyzy.


    Za chybu bych ale nepovazoval to, ze se pri navrhu nepouziji ty nejobecnejsi principy, pokud primo neni vyzadovano nebo ocekavano rozsirovani funkcnosti za puvodni pozadavky. Takove vlastni navrhovani obecnych frameworku pro male a stredni projekty je casto ztratou casu, kterou zakaznik neoceni. (a tim nerikam, ze se to ma nejak priserne bastit - proste najit tu rozumnou miru)
  • 21. 4. 2007 0:26

    bez přezdívky
    Jedna taková příhoda z praxe: Příbližně před rokem jsem si začal dělat takový jednoduchý interpret assembleru pro Intel 8051. Lexikální analyzátor vygenerovaný pomocí flexu, parser pomocí bisonu, zbytek v C99 a jednotlivé interpretační funkce byly přímo volány z parseru. Zhruba za 3 měsíce bylo hotovo.

    Před půl rokem jsem k tomu začal dělat rozšíření - kompilátor. Lexikální analyzátor, parser a pomocné funkce zůstaly skoro beze změn. Zato systém volání interpretačních/kompilačních funkcí se výrazně změnil. Místo přímého volání parser dostal strukturu, ve které je seznam funkcí interpretu/kompilátoru. Tedy v podstatě rozhraní "třídy" (stále v C99), hlavním důvodem byla možnost mít kompilátor i interpret v jednom programu a výběr se provede podle parametrů z příkazové řádky. Dál jsem udělal úklid kódu sdíleného mezi interpretem i kompilátorem, takže všechno, co kompilátor nepotřeboval, jsem přesunul mezi zdrojáky interpretu, kam to skutečně patří. Opět za nějaké 2 měsíce hotovo.

    A teď dělám další rozšíření - emulátor. Z původního kódu toho příliš nezbyde, protože všechno postupně přepíšu do C++. Paměťový systém už je hotový a oproti předchozím dvěma verzím očesaný na nutné minimum (přímý a nepřímý bytový zápis a čtení a bitový zápis a čtení). Práci se zásobníkem a překlady bitových adres mezi vnitřní reprezentací Intel 8051 a dvojicí indexů byte-bit budou provádět statické metody abstraktního rodiče interpretu a kompilátoru. Samotný emulátor pak bude jen disassembler propojený s původním interpretem.

    Řeším sice tři skoro stejné úlohy, ale navzájem se liší strukturou řešení. Teprve potřeba stávající program rozšířit o nové funkce člověka donutí uklidit starý kód, aby vůbec bylo možné ten nový svinčík přidat. Co bych ale opravdu nikdy nechtěl dělat, je měnit strukturu programu, který byl z větší části vygenerován podle nějaké grafické reprezentace tříd.
  • 21. 4. 2007 0:47

    anonymní
    Ale proboha tohle je ale naprosto a uplne jiny problem, nez ten, o kterem tu alespon ja celou dobu hovorim! Je to zcela totalne jina uroven abstrakce nez interpret assembleru pro procesor z osmdesatych let. Navic programovany zrejme jednim clovekem ze zaliby, nikoliv v tymu a pro zakaznika.

    Ano pro interpret assembleru opravdu asi zadne IDE a modely trid neexistuji. A pro takovou praci je asi skutecne idealni vim, ale toto dnes opravdu neni trend, rozhodne ne trend PC a serverovych aplikaci. Pokud si za soucasnym vyvojem predstavujete toto, pak uz mi trochu zapadla do souvislosti ta vase poznamka o GameMakeru jako prikladu RAD.

    Tridy jsou modelovany naprosto standardne samozrejme podle UML a jejich (prazdne) kostry nasledne vygenerovany do ciloveho jazyka naprosto dle jeho specifikace. Cili pokud pohrdate takovymito vygenerovanymi tridami, pak asi pohrdate i objektovym programovanim jako takovym, coz ale na druhou stranu celkem chapu, pokud je vase zamereni takto low-level.
  • 21. 4. 2007 10:26

    bez přezdívky
    Tak to zase prr, v prvních dvou verzích programu se jednotlivé logické celky (blok simulované RAM, buffer zdrojového kódu, seznam známých návěstí, interpret, kompilátor...) chovají jako objekty typu singleton. Pro původní úlohu postačující, pro emulátor už ne. Proto musím celý kód převést do C++, zavést dědičnost a vytvořit skutečný objektový model. Sice teď veškerá interakce s programem probíhá na příkazové řádce, ale celkově je program navržený tak, že nebude problém napsat pro interpret a emulátor GUI v ncurses, QT, wxWidgets, GTK a pokud mě k tomu někdo opravdu donutí, tak i ve W32API.

    Moje otázka zní: jak se generátor koster tříd vypořádá s již napsaným kódem, když je třeba jen mírně upravit několik vztahů mezi třídami? Všechno zahodí, nebo se pokusí stávající kód nějakou heuristikou nacpat do nových koster?
  • 21. 4. 2007 16:02

    Franta Kučera
    "Moje otázka zní: jak se generátor koster tříd vypořádá s již napsaným kódem"

    Mohu napsat jen svoji docela omezenou zkušenost (je celkem pravděpodobné, že to jde i lépe):
    V Netbeans jsem použil UML Modeláře, který mi z existujících zdrojáků udělal UML diagram tříd (včetně jejich vztahů). V tom UML diagramu můžu naklikat nějaké úpravy třeba přidat třídě atribut. A potom si nechat vygenerovat zdrojáky. Pak můžu udělat diff mezi vygenerovanými zdrojáky a těmi původními a žádoucí změny promítnout do těch původních.

    Druhá možnost je tato:
    1) Prvotní návrh tříd udělat v UML modeláři a vygenerovat si zdrojáky
    2) Další úpravy provádět přímo ve zdrojácích
    3) Reverzním inženýrstvím* vygenerovat UML model tříd, abychom stále měli vizuální představu o našich třídách.


    *) ačkoli tento pojem může znít složitě, je to záležitost na jedno kliknutí.
  • 21. 4. 2007 19:08

    bez přezdívky
    Přidat třídě atribut je celkem triviální záležitost. Připsat ho ručně do zdrojového kódu a nechat si zpětně vygenerovat diagramy je nejrychlější možnost. Mě spíše zajímá změna agregace na běžnou asociaci nebo dokonce dědičnost a naopak, změna návrhového vzoru, začlenění nové třídy nebo její odstranění. Při ručním psaní tříd se na podobnou věc můžete snadno připravit, ale těžko vysvětlíte generátoru kódu, že byste podobnou věc někdy mohl potřebovat udělat a že by tomu měl přizpůsobit vygenerovaný kód. Navíc při zpětném generování diagramů nemusí parser správně pochopit ruční změny vztahů. Přece jen na přidání atributu se toho tolik "zkazit" (z pohledu parseru) nedá.
  • 21. 4. 2007 19:21

    anonymní
    Ale copak generatory kodu jsou od toho, aby menily jednou dany navrh? Nejsou. Jsou od toho, aby dle logickeho navrhu (ktery stejne musite udelat a jestli si to namalujete na papir nebo rovnou do pocitace uz snad vyjde nastejno, ne?) vytvorily zaklad fyzicke implementace.

    Pokud vim, co se od programu chce (pripadne i v dalsich inkrementech), tak tomu uzpusobim uz prvotni navrh a ten si necham vygenerovat.

    Pripadne rozsahlejsi zmeny v konkretnim kodu pak resi refaktorizace (at uz rucni nebo automatizovana).

    Proto ten navrh delam nejdriv, abych si predem rozmyslel co od toho chci pripadne nekdy mozna muzu chtit.
    Snad nikdo, kdo nekdy vyzkousel vizualni navrh databaze s naslednym vygenerovanim DDL pro konkretni DBMS, ho asi nebude zpochybnovat. Ale vetsinou si taky neporadi s upravami struktury. To neznamena, ze je na nic. Proste pri standardnim pouziti usnadnuje praci. Pokud chcete delat nejake nestandardni 'silenosti', pak vas omezuje.

    To je totez jako s tim vimem (at se zase trochu vratime :)) - je univerzalni a pro beznou praci toho nabizi az zbytecne moc.
  • 22. 4. 2007 1:09

    Biktop (neregistrovaný)
    "To je totez jako s tim vimem (at se zase trochu vratime :)) - je univerzalni a pro beznou praci toho nabizi az zbytecne moc."

    Ale to je jen vaše iluze. Vim je strašně jednoduchý a nenabízí toho zas tak moc. Je jen velmi flexibilní a v ničem vás neomezuje, takže člověku, jenž je zvyklý býti omezován, se může zdát, že toho nabízí nechutně mnoho.
  • 20. 4. 2007 11:47

    bez přezdívky
    Jeden jednoduchý test pro odlišení programátorů od neprogramátorů se nabízí: Vyberte si libovolného člověka a zadejte mu úlohu, kterou bude umět fyzicky vyřešit podle nějakého algoritmu. Dále mu dejte srozumitelnou učebnici libovolného programovacího jazyka, který nikdy předtím neviděl (snad s výjimkou Intercallu, Erlangu a COBOLu). Pokud v konečném čase dokáže zapsat algoritmus pro řešení dané úlohy v daném jazyce, pak je to programátor. Pokud to v konečném čase nedokáže, programátor to není.
  • 20. 4. 2007 11:59

    anonymní
    :)) to je ale trochu programatorsky zpusob uvazovani nad urcovanim programatoru, ze? :))

    cekat, jestli to zvladne v konecnem case ... nechat ho ucit se nejaky (zrejme dost obskurni a nepouzivany pokud tak chcete zkouset programatory-uchazece, jiste predpokladate, ze nejaky pouzivany jazyk znaji a pouzivane jazyky jsou si velmi podobne)

    mozna by stacilo rict, jestli ma algoritmicke mysleni a testovat to nejakym obecnym pseudojazykem :) (vcetne grafickeho napr. UML)

    predpokladal bch, ze zalezi taky dost na uloze, ale pokud je to, ze je ji schopen vyresit, jiz soucasti zadani, nebude to test schopnosti programatora-analytika ale kodera-zapisovace
    v takovem pripade si ale dovedu predstavit, ze efektivni editace textu ve vimu mu bude v jeho praci napomocna :)
    a po tom, co se z ucebnice ucil od piky nejaky specialni jazyk, mu nebude vadit ani to, ze se musi ucit ty prikazy :))

    ano takto definovany programator bude zrejme podstatne vykonnejsi s vim :)))
    pak byl skutecne problem ve sdilene definici programatora :)
  • 20. 4. 2007 12:40

    bez přezdívky
    Pokud si pozorně přečtete můj předchozí příspěvek, zjistíte, že obskurní jazyky typu COBOL, Erlang a Intercall jsou předem zakázány. Předpoklad, že testovaný člověk umí řešit zadanou úlohu nějakým algoritmem ještě neznamená, že si jen přečte knihu a nabuší hotový program během 20 minut. V první řadě je nesmysl čekat, že by průměrná sekretářka uměla v konečném čase napsat program řešící diferenciální rovnice. Zato nechat kuchaře naprogramovat výrobní linku pekárny (s rozumnou mírou abstrakce řízení jednotlivých strojů) již není tak nereálná úloha. Tomu kuchaři například budete moct dát učebnici Pascalu, protože je pravděpodobné, že se ještě nesetkal s žádným programovacím jazykem.

    Klíčový rys programátorů je, že si libovolný známý postup fyzického řešení problému pomocí nějakého algoritmu umí převést do libovolného jazyka, který znají a který se napsání toho algoritmu aktivně nebrání. Pokud to umí pouze v jednom jazyce a ještě s pomocí všelijakých berliček, které za ně řeší veškerou netriviální práci, tak to na označení za programátory opravdu nestačí.
  • 20. 4. 2007 13:02

    anonymní
    No nevim, jstli by s takovou definici programatora souhlasil i Biktop, ktery, jak jsem pochopil, od takoveho 'velkeho' programatora vyzaduje hlavne schopnost do dusledku analyzovat danou problematiku (napsat prislusny stavovy automat) a inovativni mysleni pro hledani novych cest.

    Tim obskurni jazyk myslim nejaky, ktery se bezne nepouziva tj. ktery ten tstovany dosud nezna (pripadne neni nicemu takovemu blizce podobny). Protoze pri vsi ucte k tomu, ze to je hypoteticky priklad, asi nebudeme hledat programatory mezi kuchari, kteri v zivote zadny programovaci jazyk nevideli...

    Ten vas test totiz netestuje to, co bych od (kvalitniho) programatora-analytika ocekaval - analyticke mysleni, dekompozice problemu, schopnost abstrakce, symbolicke vyjadrovani, schopnost algoritmizace, pripadne snahu o optimalizaci (to v pripade spis low-level urovne). Ale samozrjme treba i alespon intuitivni chapani objektoveho navrhu (coz vetsinou neni samozrejmost a chce to trochu vhled a osahat si to).

    Tak jak jste ho popsal, testuje prakticky pouze schopnost naucit se nejaky (programovaci i kdyz to muzete klidne vynechat a vyjde to na stejno) jazyk a cosi v nem 'nejak' napsat (tj. zrejme i pochopeni uplne zakladniho principu programovani, jako je posloupnost prikazu, ale to se mi zda malo).


    U pekarny a diferencialnich rovnic jde spise o predpoklad vecne znalosti problematiky, nez schopnost ji analyzovat, abstrahovat, navrhnout system a v konecnem dusledku ho implementovat jeho algoritmickym vyjadrenim v konkretnim jazyce.



    BTW to jsme se ale dostali daleko od UI, ze? :))
  • 21. 4. 2007 2:41

    Ash (neregistrovaný)
    No, v zásadě souhlasím, resp. myslím že je důležité umět převést problémy a potřeby reálného světa (což můžou být lidé nebo třeba i počítačové programy) do podoby kódu, který je bude popisovat a správně řešit.

    Nemyslím že by to musel umět laik kterému dám učebnici pascalu, ale měl by to umět člověk, kterého naučili nějaký ten jazyk dostatečně obecně, aby s ním byl schopen popisovat zadané problémy.

    Jestli je klíčová schopnost napsat to v libovolném jazyce nevím, mně programování baví a je mi celkem jedno jestli píši v asm nebo 4GL, procedurálně nebo v oop, s eventy či bez, ale pokud někdo touží psát jen v jednom jazyce a tečka, tak jak říkám, pro mne je programátor i člověk co by to uměl pouze jen namalovat do písku.

    Podstatné pro mne je, jestli to bude schopen vymyslet (abstrahovat, popisovat vztahy, popisovat procesy algoritmicky atd.)

    Nemám nic proti tomu nechat si vygenerovat kód pro GUI (kdo se s tím má psát..), nebo sadu objektů na základě návrhu (proč zbytečně přepisovat v zásadě mechanické věci, když už je to jednou na papíře, resp nějak namodelované), ale nakonec těm objektům a grafickým nadstavbám je potřeba vdechnout život, což je ta aplikační logika, na kterou zatím generátory nejsou (tedy jsou, jsou to ti lidé v potemnělých místnostech :D). Což už tu někdo správně poznamenal, a někdo naopak nechápal, že to vygenerovat (na rozdíl od GUI a tříd) nejde.

    Nedávný zážitek pro pobavení: objednal jsem si v nejmenovaném cocky-shopu nejmenovaný výrobek. Inu zaregistroval jsem se jako nový zákazník, přišlo mi potvrzení registrace, objednal si a čekám. Druhý den mi píše email nejmenovaná osoba, že na její adresu přišla informace z eshopu o mé objednávce. Nu, ukázalo se, že autor eshopu použil jako jednoznačný identifikátor osoby místo loginu či emailu prostě fyzickou adresu (na kterou ovšem žádné info o registraci neposlal:). Inu přenesl jsem se přes spamování cizích lidí, neboť jsem s nimi byl příbuzensky spřízněn, a přečetl si přeposlaný objednávkový mail od té osoby. Hlavička byla, ale chyběl v něm text (zpětně bylo zjištěno že MSHTML6 forma mailu neměla textovou alternativu a přeposláním se stala nezobrazenou). Tak jsem se alespoň podíval do "zákaznická sekce - sledování objednávek" a vidím - zboží je "objednáno". Tak prima. Po 14 dnech občasného kontrolování stavu přišel mail, že jestli už nemám zájem, ať dám vědět, že už jim to tam 14 dní leží. Sledování stavu objednávek tedy disponovalo pouze stavem "nic" a "objednáno". Bláhové čekat třeba "připraveno k odběru na prodejně" nebo tak. Asi na prodejně nemají chudáci internet. V tom prvním emailu poslaném před 14 dny cizí osobě v nečitelném formátu bylo samozř. uvedeno - zboží je na prodejně skladem přijeďte si kdykoliv... :D

    Když pominu možnost určitých finančních škod, které by se s takovýmto rozháraným systémem daly za hranicí zákona napáchat, zbývá už jen konstatovat, že holt "za málo peněz málo muziky" a přemýšlet o tom, co asi v reálném životě dělají ti lidé, kteří takovýto IS ve volném čase navrhli a stvořili.
  • 21. 4. 2007 15:08

    Franta Kučera
    Tak idioti a lemplové se najdou všude (jistě i mezi VIMaři :-), takže tahle historka není k ničemu jinému než k pobavení.

    BTW: v čem bys napsat elektronický obchod? V C nebo assembleru pomocí VIMu? Já bych ho psal v Javě. Pokud bych musel, tak v PHP, ale nebylo by to ono. Ale fungující elektronický obchod se dá napsat i v ASP (což bych si sice asi nevybral, ale funguje to) viz Alza.cz
  • 21. 4. 2007 19:32

    anonymní
    No hlavne dnes uz elektronicky obchod si psat sam od zakladu (pokud se tim ale nechcete i zabavit pripadne neco prinaucit, nebo to je fakt jedinecny business a nebo chcete nabidnout neco specialniho) je mozna trochu luxus.

    Taky hoodne zalezi, co to ma byt a jaky to ma byt rozsah. Web interface k jednomu zasilatelstvi maleho obchudku je neco jineho nez treba alza. Je to jenom jeden z kanalu prodeje, nebo i hlavni informacni system? Kde (a za kolik) to budete hostovat? atd. atd.

    ale jiste, ten okruh prostredi je v podstate jasny: java(JSP), PHP, ASP, .NET(aspx), mozna python pripadne snad i perl

    a jaky vyvojovy nastroj? zrejme ten nejlepe podporujici zvolene prostredi i kdyz pravda je, ze napsat se to da v cemkoliv...
  • 21. 4. 2007 20:42

    Ash (neregistrovaný)
    Jo byla pro pobavení..

    Java nebo PHP, ASP by se mi nechtělo, smrdí mi to od hlavy :D :D
    ..co jiného.

    Sämozř. s použítím Vimu.

    Ba ne, priznávám, že kdybych měl psát jako z gruntu novou aplikaci a třeba sám nebo jen v malém týmu, klidně bych to v nějakém IDE aspoň ...načal :) Jenže píšu primárně do větších rozjetých věcí, kde je mezi hlavními prostředky komunikace a směrování vývoje zdrojový kód a změny v něm, dokumentace, konfery, bugzilly a email, takže nejsem ten případ co si udělá či dostane návrh v UML a pár počmáraných papírů "a naimplementuj to". Jde spíš o přidávání nových dříve netušených fcí či fičur nejlépe do nepřehledných věcí, jejichž autoři měli tragickou nehodu při rybolovu na Aljašce :D
  • 21. 4. 2007 3:11

    Ash (neregistrovaný)
    K těm mnoha otázkám: nejsem totalitní zřízení. Stanovením hranic a terminologie jsem myslel stanovit je alespoň v rámci diskuze, abychom nemluvili jeden o voze a jeden o koze. Třeba když mi řeknete že programátor *musí* mít možnost si vygenerovat vztahy mezi objekty ve třech různých obrázkových formách a nástroj který mu umožní se v tom pohybovat, aby se v tom vůbec vyznal, a já řeknu že stačí referenční příručka, kde je "co by to mělo dělat" a hlavně zdroják, protože tam je mapsané "co to doopravdy dělá". (No znalosti překladače a možných rizik hw architektury se také hodí :D). Tak abychom se v tom případě navzájem nevylučovali, protože v tomto případě je to prostě "jak kdo a podle toho co".

    Nekompetentní osobou jsem myslel prostě člověka, který vás pouze uvede ve zmatek tím, že vypadá jako kompetentní osoba která se vytasí s pokročilým IDE a schopností se v něm výborně orientovat v menu, ale až poté co napáchá jistou škodu zjisíte, že kdybyste s ním raději jen kecali o fotbale, mohli jste teď jít místo přeprogramovávání plavat. V obecném smyslu pak když třeba někdo mluví do rádia či píše do novin o něčem, čemu nerozumí jen proto, že oni potřebují nějak zaplácnout vysílací čas a on potřebuje peníze, a je tedy i navanek prezentován jako kompetentní osoba, ...která ovšem postrádá vzdělání, zkušenosti a vlohy... což si ovšem musíte zjistit sami ...místo abyste ho mohli prostě bezezmatků v hlavě jen letmo poslouchat a dozvědět se něco pro vás nového, co je zároveň pravdivé.

    Jako ale dobrý diskuzní thread tady pod vimem :)

    $ svn ci
    $ svn update
    mmm...
    vim

    wtf

    OMG =:-D
  • 20. 4. 2007 18:56

    Franta Kučera
    Pokud program projde akceptačním testováním, tak je snad jedno, že k jeho tvorbě programátor použil vyspělejší nástroje, které za něj udělaly spoustu práce. Jestli se s tím někdo pachtil ručně a strávil nad tím několikrát více času, tak to nikoho nezajímá, takovou práci nikdo nezaplatí ;-)

    A pokud program testy neprojde (nedělá to, co má), tak se prostě vrátí k programátorovi a ten bude opravovat, případně se doučí něco ("základní schopnosti"), co dosud neumí.


    "Pouze mu pomohou 'něco' napsat, ale to 'něco' nebude dělat to, co to dělat mělo."
    S tímhle tvrzením nelze souhlasit, alespoň ne obecně. Vezmu to podle sebe: když jsem začínal s Javou, nevěděl jsem moc o GridBagLayoutech a tvorbě složitějšího GUI ve Swingu (to jsou znalosti konkrétního jazyka a knihoven, nikoli znalosti programování a algoritmizace). Začal jsem svoje aplikace vytvářet pomocí vizuálního návrhu GUI v Netbeansech. Rychle jsem tak dosáhl kvalitního GUI pro své aplikace, zatímco lidé, kteří těmito nástroji pohrdali a tvrdili, že tyto nástroje nedělají to, co programátor chce, měli ubohé základní GUI, které bylo velmi ošklivé a špatně se používalo. Tito lidé strávili větší část času ručním psaním GUI kódu a méně času jim zbylo na psaní aplikační logiky. Po krátké době jsem si doplnil znalosti konkrétních knihoven (a to nejen z knih a návodů, ale právě i studiem vygenerovaného kódu), takže už jsem schopný psát GUI ručně, nicméně většinou k tomu není důvod, protože moje nástroje dělají přesně to, co potřebuji a ne "něco jiného".
  • 20. 4. 2007 19:47

    anonymní
    Pro ne? Kdyz vam treba neco vygeneruje kostru trid (podle grafickeho navrhu), nebo treba takovych nudnych a stale stejnych veci jako jsou stuby a skeletony, pripadne vsemozne web service chutovky...


    Jedinecnou aplikacni logiku (to, proc tu aplikaci delate) za vas samozrejme nic nevymysli (pokud nepouzijete cizi obecnejsi tridy). Ale muzete uspesne (a automatizovane) pouzit existujici obecne komponenty.
  • 20. 4. 2007 21:34

    bez přezdívky
    Jedinecnou aplikacni logiku (to, proc tu aplikaci delate) za vas samozrejme nic nevymysli

    A o tom to je! Ulehčit si práci vygenerováním kostry programu, do které pak programátor doplní skutečný funkční kód, který nejde vygenerovat, je jedna věc. Ale psát jen triviální algoritmy, protože "programátor" nic složitějšího nedokáže, je věc druhá. Pokud je někdo při programování zcela závislý na generátorech zdrojového kódu, tak se za programátora prostě označit nedá.
  • 20. 4. 2007 21:45

    anonymní
    Ale o takovem programatorovi tu nikdo nemluvi :)

    Muze se ale stat, ze protoze kdyz (a temer vzdy) pouziva to IDE nebo RAD, tak bez nej (a bez manualu k jazyku/technologii) nebude schopen z hlavy napsat ten konkretni skeleton nebo spravne napsat ten layout, nebo si vzpomenout, ktery listener se pouziva pro tuhle ne zrovna beznou komponentu.

    V tomhle muze byt zavisly, ale to z nej nedela menecenneho programatora a klikace.
  • 20. 4. 2007 20:09

    Franta Kučera
    To ano, ale já jsem nikde "automatické generování aplikační logiky" nepropagoval. Protože to ani dost dobře nejde.

    Podobný příběh by šlo napsat i o modelu tříd: můžu si nakreslit objektový model v nějakém vizuálním návrháři a potom si vygenerovat třídy. Je to další případ, kdy pokročilý GUI nástroj může výrazně pomoci programátorovi (nebo snad někoho baví pořád psát psát public class ... { } ... :-)
  • 21. 4. 2007 2:56

    Ash (neregistrovaný)
    Tím "dělá to něco jiného než má" jsem samozř. nemyslel psát ručně otrocké metody pro GUI, ale napsat algoritmus který nemá hlavu ani patu a vydávat ho za program, řešící daný problém (..no ale má to ještě mouchy, takže to úplně jako nedoběhne...). Mouchami je myšleno že je potřeba to celé přepsat někým, kdo má alespoň nějaké základy.

    S těmi testy je to pravda, samozř. takovýto zmatený kodér nemá šanci uspět tam, kde na to pustí nějakou kontrolu. Tam kde se dělají akc. testy si troufám tvrdit že už se vyskytují i programátoři přiměřených kvalit, kteří jsou schopni jimi projít (tedy soudím že se tam testuje správnost kódu, že není třeba testovat kompetentnost programátora). No i když jistě to jde spojit jedno s druhým :D

    Ovšem pozor na ZPKčka. Základní Pravidlo Klikaře: pokud mu něco překvapivě dobře funguje, vězte, že za tím někde vězí side effect, o kterém ...nemá ani potuchy.
  • 21. 4. 2007 15:18

    Franta Kučera
    "jsem samozř. nemyslel psát ručně otrocké metody pro GUI"
    Takže se přímo nabízí otázka: jak navrhnout GUI* a nechat si jeho kód vygenerovat ve VIMu, aneb jsou vizuální návrháři opravdu tak špatní?


    *) a neplatí to jen pro GUI kód, ale pro cokoli jiného, třeba model tříd, který si mohu nejdříve "nakreslit" a potom si vygenerovat ty kostry tříd.
  • 21. 4. 2007 20:52

    Ash (neregistrovaný)
    Takový nástroj samozř. součástí Vimu není. Nicméně vzhledem k tomu, že vim je dělán tak, aby kvůli takovýmto věcím spolupracoval s jinými nástroji, tak by se to *mělo* řešit nějak takto. Nakonec na wishlistu vimařů je první integrace vimu do Eclipse :D

    To je co se týče GUI kódu - neznám samostatný nástroj na jeho vygenerování takže nepovím. U GUI bych taky ale očekával, že to budu párkrát měnit :) což by měl také zvládnout ten nástroj, nemělo by to být "jednou vymodeluj pak už s tím nejde nic dělat". Čili něco jako ve VB nebo tak. Nevím, GUI jsem psal naposled ve 4GL a tam na to bylo (muselo být) IDE, takže papa drahý Vime, ale také Eclipse a podobné "univerzální" věci pro Javu a X dalších jazyků.

    Modely tříd jsou něco jiného, to je pro případy, kdy něco navrhnete "skoro dobře", pak to vygenerujete a začnete programovat. Pak už to ale těžko měníte... Takže logicky bych si ty třídy nechal vygenerovat UML modelářem a programoval pak ve Vim. Nástrojů co se specializují právě na tohle je hodně... Takže tento případ je podle mne bez problémů.
  • 22. 4. 2007 22:35

    Franta Kučera
    K tomu generování GUI kódu: V Netbeansech to má blíž k online editaci než k jednorázovému vygenerování. GUI mohu kdykoli později upravit, přidat tlačítka, nebo kompletně přeskládat... a to, že už máme napsané obsluhy událostí (např. tlačítek) nevadí, ten kód tam zůstane nedotčený, mění se jen GUI.
  • 23. 4. 2007 8:10

    Ash (neregistrovaný)
    Vím, já to tak myslel, jako že např. ve VB to _jde_ a vzásadě předpokládám že všude, na rozdíl od koster tříd to je prostě jeden z kanálů kterými měnit zdrojáky aplikace (tahat za okna a tlačítka) čili je na to potřeba komplexní nástroj a tvůrce GUI také v první řadě sáhne po něčem, kde se to natahat a naklikat dá, v dnešní době, pokud to není triviální aplikace s jedním oknema a nabídkou "otevři soubor, aplikuj moji revoluční funkci, ulož soubor" :)
  • 20. 4. 2007 18:27

    Franta Kučera
    Kdybyste věděl, na čem se moje poznámka "viz praxe" zakládá, tak byste raději mlčel. Ale nebudu se s tím vytahovat, o vás taky ostatně nevím, pro koho pracujete.

    Moc nechápu, proč sem pořád někdo tahá ten .NET -- s tímhle prostředím jsem měl jednou tu čest: velmi jednoduchá C/S aplikace (server -- webové služby -- desktopový klient) a moc mne to neuspokojilo: hlavně jazyk C#, IDE mi taky nepřišlo nic extra ve srovnání s tím, na co jsem zvyklý z Javy.

    "Samozř. existují lidé, kteří v Eclipse dokáži napsat 'dobrý' kód"
    To je ale přece úplně irelevantní, v čem to píši. Jestli umím programovat, tak ten kód napíšu v čemkoli, ale ve bude to trvat různě dlouho, bude to různě pohodlné a některé prostředí mne upozorní na chyby a varování dříve, než při kompilaci. Takže takovéhle "tautologie" ani nemá cenu vypouštět do světa.
  • 18. 4. 2007 19:46

    bez přezdívky
    ad 1, 2, 3) Ten CAD ve skutečnosti může být jen hloupé kreslící rozhraní a skutečná aplikační logika může fungovat jako uzavřený modul, na který se podle potřeby napojí to rozhraní. Tedy máte 4 skupiny programátorů, kteří rozumí každý jednomu oboru, ti se dohodnou na nějakém rozumném rozhraní modulů a 5. skupina programátorů pro něj udělá grafické uživatelské rozhraní. Který modul si nainstalujete k tomu rozhraní a který ne je pak už na vás.

    A tady právě narážíme na jeden z rozdílů mezi VIMem a klikacími editory. VIM je vytvořený pro funkčnost a rozhraní je přizpůsobené funkčnosti, aby co nejvíce využilo její potenciál. Klikací editory jsou vytvořeny na klikání a samotná funkčnost je přizpůsobena grafickému rozhraní aplikace.
  • 18. 4. 2007 20:36

    anonymní
    No tak to rozhodne neni tak jednoduche.
    Opravdu se nedomnivam, ze by nekdo, kdo se zivi napriklad architekturou platil dobrovolne desetitisice az statisice za neco, co by mu funkcne nevyhovovalo, bylo to neefektivni a bylo funkcne omezene na klikani.

    Jak myslite, ze treba v CADu nebo i mediaplayeru omezuje GUI funkcnost?
  • 18. 4. 2007 21:24

    bez přezdívky
    No tak to rozhodne neni tak jednoduche. Opravdu se nedomnivam, ze by nekdo, kdo se zivi napriklad architekturou platil dobrovolne desetitisice az statisice za neco, co by mu funkcne nevyhovovalo, bylo to neefektivni a bylo funkcne omezene na klikani.

    Zajímalo by mě, jak jste došel ke "klikacímu" CADu? Ať přemýšlím jak přemýšlím, nenapadá mě jak by něco takového mohlo z mého příspěvku vyplývat.

    Jak myslite, ze treba v CADu nebo i mediaplayeru omezuje GUI funkcnost?

    V CADu obvykle nijak, aspoň podle mých letmých zkušeností s AutoCAD 2000. Příkazovou řádku má. O pár příspěvků výš je totiž CAD příklad několika editorů určených k podobné práci ale s velmi odlišným rozhraním, tedy nutnost učit se ovládání několika různých programů, které dělají skoro to samé v rámci různých oborů, ne příklad omezování uživatele v práci.

    Zato MS MediaPlayer je přihrávka na smeč. Čím vyšší verze, tím je v okně menší prostor na přehrávání videa. A když si vezmu, že doteď si MS MediaPlayer neumí přečíst z video souboru tak triviální věc, jako je seznam zvukových stop, a nabídnout přímý výběr zvukové stopy, ale začne je přehrávat všechny najednou...
  • 19. 4. 2007 13:38

    anonymní
    Tim nebyl myslen zrovna konkretni Microsoft™ Windows™ Media Player™©, ale obecny media player :)

    Mimochodem i v nem je uz poradne dlouho moznost compact vzhledu. A volba zvukove stopy to je prave treba funkcionalita, pro kterou se GUI hodi naramne. Proc psat nekam do prikazove radky, kterou stopu chci (kdyz predem nevim, kolik a jakych jich tam je), kdyz muzu kliknout pravym tlacitkem, v nabidce zvolit audio a v seznamu vybrat ze skutecnych existujicich audiostop i s popisem tu pravou. :)

    Je to mozna o neco mene efektivni nez prejit do prikazoveho modu a zadat nco jako 'sa420'.

    Nejde o to, ze by ovladani muselo byt nutne pouze primarne intuitivni, ale pokud takove neni, melo by poskytovat takove moznosti, ktere vas postupne (a intuitivne) nauci i pokrocile a ekvivalentni (pripadne i rozsahlejsi) zpusoby ovladani a to nejlepe zpusobem learning-by-doing.
    To je treba tooltipy s odpovidajici klavesou u tlacitek jako ma gimp, zakladni (klikaci) a pokrocile (treba i prikazove orientovane) dialogy (jako treba (defaultne vypnuta) volba regexp pri vyhledavani atp.)
  • 16. 4. 2007 11:48

    Franta Kučera
    "Clovek pak pri praci casto narazi na jejich nedostatky, ktere lze jen komplikovane obchazet."
    Pokud na ty nedostatky narážíš často, nebo na ně naráží více lidí, pak tady existuje skupina uživatelů se stejnou potřebou (nebo alespoň jeden uživatel s opakovanou potřebou), a tudíž má smysl, aby existoval specializovaný nástroj, který bude na danou činnost optimalizovaný a bude ji provádět efektivněji.

    Viz ten příklad s kombinačkami -- jsou universální, ale efektivnější je vzít si klíč správné velikosti.
  • 15. 4. 2007 23:48

    Biktop (neregistrovaný)
    Já bych řekl, že docela chápu, na co narážíš. Pouze s tím nesouhlasím :-)
    Neříkám, že KAŽDÝ si musí psát vlastní makra, že každý by si měl sestavovat vlastní auto, že každý by si měl dělat vlastní potraviny. Říkám, že jsou případy, kdy to nezbytné je. Kdy je nutné sestrojit si vlastní auto, kdy je nutné vyrobit si vlastní potraviny, když mi ty "standardní" z nějakého důvodu nevyhovují. Ostatně - já si kupř. peču chleba sám, protože mám rád a mému žaludku dělá dobře tmavý chleba, který není zas tak rozšířený, a když už je, tak není čerstvý. Ale to jen tak na okraj :-)
    Já jen říkám, že MÁ BÝT MOŽNOST. Viz můj příklad s protokoly na fyzikální praktika. V LaTeXu bych se s tím býval strašně nadřel. V TeXu jsem sice musel obětovat nějaký čas naučení se a zvládnutí základů, ale pak jsem si mohl celkem snadno udělat PŘESNĚ to, co jsem chtěl. Žádné kompromisy, žádné úlitby a obezličky, jak oklamat LaTeX. LaTeX mi umožnil rychle se dostat ke kvalitní počítačové typografii, TeX mi umožnil ji takřka plně "ovládnout" :-) LaTeX je tak rozsáhlý a komplikovaný právě proto, že jeho autor se snažil pomyslet na co největší množství případů. Jenže zákony schválnosti říkají, že na potvoru zrovna to co sám potřebuješ tam není :-) V TeXu jsem nemyslel na nikoho jiného, nedělal jsem univerzální věc, nepřemýšlel jsem nad tím, co všechno by si někdo mohl chtít měnit. Dělal jsem to pro konkrétní činnost, tudíž napsání těch příkazů mi zabralo i s odladěním pár hodin a výsledek byl přesně dle mých očekávání. A shodou okolností si to ode mě nahrálo i pár dalších lidí, kteří přišli na to, že se jim to asi taky může hodit. Těch pár investovaných hodin se mi několikanásobně vrátilo zpět, rozhodně to nebylo žádné plýtvání časem!
    Samozřejmě, že dělat znova a znova totéž je plýtvání. Ale to se akorát dostáváme oklikou k úplnému začátku - nač teda mít u každého IDE k editování zdrojového textu jakýsi editor, když existují universální editory, jejichž autoři se plně soustředili na napsání kvalitního editoru, jehož jediným cílem je snadná a efektivní editace textu (čert vem pro tentokrát vim, ať si sem každý dosadí svého favorita)?
    V životě jsem přišel na to, že méně je často více.
    1) Je chybou si odřezávat možné cesty rozšíření,
    2) je zbytečné implementovat něco, co by hypoteticky mohl někdo používat
    3) je plýtvání prostředky skombinovat předchozí dva body, tj. vymyslet si nějaké hypotetické úkoly a k nim implementovat řešení a zároveň aplikaci uzavřít před možným rozšiřováním faktorisací toho, co už umí (což je případ GUI). Pak máte monstrum, které toho umí velmi mnoho, ale spoustu věcí ani nikdo nikdy nepoužije, ale neumí věci, které by člověk třeba potřeboval (neříkám že každý), ale ty to umět nebude, nebo velmi neohrabaně.

    Nikdo neví lépe než ty, co chceš vlastně dělat. Samozřejmě že u BFU toto asi neplatí, ale o těch se tu už od začátku celé téhle obsáhlé debaty nebavíme.

    Linux používám, ale jádro vlastního operačního systému jsem si skutečně také zkusil kdysi napsat :-) A jelikož se pohybuji ve světě embedded aplikací, tak to vlastně dělám stále, jen ne na platformě PC/Intel :-) Nicméně s Unixem je to podobné jako s tím vimem - já neříkám, že je to to nejlepší, co může být, ale dle mých zkušeností je to to nejlepší, co je k disposici. A proč? Protože Unix je ve své podstatě velmi jednoduchý systém, který specifikuje elementární věci a dává k disposici aparát, jak je kombinovat s sebou a integrovat do vyšších celků. Jak říká jeden starý vtip o různých OS - Unix je prostě jedna veliká stavebnice. DOS je ještě mnohem jednodušší, ale téměř zcela postrádá unixovou flexibilitu. Windows je zcela jasně mnohem složitější než Unix, ale trpí stejným neduhem, jako DOS - autoři nás de facto postavili na jeviště, které oni vybudovali, a my se v něm musíme pohybovat. Pokusili se všechno vymyslet za nás a stejně se v tom, teda nevím jak ty, necítíme dobře. Z mé strany to není nějaký princip, z mé strany je to objektivní fakt - flexibilita Windows je na můj vkus strašně nízká, spousta věcí je mi nepohodlná a nemohu s tím nic udělat. Ve Windows nemůžu svůj počítač efektivně využívat dle mých představ, navíc režie toho OS kopíruje jeho komplexnost, dostal jsem náročné nepřizpůsobivé monstrum, jehož většinu funkcí nepotřebuji, a doplnění těch, které potřebuji, je nepřímočaré či nemožné. Skutečně - mám pocit, že počítač s Windows ovládá mě a ne já jeho, myslí za mě místo aby mi pomáhal realizovat mé myšlenky, vnucuje mi "svá" řešení místo toho, aby přijal moje představy, skoro mi nadává do blbců, když se nechovám tak, jak by si "on", resp. jeho tvůrci, představoval.
    Takže to píšu spíš proto, abych ukázal, že moje myšlenkové pochody fakt absurdní nejsou :-)

    A k tomu "bonusu" -
    ad a) ono třeba ani jiné, "systémovější" řešení neexistuje
    ad b) účel světí prostředky - když by to vyžadovalo překopat celý návrh a jediným výsledkem této operace by bylo, že jedna procedura by mohla být řešena systémově, nepovažuji to za nejlepší cestu

    ad "pokud neplatí a) ani b)" - ano, ale musíte mít tu možnost provést to :-) Taky existuje jiná osvědčená cesta - říká se tomu knihovna :-) Jazyk jako takový by měl být jednoduchý, ale flexibilní - z těch prakticky používaných to splňuje C, z těch co to dotáhly až do extrému bych jmenoval Forth. Jakmile začneme oplácávat překladač vším, co kdy kdo kde potřeboval, dostáváme se zase tam, kam bychom neměli... monstrum, které umí všechno možné, je komplikované, a stejně neumí to, co zrovna potřebujeme.
  • 16. 4. 2007 12:45

    Franta Kučera

    "A shodou okolností si to ode mě nahrálo i pár dalších lidí, kteří přišli na to, že se jim to asi taky může hodit."

    Vždyť to je přesně to, co píšu: "vylepšit LaTeX (nebo jinou vyšší úroveň)" Ty jsi vytvořil novou specializovanou nadstavbu, novou vyšší úroveň*, která může být užitečná i jiným lidem, kteří mají stejné potřeby jako ty.

    *) tady optimisticky předpokládám, že sis vytvořil znovupoužitelná makra TeXu, ne že jsi tam přímo namastil nízkoúrovňové příkazy.

  • 17. 4. 2007 2:00

    Biktop (neregistrovaný)
    No... jak se to vezme. Jak říkám - dělal jsem to kvůli konkrétní věci, proto jsem to nedělal obecně jako jsou dělaná makra LaTeXu. Ale to je právě to kouzlo - kdybych to tak býval dělal, tak by to nebylo tak jednoduché :-) Komplexnost jde ruku v ruce s komplikovaností. Já jsem řešil konkrétní problém konkrétními prostředky. Ne problém, který momentálně neexistuje (i když by hypoteticky třeba někdy mohl). Nešlo mi o to udělat si svůj malý FyzPraktikaTeX ve stylu LaTeXu, ale v TeXu si nadefinovat prostředí pro řešení konkrétního úkolu. Kvůli tomu byl TeX taky vymyšlen, ne pro to, aby to byl jen mezistupeň, polotovar, nad kterým se teprve udělá sada univerzálních maker a ta teprve budou přístupná uživateli. Optimální způsob sazby s TeXem je, že se s typografem dohodnu na tom, jak by to co sázím mělo asi vypadat, dohodneme se na nějaké sadě tagů, které mám (a jak) používat ve svém textu, a on už je nadefinuje a postará se o finální vzhled.
  • 17. 4. 2007 15:39

    Petr Mach (neregistrovaný)
    Bohužel jsi nepochopil, že je to právě Vim, kdo ti umožňuje ono snadné rozšíření a přizpůsobení se potřebám uživatelů, díky svému jedinečnému návrhu. Je tu Vim a pomocí řady připravených rozšíření ho můžeš používat pro řadu různých úkolů a přitom máš k dispozici pevný základ s jedinečným efektivním ovládáním. Narozdíl od toho ty chceš, aby se pro každý trochu odlišný úkol (jako psaní v LaTeXu (co když budu chtát psát v ConTeXtu nebo AmsTeXu?)) tu byl samostatný primitivní editor. Tedy ne vzít to dobré co máme a rozšířit ho, ale začít znovu. Není divu, že současné editory jsou tak primitivní, nikdo by nezvládl používat pokročilejší ovládání řady různých editorů. Oproti tomu cesta Vimu umožňuje mít ovládání velmi pokročilé a s vysokou efektivností editace. Imho kdyby Vim nesetrvával na textovém rozhraní a plně využil GUI pro reprezentaci informací, tak nemá konkurenci.
  • 17. 4. 2007 16:29

    anonymní
    ano - to je ten problem - jedinecnym
    prestoze vim existuje jiz tolik let, jeho ovladani se nerozsirilo nikam jinam, presto, ze je tak efektivni, nikdo se nejak nemel k tomu, pouzit stejny nebo podobny koncept u jinych aplikaci


    nikdo nechce jiny ditor pro kazdy jazyk nebo nareci
    nikdo netvrdi, ze se maji odebirat univerzalni funkce ale je potreba vazit
    je dobre zamerit se na snadnou pouzitelnost a zvladnutelnost a i pokrocile funkce integrovat do prehledneho standardizovaneho rozhrani (nejen GUI)

    na argument, ze nejde narvat vsechno, co umi vim do nejakeho jineho rozhrani odpovidam, ze snad nikdo nevyuziva vsechny funkce vim a radeji nez byt nucen pouzivat to jeho unikatni rozhrani, jenom proto abych mel zachovany vsechny ty funkce, ktere zrejme* nepouziju, radeji chci mit snadno ovladatelny intuitivni nastroj zejmena s funkcemi, ktere vyuziju (nebo ktere se v dane oblasti pomerne casto vyuzivaji**), a ktere se do nej prehledne vejdou
    kdyz tam bude neco navic, nemam problem a jsem kdyztak schopen to pouzit aniz bych lovil cosi v manualu, kdyz tam bude neco co mi chybi, bud se podivam po konkurencnim reseni a nebo si to sam dodelam, pokud mi to bude za to stat


    proste se bez vim naprosto obejdu
    existuje dost editoru, ktere plne vyhovuji mym potrebam na funkcionalitu i ovladani a necitim se o nic ochuzen
    vim by zrejme me potreby na funkcionalitu take naplnil, ale pouze za cenu sveho ovladani, kterou nejsem ochoten platit, pokud mi neprinese nic uzitecneho navic (a ja ten prinos nevidim)


    -----
    *pokud budu mit tu vyjimecnou potrebu, bude mozna rychlejsi nebo ne az tak neprijatelne, si na to napsat vlastni skript v nejakem uplne jinem nastroji, nebo se podivat, jestli to nekdo neresil uz predemnou

    ** v IDE treba refaktoring a doplnovani a generovani kodu a vyhledavani na urovni jazyka (ne znaku), v obecnem plaintextovem editoru velmi pokrocile moznosti vyhledavani a nahrazovani
  • 18. 4. 2007 21:35

    bez přezdívky
    na argument, ze nejde narvat vsechno, co umi vim do nejakeho jineho rozhrani odpovidam, ze snad nikdo nevyuziva vsechny funkce vim a radeji nez byt nucen pouzivat to jeho unikatni rozhrani, jenom proto abych mel zachovany vsechny ty funkce, ktere zrejme* nepouziju, radeji chci mit snadno ovladatelny intuitivni nastroj zejmena s funkcemi, ktere vyuziju (nebo ktere se v dane oblasti pomerne casto vyuzivaji**), a ktere se do nej prehledne vejdou

    Až se vám podaří vymyslet, jak nahradit modifikátory základních příkazů VIMu (tedy jak říct, že chci smazat najednou 10 řádků nebo že chci přepsat celý text až k nejbližšímu středníku a ne jen jeden znak/slovo/řádek) něčím intuitivnějším a efektivnějším, než je příkazový režim, dejte mi vědět. To jsou totiž operace, které během hodiny programování často použiji víc než 100x.
  • 18. 4. 2007 22:22

    Franta Kučera
    "smazat najednou 10 řádků"
    Já ale nechci smazat 10 řádků, já chci smazat nějakou logicky (nikoli znakově) ohraničenou část kódu a nahradit ji jinou. Nebudu kvůli tomu odpočítávat řádky nebo nedejbože znaky. Než bych to spočítal a napsal ten příkaz, tak je efektivnější zmáčknout ctrl + šipky, pak stačí začít psát a starý text se smaže a píše se nový. To je efektivita. A ne abych musel počítat řádky (což by mi umožnilo napsat ten úžasně "efektivní" příkaz VIMu).
  • 18. 4. 2007 22:45

    bez přezdívky
    10 řádků je ještě v rozmezí "kouknu a vidím". Na mazání logicky ohraničených částí textu má VIM lepší nástroje. Na mazání přes několik obrazovek, když mazaný blok není sám o sobě nějak hezky ohraničen, zase máte vizuální označení (tedy najedete na začátek upravovaného bloku, pak za použití logické struktury textu nahrubo skočíte k jeho konci, nastavíte konec bloku přesně a provedete úpravu).
  • 19. 4. 2007 15:07

    Ash (neregistrovaný)
    To je efektivita? Pokud "toto je efektivita", pak už asi chápete, proč je vim efektivní :) Vim samozř. umožňuje primitivní výběr textu pomocí ctrl+šipky (leckdo má namapováno, přecejen borland a.s.), pak začít psát a starý se smaže (v select mode) a píše se nový. Pokud to někdo pro sebe považuje za efektivní, ať tak činí.

    Mimo těchto primitivních operací má samozř. vim pak ty pokročilé, jako vámi chtěné mazání logických bloků textu či kódu přesněji než přibližným označováním a popolejzáním.
  • 17. 4. 2007 23:50

    Franta Kučera
    Není pravda, že by GUI editory začínaly od píky -- třeba ten zmiňovaný Kile používá komponentu Kate, kterážto může být použita i v jiných editorech a taky bývá. Prostě vlastní editace textu je společná, ale to okno kolem, tlačítka a specializované funkce si člověk může napsat sám -- udělat si tak svůj specializovaný editor, ale tu textovou komponentu nemusí psát od začátku.

    IMHO je lepší přístup mít textovou komponentu a kolem ní vybudovat editor, než mít rádoby universální editor a do něj se pokoušet nacpat kde co.
  • 18. 4. 2007 17:36

    Petr Mach (neregistrovaný)
    Ano, kdyby ta komponenta byla kvalitní, pak by to stálo za úvahu. Doporučuji vám podívat se na PIDA, které Vim integruje do sebe, takže nic nového pod sluncem. Tuším také, že Vim existuje jako komponenta pro KDE, ale protože mi KDE nepřirostlo k srdci, tak o tom víc nevím.
  • 18. 4. 2007 21:58

    Franta Kučera
    To byla narážka na "Tedy ne vzít to dobré co máme a rozšířit ho, ale začít znovu." Jen jsem chtěl doložit, že ne všichni GUI programátoři jsou idioti a že pokud mají něco dobrého, klidně to použijí znovu, místo aby to psali pokaždé znovu.
  • 15. 4. 2007 18:01

    anonymní
    1) to ale neznamena, ze tam neexistuje intuitivni GUI pro definici stylu
    a proto i novy word (mozna uz ten soucasny) umoznuje v sablone zakazat pouziti neceho jineho, nez definovanych stylu

    2) to je ale totez jako pouzivat libovolne aplikace, ktere jste si sam nenapsal - nekdo myslel za vas

    4) jestli 300 nebo 80 nebo 120 to zalezi na tom co to je za nastroj a jak ma navrzene ovladani, navic pokud tim chci jezdit po meste s krivolakymi ulickami (i treba jako profesional-taxikar), tak mi vsechno bohate staci

    6) kvalitni GUI znamena jednoduche a prehledne, ale pritom take co nejvice funkcni pro uzivatele. GUI nekterych projektu na linuxu nejsou casto zrovna dobrym prikladem, prave proto, ze je navrhuji programatori, kterym se nad tim (zcela nealgoritmickym ukolem) nechce premyslet.

    vsechno ma sve limity, i prikazovy rezim i textove konfiguraky i to, co lze delat ve vim
  • 16. 4. 2007 0:13

    Biktop (neregistrovaný)
    ad 1) Neříkám, že tam není. Ale stejně se musíte naučit ovládat jej, pokud toho chete využívat. Když posadíte sekretářku k dokumentu rozepsaném ve Wordu s využitím nějakého vlastního stylu, uvidíte, jak se jí bude zdát intuitivní, že ji neposlouchá "enter", že na téhle řádce se dá psát jen kurzívou a na tamté zase jen groteskem, tuhle jen do půlky řádku a na tamtom řádku když zmáčne nějakou nevinnou klávesu, tak se jí celá stránka "tajemným" způsobem rozhází :-)

    ad 2) jo, ale bavíme se o tom, jestli je skutečně nezbytné omezovat uživatele v přizpůsobení si té aplikace a efektivisace jejího použití, když to jejího autora vlastně nic nestojí

    ad 4) zase budu chtít mít možnost dobře parkovat a pohybovat se v kolonách aut; problém je stejný - opět může být něco navrženo příliš obecně nebo naopak příliš konkrétně, avšak ne k mé potřebě

    ad 6) ta maximální funkčnost ale musí mít nějaký smysl; pokud to znamená pokoušet se vměstnat do GUI cosi, co snadno vyřídím jazykovým přístupem pomocí smyčky a podmínky, ale velmi šroubovitě a neelegantně pomocí formulářů a menu, pak to dle mého názoru nemá smysl a uživatelé raději rezignují na použití něčeho tak neohrabaného, což zpětně může vývojáře vést k tomu, že to je vlastně něco, co se ani moc nevyužívá; ne proto, že by to nikdo nepotřeboval, ale vinou nevhodné implementace - ikdyž v rámci GUI to třeba jinak vymyslet vůbec nejde

    všechno má své limity, proto je zbytečné stavět si další, nepotřebné
  • 16. 4. 2007 11:21

    anonymní
    1) Pri prechodu k OpenOffice jsem byl schopen behem okamziku upravovat styly prestoze je tam jiny dialog, ktery jsem predtim nikdy nevidel. Nepotreboval jsem k tomu dokonce ani manual.

    2) nejde o omezovani uzivatele, spousta aplikaci je velmi pokrocile konfigurovatelnych a presto se da snadno a rychle ovladat a to proto, ze jsou krome typickeho ovladani dodavany s takovym vychozim nastavenim, ktere je pro vetsinu uzivatelu alespon v pocatcich (nez najdou kde a co se da zmenit) velmi dobre postacujici

    4) nejde o to aby to bylo 'prilis', ale o to, ze pro drtivou vetsinu uzivatelu lze najit velmi prijatelny kompromis mezi obojim a opet jde tu o ovladani, nikoliv o funkcionalitu

    6) nejde o maximalni funkcnost, ale o optimalni :) pokud se v danem prostredi vyskytuje neco, kde by mohlo dost uzivatelu chtit pouzit smycku a podminku a nejde to elegantne dat do menu nebo nejakeho dialogu, neni duvod to tam neimplementovat, ale zrejme ne jako zakladni ovladani. I v tom wordu jsou prece makra. A to jak v "hardcore" koderskem rezimu, tak jako tlacitko pro nahravani.

    Ze si to ja nebo vy neumime zrovna ted predstavit ale prece neznamena, ze to graficky vymyslet nejde :)
    Kdo by se byl pred X lety nadal, jak relativne jednoducha a pomerne bezpecna i pro neprilis zkuseneho uzivatele muze byt prace s oddily na disku, nez prisla udelatka jako partition magic.