Bohuzel i Java aplikace se da naprogranovat tak, ze bezi jen pod Windows. U Mona je navic problem ze vzdy zaostava za posledni verzi .NET, takze aplikace vyuzivajici posledni verzi .NET API pod Monem nepobezi. Pokud je ale aplikace psana multiplatformne, tak bezi jak na Windows, tak treba na Linuxu stejne.
„i Java aplikace se da naprogranovat tak, ze bezi jen pod Windows“
Ano (stejnětak mohou běžet jen pod Linuxem nebo kterýmkoli jiným OS), hned mě napadají tyto způsoby:
* nativní metody, JNI
* volání shellu
* použití cest a napevno uvedeným oddělovačem místo java.io.File.separatorString
Podobně to jde i u mobilů, i když tam je mnohem méně možností. Ale zase může být k dispozici proprietální API, například Sony Ericssony mají od Sony Ericsson Java Platform 7.5 API pro zápis událostí do menu činností.
Nicméně z toho, co píšeš, je celkem jasné, že Java je na tom s multiplatformností lépe.
C# je to dobre z Javy doplnene o ine dobre napady (a mozno aj nejake nie velmi dobre napady), takze by bolo divne keby to nebol pekny jazyk (minimalne v porovnani s Javou).
Problem je jeho platforma, jej vyvoj a licencie okolo toho. A to uz zalezi na konkretnom pripade, ci tie problemy s platformou stoja za ten pekny jazyk, alebo je lepsie rovno zvolit este nejaky krajsi jazyk, ktory take problemy ani nema. (poradit nemozem, ja som rokmi deformovany a preferujem C++ syntax, takze napr. z interpretovanych jazykov som skoncil u PHP, co je objektivne hnus, aj v 5.3.x verzii. Ale mne vyhovuje a robi skoro presne to co som od neho potreboval a dokazal som ho rychlo pouzit. Ale ak si niekto novy vybera co sa nove naucit, tak by som to nedokazal doporucit, rozhodne nie ako prvy jazyk, mozno neskor pre doplnenie obzorov.)
Osobne si myslim ze dnes ma zmysel skusit nieco hodne high level (smalltalk, atd…), jscript asi tiez (mam osobnu averziu, ale nieco na tom bude co pise), C#/Java, pripadne C/C++ (ak vam to robi radost a pride vam to prirodzene, ako mne, nasilu to uz dnes nema vyznam).
Přesně to samé a v lepším provedení dnes pro platformu JVM nabízí třeba Scala. Syntace je ± stejná jako v C++ (s malými odchylkami typu hranaté závorky pro generika namísto lomených). Rychlost je v principu stejná jako u Javy, nabízí typovou inferenci, lepší objektový model, traits jsou mocnější nástroj než interfaces, strukturované typy nabízejí podobný komfort jako duck-typing v dynamických jazycích nebo beztřídní objektový model v Go, nabízí přetypování operátorů a vytváření nových (operátor je funkce), perfektní podporu pro singletony, rozšiřování možností „uzavřených“ knihoven pomocí implicitní konverze atd. atp. C# má proti ní v podstatě jenom dvě výhody – lepší IDE, pokud se omezíš na platformu Windows a LINQ. Jinak z hlediska jazyka víceméně jenom samé nevýhody.
„Rychlost je v principu stejná jako u Javy“
Možná u Scaly jo, ale četl jsem o jednom benchmarku, kde Groovy, Jython i JRuby byly řádově (asi stokrát!) pomalejší než Java (byť JRuby bylo cca dvakrát rychlejší než nějaký běžný Ruby runtime).
Nezkoumal jsem moc kvalitu toho benchmarku, ale takovýto poměr je IMHO dosti významný a podle toho, co vím o bytecode, se tomu u dynamicky typovaných jazyků na platformě Java nedivím.
Scala je ale staticky typovaná ( http://en.wikipedia.org/…_language%29#… ), takže tam asi tento problém nebude.
http://www.jakprogramovat.cz/ tady můžeě začít. Je to tam napsané snad pro každého. Vše přehledně vysvětleno po lekcích.
Haskell, Erlang, Prolog, nějaký slušnější dialekt LISPu… Velmi užitečné pro růst od cvičené opice na další level.
No prostě rozšíření obzorů z tebe udělá lepšího programátora a tím budeš pak i v tom C#.
Budeš vědět, které tvé objekty jsou „mutable“ a které „imutable“ a jaké z toho plynou důsledky třeba pro paralelizaci. Nebo budeš mít v malíku, které části tvého C# programu mají být „eager“ a které „lazy“.
Samozřejmě na všechno si můžeš přijít metodou pokus-omyl. Když ale budeš mít Haskellovou průpravu, tak to pro tebe budou známé principy, něco jako návrhové vzory.
Podľa môjho názoru je nezmysel postaviť túto otázku ako otázku na kvalitu toho-ktorého jazyka.
Ak niekto chce programovať, musí sa naučiť analyzovať problémy, tvoriť štruktúry, pochopiť čo sú to dátové typy, čo je to kompilácia, linkovanie, profiler...... Viem niektorí povedia že to vôbec nepotrebuje dnešný programátor vedieť. Presne tak ale potom vyzerajú programy ktoré tvoria.
Ak sa bavíme o jazyku na výuku, začal by som Pascalom (dnes je to Delphi, alebo ešte lepšie FPC/Lazarus). A začal by som procedurálnym programovaním. A hlavne by som hneď od začiatku tlačil „štábnu kultúru“ a „teamového ducha“ pri komentároch, používaní voľajakého CVS…
Takto by som vytvoril niekoľko malých aplikácii a potom by sme si ich pozreli v iných jazykoch (Java, C,…).
Potom možno niečo o „webových“ aplikáciách (perl, php, python, javascript…), prípadne o „low level“ programovaní (asembler). Podľa toho ktorým smerom sa človek chce uberať.
Len programátor ktorý rozumie aspoň trošku komplexnosti tejto problematiky môže byť naozaj úspešný.
Jsem asi hodně konzervativní, ale po letitých zkušenostech (s programováním cca 20 let, s jeho učením cca 6) bych řekl – nejprve základy algoritmů (bez ohledu na jazyk) a zpracování dat v paměti (hlavně kvůli omezením typu přetečení/podtečení), potom strukturované programování na jednoduchém jazyku (nejlépe Pascal – byl stvořen pro výuku), objektové programování (buď opět Pascal, nebo lépe Java/C#), současně s týmovou spoluprací, verzováním, ukázky deklarativních jazyků, …
Když se to vezme kolem a kolem, tak je celkem jedno, o jaký jazyk se jedná, nakonec je důležité, jak a co chce programátor říct. Je to podobně jako u řečníků (=politiků) – nezáleží na tom, jestli mluví česky, anglicky nebo svahilsky, obsah myšlenek je to, co lidi zajímá…
+1
Dodám že s menšími začínám něčím co se hodně hýbe a vypadá hezky.
Například Scratch http://scratch.mit.edu/
Mno mě přijde nejlepší, nejjednodušší a nejčitelnější každopádně Python. Jen škoda, že, jak už bylo řečeno, se tak moc profesionálně nevyužívá jako Java/C++/C# atd. Co se týče těhle jazyků, tak C# neznám, ale Java mi oproti C++ přijde jako špatnej vtip. Sice se ji teprve učím, ale některý věci mi teda hodně vaděj.
Doufám hlavně, že v budoucnu se používání Pythonu pro web aplikace rozšíří alespoň na úroveň PHP/JavaScriptu…
> Jen škoda, že, jak už bylo řečeno, se tak moc profesionálně nevyužívá jako Java/C++/C#
Pro CLI existuje vynikající python-like jazyk boo: http://boo.codehaus.org/
Kdo jednou zkusí typovou inferenci, už nechce jinak ;)
Ovsem tvrzeni, ze to neni spatna volba a ze se hodi na vas projekt je dost odlisne od puvodniho „nejnejnej“ vyroku a da se s nim lehce souhlasit.
Treba me pripada nejjednodussi prolog, nejcitelnejsi asm a java, nejlepsi c++ a smalltalk (a ted muzete hadat co fakt pouzivam) ale pro nekoho jineho to bude uplne jinak. Zalezi na tom, k cemu to chce pouzit, co rozumi slovem „nejlepsi“ atd. Obecne pokud nekdo prosazuje bezhlave jeden jazyk (nebo cokoli jineho) aniz by znal nasazeni, ocekavani atd. tak mi to prijde dost podezrele. O mi slo v predchozim prispevku.
Myslim ze to tu bolo aj spomenute. Pokial ste maly a nezavysli, popripade student tak si mozete zvolit v com budete betonovat tu svoju aplikaciu a potom v klude nadavat na cement.Ak ste zamestnany vo velkej spolocnosti tak to aj tak niekto za vas uz rozhodol z financnych,politickych a inych dovodov a mozete potom zasa nadavat na neho ze sa musite borit s takym humusom.Na konci dna je to aj tak o algoritmizacii,hladani v dokumentacii k danemu jazyku/platforme/frameworku. Ostatne vecsinu velkych firiem ani tak nezaujima jazyk ktory ovladate alebo ich pocet a ako moc ste v nich „skilled“, ze dokazeten nejaky zlozity algoritmus co je bezne na 20 riadkov stlacit na 5 a este to zozere o polovicu menej prostriedkov, to je fajn ale neni to to primarne co vecsinu firiem zaujima.Velke firmy maju problem a ten potrebuju riesit,maju nejake CRMko v nejakom jazyku a na nejakej platforme a potrebuju cloveka ktory na tom bude vediet pracovat bodka.A moj pohlad na jazyky, urcite C/C++, minimalne filozofiu lebo mnoho jazykov z neho vychadza/vykrada (aj ked nie vzdy najlepsie) a potom asi Java/C# lebo to ide. Co sa tyka este webu tak mozno JavaScript a popripade sa moze hodit aj Action Script.
Nejlepší co můžete udělat je nenechat si radit takovýmito články.
Jaký programovací jazyk se naučit je ta méně podstatná část. Je to asi jako kdybych se ptal, jaký štětec si mám koupit, aby se ze mě stal dobrý malíř. Bez talentu, trénování malířských technik, apod. si můžete koupit ten nejlepší štětec a budete pořád nýmand.
Programovací jazyky se mění každých několik let podle módy. Některé jsou stálice, některé (a těch je většina) zahrají svůj max. 10 let dlouhý štěk a papá. Většina těch šteků je z mainstreamových, dnes „do budoucna perspektivních a doporučovaných“. To Vám samozřejmě nemusí vadit.
Programovací jazyk je jen řemeslný nástroj, nic jiného.
Bez algoritmizace, schopnosti analýzy problému, a určité praxe je to k ničemu.
Navíc řada jazyků učí špatné návyky. Jako první jazyk je třeba vybrat si jazyk, který tvoří dobré návyky. Kdysi takovým byl třeba Pascal. Jazyk, který ještě nikdy nevytvořil dobrého programátora je Java (myslím člověka, který se naučil jen Javu, nepřešel na ní z jiného jazyka, nebo se neučil na jiném jazyce). Aspoň o takovém nevím – Java vše emuluje třídou i to na co jiné jazyky mají samostatné věci. Tím dost mate.
Učební jazyky jsou pak často nevhodné pro praxi (viz ten Pascal).
Ale každý potřebuje něco jiného.
Paci sa mi to ponatie, rychlost nativneho Ccka a prijemny pre programovanie.
Vstavane signaly, no mnam, mnam.
To by mohlo vniest zivot do programovania desktopovych aplikacii v GNU/Linuxe a nie len tam. Aj take Maemo by z toho mohlo dobre profitovat, ved hildon uz ma vapi.
http://live.gnome.org/Vala
Praví programátoři programují pomocí motýlů:
http://xkcd.com/378/
Zacal jsem sledovat „Structure and Interpretation of Computer Programs“ v podobe, jak je ucen na Berkeley http://academicearth.org/courses/the-structure-and-interpretation-of-computer-programs a musim uznat, ze i zakladni kurs uceny ve Scheme (LISPu) funguje vyborne. (Ke kursu je ke stazeni i kniha, materialy, priklady… Doporucuji i zkusenym lidem, kteri nemaji neproceduralni zaklady)