Diskuze: java?
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Neregistrovaný

Zobrazeno 41 zpráv z 41.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Myslím si, že Java a C# si co do složitosti a modernosti nemají co vyčítat. Java rozhodně není zastaralá a určitě má význam se ji naučit.
Java má výhodu proti C# v tom, že je multiplatformní. Jinak jsou to srovnatelné jazyky.
A jé, tohle si neměl dělat
Teď začne zase válka, kde si každej bude prosazovat svůj jazyk.
Hele, vybral sis dobře, C# a Java jsou oba jazyky vyšší úrovně.
Programuješ v OOP a mají oba spoustu knihoven a podpory. Nenech se zmást a
nedělej v nízkoúrovňových jazycích jako je třeba čisté Céčko.
A pamatuj, že není důležité umět programovací jazyk. Když umíš myslet
abstraktně, tedy víš co chceš a máš představu jak by to mělo fungovat,
umíš programátorsky myslet. Pak se jazyk naučíš dá se říct za
odpoledne, stačí ti znát základní syntaxi a zbytek dogooglíš, protože
víš co chceš. A co se týče Javy a C#, tak to vždycky najdeš co hledáš
Pak se jazyk naučíš dá se říct za odpoledne
Pokud nejde o Objective-C, samozrejme
Já bych čisté C tak nezatracoval, robota nebo čip v Javě
nenaprogramuješ (A když jo,
tak výrazně hůř).
Já spíš myslel, že když ten jazyk umíš fakt dokonale, ale nedokážeš
přemýšlet a nemáš nápady, tak je ti to k ničemu.
Když si chci nakódit něco v jiném jazyce stačí mi většinou znát
standardní příkazy a případně si vygooglim jak se co řeší.
Nejdůležitější je pak praxe, když víš co kde použít a co ne a znáš
metůdky a knihovny co použít, usnadní a urychlí ti to práci to určitě.
Ale když si neumíš představit jak by to co chceš mělo fungovat a co by to
vlastně mělo vůbec dělat, tak je ti kompletní příručka daného jazyka v
hlavě k ničemu. Proto si myslím, že je lepší se naučit přemýšlet jak
by co mělo fungovat a pak jen hledat jak se to v daném jazyku nejlépe dá
udělat. Když nebudeš pak střídat jazyky jak se říká jak ponožky, tak se
ho nejlíp naučíš. Číst knížky mě nikdy nebavilo, vždy jsem si našel
základy a pak jsem prostě googlil co jsem potřeboval. A co jsem zatím
dělal, tak převážně unikátní utilitky, které jsem na netu nenašel a
tvořil je hlavně pro vlastní potřebu. Příjde mi zbytečné dělat něco,
co už někdo udělal. Je to super si vyzkoušet jak je to dělaný nebo jen tak
pro zábavu či když si tam chci udělat nějaký zlepšováček, ale myslím,
že nejlepší je udělat si aplikaci, co není, než "kopírovat" existující.
Tím ovšem nemyslím, když si udělám algoritmus, který předčí rychlost
existující aplikace nebo podobné. No už se do toho zamotávám, snad mě
bude pochopeno, rači toho rozepisování nechám
Robota v Javě naprogramuješ, ale podle mne je pro robota vhodnější Lisp. V C bych se o to raději ani nepokoušel, připadá mi to dost masochistické.
Já ho nezahazuji, například v té robotice nebo algoritmech, kde potřebuji co nejvíce optimalizovat výkon jsou odlehčené jazyky lepší, o tom žádná. Ale modernější jazyky mají větší využití. Nedělá se v nich jen tak. Dá se v nich dělat od programů, přes hry a dokonce jsou i kity, které se dají programovat přímo pod .NET nebo které jedou na Javě. I do ledniček, televizí, mobilů se dělá třeba v C# a Javě. Ale nechci tu rozpoutat válku jazyků. Každý jazyk má své uplatnění, své klady a zápory. A záleží na programátorovi, co potřebuje udělat a který uzná za vhodné použít.
Jestli se můžu vložit do diskuse, tak bych řekl že C je stará
záležitost co se desktop, system app týče, ale co se týče čipů a
podobně, tak myslím že je to jasná volba. ASM dneska umí málo kdo.
Mám zkušenosti jen z vyložene low pohledu (psaní firmwaru pro kamery, švábi přímo řídící motory pro pohyb, feedback control atp) a tam prakticky není jiná možnost.
@sczdavos: Jojo, s tim souhlasim. Nechtěl jsem rozpoutávat boj, jen tvrdím, že i ANSI C má v dnešním světě svá smysluplná využití.
Používat C jen kvůli výkonu není opodstatněné, protože rychlost programů v C, C++, Javě, C#, Lispu, Forthu a dalších jazycích je dnes již srovnatelná. Programovací pohodlí je však u C nejhorší. Jazyk se musí vybrat vždy podle typu aplikace.
Já to myslel tak, že třeba vyloženě pro složitější výpočty je vhodné použít tvůj oblíbený Fortran. Pro multiplatformní okení aplikaci bych zase dal přednost Javě. Céčko a C++ na roboty a šváby. Lisp na sondy atd. Podle toho, kde se přímo nabízí, že se pro to hodí.
Je tam jiná možnost. Lisp se vejde do 30 KB, Forth dokonce do 6 KB včetně editoru. Ovšem pokud ti C vyhovuje...
Osobně si myslim že čistý C je pro začátek uplně nejlepší jazyk. Jednak je dost nízkoúrovňovej na to abys pochopil základní věci jako jak funguje správa paměti (což by měl znát, nehledě na to v jakym jazyce programuje a je to docela základní věc) a nemusel v něm hned na začátku řešit třídy a objekty, když ani nemáš páru co to je, jednak když pochopíš pointery, je pak mnohem jednodušší pochopit referenční typy ve vyšších jazicích, zároveň je dost jednocuchý na naučení, protože v něm neni moc co se učit narozdíl od Javy, C# nebo nedejbože C++ (ačkoliv C++ mam nejradši, uznávam že pro začátek je to asi nejhorší C-based jazyk vůbec). Netvrdim že by měl u C zůstat a programovat v něm, ale myslim že začít s nim je lepší než se vrhnout rovnou na OOP jazyk. Když se učíš základy, tak stejně o OOP nic nevíš a nepoužíváš ho, dokud se nenaučíš základní prvky procedurálního programování. Nehledě na to, že po C mu bude učení se Javy nebo C# připadat mnohem jednodušší. Neni dobrý když začátečník hned zezačátku nabyde dojmu, že programování je jednoduchý a Java i C# podle mě nabytí tohohle dojmu docela podporujou, protože programy který začátečník dělá v nich jednoduchý budou, v C tolik ne. Předevšim mnohem líp pochopí jak to vevnitř funguje (např. řetězce jako pole znaků a podobně).
já osobně si myslím že z C přejít na C++ a poté kamkoli je
ideální... v C se pochopí základy programování v C++ když se pobere OOP
tak pak už si můžeš vybrat cokoli
Pro naučení je nejjednodušší Lisp. Dobře je na tom i Python. C od počátku vytváří v programátorovi špatné návyky, kterých se v OOP těžko zbavuje. Java a C# jsou dost rozsáhlé a proto se o dost pomaleji učí, ale určitě bych jim dal přednost před C.
Já v Céčku taky dělal. Donutí tě to myslet, protože tam spousta fcí
není a ty nevíš, jak přidat knihovny, tak si je prostě napíšeš. Tím se
učíš algoritmizaci. Ovšem stejně tak můžeš začínat i v C#. Ten tě
ovšem vybízí, používat již vestavěné metody a ty mu podlehneš a pak
nevíš jak bys ji nakódil, protože jsi to neřešil. Kdežto céčko, to tě
k tomu dokope. S tím souhlasím. Ale nevyděl bych to jako problém začít
dělat v Javě. Pokud chceš, tak si budeš ty metody zkoušet dělat vlastní.
Sám si občas taky napíšu vlastní metodu, protože potřebuju, aby fungovala
trochu jinak. A když nevím jak funguje a ani mě to nenapadá, podívám se do
dokumentace, kde je rozepsaná její struktura a najdeš i mnoho dalších
metod, které dělají to samé. Takže se můžeš inspirovat.
Java tě zas dokope k OOP. To pak vidíš, jak když někdo na to přejde z
Céčka všechen kód cpe do jedné třídy. Což pak není moc hezké. Znám i
také, co se jim OOP nelíbí a na třídy si nehrajou. Ale takhle bych nechtěl
dělat ani menší prográmek, natož projekt OOP je nádherná věc a já ji
uznávám.
Ten přechod přes C++ neni uplně nutnej, pokud v něm nechceš vážně
programovat, jelikož C++ je kure...y složitý, a je toho v něm hodně co se
musíš naučit, tak pokud v něm neplánuješ do budoucna dělat, je možná
lepší ho přeskočit a dělat rovnou třeba v Javě (aspoň nebudeš mít
někdy pocit, že ti v tej Javě něco chybí ). Já v C++ dělam, protože se
mi dost líbí, v čistim C bych už nedělal.
Z C++ bych se OOP učit nechtěl. Opravdu je lepší C++ přeskočit.
Já uznávam svobodu jazyka kterej tě nechá si vybrat jestli programovat
objektově, strukturově nebo kombinovaně. Já v C++ běžně se snažim psát
co nejvíc objektově ale časem vždycky narazim na něco co se mi prostě
nelíbí dávat do jakýchkoliv zbytečných tříd, tak to rozepíšu do
samostatných funkcí. Většinou mam tak 80 - 90 % kódu objektově a zbytek
strukturově. To s těma knihovnama dělam pořád, občas si prostě napíšu
svojí, tak, aby mě vyhovovala .
Podle mě dá, jenom tě k tomu přímo nenutí a neni to v něm tak přirozený.
Jojo, rozumím. Jen mám takovou zkušenost, že pár běžných jazyků jsem
celkem rychle dokázal na nějakou základní úroveň vstřebat, ale to OC jsem
prostě nedal ani trošku - dali si hodně záležet, aby syntaxe
nepřipomínala nic jiného
Jen nesouhlasím s tím přístupem ke knížkám - vůbec není podle mě na škodu si vzít nějakou podrobnější knihu o technologii, kterou se chci vážně zabývat, a pročíst ji +- celou, od začátku do konce. Není problém přeskočit co počítáš, že se v případě potřeby doučíš později, ale výhoda je, že se mnohdy dočteš o věcech, které bys jinak jaksi ani nevěděl že máš hledat.
Myslím, že cíl není zaklapnout knihu na poslední straně a říct si "super, umim to", ale spíš když narazíš na nějaký problém, tak si řekneš "na to by se možná dalo použí to ono, co jsem o tom onehdá četl"
Asi jsi ještě nepřičichl ke skutečně objektovému programování, protože v C++ se dá dělat jen omezená část OOP.
To platí pro téměř každý programovací jazyk, i pro javu a C#.
Ale jistě uznáš, že Java a C# mají k OOP mnohem blíž než C++. To už raději Lisp, ten umí OOP lépe než C++, i když je přes 50 let starý.
Možná, ale C++ má třeba podle mě mnohem rozsáhlejší možnosti práce s třídama než Java a C# dohromady.
Jenom člověk tohle všechno musí znát a ovládat.
EDIT: Nevím jak je to v C# ale v C++ jsou rozhodně mnohem větší možnosti co se týče konstruktorů při dědění než v Javě.
C++ umí v tomhle směru téměř to samé, jako java/c#, v některých ohledech je na tom dokonce i líp.
V Lispu jsem nedělal, takže se rád nechám poučit. Řekněme pokud mám problém (například ono zpracování obrazu v kameře), mám k němu matematicky optimální algoritmus a znám čip, takže vím, jak ho v C (nebo asm) nejlépe implementovat. Pokud to napíšu v Lispu, můžu očekávat stejně rychlý výsledek? S tím, že 10x pomalejší považuji za velký rozdíl, protože zpracovávat 7fps a 70fps na běžící lince rozdíl opravdu je. Tomu se mi nechce věřit.
10× pomalejší by to mohlo být třeba v PHP, ale Lisp na tom bude mnohem lépe. Tipuji tak o 20 % pomalejší. Pokud by to bylo o víc, tak se do Lispu dopíše v C jádro té kritické funkce, např. DCT a zbytek se píše v Lispu.
Lisp je kompilovaný jazyk, který se tváří jako interpretr. Tedy vlastně JIT kompilátor.
I ta Java nevycházela špatně, možná by to stálo za pokus.
Kde vidíš jakou hádku?
Java ve výkonnostních testech obvykle vychází velmi dobře.
Vždycky záleží na tom, jaký problém řešíš. Jestli je to drcení čísel, umělá inteligence, součást OS nebo okenní aplikace. Na každý se hodí něco jiného a občas se hodí je zkombinovat. Kdysi se mi podařilo u jedné úlohy zkombinovat 5 jazyků. Celý program byl v jednom zdrojáku, který měl 65 znaků.
twl fakt? co to bylo za
jaziky a program celkovej
tak tohle by se mi asi nikdy nepodarilo...
ps: pocita se za spojeni jazyku kdyz napr. v GM dam start na program v
batchi?
Už přesně nevím, ale myslím si, že jsem tam zkombinoval programy Bash, Curl, AWK, Mail a Cron. Každý z nich měl nějaké parametry, což by se dalo označit za skripty. Program každý pracovní den zpracovával nějaká data z webu, porovnal s daty předchozího dne a výsledek mi posílal SMS na mobil.
Zobrazeno 41 zpráv z 41.