Osobně si myslím, že ani .NET ani Java se už moc dlouho na výsluní ohřívat nebudou. Obě jsou nepříliš podařené technologie, které jsou dobré akorát pro to, aby bylo proč získávat drahé diplomy (samozřejmě pouze od Sunu a Microsoftu). Podle mě budoucnost zůstává Céčku a C++ s doplněním od Pythonu (hlavně jako výukového a prototypovacího jazyka, místo dnes stále ještě používaných Pascalu a Basicu).
Nebo si myslíte, že je jiný důvod, proč jsou Windows a Solaris napsány v Céčku?
No je to presne naopak myslim, ze C++ nebo ?! C se budou pouzivat uz jen pro nejake low level aplikace apod. ale vetsina ostatnich veci bude naprogramovan v necem takovem .
Ma to nesporne vyhody o kterych vi kazdy kdo o nich chce vedet (multiplatformost, garbage collector atd...) .
My programuje na obouch platformach a mono je pro nas v podstate spasou a uplne se v tom rochnime .
Podle mich zkusenosti a toho je jasnym favoritem Python. Napsal jsem uz par radek a patri jednoduse k spicce. Osobne neznam nic lepsiho (mozna se milim, nekteri, kteri maji na konte 100x vice aplikaci a upgradu jiste prominou), ale Python je podle me nejuniverzalnejsi programovaci jazyk (alespon pod Linuxem urcite).
pridavam sa k nazoru, pracujem v Pythone 3 roky, pouzivam ho v nasej firme na spravovanie buildov, a robim v tom klient-server aplikaciu s gui vo wxPythone. Nic lepsie som zatial nenasiel, jednoducho si doma na notebooku pod linuxom napisem kod, poslem do prace a pokracujem pod windows v pohode dalej. Dokonca aj ked v praci primarne pouzivam C# viem volat kod zo C# v pythone a naopak. Mozte si teoretozovat kolko chcete ale ja to mam v praxi vyskusane :-)
Python je asi fajn, ale s principu je to interpreter. V momente ze potrebujete aplikaci pro PDA zacinate mit problem a skoncite u C++ anebo Javy. Zalezi kam se pozene vyvoj, zda stolni PC/notebook bude stale nosnou platformou. Obecne, na PC udelate vse, ale pokud potrebujete neco specialnejsiho (vestavene systemy, prenosne pocitace, mobilni telefony) tak zjistite ze mate jen omezenou moznost volby co muzete pouzit.
Sice interpreter, ale něco podobného lze říci i o aplikacích v javě nebo .NET Ovšem ať tak nebo tak, asi není náhodou, že moje oblíbené (multiplatformní) aplikace,jsou postavené na pythonu a glade a jedou podstatně svižněji a s menším množstvím problémů než ty co používají výše zmíněné technologie.
Jo, taky jsem zaregistroval, že Pythoní aplikace jedou tak nějak rychleji než ty v céčku, o Javě ani nemluvě. Btw. nevím jak .NET, ale Java je určitě interpretovaný jazyk - to k tomu příspěvku nad Vámi.
- ZMINOVANA RYCHLOST (VIZ SEZNAM.CZ - BLESKOVE ODPOVIDANI NA DOTAZY Z DB - SAMOZREJME HRAJE KLICOVOU ROLI DB SAMA)
- SPOLEHLIVOST (JESTE JSEM NEZAREGISTROVAL APLIKACI, KTERA BY PRI ODLADENI NEJAK ZLOBILA - NAROZDIL OD JAVY)
- INTERPRETER A VSECHNO JE POD GPL A TUDIS SE NIKDO NEMUSI BAT LICENCI (JAVA ZAPLAT PANBUH PO 10-TI LETECH TAKY, NO UVIDIME CO TO PRINESE)
- PRI NAROCNYCH APLIKACI (MYSLIM TIM VYHLEDAVACI A KATALOGIZACNI DB, SPOLEHLIVOST)
Je mozne ze jsem na neco zapomnel, kdyztak mne opravte.
prosím o doplnění
- máte nějaká srovnání s něčím podobného ražení jako seznam ale v javě, ať si můžu udělat obrázek o rychlosti.
- nějaký příklad ? "zlobí" JAVA jakožto jazyk a runtime, nebo applikace napsaná člověkem který ji prostě napsal špatně ??? Např. znám spoustu aplikací napsaných v C++ pro linux a fungují perfektně a znám v tomto jazyku applikace pro Windows které stále padají. Také je to ale i naopak. Kdo za to může ?? Programovací jazyk nebo vývojář ??
- on se někdo bál licencí na javu ?? nic takového jsem nikde nezaznamenal
- poslední připomínku bych prosil přeložit do češtiny protože jí nechápu
python ma problem v tom, ze nedokaze bezet opravdu paralelne - i kdyz ma program v pythonu vice vlaken, tak vzdy bezi pouze jedno (i na vice procesorovych strojich a i v pripade, ze pouziva funce napsane v cecku). coz je v dobe core2duo atd. dost blby omezeni.
existuje sice stackless python, kterej tohle omezeni nema, ale vzhledem k tomu, ze u nej neexistuji ani balicky pro nejrozsirenejsi linuxovy distra, tak je jeho pouzitelnost (snad jen zatim) dost omezena
Tohle není tak docela pravda. CPython má tzv. global interpreter lock (GIL) a ten rozhodně neblokuje funkce psané v C, aspoň teda do té doby, než vstoupí do interakce s interpreterem. Takže ano, GIL brzdí, ale pokud funkce v C většinu času běží samostatně, tak to nějak zvlášť nevadí. Další možnost je samozřejmě namístu threadů forkovat (samozřejmě to není možné vždy, ale často je to dobré řešení) a v tom případě GIL nevadí ani čistě pythonovským rutinám, protože mají celý interpreter pro sebe. O GIL se poměrně často a bouřlivě diskutuje, ale zatím se vývojáři CPythonu nemají k tomu, aby ho odstranili.
Ale tak, dá se udělat nějaký vzorek obdobných aplikací a podle toho to porovnat. Jde mi o to, nakolik je rychlost Pythonu dána tím, že samotného pythoního kódu mnoho není a okamžitě se jde do nativního céčkového kódu. Na to se dají udělat nějaká měření a odhady.
Java ma velice propracovany JIT kompilator (preklada dynamicky kod do nativniho kodu a provadi ruzne runtime optimalizaci, takze to zrovna interpretovany jazyk neni - navic kdyz uz, tak se nemuze prinejhorsim interpretovat jenom bytecode), coz je neco, s cim se nemuze rovnat ani python, ani Mono (ovsem nativni C# implementace od MS s tim samozrejme srovnatelna je, tusim byla i o neco rychlejsi).
Navic skalovatelnost Javy je trochu nekde jinde, opravdu netusim, s cim by se v Pythonu dal nahradit treba takovy Sun Application Server a technologie jako EJB.
Ale nic proti pythonu, je to velice dobry skriptovaci jazyk, konec koncu ho obcas taky pouzivam :-) Ale neoznacil bych ho zrovna za konkurenta Javy, jeho pouziti je jinde a mohou velice dobre koexistovat.
Java pomaleji startuje, má větší paměťové nároky a pomalejší GUI. Ná výkonově náročné věci se v Pythonu používají knihovny napsané v C. Výsledkem je aplikace, která má svižnější odezvu než aplikace napsaná v javě, přestože JVM je rychlejší než interpret Pythonu, což jediné porovnává váš test. Proto je Python vhodnější na malé desktopové aplikace typu konfigurační nástroje nebo třeba skripty, než Java.
Zajimavy napad, ovsem domnivam se, ze takovy zebricek neni mozne udelat. min i proto, ze statici nebudou dobre hodnotit dynamicke jazyky a opacne. A koneckoncu jaky zebricek, vsechno je to jenom TS :-D
Jinak by tam pravdepodobne byl Lisp, Haskel, Ocaml, Smalltalk, Self a podobne vecicky
Muj nazor na Python: Proc museli tak nadejny jazyk od zacatku zabyt tak pitomym napadem jako je 2D layout. Nesnasim, kdyz mi nekdo vnucuje odsazeni. (A BTW, pokud chce nekdo porovnat rychlost pythonu a C, at porovna klasickou a C verzi portage toolu v Gentoo).
Ono to ma sve vyhody a predevsim je to velmi logicke. Taky se mi to z pocatku nelibilo, protoze je to nezvykle, ale prisel jsem tomu na chut a ted to vnimam pozitivne.
Zkousels nekdy napsat neco vetsiho, udrzovatelneho a bezpecneho v C++ nebo C?
Asi ne, protoze jinak bys takovou blbost nevypustil z prstu.
Vetsiho nemyslim 100 radek ale dejme tomu 10 000 radek (nebo 100 000)
(i kdyz tohle je velmi smesny argument, protoze 10 000 radek
v Delphi, Jave, C# je velmi slusny program, narozdil od 10 000
radek v C je par oken (napr. protoze 70% kodu je testovani volani misto pouziti vyjimek, atd.).
Priklad: proc jsou vsude exploidy na buffer overrun? Protoze C(+)!
V soucasnosti uznavam tyto jazyky pro APLIKACNI PROGRAMOVANI: C#, Object Pascal, Java, a asi i Python, Ruby.
Pro low level nebo specialni ulohy muze byt pouzito C
Mimochodem pletes si platformy (.NET) a jazyky (Java, C, C++).
Treba Microsoft ma IronPython (implementace Pythonu pod .NET) (http://www.ironpython.com/).
Nema se cenu rozcilovat, teoretiku je spousta.
V nekterych jazycih se ale podobne chyby delaji hure. Stejne tak problemy se spravou pameti, progaramator udela mene chyb, pokud nepotrebuje pouzivat pointry a nemusi se starat o spravu pameti. Ale kazdy luxus ma svou cenu... ;-)
Programujem pod C++ roky a pointery skoro vobec nepouzivam. Nestaram sa ani nijak extra o spravu pamati. Pokial planujem nieco alokovat dynamicky, je jasne, ze si to v destruktore skontrolujem a pripadne dealokujem. Zacinam mat pocit, ako keby garbage collector sluzil primarne pre programatorov s kratkou pamatou, alebo co ...
Teorie je krasna. Ale proc je tolik programu v Linuxu (treba aplikace pro Gnome), ktere maji problemy s alokaci pameti (neuvolnena pamet). Anebo Firefox, nechte jej par dni bezet a budete hledat volnou pamet. Proc stale tolik aplikaci pada na poruseni ochrany pameti, kdyz je to tak snadne a primocare??
Pokud zvadnete ukazatele a alokaci pameti, pak uz vas muze zaskocit jedine zaludnosti asynchronniho programovani, synchronizace vlaken, sdileni zdroju.
To je jednoduchy. Prectete si na strankach mozilly tohle.
Mozilla je napsana v nejakem speudo jazyce, ktery sice pripomina C++, ale neni to C++. Duvodem je strach z chyb a z nekompatibilit v kompilatorech. U C++ se nabizi otazka proc vlastne porad pouzivame programovaci jazyk ke kteremu
ani po tolika letech neexistuje plnohodnotny a bezchybny kompilator?
Nehodlam resit jestli budoucnost patri Perlu, Pythonu nebo Ryby, jsem si ale jistej, ze budoucnost patri multivlaknovym aplikacim. Podivejte se jake problemy maji s multithreadingem PHP nebo Perl. Scriptovaci jazyky, ktere zavisi na knihovnach
napsanych v Ccku budou mit problemy s multitreadingem vzdycky. Jave a .NET maji tu vyhodu, ze jejich knihovny jsou
napsane v Jave nebo .NETu, je to mozna pomalejsi, ale urcite bezpecnejsi a lepe se v tom hledaji chyby.
Letecký průmysl, armádní zařízení, chemické technologie, jaderná zařízení, lékařské přístroje, ... všude tam je drtivá většina havárií způsobená tím, že někdo udělal chybu. Investují se závratné částky do technologií a postupů, které minimalizují možnost lidské chyby.
Vy ale zřejmě patříte k lidem, kteří nevěřícně kroutí hlavou nad dělníkem co nosí helmu - vždyť by mu musel někdo něco hodit na hlavu a to je chyba lidí, stejně tak jako nad automobilovými crash testy - vždyť bouračka je výsledkem chyby člověka. Aneb pokud vás budu parafrázovat pak "jestli věříš tomu, že tě pak lépe stavěné auto zachrání, tak se mýlíš".
Každý střípek, který omezí možnost vzniku lidské chyby nebo alespoň její dopad je přínosem.
Ano .NET je platforma a přináší plus pouze do Windows. Pod ostatními operačními systémy máme kvalitnější platformy... A co se týče C# - jaké má přednosti před C++? Btw. kolik řádků má jádro linuxu? V čem je napsané? Je udržovatelné? Je bezpečné? V čem je napsána většina FOSS aplikací, běžících na linuxu/unixu/bsd? Jsou udržovatelné a bezpečné? Myslím, že si dokážete odpovědět sám. Sice se rozčilujete nad teoretizováním, ale sám v praxi vidíte pouze špičku ledovce!
nikto netvrdi ze v c sa neda napisat nieco velke a udrziavatelne (bohuzial niektory ludia nevedia alebo nechcu citat), ale to, ze java je robustnejsia ako c je proste FAKT! uz len to ze napr. seg fault sa v nej ani len neda urobit o tom svedci
Coz je presne to, co je pro vyvoj podnikovych aplikaci super - nepotrebuji "rocket science", jedna se o naprosto nudne programovani, ale potrebuji stabilni a dobre udrzovatelny system, ktery naprogramuji prumerni programatori.
Java je krásný jazyk, ale mizerná platforma. Proto mám raději .NET, ve kterém se dá napsat více věcí. Například v Managed C++ lze kombinovat .NET a "klasické" C++. Pro běžné aplikace je ale lepší C#.
argumenty nejsou az tak spatne, btw. ja "par" radku kodu v C napsal a rikam, ze kdyz clovek dodrzuje zasady, napise snadno udrzovatelnou a bezpecnou aplikaci... pouzivat C na psani okenni aplikace je BLBOST, prave kvuli tomu, ze vetsina kodu je jen obsluha oken, na druhou stranu, v prostredi salovych pocitacu, kde se pohybuji, si nedokazu predstavit napr. .net, vzhledem k povaze aplikaci bezicich na pozadi si vyhodnejsi jazyk nez C nedokazu predstavit
Zkoušel, jsem za to dobře placený, napsáno mám několik milionů řáděk, možná i desítky milionů.
Exploity na buffer overrun jsou ty samé exploity, jako jsou v Javě a Pythonu exploity na neošetřené vstupní hodnoty (případně na buffer overrun jejich interpretů). Žádný jazyk nedokáže zabránit chybám programátora.
Také to srovnání počtu řádek je dost nepřesné, až budeš používat toolkity (GTK, Qt, ICE, …), tak zjistíš, že potom v C++ napíšeš sto řádky to, co v Javě napíšeš na řádků tisíc (nehledě na to, že to bude mnohem rychlejší). Tím také padají argumenty mnohých, že Java a .NET jsou portabilnější.
Z toho také plyne to, že není pravda, že by Céčko nebo C++ byly těžko udržovatelné. Stačí psát dokumentaci. Ono je celkem jedno, jestli napíšeš deset tisíc řádků v Céčku nebo Javě, bez komentářů a dokumentace se to bude oboje špatně udržovat. To je možná taky důvod, proč existují věci jako Doxygen a Javadoc.
Pokud se ale chceme bavit o kráse jazyka, tak bych na první místo dosadil SmallTalk. Bohužel většinou platí, že čím hezčí jazyk, tím méně je reálně použitelný (snad jedinou výjimkou je ten Python).
Mimochodem, asi ti uniklo, že jak .NET, tak JVM jsou napsány v C++, takže podle tvého tvrzení jsou obě tyto platformy nebezpečné, tudíž by se neměly používat. :)
Samozřejmě vím, že .NET není jazyk, ale platforma; myslel jsem tím jazyky na této platformě běžně používané (např. C#, J#, Visual Basic .NET, popř. i ten IronPython).
A samozřejmě o IronPython vím, mimochodem existuje i JPython. A také existuje PyPy, které by mělo odstranit tvoje námitky na buffer overruny, bohužel se tak neděje.
Mimochodem: proč chce po mě Windows Vista tolik systémových zdrojů? Protože .NET. To je také jeden z důvodů, proč si myslím, že se vývojáří vrátí k C++. Nenažranost .NETu a Javy je neuvěřitelná (samozřejmě Python na tom není o mnoho lépe, ale ten bych bral jako jazyk na jednoduché úlohy a na prototypování, na což se ani Java ani C# nehodí).
Jaderna zarizeni jsou vyvijena v Ade, ktera je pro tyto ucely navrzena a odladena. Napr. ridici system pro Temelin je v Ade (vyvijel to myslim Westinghouse). Nevyhodou je, ze Ada compiler pro kriticke aplikace je sakra drahy, ale jinak je to zajimava technologie.
A hlavne: kdyz uz se nekdo dokaze naucit Adu, tak je schopen psat programy inteligentne. IMHO slusna cast spolehlivosti tehle obskurnich jazyku spociva v tom, ze v nich nepisou "prumerny programatori" (natoz aby mluvili do jejich vyvoje).
Ani nemusím, jsou to zkušenosti. Céčko, C++, C#, J#, Javu, Python, Pascal (Borland Pascal, Object Pascal aka Delphi) a Visual Basic (vč. .NET) jsem používal a s C++ a Pythonem se pracovalo nejlépe. Dneska používám Python na menší úlohy a na prototypování, C++ na vlastní implementaci.
Pokud budete dělat nějaké pořádné projekty (typu databáze, velká aplikace, nebo 3D-akcelerovaná počítačová hra), brzo narazíte na pomalost a nenažranost jiného řešení, než je Céčko nebo C++.
Tak zrovna s Pascalem bych nesouhlasil. Podle mě je to jeden z nejvhodnějších jazyků pro výuku a to proto, že je jednak snadno čitelný, má velmi striktní kompilátor a také má poměrně kvalitní vývojové prostředí - ve win Delphi, jinde je celkem dobrý FreePascal, nebo Lazarus. Python si myslím není dobrý na učení - je dost volný a umožnuje kdejaké prasárny, díky nimž se pak může hůře hledat chyba v programu. Ale pořád je to lepší než Basic... Podle mého názoru na výuku programování je jednoznačně nejlepší Pascal, na reálné nasazení pak C(++) a Python a v některých oborech Fortran. .NET podle mého nepřináší žádná významná plus no a Java je děsně pomalá a většina aplikací naprogramovaných v Jave mi příjde, že jsou buďto odfláknuté nebo nedodělané ... Uvidíme, co přinese GPL Java...
Rozhodne souhlasim ze vyuka je to jedine k cemu je Pascal dobry. Je jen otazka, jestli by nebylo vhodnejsi ucit na jazyku, ktery by mel tyto vyhody pascalu ale nebyl tak vzdaleny praxi ... samozrejme by takovy musel existovat, protoze C,C++,C#,Java,Python nebo treba PHP (o Perlu nemluve) takovymi jazyky zcela urcite nejsou.
Java trpi v mensi mire stejnym problemem jako PHP: pri vyvoji jejich zakladu se udelali nejake chyby a ted uz neni mozne je opravit (tedy, v PHP to bohuzel zkousi). Obavam se, ze ani GPL Java to nedokaze.
Právě díky možnostem Pythonu odnést programátora do říše chyb a omylů a díky relativně snadnému zápisu se podle mě hodně hodí na výuku teorie programování. Na praktickou výuku programování je pravda ten Pascal lepší, nicméně pokud se někdo naučí teorii, tak může rovnou z Pythonu přejít na C++ nebo třeba Erlang nebo Haskell (což bych programátorům, co se učili v Pascalu, moc nedoporučoval).
Co znamená "odnést programátora do říše chyb a omylů"?
Jinak plně souhlasím s tím, že Python je mimořádně výhodný pro výuku základů a pro výuku programování pro neprogramátory, tedy pro lidi, kteří si občas chtějí nebo potřebují naprogramovat nějaký výpočet, vizualizovat si průběh funkce nebo já nevím co. Od Pythonu se dá odrazit směrem k C nebo C++, Lispu, Smalltalku apod. Učit začátečníka programovat spojové seznamy v Pascalu pomocí ukazatelů, to mi přijde jako maximální zhovadilost.