Myslím, že autor chtěl !některým! pseudo-objektově programujícím programátorům pouze otevřít oči a sundat směrové klapky.
Javu si myslím vybral proto, že se často halí do pojmu objektově orientovaný jazyk, ale přitom občas není (o fous líp je na tom podle mě C#).
Každopádně by bylo dobré, aby se nejen Javisti, ale každý programátor před tím než šáhne po konkrétním programovacím jazyce zamyslel (a to opravdu důkladně).
Ale ciste objektovy navrh preci neznamena automatickou vyhodu. Co je spatneho na to, ze neni Java ciste objektova? Jazyk je jen nastroj, ktery ma mit hlavu a patu a ma jit pouzit pro nejakou tridu uloh. Java ma mozna ve porovnani s ST mene elegance, zato se na ni z vetsiny jazyku lepe prechazi a aplikace v ni napsane maji typicky vyssi vykon.
Na strane jedne tedy mame rozsireny jazyk s velkou podporou uzivatelu a velkych firem, s celou radou nastroju a knihoven. Na strane druhe mame elegantnejsi, zato vsak pomalejsi, mene rozsireny a mene podporovany jazyk.
Pokud chci hned ted zacit vyvijet desktop aplikaci pro Linux, ma Java alespon dve velka IDE (Eclipse a NetBeans), umi pouzit GTK a jde ji s trochou stesti prelozit do nativniho kodu (GCJ).
Pokud chci napsat prenositelnou desktopovou aplikaci, mam opet dve IDE, cross-platform build system (Ant), nastroje pro automaticke testovani kodu a prenositelne GUI.
Pokud chci napsat webovou aplikaci, mam na vyber z CELE RADY frameworku na ruzne urovni, ruzne prezentacni technologie (JSP, Freemarker, ...) a stabilni opensource nastroj, ktery je nasazeny na cele rade komercnich projektu (Tomcat).
Pokud chci napsat nejaky TCP server, staci mi zadat do google "tcp ip server java" a vypadne na me rada ukazek.
Tohle vsechno samozrejme neni tak ruzove, ale KDE JE Smalltalk? Vezmeme si temer libovolnou praktickou aplikaci od navrhu pres shaneni vyvojaru, strukturu projektu (CVS, automatizace prekladu) a samotny vyvoj az po balickovani a nasazeni na ruznych systemech, VAZNE SI MYSLITE, ze bude Smalltalk ve vedeni? Kolik bugreportu ziskate od uzivatelu? Kolik z nich vam k tomu prilozi patch? A to jsou prvni dve z tisice dalsich otazek.
Nemam nic proti Smalltalku a v Jave nic neprogramuju --- ale at premyslim jak dukladne chci, Smalltalk bych v drtive vetsine projektu nepouzil.
>Java ma mozna ve porovnani s ST mene elegance, zato
>se na ni z vetsiny jazyku lepe prechazi a aplikace v
>ni napsane maji typicky vyssi vykon.
To mi prijde prehnane tvrzeni. Nechci tvrdit opak,
ale moje osdobni zkusenost z 2 pocitacu, ktere pouzivam (Intel Pentium II, 350Mhz, 128MB RAM a
SGI Indy, MIPS R5000 150Mhz, 64MB RAM):
Na PII javovske IDE se stylu Netbeans sice nabehne,
ale fakt se v tom neda pracovat. na Indy to ani nenabehne.
VisualWorks, jeho IDE bych rekl ze je vyrazne propracovanejsi (tedy jeho SystemBrowser/RefactoryBrowser) je uplne v pohode,
klidne i 20 oken. Smalltalk/X je zrovna tak v pohode (na Indy to nejak pada, a fakt je, ze Worksy jsou na tom Indy take nestabilni - to je IMHO tim, ze maji chybu ve VM a/nebo tim, ze mam jinou verzi Irixu)
>Pokud chci napsat nejaky TCP server, staci mi
>zadat do google "tcp ip server java" a vypadne na
>me rada ukazek.
Pokud ja chci v me oblibene implementaci Smalltalku
nejaky TCP server, otevru browser, najdu
Socket class>>example a copy-paste kus kodu a doupravim. Nebo - pokud to chci mit chytrejsi -
zkopiruji ze tridy RDoItServer, pripadne tady je SOAP, Opentalk, DST,... na google nemusim...
>Pokud chci napsat prenositelnou desktopovou >aplikaci, mam opet dve IDE, cross-platform build >system (Ant), nastroje pro automaticke testovani >kodu a prenositelne GUI.
Pokud ja chci prenositelnou desktopovu aplikaci,
tak mam, pravda, IDE jedno - ale IMHO dost dobre,
cross-platform build system nepotrebuji, anzto
mam inkrementalni compiler, pro automartizovane testy mam SUnit TestRunner, jehoz klony ala JUnit
CPPUnit, PythonUnit nebo jak se to jmenuje
se zacli pouzivat vsude mozne a prenositelne GUI
je samozrejmosti, o ktere ani neuvazuji :-)
>strukturu projektu (CVS...
Tak zrovna tohle je taky docela vymakane, Smalltalk/X pouziva bezne CVS, VisualWorks maji StORE (ktery funguje nad relacni databazi), ve Squeaku taky neco je (nemam zkusenost).
Nerikam, ze je to kdo vi jak skvele, jen vyvracim konkretni namitky konkretnimi argumenty :-)
Pomalost Swingu nic nemeni na tom, ze je Java "rychlejsi" nez ST. Swing je potvora na pamet a vykon vubec, Eclipse je na tom s SWT mnohem lepe. Existuji i nativni prostredi pro konkretni platformy, ktere uz jsou zatracene svizne.
S tim TCP serverem jsem to myslel tak, ze pro Javu existuje nepomerne vic dokumentace (javadoc je zlata vec) a prikladu kodu, coz se zatracene pocita.
A Ant se nestara jen o build, ale i o baleni a dalsi cinnosti spojene s prekladem. U realneho projektu to opet usetri hezky kus casu.
T.
:-) OK, co kdybychom presli od slov k cinum.
Dejme dohromady nejakou metodu, jak to, vice ci mene exaktne, zmerit a zmerme to. Ono to IMHO neni tak jasne, zalezi co a jak se meri - znate to,
verim jen te statistice, kterou jsem si sam zfalsoval.
Me samotneho by ty vysledky celkem zajimaly...
Asi nema cenu to tady rozmazavat, pokud bude zajem, poresime mailem, OK?
> Javu si myslím vybral proto, že se často halí do pojmu objektově orientovaný jazyk, ale přitom občas není (o fous líp je na tom podle mě C#).
V tomhle kontextu byla položena otázka. OK, měl jsem to uvést celé. Moje blbost.
Jestli usnadňuje programování vážně netuším, protože jsem v C# ještě nic nenapsal. Ale můj bratřík, kterého beru za vzor programátorského začátečníka, si C# a jeho delegáty vážně nepochvaluje, narozdíl od Javy s konceptem implementace rozhraní.
Implementaci rozhraní tam samozřejmě je k dispozici také, takže mu nic nebrání ji používat. Co se delegátů týče, takové věci jako eventy (které jsou realizovány právě pomocí handlerů) jsou v některých situacích k nezaplacení a osobně na nich nevidím nic nelogického. Pokud se mu nelíbí, používat je přece nemusí. ;-)
Na každý pád tohle spíš je věc vkusu, někomu to může sednout, někomu ne. A pokud někomu C# nevyhovuje, nechápu proč v něm dělá, pokud není masochista...:-)))