Je pěkné, že je tu článek o vývoji aplikací.
Přiznám se, že jsem článek prošel dost rychle (protože sám používám fpc/Lazarus), ale chtěl bych se zmínit o délce kódu.
Ono je hezké, že se dá napsat aplikace s mnoha funkcemi pomocí několika málo řádků kódu, ale v praxi to znamená, že to vlastně někdo jiný napsal za nás. Moderní IDE/RAD nabízejí silné komponenty (vizuální, databázové apod.) a pak opravdu stačí jen naklikat to na Form a pomocí pár řádků to provázat.
Koneckonců, nedávno tu byla zprávička (odkaz na YouTube) kde někdo vytvořil video přehrávač za půl minuty (myslím, že v Qt creatoru). Do Lazara zase minulý týden nějaký polský vývojář přidal vizuální komponentu, která zobrazuje Google mapy (v podstatě i bez kódu).
Chci tím jen říct, že to, co se cení, je přidaná hodnota (textový editor s funkcí, která tu dosud nebyla, videopřehrávač s podporou nového kodeku atp.) A vymyslet něco nového, to většinou tak snadné není a ani to obvykle není moc rychle hotovo.
PS: Tento příspěvek není v žádném případě kritika článku, je to spíš zamyšlení.
To že je taková komponenta v příkladu použitá jako texťák, přehrávač, ... je docela logické. To je to co umí a příklad má pár řádek.
Jako hlavní účel bych viděl v tom, že se kdokoliv nemusí zdržovat psaním tohohle pro svůj program, když se jinak jedná o spíše okrajovou komponentou. Když budu např. chtít napsat program pro katalogizaci hudby, tak jednoduchý přehrávač přijde vhod. Hlavním posláním nebude přehrávat a není tedy podstatné tam mít dokonalou implementaci nějakého kodeku. Naopak se to ten program snadno doučí, jak ji někdo jiný dopíše.
První editory titulků taky neměly integrované náhledové přehrávače a právě díky takovým komponentám je dnes umí a hned s nimi typicky lépe pracuje.
Zdravím,
podle mě každý (minimálně začínající) programátor dělá program jak by jemu samémo vyhovoval nejvíc. A to je pro mě na tom to dobré. Pokud děláš nový videopřehrávač a uděláš ho tak, aby tobě vyhovoval a někam ho dáš k dispozici tak je to pro mě přísos, protože někomu jinému možná také bude vyhovovat více než ostatní. Například: Rád mám v přehrávači možnost stahování textu písničky, nicméně také rád přehrávač pouze minimalisitcký... Babo raď nic takového nevedeme :D Přesně případ, že pokud bych si opravdu rychle (např. pomocí gtkmm) napsal vlastní a dal ho někam, tak bude přínosný lidem jako já :)
Suma sumárum mi přijde, že pro začínajícího programátora je právě možnost udělat něco takovéhleho přínosná - na ošahání toho nástroje (např. gtkmm) je to ideální :) Proč asi každý začíná kalkulačkou že? :)
Jsou zákazníci, kteří nemají problém zaplatit 20 lidí na 5 let (tedy několik milionů) kvůli vývoji jednoduchého informačního systému v assembleru a jsou zákazníci, kteří chtějí mít fungující informační systém za pár set tisíc, první verzi po 3 měsících a finální po 6. A nevadí jim, že to udělá banda 4 vývojářů v Javě, hlavně, že to stojí zlomek času a peněz.
Myslím, že tou přidanou hodnotou je to, že někdo ty komponenty vzal a zrealizoval z nich nějakou aplikaci, nebo novou komponentu.
Sranda ovšem může nastat (alespoň u komponent, které jsou tvořeny v C++) když potřebujete k dané komponentě dotvořit nějakou funkčnost. Tohle samo o sobě problém není až do chvíle, kdy zjistíte, že prvky, které pro implementaci dané funkčnosti potřebujete použít komponenta před vámi skrývá, nebo je naprogramována tak, že nová vlastnost bude fungovat jen někdy, nebo jen někde....
Tak na příklad programoval jsem vlastní widget (ve Fox Toolkitu), který byl založen na ComboBoxu a jeho úkolem bylo nabízet dostupné diskové jednotky a zařízeni; a pomocí menu přes pravé tlačítko myši je ovládat (připojit, odpojit, přidat mount point a zařízení, připojit obraz, vlastnosti, atd...). Problém je však v tom jak je ComboBox řešen. jedná se textové pole a tlačítko na malém panelu, který též provádí tzv delagci zpráv (tzn, přepošle událost jinému předem určenému prvku, např oknu aplikace). Takže ve výsledku to fungovalo tak, že pokud jsem chtěl zobrazit nabídku prvku, musel jsem se trefit do jeho uzoučkého okraje (do podkladového panelu) jinak se neukázala.
A co teď? Upravit to nelze, protože komponenty ComboBoxu jsou private, upravováním samotné třídy ComboBoxu by mohlo znamenat nekompatibilitu s originální knihovnou toolkitu (musel bych poskytovat vlastní verzi) a programovat znovu co už mám hotové? to se mi taky nezdálo jako košer řešení. Nakonec jsem to vyřešil tak, že jsem vytvořil speciální oddíl v menu aplikace a bylo.
No a to je ten nejjednodušší případ co mě potkal....