Una profonda conoscenza di C ++ ti aiuterà nell'apprendimento di altre lingue più velocemente / più facilmente? [chiuso]

9

C'è la possibilità che qualcuno che ha imparato tutti gli aspetti chiave del C ++ e conosca molto bene i fondamenti della lingua, imparerà altri linguaggi (come Python, Perl, Java) più velocemente e più facilmente?

    
posta l.. 08.01.2015 - 16:51
fonte

7 risposte

12

In condizioni generali

È probabile che una conoscenza approfondita di qualsiasi linguaggio di programmazione ti aiuti a trovare altre lingue più velocemente. Questo è parzialmente dovuto al fatto che la programmazione è un modo di pensare più di quanto non stia imparando la sintassi. La maggior parte delle pratiche di programmazione sarebbe vera per la maggior parte degli altri linguaggi di programmazione. Questo è il motivo per cui le persone dicono che impari sempre il secondo linguaggio di programmazione più rapidamente del primo.

In termini specifici

C ++ è un linguaggio che consente un "controllo" molto maggiore rispetto ad altre lingue. Questo può essere sia buono sia cattivo. Ad esempio una vera pistola è meglio di un fucile ad aria compressa quando vai nella foresta (perché puoi effettivamente sparare a qualcosa), ma è anche più pericoloso per te e quelli che ti circondano. C ++ ha concetti come la gestione della memoria, di cui non devi preoccuparti nella maggior parte degli altri linguaggi. Tuttavia, avere una solida conoscenza di questi concetti è tutt'altro che inutile anche quando si lavora con i linguaggi di gestione automatica della memoria. Puoi anche eseguire operazioni bit a bit e andare molto più in basso verso il "metal" con un linguaggio come C ++. Anche una comprensione di base in queste aree può aiutarti molto come programmatore in qualsiasi lingua.

Opinione personale

Personalmente ho imparato Java per circa 3 anni prima di imparare il C ++, e dovrei dire che mi dispiace (uni course ...). Questo ha reso l'apprendimento del C ++ (sto ancora imparando - lontano dalla conoscenza "profonda": D) non così semplice come mi piacerebbe. Se l'avessi fatto al contrario, direi che sarebbe stato molto più facile per me. Soprattutto quando sai PERCHÉ qualcosa viene fatto in un modo specifico, e non solo stai tranquillo sulla auto-magia del linguaggio. Se posso dare un parere, suggerirei: C (per i paradigmi di programmazione di base e universale) - > C ++ (per la comprensione di base di OOP insieme alla gestione della memoria) - > Quindi puoi entrare in qualsiasi linguaggio OOP "reale" con una buona base o continuare con argomenti più avanzati in C ++, il tutto a seconda di ciò che stai pianificando di fare.

    
risposta data 08.01.2015 - 17:27
fonte
9

Purtroppo no. Questo è in realtà un grosso problema quando si insegna C ++ nelle classi di programmazione, specialmente nelle classi di livello principiante: si possono apprendere i principi di programmazione, oppure si può imparare il linguaggio C ++, ma il linguaggio C ++ ha troppe insidie e stupidi trucchi per imparare entrambi efficacemente all'interno lo scopo di una classe di un semestre!

Ci sono molte cose che sono state provate in C ++ e che alla fine sono diventate idiomatiche nella lingua attraverso l'inerzia pura, che praticamente ogni altro linguaggio da quando ha guardato e respinto perché si è rivelato un errore enorme. I più importanti sono i modelli di C ++ e il modello a oggetti di C ++ (gli oggetti come tipi di valore non sono mai una buona cosa, perché interrompono la sostituzione di Liskov e gli stessi OOP stessi.)

Quindi, se acquisisci una profonda conoscenza del C ++ prima, e poi vuoi imparare altri linguaggi di programmazione, ci sarà un sacco di roba dannosa e controproducente che dovrai disimparare in per essere efficace in altri linguaggi di programmazione.

    
risposta data 08.01.2015 - 17:17
fonte
8

No. Conoscere bene C ++ renderà più facile imparare altre lingue che sono come il C ++. Ma sarebbe noioso. Perché vorresti conoscere due lingue uguali? Questo non ti compra nulla (Si noti che questo non è specifico del C ++, si applica a qualsiasi lingua. Confronta con le lingue naturali: imparare l'italiano non renderà più semplice l'apprendimento di altre lingue. Sarà più facile imparare lo spagnolo, il francese o il portoghese e imparare tre di quelli renderà più facile imparare il quarto, ma anche l'apprendimento di tutte lingue romanze non ti aiuterà un po 'a imparare finlandese, cinese, hindi, ebraico, arabo, pashtu, greco, ecc.)

I linguaggi di programmazione implementano i paradigmi. Peter van Roy ha raccolto un poster dei 34 principali paradigmi di programmazione .

I paradigmi, a loro volta, sono composti da concetti. Quel poster elenca circa 18 concetti.

I

Tutti i paradigmi (o almeno quelli nel poster) sono composti da questi concetti. Tutte le lingue implementano uno o più paradigmi composti da questi concetti. Quindi, se impari questi concetti, imparerai (in un certo senso) tutti i linguaggi di programmazione contemporaneamente.

Naturalmente ci sono ancora molte stranezze specifiche della lingua (tra le quali la sintassi). Inoltre, quel poster ignora completamente la digitazione, e naturalmente c'è una differenza significativa tra un sistema di tipo F <: stile di stile, un sistema di tipo stile Scala o un tipo di tipo anatra dinamico sistema, per non parlare di un sistema di tipo dipendente alla Idris, Agda, Coq, Guru o ATS.

    
risposta data 08.01.2015 - 17:15
fonte
5

Direi che conoscere perfettamente qualsiasi linguaggio di programmazione aiuterà nell'apprendimento degli altri, almeno in altre lingue della stessa famiglia. Ad esempio, la conoscenza di C ++ non sarà di grande aiuto con LISP o Haskell, ma per i linguaggi procedurali orientati agli oggetti lo farà. Il mio approccio è stato quello di provare e imparare una lingua da ciascuna delle diverse famiglie (procedurale, funzionale, orientata agli oggetti, ecc.) Delle lingue, quindi quella conoscenza può trasferirsi in altre lingue in quella famiglia. D'altro canto, una conoscenza approfondita dell'APL non aiuterà con altro ...

    
risposta data 08.01.2015 - 17:12
fonte
5

Qui prenderò un'interpretazione diversa.

C ++ è un buon linguaggio per l'apprendimento della memoria e delle strutture dati, poiché ti costringe a riflettere attentamente su concetti come proprietà degli oggetti e durata della vita. E l'apprendimento della memoria e delle strutture dati è una delle parti essenziali di qualsiasi programma di ingegneria del software.

Ma devi imparare a conoscere le strutture dei dati. Se semplicemente "impari il C ++", non guadagnerai molto, e potrebbe rallentare il processo di apprendimento di altre lingue a breve termine.

Quando ero al college, Data Structures era un corso richiesto a livello di matricola, preso dopo CS1 (che almeno metà della classe aveva lasciato fuori). Era difficile. Il formato del corso era fondamentalmente "Ecco una struttura di dati che non hai mai visto prima [ad esempio un heap di sinistra ]. in C ++ in una settimana e fai in modo che l'output corrisponda esattamente al nostro output atteso, byte per byte, in modo che possiamo classificarlo automaticamente. " Poi, la prossima settimana otterrai una nuova struttura dati e un nuovo incarico. Probabilmente ho imparato di più in quel corso che in tutti i miei altri corsi combinati.

Questo è il tipo di apprendimento che devi fare affinché C ++ sia prezioso.

    
risposta data 08.01.2015 - 18:15
fonte
2

Ogni lingua che impari rende il prossimo più facile da imparare, specialmente all'interno dello stesso paradigma. Si prendono in prestito pesantemente l'un l'altro, e dopo un po 'si arriva al punto in cui una nuova lingua sembra semplicemente una raccolta di funzionalità di altre lingue, con alcuni colpi di scena unici.

Non penso che il C ++ sia migliore o peggiore di qualsiasi altro linguaggio a riguardo. È uno dei linguaggi più prolissi che conosco e rende difficili alcune cose nella maggior parte degli altri linguaggi, ma questo non necessariamente si traduce nel rendere la lingua successiva più facile per imparare . Generalmente, la lingua successiva è più facile da usare uso . C'è una differenza.

    
risposta data 08.01.2015 - 17:21
fonte
0

No. Una profonda conoscenza di C , o del sottoinsieme di C ++ che è "fondamentalmente C", aiuterà quando si imparano altre lingue, almeno quando si immagina cosa devono fare le loro implementazioni. Una profonda conoscenza di C ++ , d'altra parte, sarà per lo più informazioni confuse o irrilevanti nell'apprendimento di altre lingue; se impari l'orientamento all'oggetto di C ++ a più di un livello di superficie, ad esempio, quando passi a Perl / Python / Ruby passerai più tempo a non imparare ciò che sai che a usarlo, dal momento che gli oggetti in quelle lingue sono implementati in un modo completamente diverso rispetto a C ++. La stessa cosa è vera in misura maggiore o minore per la maggior parte degli altri linguaggi e per altre funzionalità linguistiche (ad esempio, i modelli C ++ e il polimorfismo di Haskell sono fondamentalmente la stessa funzione, con, ancora, implementazioni completamente diverse). Quindi la profonda conoscenza del C ++ sarà per lo più specifica per C ++.

    
risposta data 08.01.2015 - 19:21
fonte

Leggi altre domande sui tag