1 din 2
1
Limbaj de programare
  [ Ignoră ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Salut tuturor,
As vrea niste sfaturi de la programatori,as vrea sa stiu pt un incepator care ar vrea sa invete programare pt a face aplicatii pt tel mobile ce recomandati?ma refer la aplicatii pt iphone,pt android,chiar si pt nokia.
De asemenea im cat timp se poate invata un limbaj de programare ? Alocand sa zic 1-2 ore pe zi pt asta.

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Salut. Dezvoltarea de soft pentru dispozitive mobile este un mediu destul de eterogen, si nu prea poti sa folosesti aceeasi chestiuni pentru toate. De asemenea este un mediu destul de dificil, in nici un caz recomandat unui incepator. Se incepe cu programe “Hello, World” de consola. Inceperea cu chestiuni GUI complicate este reteta perfecta pentru dezastru.

Un limbaj de programare se poate invata intr-o zi sau doua, daca esti programator. Daca insa esti incepator, nu invatarea unui limbaj ar trebui sa te preocupe, ci invatarea software engineering in general. Alege un limbaj simplu gen C, si invata sa programezi in el foarte bine. Stai departe pentru inceput de concepte complicate cum e OOP, AOP, metaprogramare etc. Astea trebuie sa le studiezi dupa ce stii la perfectie programarea imperativa.

In programare nu e ca in viata reala. In viata reala este mai usor sa citesti intr-o limba noua decat sa scrii in ea. In programare e invers—e mai usor sa scrii cod nou de la 0, decat sa “citesti” si sa intelegi si sa lucrezi cu codul deja scris al altor programatori.

Nu pot sa-ti recomand decat sa citesti ceva carti bune si sa incepi cu pasi mici dar fermi. Nu sari peste ceea ce nu intelegi sau nu stii deja in profunzime. Studiaza programele Open Source, vezi cum functioneaza. Incearca sa-ti dai seama ce nu e bine la ele. Scrie patchuri si trimite la developeri.

Cand stii toate astea poti sa studiezi fara probleme limbaje noi si concepte diferite, si poti sa incepi sa faci aplicatii mici pentru dispozitive mobile, oricare ar fi ele.

Cat va dura nimeni nu stie. Depinde doar de tine, dar pot sa iti garantez ca va dura destul de mult.

Succes!

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 2 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

Am mai cerut parerea la cineva si mi a recomandat java in loc de c,c++ pt ca ar fi mai usor si pt ca aplicatiile scrise in java se pot compila pt orice platforma.
Alta persoana mi a zis ceva de genu ca baza programarii e “c” si daca voi invata direct java nu voi intelege prea bine programarea…
Deci intre c si java ce sa aleg?

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Java nici nu merge pe iPhone…

De asemenea Java este o idee extrem de proasta ca prin limbaj de programare. O sa-ti formezi deprinderi extrem de proaste care nu o sa le poti uita pe viitor. Intr-adevar, daca inveti intai Java nu o sa stii ce si cum se intampla de fapt. Ca sa fii un programator Java bun trebuie sa stii programare bine inainte de a studia Java si trebuie intai sa studiezi cum functioneaza Java.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 4 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

ok,spune mi te rog ce carti imi recomanzi si ce sa invat pas cu pas.

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 5 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08

Pai pentru C iti recomand The C Programming Language (o gasesti la Teora daca o vrei in Romana). Dupa ce stii tot ce scrie acolo poti sa studiezi Advanced Programming in the UNIX Environment. O carte foarte buna pentru intelegerea codului deja existent—modul in care el trebuie tratat este Lions’ Commentary on UNIX 6th Edition, with Source Code. Este o carte foarte veche, aproape imposibil de gasit si care se foloseste de o versiune veche, non-ANSI a limbajului C, totusi o consider lectura obligatorie pentru orice programator. Pe partea de C++ recomand cartea gratuita Thinking in C++. De studiat si The C++ Programming Language. O gasesti la Teora in Romana. Dupa ce stii C++ lectura obligatorie este Code Complete si cartea lui Andrei Alexandrescu Modern C++ Design. O gasesti la Teora in Romana. Inca o carte pe care o consider foarte importanta este The Practice of Programming.

Dupa ce stii tot ce scrie in cartile astea poti sa studizi fara probleme orice altceva.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 6 ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05
aramdune - 02 Decembrie 2008 05:32 PM

.... Alege un limbaj simplu gen C,...

(considerați că aici este un smiley căruia i s-a ridicat părul din cap) (considerați că aici este un smiley care s-a înnecat și tușește)

bobocbbb - c este un limbaj “simplu” doar daca cunoști foarte bine arhitectura hardware a sistemului pe care lucrezi:
- aranjarea biților în registrele procesorului;
- lățimea unui char, word & log pe pe acea platformă;
- modul în care CPU accesează memoria & porturile de I/O;
- și legat de punctul de mai sus - modalitățile de comunicare cu utilizatorul impuse sau/și oferite de către hardware sau/și de către sistemul de operare.

Eu zic așa:
1) Învață Python sau Ruby ca să înveți să programezi propriu-zis;
2) Învață C ( & eventual C++ și ObjC după aia) că devii un Real Programmer
3) După aia poți învăța ce-ți trebuie ca să dezvolți pentru telefoane într-o zi-souă cum a zis aramdune.

1-2 ore pe zi ... un an zic eu ca șă știi ca lumea și nu doar să faci copy-paste din documentație la blocuri de cod pe care nu le înțelegi.

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 7 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

In ambele cazuri java iese din discutie smile am inteles.
Pt c mi s a recomandat o carte,pt python ce carte imi recomanzi?in romana ma refer

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 8 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

am gasit acest pdf,este bun pt a invata python?

[ Modificat: 03 Decembrie 2008 02:57 AM de boboc ]
Fișiere atașate
python.pdf  (Dimensiune Fişier 269 - Downloads: 319)
 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 9 ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Este un început bun. (l-am răsfoit nitel să văd dacă nu e vre-o problemă cu copyright-ul tutorialului propriu-zis pentru a-l pune aici pe site - nu este).
Acuma și tu cu româna ... ține minte zicala asta:

“God speaks hebrew and computers speak english.”
(Dumnezeu vorbește ebraică iar computerele vorbesc engleză)

Eu nu am făcut engleză la școală sau liceu dar am învățat-o ca să pot termina Larry 1 & Monkey Island pe primul meu 286. Ai și tu un motiv s-o înveți acuma. grin

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 10 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

da,ai dreptate smile

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 11 ]
Avatar
RankRankRankRank
Administrator
Din: bucurești
Macuser din: 11.10.05

cum sa gasesti o carte in romina care sa te invete sa dai comenzi in engleza?
smile

Profil
 
  [ Ignoră ]   [ # 12 ]
Avatar
RankRankRankRank
Sr. Member
Din: Bucuresti
Macuser din: 22.09.06

bun,nu sunt numai comenzile,sunt si anumite explicatii,eu sunt incepator.
si stiti cum se zice,primul limbaj e cel mai greu…cu cat mai multa documentatie si explicatii,cu atat mai bine.

 Semnătură 

A man should look for what is, and not for what he thinks should be.—Albert Einstein

Profil
 
  [ Ignoră ]   [ # 13 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08
psergiu - 02 Decembrie 2008 11:57 PM
aramdune - 02 Decembrie 2008 05:32 PM

.... Alege un limbaj simplu gen C,...

(considerați că aici este un smiley căruia i s-a ridicat părul din cap) (considerați că aici este un smiley care s-a înnecat și tușește)

Oi fi eu biased ca scriu module de kernel, dar totusi ideologia mea de-o viata in domeniul IT este “use the right tool for the right task”, asa ca nu as recomanda ceva doar pentru ca eu folosesc sau am folosit acea unealta, ci pentru ca parerea mea este ca iti este util tie, cel care a pus intrebarea.

Rog a citi exact ceea ce am spus, si nu ceea ce i se pare cuiva ca as fi spus smile. Am spus ca “C este un limbaj simplu”, nu ca “programarea in C este simpla” smile. Limbajul C este un limbaj mult mai simplu decat C++, Obj-C, Java sau Python. Are un footprint foarte mic—are doar vreo 32 de cuvinte cheie, dintre care multe sunt redundante (3 tipuri de bucle, mai multe moduri de a face o selectie), alte cuvinte cheie nu se mai folosesc (auto, register) etc. Pana si cartea fundamentala de C, “The C Programming Language” de Brian Kernighan si Dennis Ritchie e doar o fituica de un deget grosime comparata cu cartea fundamentala de C++ a lui Bjarne Stroustrup care e cat 2 biblii puse una peste alta.

C este un limbaj imperativ extrem de mic si prin urmare se invata mult mai repede decat un limbaj care stie programare procedurala, programare orientata pe obiect si programare functionala ca Python, sau metaprogramare ca C++.

C este un limbaj de nivel mediu. Drumul normal e de la low level la high level. Astfel un programator poate sa inteleaga bine ambele si sa stie cand se foloseste unul si cand celalalt.

psergiu - 02 Decembrie 2008 11:57 PM

c este un limbaj “simplu” doar daca cunoști foarte bine arhitectura hardware a sistemului pe care lucrezi:
- aranjarea biților în registrele procesorului;

Aranjarea bitilor in registrele procesoarelor te intereseaza daca scrii cod trully low-level, de exemplu drivere, compilatoare si stseme de operare. In 99% din cazuri nici macar nu stii ca exista procesorul are registre. Programatorul C lucreaza cu ce ii spune standardul, si standardul nu zice nimic despre endianess. Cand copiezi 2 variabile o sa se copieze foarte bine fara sa ai habar de existenta little-andian si big-endian.

psergiu - 02 Decembrie 2008 11:57 PM

lățimea unui char, word & log pe pe acea platformă;

Catusi de putin adevarat. De fapt daca programezi cu notiunile alea in minte o sa scrii cod prost. Ce-a mai mare problema cu portarea softului pe 64 bit este ca programatorii au presupus ca sizeof(int) == sizeof(void *) pentru ca asa era pe 32 bit pe platforma lor preferata.

Standardul C iti garanteaza latimi minime si/sau maxime alte tipurilor primitive de date cu care lucrezi. Limbajul C nu este legat de vreo masina anume.

psergiu - 02 Decembrie 2008 11:57 PM

modul în care CPU accesează memoria & porturile de I/O;

Nu o sa accesezi NICIODATA porturi de I/O in C, pentru ca limbajul C nu stie ce sunt alea porturi de I/O. In primul rand nu se poate face din user space. In kernel space o sa accesezi porturi de I/O in ASM, dar deja ala e alt domeniu avansat si parca aici vorbeam despre ce recomandam unui incepator smile. Un incepator care programeaza in C nu trebuie sa stie ca exista porturi de I/O pentru ca el foloseste doar ce e in biblioteca standard si eventual ce e in biblioteci 3rd party.

Iar cand programezi user space in C “memoria” este o abstractie, ca in orice alt limbaj mai sus de Assembler. Sigur, trebuie sa stii ca accesul la memorie e lent, dar cam atat.

psergiu - 02 Decembrie 2008 11:57 PM

și legat de punctul de mai sus - modalitățile de comunicare cu utilizatorul impuse sau/și oferite de către hardware sau/și de către sistemul de operare.

Ba pardon. Trebuie sa folosesti, mai ales ca esti incepator, ce e in biblioteca standard, care cum am zis deja nu e legata de vreo implementare anume.

Daca vrei sa folosesti ferestre si socketuri—deja nu mai tine de niciun limbaj. Se face la fel in toate cu ce-ti ofera sistemul de operare, managerul de ferestre, x serverul sau orice altceva trecute eventual prin niste layere de abstractie concretizate prin niste biblioteci oarecare. In orice caz, asta e ultima problema a unui incepator. Un incepator scrie text in consola si citeste date de la tastatura sau din fisiere.

Continuarea in postul urmator. Se pare ca forumul are o limita de caractere suspicios de mica.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 14 ]
Avatar
RankRankRank
Member
Din: Vienna, Austria
Macuser din: 19.10.08
psergiu - 02 Decembrie 2008 11:57 PM

1) Învață Python sau Ruby ca să înveți să programezi propriu-zis;
2) Învață C ( & eventual C++ și ObjC după aia) că devii un Real Programmer
3) După aia poți învăța ce-ți trebuie ca să dezvolți pentru telefoane într-o zi-souă cum a zis aramdune.

Ba pardon. Dupa cum am mai zis deja o data. Drumul low level -> high level este de bun simt si benefic pentru oricine, drumul invers este plin de gropi si de obicei neconstructiv. Cum ii explici unui incepator ce e ala un Map din Python fara ca el sa stie ce e ala un if? Cum il pui sa lucreze cu concepte OOP ca polimorfism si mostenire cand nu are notiuni de baza pentru a putea intelege ce sunt alea polimorfism si mostenire? Cum sa-i explici cum functioneaza clasele cand el nu a programat niciodata un program imperativ sa stie despre cum se lucreaza cu structuri stateful si stateless. Cum il pui sa folosesca un hash cand ii lipsesc notiunile elementare de algoritmica pentru a putea intelege ce este de fapt un hash si cum functioneaza el.

Cum ii explici ca un == folosit la ceva este foarte rapid, dar un == folosit la un Map este nu numai foarte lent, dar chiar variabil in timp. Cum ii vorbesti despre complexitatile spatiale si temporale ale algoritmilor cand OOP te pune sa pui ‘+’ atat la un float (operatie elementara) cat si la un Array sau altceva. Cum sa vorbesti despre complexitate spatiala cand nu stii ce e aia stack si heap.

Este esential in programare pentru a scrie cod bun sa folosesti structuri si tehnici high level doar cand intelegi exact cum functioneaza si esti capabil sa-ti implementezi singur structurile respective.

Un programator care stie bine programare si a inceput cu C poate oricand sa treaca la orice altceva fara probleme. Cunosc multi programatori care au scris drivere si acuma programeaza .NET sau Java la un nivel foarte ridicat, dar nu cunosc nici un programator (nici macar unul!) care a trecut de la high level la low level. Cunosc multi care au incercat, dar au ajuns programatori mai putin decat competenti. Ba mai mult—toti acum sunt genul de zeloti care nu stiu altceva decat limbajul lor si practic nu stiu sa gandeascam fac numai ce li se spune. Sunt foarte usor de remarcat.

Limbajele high level vin cu o mentalitate periculoasa pentru cineva care vrea sa invete programare. E vorba de modul ala de a scrie cod fara a te gindi ce se intimpla in spate. Un incepator nici nu are cum sa stie ce se intampla in spate pentru ca ii lipsesc conecptele esentiale. Biblioteca e un black box, alocarile de memorie nu iau timp, constructorii sint misto pentru ca “stabilesc preconditiile”, operatorul ala egal intre 2 array-uri e doar un operator, nu poate sa manance din performanta etc. Nu vorbesc de cache efficiency si alte chestii “avansate”, vorbesc de surpriza de pe fata unor noi-veniti intr-o firma de jocuri (de exemplu) care constata ca a inceput aplicatia sa mearga cu 2 FPS pentru ca ei nu stiau ca alocatul memoriei sau pasatul unui map de string-uri by value sint idei nefericite (sau simpla existenta a unui map de string-uri, dar asta afla dupa).

bobocbbb - 03 Decembrie 2008 02:50 AM

am gasit acest pdf,este bun pt a invata python?

Dupa 2 minute nu am mai rezistat traducerii execrabil de proasta. Exista putine carti traduse bine in Romana. Vezi ce ti-am recomandat eu de la Teora. In domeniul asta majoritatea resurselor sunt in Engleza, si cam trebui sa stii.

 Semnătură 

Membru retras.

Profil
 
  [ Ignoră ]   [ # 15 ]
Avatar
RankRankRankRank
Sr. Member
Din: Iasi
Macuser din: 18.10.06

Din experienta pot spune ca cel mai bine am inteles citind manuale/indrumare scrise in engleza(atentie, nu traduse, scrise). Se spune ca cel mai bine intelegi o carte daca o citesti in limba in care a fost scrisa. De obicei traducatorii incearca sa adapteze traducerea la ceea ce au inteles ei si, prin urmare, se pierde ideea principala.

 Semnătură 

Profil
 
   
1 din 2
1