Jump to content
raze

C++ help

Recommended Posts

Ar putea cineva sa posteze un tutorial sau un link ceva catre o carte, despre c++ ..adica baza : algoritmi, implementarea algoritmilor, implementarea structurilor de date etc.. Vreau sa aprofundez cat mai mult baza. Eu am gasit cate ceva , dar nu este explicat f bine si nici nu cuprinde multe informati..

Link to comment
Share on other sites

Pe tine te intereseaza algoritmi sau sa inveti limbajul c++? Algoritmi poti sa scrii si sa testezi in aproape orice limbaj.

Pentru algoritmi iti sugerez sa cauti cartea Amazon.com: Introduction to Algorithms (9780262033848): Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Books . Mai completa de atat nu cred ca exista

Pentru limbajul c++ : Learn C++

Link to comment
Share on other sites

Daca vrei sa inveti C++ ai cam gresit ordinea, mai intai inveti tipuri de variabile, declarari de variabile, instructiunile ( for, while, if etc. ) si abia dupaia treci sa faci algoritmi. Ebook-uri pentru a invata sincer nu am gasit. Ce am gasit si mi-au fost bune au fost pentru aprofundare. Recomand sa cumperi un manual de informatica de liceu daca nu te descurci cu engleza. Bafta !

Link to comment
Share on other sites

Ar trebui sa se puna in regulament sa se dea warn pentru sfaturi necerute..

Nemesis , se vede clar ca n-ai invatat C++ ca sa zici ca stii despre ce vorbesti, te rog frumos nu mai da sfaturi in nestiinta de cauza.

Asa ca fapt divers eu am invatat C++ "de baza" in vreo 4-5 luni si de acolo m-am descurcat destul de lejer in tot ce mi-a trebuit.

Stiu ca nu l-am invatat pe tot si nu-s expert dar nici tu nu inveti tot pythonul in 4-5 luni si daca vrei sa faci chestii mai complicate gen GUI tre sa inveti practic aceleasi librarii ca-n C++.

Link to comment
Share on other sites

mergi la librarie si cumpara-ti cartile pentru liceu de la Tudor Sorin, sunt usor de inteles si ieftine. Daca vrei ceva mai serios cumpara ce ti-a spus phreak - Cormen. Parerea mea persoanala este ca o carte nu se compara cu o serie de tutoriale, nu inveti programare din tutoriale ci inghiti programul pe care ti-l face nenea acolo. Spor la treaba!

Link to comment
Share on other sites

@phreak Cum iti explici ca sunt foarte multi oameni (si la google) ce prefera sa scrie C in Python prin Cython decat sa scrie direct si sa compileze ? Neme a vrut sa spuna ca is sanse mai mari sa i se deschida apetitul pentru programare si algoritmica daca foloseste mai intai o unealta mai usor de folosit ce nu necesita ditamai manualul pentru a face ceva rapid si practic. Te asigur eu ca cel mai usor mod de a face o interfata in C/C++ (totusi sa se vada si bine + compatibilitate) si fara sa-ti dai pumni in cap la sfarsit este sa alegi GTK/Qt si tot e mult mai greu decat Tkinterul.

Totul pleaca de la ideea ca nu trebuie sa mai tii cont de ce aloci si cum aloci, iar totul fiind un obiect asta simplifica mult lucrurile la scara mai mare.

On: box.com/cmiN vezi in /tutorials/C++

Link to comment
Share on other sites

Ce vroia el sa zica e ca C++ e INCREDIBIL de greu si eu i-am explicat ca nu stie despre ce vorbeste.

Te asigur eu ca oamenii aia de la google stiau C dinainte sa scrie prin Cython.

Deci vine omul si intreaba de unde poate invata C++ care e un limbaj compilabil si voi ii sugerati un limbaj de scripting, corect nu?

NU SUNT IMPOTRIVA PYTHON dar fiecare limbaj are scopul lui, eu folosesc python sa-mi automatizez compilarea, generare de cod C++, nu zic ca-i degeaba DAR nu poti sa-l propui pe langa un limbaj compilabil.

Eu zic s-o mai lasati moarta cu alocarea vietii , ai smart pointers , te asigur eu ca memory management-ul nu e deloc grue de facut. Eu nici nu ma gandesc la el, mi se pare un blocaj mental idiot.

tl;dr : Python nu este un limbaj ce poate inlocui C++, end of story.

Link to comment
Share on other sites

@phreak

1)gresesti. stiu si C++ si python si altele.

2)c++ chiar e incredibil de greu. o sa iti dai seama cand incepi sa lucrezi cu threaduri si cu socketuri si interfete grafice. e greu chiar si pentru un programator cu ceva experienta, dar pe un incepator o sa il bage in ceata total si o sa zica ca nu'i de el.

3)in python poti sa faci tot ce faci in C++ si poti si sa compilezi scripturile cu un anumit plug in daca chiar vrei un .exe

python nu poate inlocui C++? asta depinde pentru ce la folosesti. daca le folosesti sa faci programe banale sau vreun scraper sau 99% din aplicatiile care ai vrea sa le faci chiar e de preferat python in locu la c++. daca vrei sa scrii vreun sistem de operare ... pai in cazu asta e de preferat C. Vrei sa programezi ptr Iphone? ok aici merita sa inveti C++ ca sa ai o baza stabila.

Link to comment
Share on other sites

De unde stii tu cu ce am lucrat eu? Am facut si threading si socketuri si interfete grafice in C++.

Threading-ul nu e mai greu decat in orice alt limbaj pentru ca complexitatea threading-ului sta in DESIGN nu in limbaj, sta in cum gandesti tu programul , limbajul e irelevant.

"Socketuri" - fa tu servere in python care sa accepte cateva zeci de mii de conexiuni pe secunda fara sa folosesti vrun binding la o librarie C++ .

Eu sincer nu cred ca tu ai facut toate astea, le ai asa in minte ca-s complicate si crezi ca ai o idee despre ce vorbesti.

Fa ta RAT-uri, botneti, bruteforcere multi-threaded in python si ma anunti cand termini. Astea ar fi aplicatii medii spre mari.

Sa inlocuiesti C++ nu inseamna o parte din el, eu zic ca n-o sa fie niciodata C++ obsolete din cauza python-ului si voi sa nu va mai bagati ca musca-n lapte cand vine unu si VREA SA INVETE C++ , lasa-l sa invete nu-i dai peste bot si-i zici ca-i prea prost, eu nu vin in threadurile voastre cu python sa va "arat calea cea dreapta".

Si toata complexitatea de care vorbiti voi n-are absolut nici o relevanta pentru un incepator care vrea sa invete algoritmica si alte prostii, nu tre sa stii deloc ce-i aia alocare dinamica pentru chestii de genul asta.

Link to comment
Share on other sites

phreak

stai putin sa clarificam lucrurile. nu am zis ca stiu in ce lucrezi/ai lucrat tu. doar mi'am dat cu parearea, cum si tu tzi'ai dat cu parearea ca eu nu stiu despre ce vorbesc.

eu nu's vreun fanatic python care incerc sa convertesc lumea de la c++

i'am dat doar un sfat la op (la care in nici un caz nu i'am dat peste bot si i'am zis ca e prost) pe care mi'as dori sa il fi primit si eu cand m'am luat de programare.

e mult mai usor sa inveti algoritmica cand nu stai sa iti bati capu cu sintaxa complicata din c++

pe deasupra, in python poti sa faci lucruri mai complicate cu un nivel mai mic de cunostinte. asta e important pentru un incepator ca sa nu se demoralizeze, si odata ce a invatat principiile, o sa ii fie mult mai usor sa invete un limbaj de programare de nivel jos, ca c++

daca vrea sa invete sau nu python e treaba lui. eu doar i'am atras atentia ca exista si alte optiuni mai bune pentru un incepator.

complexitatea unui program sta de multe ori in limbaj. daca nu probabil ar coda toata lumea in asm sau de ce nu direct in op codes ca e cel mai eficient. fa o conexiune prin sockets in java unde dai socket.accept() si cam aia e conexiunea, si fa una in c++ unde scrii vreo 20 de randuri si o sa imi dai dreptate.

Link to comment
Share on other sites

Ce nu suport eu e perpetuarea conceptiei asteia precum ca C++ e "incredibil de greu" cum l-ai depictat tu. Cand tu nu ai trecut prin partile alea "incredibil de grele" ca sa stii despre ce vorbesti.

Lasa-l sa invete si sa decida pentru el insusi daca-i atat de greu, nu strica putina cunostinta. Eu iti garantez ca daca e atat de intimidat incat se lasa batut de programare n-avea nici o sansa in domeniu, domeniu asta oricat de usor te-ar lua cineva tot e dificil si-ti trebuie perseverenta dinainte sa te apuci, daca n-ai aia plus interesul in domeniu ca incepi cu python/ C / asm tot aia e.

Va comportati cu noii veniti de parca-s niste vrabioare timide pe care nu stiti cum sa nu le speriati, mie mi se pare o atitudine idioata. Daca chiar il intereseaza ce-i aia programare o sa se tina, daca nu , drum bun si cale lunga. Domeniul asta nu-i pentru oricine.

Te rog eu nu mai fa afirmatii in nestiinta de cauza, in C++ nu e greu networkingul daca stii ce librarii sa folosesti. Si setupu ala de 20 de randuri desi defapt e vreo 5 te face sa intelegi cu ce se mananca.

"fa una in c++ unde scrii vreo 20 de randuri si o sa imi dai dreptate." abtine-te de la afirmatii de genul asta.

Asta cu datu parerii.. tine-le pentru tine sau da-le doar in cazul in care nu raspunde cineva mai avizat, pe IRC cand raspund la o intrebare la care nu-s sigur de raspuns, o fac dupa vreo 2-3 minute cand nu se baga altcineva mai bun ca mine si daca gresesc si mi se spune ma dau la o parte si-l las pe ala cu experienta. Nu ajuti pe nimeni sustinandu-ti "parerile" daca parerile alea-s pur speculative.

Link to comment
Share on other sites

Uite o carte in romana care sper sa te ajute: TOTUL DESPRE C SI C++ (MANUALUL FUNDAMENTAL IN C SI C++).pdf

Eu am ceva experienta in Java dar de curand am inceput sa mai studiez si C++ pentru ca mi se pare ca ofera mai multe posibilitati, e un limbaj mai puternic care iti ofera mai mult control.

Apropo, un client-server in java arata cam asa:

Server:

package com.m2g.hospital.server.hospitalServer;

import java.io.IOException;
import java.net.ServerSocket;


public class HospitalServer {

private static int port = 1337;
private static boolean listening = true;

public static void main (String[] args) throws IOException {

ServerSocket server = null;
try {

server = new ServerSocket(port);

} catch (IOException e) {
System.err.println("Could not listen on port: " + port);
System.exit(1);
}


while(listening) {

new HospitalServerThread(server.accept()).start();

}

}
}

Client:

package com.m2g.hospital.client.hospitalClient;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import com.m2g.hospital.server.data.Command;


public class HospitalClient {

private static int port = 1337;
private static String host = "localhost";

private ObjectOutputStream out;
private ObjectInputStream in;


public HospitalClient() {

Socket socket = null;

try {

socket = new Socket(host, port);
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}


}

public ObjectOutputStream getOut() {
return out;
}

public void setOut(Command obj) {
try {
out.writeObject(obj);
out.flush();

} catch (IOException e) {

e.printStackTrace();
}


}

public Object getIn() {
try {
return in.readObject();
} catch (IOException e) {

e.printStackTrace();
} catch (ClassNotFoundException e) {

e.printStackTrace();
}
return null;
}

public void setIn(ObjectInputStream in) {
this.in = in;
}


}

Link to comment
Share on other sites

Off: Nu e rau M2G, dar incearca sa folosesti 'raw data'(binary). Acele obiecte vor fi intelese doar de java:), sunt ele bune pentru acel mediu, dar vei vedea ca pun probleme cand comunica cu o aplicatie c/c++ (aceea citind de la inceput 'bytes', nu te impiedica nimeni sa schimbi format)

On: Daca nu era c si c++ nimic nu era, ori aveau un alt nume. Din moment ce inveti c++ o sa vezi ca se regasesc in mai multe limbaje acele structuri. Eu nu am inceput cu c++, l-am ocolit pana acum 4 ani. Dar foloseam limbaje asemanatoare, care mi-au data o vaga idee despre ce se intampla. Singurul lucru care ar putea sa-ti faca scarba sunt templateurile, si posibil si stivele/listele(cele create de tine nu cele ereditate, sau precreate in headere).

Le: Ah si nu in ultimul rand poti pune intrebari. Noi nu fugarim pe cei care vor sa inteleaga ci pe cei care vor sa li se faca.

Edited by noVaLue
Link to comment
Share on other sites

@ps-axl

stiu html :D

@NemesisITSC

m-am gandit sa incep cu c++ deoarece pe asta am inceput sa-l studiez la liceu , dar profesorii nu isi dau f mult interesul . La python sincer , nu m-am gandit pana acuma , nici nu stiu f multe , decat ca e folosit pentru servicii web de mare anvergur? ( Google, Yahoo) si ca nu trebuie sa imi bat capul cu erori interminabile de compilare ca in c++ , asta din ce am citit pe net.

Va multumesc pt sfaturi :D.

Link to comment
Share on other sites

python il folosesc toate marile firme de la BitDefender la noi in tara pana la nasa. limbaju e derivat din c++, din care s'au eliminat anumite 'defecte' precum necesitatea de a delimita un bloc de instructiuni prin "{}". In python faci asta prin indentare. Si multe altele.

cam tot ce poti face in c++ poti face si in python si avantaju e ca o faci in mult mai putin linii de cod. dupa cum spune si mottoul lor: "Life is short. learn python".

totusi avantajele astea care le aduce limbaju vin cu pretu de a scade putin din eficienta programelor scrise in python, si deasta e folosit in general la aplicatii mici sau mijloci. Nu cred ca a incercat cineva sa faca un program gen adobe photoshop sau un sistem de operare in python. aici e de preferat sa stii c sau c++.

dar sa fim seriosi. alea nu sunt proiecte pe care sa le faci singur oricum, si oricat de destept ai fi, tot or sa treaca ani pana cand nu o sa fie limbajul python suficient de puternic pentru nevoile tale.

spor la invatat, orice te'ai decis tu ca vrei sa inveti.

Link to comment
Share on other sites

Eu tot zic sa va bagati cu pythonul in threaduri cu topicul "C++ e prea greu, recomandati alt limbaj" nu in threaduri cu topicul "Vreau sa invat C++" . Cand vii la mine si ma intrebi cum se face painea nu te trimit la supermarket sa-ti cumperi. In rest discutam degeaba, ramaneti voi la pythonu vostru numai nu bagati prostii la altii in cap , atat va rog.

Link to comment
Share on other sites

phreak ma bag cu ce limbaj vreau in ce topic vreau pana cand o sa scrie in regulament ca nu am voie sau cand o sa imi atraga atentia un moderator/admin sa nu mai fac asta.

intre timp te rog sa lasi loc la aia care vor sa faca commenturi utile ca nu te'a intrebat nimeni cum ar arata constitutia in opinia ta.

Link to comment
Share on other sites

Sabayon e o treime python si doua treimi shell (in afara de kernel si coreuri din stage1) =)). Nu am nimic cu nimeni, dar imi placea cearta, ba chiar recomand sa se invete C apoi C++, intr-adevar el reprezinta baza, te invata sa fii econom si eficient apoi te diferentiaza de asa-zisii "programatori de carton" din java prin algoritmica (no offense).

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...