Come può un programmatore Java sfruttare al meglio un nuovo progetto in C o C ++?

5

Come programmatore Java, sto cercando di imparare C o C ++ scrivendo un gestore di database. Ovviamente, Java condivide molti idiomi con C e C ++, ma tuttavia entrambi presentano sfide di progettazione del programma molto diverse. Sto cercando un modo per rendere questo esercizio il più educativo possibile. Quali aspetti della realizzazione di questo progetto in C o C ++ possono aiutarmi a prendere una decisione su quale approccio mi insegnerà di più, come programmatore Java?

Un obiettivo particolare di questo esercizio sarebbe almeno un sottoinsieme delle estensioni spaziali in PostgreSQL.

Aspetti ovvi da considerare sarebbero la bontà di adattamento di C vs. C ++ per:

  • concetti di modellazione dei database in generale.
  • modellazione della modellazione spaziale in particolare

Un altro punto importante sarebbe il grado di differenza atteso da Java. Un design buono e idiomatico in C ++ sarebbe abbastanza diverso da un progetto in Java per insegnare concetti nuovi e diversi, o sarebbe per lo più gli stessi concetti con sintassi leggermente diversa? Un buon design in C contiene più concetti nuovi o diversi da uno in C ++?

    
posta picmate 16.05.2011 - 21:44
fonte

2 risposte

8

Per prima cosa, non prendere C e C ++ come la stessa bestia, anche loro sono diversi.

In secondo luogo, da Java, si potrebbe andare a uno o l'altro. C è più semplice da capire, è quasi solo funzioni.

C ++ dall'altra parte, è estraneo se hai lavorato solo con Java o .Net. Ma potrebbe essere il più interessante per te.

Raccomando di familiarizzare con ciò che chiamiamo l'idioma RAII (mal chiamato) in quanto è fondamentale per il modo in cui gestisci la durata dell'oggetto in C ++. Riguarda i distruttori e il loro impatto positivo sulla gestione della memoria. Ci sono molte altre cose da imparare, ma quella potrebbe essere la parte più interessante.

In effetti, se fossi in te, per qualsiasi nuova lingua che voglio imparare, direi che sono un principiante e che vado per tutorial di base . Non presumere mai di conoscere "molto" il C ++ nelle prime settimane. Sarai (malamente) sorpreso più tardi altrimenti. Prova a leggere Accelerated C ++ o / e Thinking C ++ (che ha lo scopo di spiegare C ++ dal punto di vista del programmatore C o Java) quindi passare a libri efficaci in C ++ e libri STL efficaci.

    
risposta data 16.05.2011 - 23:16
fonte
3

Questa è una domanda piuttosto difficile. Alla fine, penso che la lingua dipenda principalmente dalla lingua che vuoi conoscere. Questo, a sua volta, dipende principalmente dagli obiettivi che trovi interessanti.

Se il tuo interesse per un server di database è principalmente quello di scrivere qualcosa di minimalista, come per una "piattaforma mobile" (ad esempio, smart phone), il linguaggio più minimalista (C) probabilmente si adatta meglio alle tue esigenze. Si presta meglio alle situazioni in cui (per un ovvio esempio) le dimensioni eseguibili contano più della flessibilità o di un ricco set di funzionalità.

Se stai pensando ad un server di database più simile a qualcosa che gestisce enormi quantità di dati, ed è probabile che funzioni su hardware relativamente di fascia alta (che potrebbe essere dedicato quasi esclusivamente all'esecuzione di quel software) allora È probabile che il C ++ sia molto più adatto. Il C ++ ha alcuni costi (eseguibili più grandi) per i programmi piccoli e molte delle funzionalità aggiunte a C sono pensate principalmente per mantenere il codice organizzato in programmi più grandi.

Vorrei raccomandare cautela su un punto: qualunque sia il tuo modo di procedere, sii preparato al fatto che il qualsiasi cambio di lingua tende ad essere almeno un po 'doloroso per un po'. Soprattutto nelle prime settimane, inevitabilmente ti ritrovi a pensare ad alcune varianti di: "ma perché non potevano lasciarmi fare X, come mi sono abituato?"

Se continui ad avere questi pensieri per un tempo lungo , potrebbe semplicemente essere che Java sia più adatto al tuo modo di pensare e programmare, e starai meglio con Java. Tuttavia, vorrei evitare di concludere che troppo presto - come ho detto, soprattutto per le prime due settimane, e in misura minore per alcuni mesi, sono quasi inevitabili, anche se dovessi trovare C o C ++ preferibile dato abbastanza possibilità.

In tutta onestà, dovrei aggiungere che anche se non voglio tornare da loro, ci sono alcune poche caratteristiche delle lingue che ho usato per usare che mi mancano ancora. Non ho scritto alcun Pascal in anni ora, ma mi manca ancora il suo supporto integrato per i set e la possibilità di fare cose come if X in 1..20 . Persino Fortran aveva ancora alcune caratteristiche poche . Di certo non mi mancano quei pezzi abbastanza da dare a qualsiasi pensiero serio (ancora) di tornare a usare Fortran a qualsiasi livello di bisogno estremo, ma ~ 30 anni fa, quando stavo imparando Pascal, I certamente did.

In effetti, a un certo punto I ha effettivamente provato a tornare a usare Pascal dopo aver usato C per alcuni anni. Passare da Fortran a Pascal era quasi euforico. Passare da Pascal a C non ha mai provato quasi come positivo, quindi dopo alcuni anni di utilizzo di C, ho deciso di tornare su Pascal. Quello era, in una parola, orribile. Nonostante alcuni buoni punti che erano facili da ricordare, Pascal ha avuto lontano troppe carenze orribili che ero riuscito a dimenticare (e non avevo inizialmente notato quanto fosse davvero enorme un miglioramento C). Fortunatamente, non è stato tutto uno sforzo inutile: mi ha fatto uscire dal C abbastanza da non esserci mai tornato, e invece sono passato al C ++ (anche se, sfortunatamente, non ho trovato nulla di abbastanza attraente da farmi fuori da che da quando, nonostante ci abbia provato un paio di volte).

    
risposta data 17.05.2011 - 17:22
fonte

Leggi altre domande sui tag