reklama
Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Začátky programování

adolfik (236)|6.10.2008 21:48
Tak nějak se začít musí a jelikož v naší škole zrušili C (idioti), tak se učí jenom Java (při oboru si pak každej orientuje na C/Assembler, webovky atd.), ale tím nebudu zatěžovat. Po několika názorech zkušenějších mám v plánu začít v Javě (je snažší na pochopení)...udělat si takové ty základy, naučit se "programatorsky přemýšlet" a pak přejít na C a další použitelné jazyky. No a jelikož učení se programovat je velmi velmi strastipná cesta, tak tu mám teda první problémy, které jsem prostě nevyřešil. :(
Javu dělám ve vývojových nástrojích a když potřebuju něco rychlého, tak použiju nastavenej PSpad. Naštěstí vše funguje, ale moc rád bych si zkusil, jaké je to udělat "postaru" přes příkazový řádek :D
Podle tutoriálů, učebnice od Herouta prostě přes cmd:

1. Přeložím (javac.exe) -vytvoří se bytovej "jmeno.class"
javac jmeno.java
2. Spustím (java.exe)
java jmeno

jenomže já jako vůl musím nejdříve nadefinovat cestu k těm kompilatorům atd. a potom teprve nastavit cestu k souborům...tedy
c:\blba\blba bla\javac.exe c:\pokusy\jmeno.java
Jak se tedy "zaregistrují" tyhle programy do OS, abych hned napsal javac/java a cestu k souborům? Třeba ve 98SE mi to po instalaci JDK funguje ihned, ale v XP to musím dělat takhle složitě. Poradíte někdo prosím? Vím, že je to totální trapárna (a hned tak na začátku), ale já jsem na to opravdu nepřišel :D
Logout (4018)|6.10.2008 22:03
Imho musíš nastavit cestu k těm kompilátorům (klasická proměnná prostředí PATH, nastavuje se v pravym na tento počtač, vlastnosti, rozšířené).
Možná pak ještě bude potřeba nastavit nějaká proměnná, kde hledat javovský třídy, tuším CLASSPATH.

Další možnost je naisntalovat a používat nějaký IDE, vcelku slušnej je Javabuilder od Borlandu.
pavel_p (993)|6.10.2008 22:10
Nevím, na Javu používám perfektní vývojové prostředí Netbeans IDE (http://www.netbeans.org), funguje v Linuxu i ve Windows a PSPAD+příkazová řádka je imho jen zbytečným krokem k počítačovému středověku. Spousta vychytávek mi v jiných vývojových prostředích vč. MS Visual C++ chybí. Ale je to věc názoru. Také bych Javu nezatracoval, zrovna na učení se programátorsky přemýšlet a objektově orientované programování mi přijde lepší než C++.

EDIT: Netbeans a eclipse jsem nesrovnával, po týdnu používání mi to přirostlo k srdci a neměl jsem potřebu přecházet. Možná je hlavním důvodem bojů SWT vs. SWING.
mstejska (2912)|6.10.2008 22:13
Nebo eclipse. S netbeans je asi srovnatelne. Delam v eclipse asi 4 roky. Netbeans jsem nejak neprisel na chut. Mozna jsem to zkousel kratkou chvili. S eclipse jsem spokojen.
mstejska (2912)|6.10.2008 22:15
[QUOTE=pavel_p;167365]Nevím, na Javu používám perfektní vývojové prostředí Netbeans IDE (http://www.netbeans.org), funguje v Linuxu i ve Windows a PSPAD+příkazová řádka je imho jen zbytečným krokem k počítačovému středověku. Spousta vychytávek mi v jiných vývojových prostředích vč. MS Visual C++ chybí. Ale je to věc názoru. Také bych Javu nezatracoval, zrovna na učení se programátorsky přemýšlet a objektově orientované programování mi přijde lepší než C++.[/QUOTE]

Souhlasim se vsim co rekl. V C++ se musis starat navic o mnoho veci, ktere dela java engine za tebe. Zase jsi ale vice svazan a v necem zase mnohem volnejsi.
Logout (4018)|6.10.2008 22:50
No, základní problém javy na učení je, že na cokoli (tzn. i např. na jednoduchej algoritmus)
musíš napsat třídu - navíc se statickou metodou. To pro začátečníka příliš vhodný není:
vysvětlit člověkovi, kterej neprogramoval, co je třída, statická metoda atd... je poměrně
složitý a navíc zbytečný. Algoritmy prostě moc dobře objektově psát nejdou.
(taky se primárně učej dle školy buď v pascalu, C, nebo třeba lispu).

To, že java engine spoustu věcí řeší je bonus, ale taky někdy ne - když to musíš řešit,
tak máš (i při použití vysokoúrovňovejch jazyků) ponětí, co se uvnitř děje a nenapíšeš tak
prasečinu (zbytečně pomalej kód - a že jsem jich už viděl).

Imho pro výuku programování je asi nejlepší na začátku nějakej jednoduchej
(asi spíš typovej, ale s tim si nejsem jistej) jazyk (asi ten pascal je nakonec na to
možná nejlepší) a po zvládnutí základů simultáně C pro nízkoúrovňový věci a pak
něco objektovýho (ať už java, C#, smalltalk...).
mstejska (2912)|6.10.2008 22:54
Pro zacatek je asi pascal dobry. begin .. end a to co je mezi tim se spusti. u javy to mas podobne. Stejne jako u C. Dulezite je delat si programky a necekat ze te to nauci ve skole. jak uz umis jeden jazyk, tak neni takovy problem pridat druhy. Nejtezsi je asi zacit.
Logout (4018)|6.10.2008 23:17
mtejska: Jenže začít se učit programovat pomocí "napiš tam todle, ono to bude fungovat" je imho cesta do programátorských pekel. Programující člověk by se měl učit rozumět tomu, co napíše: a to u pascalu jde bez problémů, u javy je to pro začátečníka dosti složité.
Co se týče toho, že když člověk umí, je jazyk vlastně jedno, ale souhlasím na 100% - teda "normálních jazyků, i když umíš c, javu a c#, tak ti zvládnutí prologu/lispu chvíli trvat bude :-D. Ale objektově se dá psát i v Basicu, když člověk chce... V některejch jazycích to lze akorát "přehlednějším zápisem".
A stejně tak, že důležitý je začít a něco psát. Jen doporučuju prohlížení kódu zkušenějším programátorem, ať se neučíš zbytečně zlozvyky...
mstejska (2912)|6.10.2008 23:24
Pascal je dobry na nauceni zakladu. Je to vlastne jenom "anglictina". C a Java maji kratsi zapis.
"Napis tam tohle ...", tim se prece vzdycky zacina. pokud nevis ze program zacina az za begin a konci end a jeste navic tam musi byt tecka a u procedur pred beginem nemusi. Super byl turbo pascal na robotronech. To byly vlastne XTecka, ale od soudruhu z NDR. Ted nevim jestli je nejake takove jednoduche prostredi pro pascal.
Logout (4018)|6.10.2008 23:58
Nejde o to, že by tam nebylo něco, co se člověk nemusí naučit nazpaměť. Jde o to, že jde jednoduše a srozumitelně vysvětlit každej znak v programu. Což je u začátečníka s javou dost problém - a vede to
k "biflování programů". Jinak souhlas, k ničemu jinýmu než naučení základů to neni - jakmile program přesáhne rozsah jednoho souboru, tak od pascalu utýct k něčemu rozumnýmu, kde jsou lepší nástroje na strukturování kódu. Ale to je IMHO tak za rok (u nadanýho člověka) tradiční výuky.

Free prostředí pro pascal je vcelku dost, např. free-pascal, dev-pascal apod. I když možná starej dobrej
borland pascal 7.0 je nejlepší :-) - pamatuju se, že se mi tenkrát ty windowsovský ide přišlty takový neohrabaný (furt se přepínat z windows do fullscreenu dosu a zpět).
adolfik (236)|18.10.2008 16:14
Tak tedy dělám v Netbeansu (6.1) a asi u něho zůstanu.
Přesto mi nedá spát jeden nevyřešený problém ohledně nastavování cest v systémových proměných. Jak v uživatelských tak v systémových jsem nastavil cesty...u mě C:\Program Files\Java\jdk1.6.0_07\bin

Pro mě nepochopitelný problém je, že v příkazovém řádku java funguje, ale příkaz na kompilátor javac mi stále hlásí hlášku "javac není názvem vnitřního...atd", takže kompilaci musím dělat otravně ručně. Sice jak říkám, že se už trápím jenom v NetBeansu, ale přesto bych rád věděl, kde je problém.
Samozřejmě zase někde ve mně :)
mstejska (2912)|18.10.2008 18:03
javac by mel byt v bin jdkacka. javac ti blbne v command line?
adolfik (236)|18.10.2008 18:27
ano je v "binu", vždyt jsem napsal, že jsem cestu definoval do binu v JDK.
Když jsem si to pak "postaru" zkoušel v cmd tak třeba spouštěč java funguje, ale kompilator javac ne. Pořád to hlasí, že to není příkaz.
mstejska (2912)|18.10.2008 19:11
Mozna blbost, ale odkud jsi spoustel command line? Pokud jsem neco zmenil v enviroment variables a mel pusteny total commander tak se zmena v TC neporjevila dokud jsem ho nerestartoval. Tj pokud jsem spustel cmd z TC tak se zmeny projevily az po zavreni a otevreni TC.
PS: ted jsem zkousel javac. v path mam taky cestu do jdk\bin a javac se hlasi.
adolfik (236)|18.10.2008 19:26

tohle nastavený je tam dlouho a od té doby proběhlo pár restartů PC
mstejska (2912)|18.10.2008 19:30
PATH ne JDK
musis nastavit path.
mstejska (2912)|18.10.2008 19:31
JDK slouzi pro dalsi programy. Typuju JUnit, ANT atd. Ale windowsum nic nereknou. Musis nastavit PATH
mstejska (2912)|18.10.2008 19:36
Pro jistotu obrazek z NB
adolfik (236)|18.10.2008 19:44
ježiši já jsem blb :O)
díky moc...rychle čtu a unikají mi důležité věci

EDIT: přihazuju bodíky ;)
mstejska (2912)|18.10.2008 19:45
NZ. Me se to zdalo hned divne.
xmarek (1676)|20.10.2008 19:07
Spoustu programů hledá tzv. JAVA_HOME. Takže osobně doporučuji nejprve přidat systémovou proměnnou JAVA_HOME. Takže name: JAVA_HOME variable c:/Program Files/java/jdkxx (liší se umístěním) a potom do path přidat ;%JAVA_HOME%/bin .

Nakonec spusťte cmd a napište "set". Zkontrolujte, že v cestě tj. path je přidána cesta k javě. Nakonec napište javac -version. Tento postup doporučuji dělat např. pro ANT, MAVEN apod.

Pozn. Jinak co se týče dalších dotazů k javě pokud vím odpovím. :D
adolfik (236)|20.10.2008 21:42
no teď to je snad v pohodě (abych to nezakřikl:shut)...nějak jsem se prokousal zakladama a teď už jenom záleží na mé hlavě a jak se s tím vypořádám...

ale to, co bych rád dodal k začátkům programování je "vůbec jak začít".
Já sám jsem doteď programování moc nevěnoval (nevěděl jsem ani co je OOP), jenomže na jedné nejmenované škole (Ustaf Pardubice) jsem chytl jednoho velice znameno nejmenovaneho učitele na programování v Javě a tak jsem se začal ve vlastním zájmu ohlížet po něčem z čeho bych mohl čerpat při nepochopeném studiu.
No a když jsem prolézal net o programování a pročítal diskuze "jak začít" apod.
Tak všude začátečníkům pod nos cpali "V**er se na Javu nauč se Céééčko!!!"
a jako literaturu "Úplně nejlepší knížka je od Herouta-Učebnice jazyka ***"
Hehe :D
Jenomže k čemu je tak slavná učebnice začátečníkovi (já měl alespon bonus v tom, že "jsem něco málo věděl"), když nezná takové pojmy jako je "Datový typ, identifikator, deklarace proměnný...atd". V téhle knížce prostě autor počítá, že nobik ví neco o OOP nebo má za sebou Basic, Pascal atd...

Proto bych rád doporučil začátečníkům (úplným začátečníkům) knihu Java 6 Vyukovej kurz (no spíš bichli), která nejenže vysvětluje důležité OOP jak pro imbecily, provede vás po krůčkách každým pojmem a nenajdete slovo, které nebylo před tím vysvětleno, ale prakticky už v přímo v Javě nezajíždí vůbec zbytečně do hloubky, celé stránky nejsou plné "poznáme pro programatora v C/C++" (typický z Heroutovy).
A musím říct, že se investice do této knihy opravdu vyplatila :thumb, protože během tří dnů jsem pochopil věci, které jsem teď celej měsíc ve škole vůbec nedával, i když jsem se snažil sebevíc. Zato u Heroutovky bych čuměl do toho klidně celej den a stejně bych to nechápal :cry
A na psani v kodu a testovaní hned na začátek doporučím IDE NetBeans (na mým Tualatinu je poměrně nenáročný, na AthlonuX2 vedle se docela trhá- to jen tak technicky odskočuju :D), kterej zabrání vašem vzteku než třeba prohodíte celý PC oknem :D
xmarek (1676)|21.10.2008 08:39
Abych navázal na co bylo již uvedeno. Co se týče literatury p. Herouta. Až dnes mi pomalu dochází o čem tam ten pán psal. Pro začátečníka je to knížka, která se snaží vysvětlit všechny obecné věci v javě. Ale jaksi mi tehdy unikl smysli věcí jako je interface nebo abstraktní třída. Což je v objektovém svěce velmi používaná záležitost. Jinak asi tvrzení, že OOP zahrnuje: dědičnost, zapouzdřenost a polymorfismus asi vystihuje to nejdůležítější.

Začátečníkům doporučuji mrknout se na věci jako jsou generické datové typy, enumerátory atd. Prostě věci od Javy 5.

Pokud to někdo myslí s Javou vážně doporučuji po zvládnutí základů studium frameworků Spring, Hibernate (a samozřejmě databáze :D). Ale pozor je toho vážně dost. :D

Co se týče IDE tak Netbeansy se mi zdají asi nejvhodnější (Navíc obsahují TomCat a GlassFish). Eclipse už je pro záčátečníky příliž rozvláčný a na konfiguraci už člověk potřebuje jisté zkušenosti. JDeveloper je pro začátečníka utrpení a Idea JetBrains je jednak komerční a navíc se v ním může začátečník taky trochu ztratit. (Jinak osobně je můj favorit posledně jmenovaný a není to o tom, že jsem licenci vyhrál. :D)
grafnev (69)|21.10.2008 11:46
Zdravím,

prošel jsem si pár programovacích jazyků (pouze imperativní; logické a funkcionální programování jde zatím mimo mě) a postupem času jsem došel k názoru, který si držím. Není důležitý programovací jazyk, který člověk ovládá (stačí nějaký do začátku). Důležité je umět řešit problémy v jazyku který je k dispozici, mohu perfektně umět všechny třídy, templaty a všelijaké vychytávky v c++, ale pokud nebudu umět vyřešit třeba algoritmus, který nějak rozumně rozmísťuje zboží po skladu, tak je mi to celkem k ničemu. Btw. toto považuji právě za rozdíl mezi programátorem a kodérem, kdy kodér ovládá na vysoké úrovni aspekty některého jazyka, ale není schopen navrhovat nějaké složitější algoritmy. Proto nemám rád lidi s názorem, tento programovací jazyk A, který mám k dispozici je blbej, protože programovací jazyk B ve kterém umím to řeší lépe. Podle mého názoru je správný programátor schopen efektivně vyřešit problém v nástroji který má k dispozici (poté co se s ním seznámí) a je jedno jestli to je programovací jazyk, jazyk pro databáze, nebo systém.

VG
xmarek (1676)|21.10.2008 12:02
to grafnev
Pokud hovoříte o "ne" OOP jazycích tak máte nepochybně pravdu. Toto tvrzení platilo pro Javu v minulosti. Dnes už to není pravda. Java narostla do takových obludných rozměrů, že jenom studium použitelných technologií (JSP, JSF, Struts, Spring, Hibernate, EJB, design patternů, UML, Databází (JDBC), Apache blbostí apod.) Vám zabere roky. A zákazník vyžaduje velké udržovatelné (ne jenom okamžité řešení :cry).
Pozn.: pro .NET to platí taky. :(
Dojigiri (1629)|21.10.2008 12:05
[QUOTE=grafnev;172149]...[/QUOTE]
To samozřejmě ano, umět vymyslet algoritmus je stěžejní, ale mnohdy je samotný algoritmus (tj. to jestli ho vůbec lze napsat tak, jak jsem si ho vymyslel) ovlivněn tím, co v daném jazyce lze a co nelze (kupříkladu třeba vícenásobná dědičnost se v C++ a Javě řeší trochu jinak, apod.). Tomu, kdo daný jazyk důkladně neovládá, pak trvá stejný problém naprogramovat trochu déle a nemusí být tak efektivní (sám pozoruji na sobě, když umím C++ a začínám se učit Javu - spousta věcí se tam řeší trochu jinak, byl jsem zvyklej výhodně používat templaty a makra ...).

Odstrašujícím příkladem může být kód z C/C++ přepsaný přímo do Javy bez znalosti Javy, kterej jsem viděl - např. předávání parametrů jako bufferu ("pointer") a velikosti bufferu, což je standardní přístup používaný v C, ovšem v Javě se už moc nepoužívá, pokud vím (a takovýchhle věcí tam bylo víc - znalejším Java programátorům z toho vstávaly hrůzou vlasy na hlavě, prostě program napsaný bez důkladné znalosti jazyka - ale fungoval; ovšem byl velmi výrazně pomalejší než stejnej původní program v C++).
grafnev (69)|21.10.2008 12:09
[QUOTE=xmarek;172153]to grafnev
Pokud hovoříte o "ne" OOP jazycích tak máte nepochybně pravdu. Toto tvrzení platilo pro Javu v minulosti. Dnes už to není pravda. Java narostla do takových obludných rozměrů, že jenom studium použitelných technologií (JSP, JSF, Struts, Spring, Hibernate, EJB, design patternů, UML, Databází (JDBC), Apache blbostí apod.) Vám zabere roky. A zákazník vyžaduje velké udržovatelné (ne jenom okamžité řešení :cry).
Pozn.: pro .NET to platí taky. :([/QUOTE]

Samozrejme toto beru v uvahu, pokud jiz clovek umi programovat, tak je jeste nutne se v pripade potreby (zamestnani) naucit onu konkretni platformu se vsim co je potreba. Spise mi slo o to, ze dokonala znalost konkretniho jazyka jeste nedela z cloveka programatora a naopak neznalost jazyka neznamena, ze clovek programator neni. Tudis odvozuji, ze platforma na ktere se clovek uci programovat neni tak dulezita.
polygon_cz (23)|30.10.2008 20:40
No ja musim na zacatek zkusit Python... Pro vyuku je bezvadnej v tom, ze tam neni potreba se ucit syntaxe, davat bacha na zavorky protoze bloky kodu se jenom odsazují... A hlavne se v nem da programovat jak proceduralne tak objektove... Po case co vas prestane bavit konzole se muzete pustit i do okeniho programovani a pokud nepouzijete Tkinter ale wxPython tak mate docela solidni zaklad i pri prechodu do jineho jazyka a prostredi...