Stránka 1 z 6

System.out.println("Programování");

Napsal: 12.10.2006 17:07
od Vlasák
Jednou tu už sice podobné téma bylo, ale už ho nemůžu najít, k dohledání je jen nějaký odstřihlý cancour. A myslím, že by byla škoda, kdyby se tomuto nevěnovala pražádná pozornost... ;-)

Zkoušíte programovat? Programovali jste a (ne)bavilo vás to? Živíte se tím? Baví/trápí vás to ve škole? Anebo si zkoušíte na internetu publikovat svoje stránky?

No, spíš trochu víc z reality - Tabulka na webu pořád vypadá jinak, než jak chcete, aby vypadala? Váš výtvor chodí pomalu? Anebo vůbec nechodí a nemáte tucha proč? ClassCastException a Type Mismatch vídáte častěji než je zdrávo? Anebo máte jen nějakou zajímavost, která stojí za to, aby byla sdělena? Sem s tím ;-)

...anebo třeba s tím "kolik jazyků umíš, tolikrát jsi člověkem" ;-)

Napsal: 12.10.2006 17:16
od drake127
No, ClassCastException nebo type Mismatch vidí jen ti amatéři, kteří se bojí o svůj zadek. My profesionálové ujíždíme na access violation nebo ještě lépe modré obrazovce (ale to už jenom ti profíci mezi profíky).

Napsal: 12.10.2006 17:25
od Vlasák
drake127: ano, to je ta sorta profesionálů, která potřebuje pointer snad i k cestě na záchod ;-)

Napsal: 13.10.2006 10:06
od Vlasák
Každopádně na programování v C/C++ pod XP mě vždycky fascinuje, když člověk v kódu nechá nějakou pitominku a XP mu po spuštění hodí hlášku o odeslání problému chybovému centru MS ;-)

Napsal: 13.10.2006 10:36
od Bodkin
Někdo nám loni ve škole vykládal, že jsou dva druhy programátorů. Pečliví a drsní. Pečlivý si všechno nachystá, alokuje&dealokuje pamět a nemá problém (no i když :lol: ) Drsný nic takového nedělá... A pak se divý.

Napsal: 13.10.2006 11:46
od sevencreature
V Javě se programuje moc hezky :-P Pokud vím, tak Python je taky fajn (obzvlášť pro specifické aplikace).

.NET je ale .NET :lol: :lol: :lol: - přijde mi, že je nějak moc populární... Každopádně Microsoftí diskusní a support fóra jsou naprosto parádní věc :-P

Napsal: 13.10.2006 16:32
od Cammaris
C# je zřejmě nejperspektivnější jazyk do budoucna.(škoda že nemám zatim čas se to učit)

Napsal: 13.10.2006 17:18
od Vlasák
Bodkin: Ti drsňáci jsou profesionálové, o kterých mluvil drake ;-)

Cammaris: no, s C# bych tak jistý nebyl... Vyniká marketingem, pár vychytávkami, co současná Java nemá, ale jinak je to Java v bledě modrém. Ovšem pouze navenek... Java je dnes mnohem etablovanější, což s sebou nese takový samovzestupný prvek - spousta third party projektů a hlavně open sourceovost a komunitní přístup. Myslím, že tímhle akcie dost stoupají. Nemluvě o vážně široké šíři využití...

Ale jsem sám zvědavý, jak se to vše vyvine - vyhlídky jsou poměrně vyrovnané. MS má značku a .net podporu v masovém OS Windows (bude to tak stále?). Java pak v OS (tentokrát ve smyslu Open Source), komunitě a současné i budoucí šíři záběru...


______
BTW Tady nelze nezmínit sunovskou šoumeskou vizi o budoucnosti it světa ;-)

V představách Sunu tak bude mít absolutně každá věc svojí IP adresu, podle které bude jednoznačně identifikovatelná. Vaše brýle budou mít IP adresu, co kdybyste je náhodou někde zapomněli. Vaše bíle spodky budou mít IP adresu, aby mohla pračka před zapnutím vyhodnotit jestli jste je náhodou omylem nesmíchali s barevným prádlem. Vše bude samozřejmě řízeno softwarem napsaným v Jave. ((c) Dagy)

Napsal: 13.10.2006 22:12
od Yoshi Snipo
http://www.fiit.stuba.sk ... sem chodim na skolu (odpoved na otazku o programovani :-D odbor Informatika ^^ )

Napsal: 14.10.2006 11:03
od krokodile
Vlasák píše: ...ale jinak je to Java v bledě modrém...
Nejsem teda žádnej programátor, ještě když jsem měl počítač na programování tak jsem se někde dočetl, že Cčko a Java jsou skoro stejný, jenže Java neni optimalizovaná, takže složitější programy pod ní běží klidně i 40x pomaleji než v C++...

Co na tom pravdy nevim, Javu sem nikdy nepoužil

Napsal: 14.10.2006 11:13
od drake127
To není o optimalizaci, ale o jiném přístupu ke kodu - Java se kompiluje až při spuštění, proto je během spouštění aplikac napsané v Javě čas jít na kafe. Toto se myslím projevuje na výkonu nejvíc. Vlastnostem jako jsou výjimky, správu paměti bych přiznal jen řádově menší vliv na rychlost.

Stejná nebo alespoň podobná situace je s .NETem, takže tento souboj nemá vítěze. Připočtěte si k tomu nutnost Frameworku, který vám kod za běhu překládá a jste s pamětí zase o kousek jinde.

Tyto interpretované jazyky nikdy nedosáhnou rychlostí na nativní Win32 aplikace (napsané třeba v C), ovšem práce s jejím vývojem a chyby způsobené větší odpovědností ne vždy toto vyváží.

Napsal: 14.10.2006 11:34
od Vlasák
krokodile: java a c++ mají hodně podobnou základní syntaxi, c++ může být podobně pseudoobjektové jako java, ale jinak to je nebe a dudy, jak říkáš - jde o jazyky s diametrálně jinou filozofií. Mluvíme-li tu o faktoru rychlosti hotového programu, stručně asi takhle:

Programy v c++ jsou kompilované, zatímco v javě interpretované. Z toho plyne, že jeden a tentýž program javy lze použít kdekoliv, kde je javové prostředí - od od procesoru, přes operační systém až samotný hardware (klasikou nepřitaženou za vlasy je jeden program, který funduje na windows, unixu, macos, mobilu, palmu i xyztého pda).

Takže obé má své nevýhody a výhody - programy c++ se musí v lepším případě rekompilovat (v horším přepisovat, v ještě horším zcela nově navrhnout, v nejhorším zbastlit s koncým prostředím, hw a vším dohromady, aby si to vzájemně rozumělo) pro každý OS/HW, ale z toho plyne i větší rychlost - vše již "připravené" pro tu koncovou konfiguraci zařízení je připravené předem.

Zatímco programy javy jsou přenositelné, ale nejsou tedy "připravené" pro koncové zařízení - protože se předem a priori "neví", na čem se to bude spouštět. To znamená, že při vykonávání programu je potřebná nějaká práce navíc - tzv. virtuální stroj (VM) zdrojový kód interpretuje. To znamená, že zdrojový kód programu v javě je kódem pro virtuální počítač a je teprve přechroustán na kód cílového zařízení. Nicméně nutno říct, že takhle primitivně už to dnes není - nové VM provádějí optimalizace na úrovni kódu i překladu (JIT - určité pasáže jsou přeloženy do instrukcí koncového zařízení a neinterpretují se pořád dokola...), máme tu sporné JNI (Java Native Interface), které dovoluje kombinovat Javu s C (což je sice rychlejší, ale ne tak, jak by se zdálo; ale hlavně to odstřeluje x dalších předností javy, takže je to spíš krok vzad i přes tu rychlost).

Na zpomalení javovského programu mají pak vliv i další vychytávky (správa paměti, implementace multithreadingu, bezpečnost, atd. atd.), ale to už by bylo na obšírnější povídání.

Ale abych se začal nořit zase trochu výš - mluvíme-li tady čistě a pouze v kontextu rychlosti programu, ta je sama o sobě je dost relativní a záleží na konkrétním programu. Nevím, zda je dnes v něčem C++ 40x pomalejší, java se dost zrychlila, ale v něčem jistě bude C++ mít velký (a zřejmě nedosažitelný) náskok. V některé aplikaci je C++ rychlejší, jinde je to nastejno a onehde zase vede Java.

A teď ještě víš... Java v bledě modrém (navenek) je C# a ne C++. C# je jazyk, který si bere Javovskou ideu virtuálního stroje a interpretovaného kódu. Syntaxe je s Javou velmi, velmi podobná - ještě víc než mezi Javou a C++... A prostě je to na první pohled vůbec taková "druhá" Java... Jenže, jak píšu v předchozím příspěvku, druhá Java to není - nejen z toho, čím to jazyk je, ale jakou má šíři záběru, zavedenost v oblasti a ve věcech kolem...

EDIT: ad drake... no, a C++ zase nikdy nebude jako assembler ;-) To je prostě o tom, jak říkáš, co člověk chce a hledá. Vytrikovaný assembler může být bleskově rychlý, ale dělat v něm něco na desktop jako třeba v C++, bude peklo, pakliže člověk bude schopen to vůbec dodělat. A podobně větší desktopové a hlavně a zejména enterprise věci zase překračují hranice zvládnutelnosti v C++...

Napsal: 14.10.2006 11:49
od drake127
Vlasák: No vždyť vidíš, že máme na věc velmi podobný názor. Já jen nevidím jako super výhodu tu přenositelnost, kterou v C++ (ano snaha je ale nutná) dosáhneš taky a kompilaci beru jako něco, co se stejně musí provést a je lepší ji dělat jednou při vydání a ne při každém spuštění.

Naopak vidím jako výhodu objektový model, bezpečnější správu paměti, vychytnější výjimky.

Já C++ neobhajuju, neodvažuju se hádat jeho budoucnost. Je otázka, jestli bude vždy nutnost co nejrychlejšího kódu (s ohledem na jeho chybovost a pracnost vytvoření - tady si najdeš svůj assembler) nebo budeme mít počítače tak rychlé, že se v tom kompilace algoritmu ztratí.

V C++ programuji, protože se mi jazyk líbí svým přístupem "programátor má vždycky pravdu" - "tohle číslo je pointer na okno, rozumíš?, takže k němu laskavě přičti 5 a zkus to okno otevřít." Je to ovšem *velmi* dvojsečná zbraň.

Napsal: 14.10.2006 12:08
od durana
Ja som sa trochu ucil programovat, a najviac ma asi bavilo C++.
Najviac ma stvalo ze narozdiel od inych programov to skompiluje uplne kazdu hovadinu, a clovek to nemusi dlho opravovat, ale az po spusteni si vsimne ze to je totalne zabugovane. Ale ja som na preciznost nikdy nebol a radsej budem 2 hodiny opravovat bugy ako 2 hodiny opravovat chyby kym mi nieco vobec spusti. Ako programator stojim za h***o, ale radsej zabugovany program ako ziadny :-D .

Napsal: 14.10.2006 12:20
od Vlasák
drake127: co se týče přenositelnosti, to je dost široké téma k diskuzi. Já jí za výhodu a docela velkou beru - ať jde o práci s I/O, text, vlákna, GUI, bezpečnost a dalších xyz důležitějších věcí a minorit v podobě accesibility, internacionalizace atp. Vše je totéž, ať v pc bzučí unixová záležitost nebo windows - člověku je putna, jaký souborový systém a vůbec systém běží. Nemusím se hrabat s knihovnou posix vláken a jak je co v čem implementované. Tak, jak to je jednou, to pojede v x-konfiguracích bez nutnosti odkrývat lecjaké pandořiny skříňky. To by byla soft-přenositelnost.

Přenositelnost mezi hw je už zajímavější. Tady už to není takový křišťál. Při programování midletu pro mobil už člověk nemůže prdnout to, co napsal s vychytaným GUI na pc ;-) Ale základní konstrukce zůstávají stejné, protože micro edition Javy si bere podmnožinu standardní platformy. A pakliže se člověk drží specifikace (samozřejmě v micro zařízeních si výrobci přinášejí své platformy, aby šlo operovat s telefonními seznamy, bluetoothem a dalšími vychytávkami, co ovládá zrovna ta daná krabička), pak to na každém mobilu, pda, lednici a co_já_vím_na _čem pojede stejně bez jakýchkoli zásahů ;-)

Rozhodně to výhoda je - záleží pak na pohledu a situaci, jak moc velká.

Sám jsem zvědavý, jaká budoucnost C++ bude. Ono se dá těžko něco říct, protože to je dost promotané s existujícími OS... A teprve se změnou jejich koncepce se asi s C++ něco začne dít...

Je pravda, že rychlost počítačů nahrává konceptu těžit z interpretovaných programů - náklady na výkonost jsou u nich v podstatě fixní a výkon jde stále dopředu.

Otázka je taky nakonec v hw... současný koncept pc architektury je v podstatě přes 50 let starý vynález, který dnešním potřebám vyhovuje stále méně. Myšlenka "objektového" hw taky není novum, ale bohužel je stále daleko v pozadí (a přitom stačilo málo, aby před lety zvolili pro produkci tu experimentálnější verzi 386 ;-))...