Skonto sam da je vakat da se nauci jos pokoji programski jezik i naravno zanimaju me neke fine knjigice. Recimo, odlucio sam za pocetak osvjeziti+prosiriti osnovno znanje o C-u kog (nemam) imam i naletim na ovaj interesantni doc: http://cslibrary.stanford.edu/101/
Tu ima PDF koji opisuje C u 45 stranica. Naravno, nista opsirno i pretjerano detaljno ali djeluje fino i malko je interesatniji od standardne R&K knjige u kojoj pola onih pitanja na kraju poglavlja sam moro googleat za naputke kako rjesiti. Kad prodjem ovo opet prodjem i R&K knjigu cisto da vidim hocel se sad moc rjesit ona pitanja na kraju. Za C znam da je A book on C od Kelley&Pohl dobra (nekad davno sam je posudio od jednog ULKasha i bila je zanimljiva).
Moje pitanjce je, sta biste vi preporucili da se uci? Recimo da hocu napisati desktop app koji radi nekakve financijske racunice koje treba da se mogu printat u finom formatu i da se to moze (ali ne mora) pokrenuti i na Windowsu, koji jezik (+knjigu za taj jezik) biste mi preporucili i zasto?
Eto da pokrenem malko diskusije (adis+vedran+ez+sanelz, molim no-flame, ima sastanak cetvrtkom za to - mozda i naletim ovaj cetvrtak :D).
Napises to fino u Javi sa Swing interface-om i ne moras brinuti o arhitekturi. Ako ti je brzina fakat bitna, kodiras taj dio u C-u i koristis ga kroz Java Native Interface. (mada ne vjerujem da ce ti konkretnu za tu aplikaciju trebati JNI).
Sto se knjige tice tesko da ti mogu sta preporuciti jer sam poceo programirati ovdje, ergo sve sto sam ucio, ucio sam na njemackom. Genijalne knjige i video treninge za ucenje izdaje Galileo ali kao sto rekoh, iskljucivo na njemackom.
EDIT:
Trenutno ucim Python i koristim knjigu Wrox firme. Relativno sam zadovoljan jer su vec nakon 30 stranica presli sa programske teorije na specificnu Python syntaxu. Ako vec znas programirati u bar jednom jeziku onda ti taj teorijski dio, u svom vecem dijelu, nije potreban. A knjiga je na engleskom.
Ja preferiram c++ u svako doba. Navratim nekad na ovu stranicu http://www.cplusplus.com/. Imam jednu knjigu koju sam dobio u srednjoj, zove se C++ analiza i primjena. Super knjiga za pocetnike IMHO. Python je isto mocan i isao sam po dokumentaciji i malo sa strane malo gdje naletim na pokoji kod. Kad sam savladao C svi ostali jezici su mi isli glatko tako da se nisam previse zadrzavao na citanju knjiga nego vise na citanju dokumentacije i primjera.
@Amar: pa recimo da za pocetak mi nije brzina nesto plaho bitna, ali ne zelim da program postane beskoristan ako ima neku tabelicu sa 3000 redova. Koliko ja znam, to nebi Javi trebo bit neki problem jer taj neki app nebi radio nikakve monstruozne kalkulacije nego samo snimao u tabelu i vadio iz nje.
mi recimo imamo java web aplikacije koje bez problema pristupaju MySQL bazama podataka sa cca. 500 tabela. Cini mi se da koristimo JDC.
Aplikacije napisane u Javi bez problema rade sa Magento bazama podataka, opet preko 300 tabela.
Kada sam spomenuo brzinu, vise sam mislio na direktni pristup hardware-u. Za takve stvari je Java jos uvijek prespora. A za sve ostalo, tu je Mastercard.
Btw, ovdje ce se javiti 10 ljudi i dobices 10 razlicitih prijedloga u cemu da kodiras.
Moj savjet, koristi jezik koji ce ti biti zanimljiv. Da li je to Java, C++, Python, C, Perl, manje bitno.
Prvo bi trebao da odlucis sta zelis da pravis pa onda ces lako odabrati jezik, jezik je samo tool for the job i nema dobrog ni loseg ima samo right tool for the job.
Pitanje je da li hoces da pises aplikacije koje ce se vrtiti na vise OS-ova ili samo na jednom, kakva ce namjena biti tim aplikacijama u mom iskustvu generalno prvo se pitaj da li to mozes da postignes u nekom jeziku other than C ili C++ (osim ako nije rijec o gustu, fanatizmu ili necemu trecem) takvim razmisljanjem ces prepoloviti development time, Rijetko je neka veca aplikacija pisana samo u jednom jeziku danasnja praksa je low level stvari samo ako je potrebno da se brzo izvrsavaju C, C++ ili cak asembler a ostatak u C#, Java-i, Python-u itd… Recimo C# ima brze vrijeme odvijanja u nekim stvarima od C++ (iako ce ovo naravno zvucati kao blasphemy).
Ja u svom poslu koristim C#, Python i C++ ali ne u prevelikim kolicinama. tako da sto se tice knjiga ako ciljas na C++
Definitivno odlicna knjiga meni je puno pomogla, naravno mozes uzeti i onu Bjornovu ali ovdje je puno toga objasnjeno do najsitnijih detalja sto nisam pronasao u drugim knjigama.
Python sam naucio sa maticnog sajta Pythona i tutoriala tamo…
Odluka je pala, python 2 je pobjednik contesta Django Framework je razlog, a kao sto nidla spomenuo, ima pyQt za pisanje Qt aplikacija koje se daju portati i na ostale sisteme. Posto sam dobio na review ovu knjigu za C# vrlo vjerovatno je side effect da cu nauciti i C#. To je dva jezika ove godine sto je vise nego dovoljno. Dosta ljudi lobira da podignem javu ali neka je, ima vremena
Kao mali offtopic, jedan od najzanimljivijih jezika na koji sam naletio u svojoj potrazi je zapravo LISP. Nekad cu se mozda i s tim cudom igrat al dotad ide python.
Imam ja video lekcije za LISP iz sredine 80-tih. Super stvar. Mada ne vidim neku prakticnu korist osim ucenja funkcionalnog tipa jezika.
A u Python ces se sigurno zaljubiti, jezik je nevjerovatan. Ako ti ne treba puno third party biblioteka mozes komotno sa Pythonom3 raditi. Ne znam sta planiras tacno programirati, pogledaj prvo da li ti biblioteke u verziji 3 dostupne. Ako jesu, onda ti je bolje odmah u trici raditi. Imam ja nekih 500 MB PDF literature za Python, ako te neka specificna oblast zanima, javi, mogu ti preporuciti literaturu.
Pa sad, nije da se raspravlja 24/7. Danas su bila dva zanimljiva problema koja su kodirana u Pythonu i Javi. Bice jos toga. Navrati i neka te na kanalu, ne jede ti hljeba. Naletice nesto zanimljivo.
Instalirah xchat, nastimah notifikacije, stavih ga u tray.
… satak/dva kasnije …
...
<adioe3> amarprasovic, jel konstruktor klase moze imat default vrijednosti?
<adioe3> tipa za klasu stamp jel more ovo:
<adioe3> public stamp(int h=0, int m=0, int s=0){ ... } ?
<amarprasovic> moze
<amarprasovic> odnosno
<amarprasovic> nemoj davati vrijendosti
<amarprasovic> varijablama
<amarprasovic> to ne moze
<adioe3> mislim sta se onda desi ako je to konstruktor (bez vrijednosti)
<amarprasovic> public stamp(int h, int m, int s) {}
<adioe3> a uradim ovo:
<adioe3> stamp a = new stamp;
<adioe3> ?
<adioe3> il ne mere tako?
<amarprasovic> tako ces deklarirati objekat stamp
<amarprasovic> ali nisi nista uradio
<adioe3> ok
<amarprasovic> moras pozvati konstruktor da inicijaliziras taj objekat
<adioe3> 5%3 = 2, rajt?
...
/**
* @param args
*/
public static void main(String[] args) {
int a = 5;
int b = 3;
int c = a/b;
System.out.println(c);
float d = a/b;
System.out.println(d);
d = (float)a/b;
System.out.println(d);
}
}[/code]
Dakle, rezultati za ovo bi bili:
1
1.0
1.666666
U prvom slucaju imamo dva integera a i b. Kada podijelimo integer a sa integerom b i rezultat spasimo u integer c, dobijemo 5/3 = 1.
U drugom slucaju, imamo dva integera a i b. Dijeljenje spasimo u float d. Rezultat je 1.0. Dakle, ovdje smo kao rezultat dobili float, ali smo dijelili integer sa integerom. 5/3 = 1.0
Tek u trecem slucaju smo dobili ispravan rezultat, dijelili smo float a sa integerom b i rezultat spasili u float d. U ovom slucaju smo radili casting, odnosno data type od varijable a smo samo za ovaj slucaj promjenili iz integera u float. U principu, uradili smo ovo 5.0/3 = 1.6666666.