C vs C ++ per un programmatore Java (e possibilmente python) [chiuso]

3

Sono un programmatore di Hobbyist Java e vorrei approfondire le mie capacità di programmazione imparando C o C ++ e Python.

Ho letto molti articoli C vs C ++ ma nessuno di essi contiene le informazioni che sto cercando.

Vorrei sapere se è meglio imparare C o C ++. Nella maggior parte degli articoli che ho letto la maggior parte delle persone consiglia il C ++ dicendo che è meglio perché è OO ed è più facile scrivere GUI o non raccomandano C dicendo che imparerai cattive abitudini FO.

Ma posso programmare in Java, che è OO, quindi le abitudini FO non si attaccano. Per quanto riguarda la GUI, penso che Python potrebbe essere più adatto a gestirlo.

Vorrei anche sapere quale è meglio per python. cioè che funziona più bene con python o che gira più velocemente con python ecc.

Quindi raccomando C e python e java o C ++ e Python e Java

P.S Faccio la maggior parte della mia programmazione su linux.

    
posta Moyamo 07.01.2012 - 21:15
fonte

9 risposte

4

Learn C.

Conosci già un linguaggio OOP e se vuoi imparare come hobbyist C ti manterrà maggiormente interessato. Puoi imparare C ++ ogni volta che vuoi. Anche l'apprendimento di C potrebbe darti un'idea migliore del funzionamento interno della macchina Linux che potresti scoprire come programmatore hobbista.

Per quanto riguarda la lingua è migliore. Sarebbe una cattiva domanda e forse la risposta peggiore se scelgo  qualunque. Entrambi sono abili nel fare ciò che fanno.

    
risposta data 07.01.2012 - 21:28
fonte
3

Ok, la risposta corretta è: "Dipende", principalmente su ciò che vuoi fare.

Dai suoni che vuoi "migliorare le tue capacità di programmazione", cosa intendi con questo?

Se vuoi dire che vuoi trovare buoni strumenti per fare le cose, e risolvere problemi o fare qualcosa di divertente / utile, dovresti scegliere Python per cose di alto livello. Non preoccuparti delle prestazioni, in quanto puoi sempre ottimizzarlo in un secondo momento.

Python è una gioia da programmare poiché non è necessario preoccuparsi di molto del cruft in altri linguaggi e in genere può concentrarsi sulla logica dell'applicazione stessa. Python migliorerà principalmente le tue capacità di programmazione nell'area della progettazione / implementazione di un'intera applicazione, concetti OO e concetti funzionali, oltre a introdurre un sacco di zucchero sintattico. Raccomando di eseguire import this per avere un'idea di cosa tratta la comunità Python. Python è una mentalità diversa da Java, in cui il programmatore viene trattato come un adulto che sa cosa sta facendo. Ci sono pochissime decisioni arbitrarie fatte per te. In genere, Python ha scelto la soluzione più semplice / facile da comprendere per i problemi che qualsiasi linguaggio deve risolvere. Rimane molto esplicito rispetto ad altri linguaggi di scripting, quindi è molto facile da comprendere e leggere una volta superata la differenza di sintassi tra esso e Java / C / C ++. Python ha anche collegamenti a molte delle librerie / API C / C ++.

Se vuoi vedere perché è stato creato Java puoi scrivere in C ++ :). Non riesco davvero a pensare a un buon caso d'uso per C ++ che non coinvolge un gruppo di programmatori C ++ preesistenti o una grande libreria / api C ++ (ad esempio link ). Personalmente ritengo che sia uno dei linguaggi di programmazione più complicati che ci siano. Tuttavia, se il tuo obiettivo è semplicemente quello di imparare, è un buon linguaggio per quello, poiché ci sono molti problemi da risolvere e cose da sapere per far funzionare bene il tuo codice.

Modifica : poiché I non poteva pensare a un buon caso d'uso per C ++ ho trovato un ottimo thread in cui i programmatori C ++ indicano perché lo usano :) link . Ma dal momento che non posso perdonare C ++, personalmente, devo anche collegarmi a questa divertente intervista link

C è un ottimo linguaggio per l'apprendimento per molte delle stesse ragioni del C ++, ma il linguaggio in sé non è così complicato. I concetti di C e C sono ovunque. C complimenta con Python, Java, AND C ++ quindi per una pura esperienza di apprendimento, consiglierei C su ognuno di essi. Gestione della memoria e puntatori sono concetti fondamentali da cogliere completamente.

    
risposta data 07.01.2012 - 22:29
fonte
1

Dipende da ciò che desideri e devi imparare. C ++ è abbastanza "compatibile con i concetti" con Java, quindi puoi essere più veloce con esso. Ma l'apprendimento C ti costringerà a conoscere i puntatori e la gestione dello storage più rapidamente e profondamente.

    
risposta data 07.01.2012 - 21:22
fonte
1

Dipende da cosa vuoi programmare.

C è spesso usato per cose come kernel, toolkit dell'interfaccia utente ... ecc.

C ++ è usato per browser, giochi, applicazioni che hanno requisiti prestazionali speciali (CAD, progettazione 3D e simili).

Le due lingue sono molto diverse l'una dall'altra, anche se puoi scrivere programmi C in C ++, la mentalità è molto diversa.

    
risposta data 07.01.2012 - 21:40
fonte
1

Sia C che c ++ sono lingue molto esigenti.

Prima apprendo C. Acquisirai una migliore comprensione di come funziona un programma per computer e, infine, una migliore comprensione di come funziona C ++.

Comincio con C ++. Devi farlo con attenzione perché, avendo lo stesso potere che in C, potresti essere esposto a errori che non sarai in grado di capire senza una corretta comprensione dei concetti di C. D'altra parte, avrete direttamente gli strumenti per scrivere programmi più sicuri (eccezione, RAII, gestione della memoria ...). Aprirai anche gli occhi a tutta la complessità di questa lingua. C ++ non è solo un linguaggio orientato agli oggetti. Permette programmazione generica, meta-programmazione, programmazione procedurale, ...

Il mio punto di vista personale è che non puoi programmare in C ++ se non sai C. Ma non si programma mai il modo C in C ++.

Infine, C, C ++ e Java sono abbastanza compatibili con Python tramite SWIG e Jython (per Java).

    
risposta data 07.01.2012 - 21:49
fonte
1

Dato che ti piacerebbe migliorare le tue capacità di programmazione e avere già competenze in Java potresti andare con entrambe, c ++ sarà più facile ma qui c'è una lista di ragioni per cui potresti voler imparare C

  • Utile per interazioni di basso livello con l'hardware (utile per interfacciare con l'elettronica)
  • Utile per apprezzare (e capire) altri linguaggi di programmazione e paradigmi (come OOP)
  • Utile per imparare come funziona la gestione della memoria e i problemi associati (qualcosa che potresti dare per scontato in ambienti spazzatura raccolti come Java)
  • Programmazione di sistemi (strumenti Linux come Lex che genera Parser e molti altri strumenti basati su C)
  • Le cose che sono in altri linguaggi (come Mutabality e Tipi di riferimento Vs Value types) saranno più chiare

Quindi se vuoi imparare un linguaggio di livello inferiore vai per C e comunque avrai python per un linguaggio di scripting di alto livello

    
risposta data 07.01.2012 - 22:55
fonte
0

Dato che sembra che tu voglia imparare molte lingue contemporaneamente, potresti provare ad imparare Python, C e C ++. In questo modo sarai in grado di rispondere alla tua domanda per esperienza.

    
risposta data 07.01.2012 - 21:22
fonte
0

Inoltre, dichiari che stai considerando di usare Python per la tua GUI, ma non ho sentito che gli strumenti della GUI di Python siano meglio della libreria Swing di Java, una che ritengo sia piuttosto potente se la conosci bene e puoi essere usato con buoni risultati

Se qualcuno ha dati concreti che suggeriscono che ho torto, per favore pubblica il link. Sto imparando tutto.

    
risposta data 07.01.2012 - 21:39
fonte
0

Poiché C è un sottoinsieme di C ++, dovresti concentrarti solo sull'apprendimento del C ++. Conosco entrambe le lingue Ho imparato prima C. Oggi non vorrei assolutamente iniziare un nuovo progetto usando C invece di C ++. È importante imparare a usare i puntatori e puoi farlo con C ++, nessun problema. Puoi imparare le caratteristiche non orientate agli oggetti del C ++ prima di non bypassarle (cose come puntatori, strutture, puntatori a strutture, matrici, riferimenti). Quindi passa a classi e modelli.

A proposito, è più facile imparare il linguaggio Java che ha già conosciuto il C ++ di quanto immagino sarebbe il contrario. Questo è principalmente dovuto alla funzione aritmetica del puntatore in C ++.

Ci sono compilatori gratuiti per Linux.

    
risposta data 07.01.2012 - 21:46
fonte

Leggi altre domande sui tag