Devo capire l'interno di un linguaggio di programmazione?

11

Sono principiante con Python e mi piace molto finora. Una domanda che mi viene in mente molto spesso è se ho bisogno di capire e quindi apprendere gli Internals di un linguaggio di programmazione (come nel mio caso Python). Come forse saprai, Python stesso è scritto in C.

Quindi la mia domanda è: quanto profondo deve tuffarsi in un linguaggio di programmazione per essere abili o fluenti in questa lingua. Confronto questa domanda con le lingue "naturali". Non conosco tutti i dettagli della grammatica nella mia lingua madre, ma sono in grado di esprimermi senza problemi in quella lingua. Questo è quando dico che sono fluente in una lingua. Questo vale anche per i linguaggi di programmazione?

    
posta Flo Schönfeld 08.08.2013 - 21:37
fonte

3 risposte

7

Non è necessario sapere qualsiasi sui componenti interni di un linguaggio di programmazione, al fine di scrivere programmi in quella lingua. Tuttavia, meglio comprendi la lingua, migliori saranno i tuoi programmi.

  1. La conoscenza delle strutture dati e degli algoritmi ti aiuterà a scegliere le strutture di dati più appropriate per il tuo compito specifico. Alcune lingue possiedono queste strutture di dati internamente.

  2. Comprendere la "cultura" del linguaggio ti aiuta a scrivere programmi che seguono le "migliori pratiche", rendendole più facili da capire, più manutenibili e più performanti.

  3. Scrivere un compilatore per quella lingua (o un compilatore per un'altra lingua in quella lingua) può darti una comprensione profonda della lingua e migliorare i tuoi programmi oltre a essere semplicemente mediocri.

  4. Essere competenti in altri linguaggi (specialmente quelli di un diverso paradigma) ti rende un programmatore migliore nella tua lingua principale, perché puoi portare quelle abilità e strumenti da portare nella tua lingua principale.

Come corollario, non devi sapere nulla sul tuo computer per scrivere programmi su di esso. Ma sapere come funziona il tuo computer ti rende più bravo a scrivere programmi per questo.

    
risposta data 08.08.2013 - 21:53
fonte
7

I don't know every detail in grammar in my mother language but I am able to express myself with no problems in that language. This is when I say I am fluent in a language. Does that apply to programming languages too?

In parole semplici, sì. Finché puoi esprimere te stesso (e capire gli altri) bene, allora sei considerato fluente nella lingua.

Detto questo, essere fluenti non è abbastanza per alcuni lavori. Certi tipi di autori, lavori che richiedono capacità di parlare in pubblico esemplari e alcuni docenti che si concentrano sulla lingua devono saperlo "meglio che fluente". Allo stesso modo, alcune specializzazioni di programmatori richiedono la conoscenza degli interni linguistici, ma per la maggior parte delle persone il linguaggio di programmazione equivalente a come chiedere il suo numero o ordinare un cheeseburger è sufficiente.

    
risposta data 08.08.2013 - 21:54
fonte
0

Definirei "competente" con una lingua come:

  • Comprendi la maggior parte della sintassi e una conoscenza sufficiente per ricercare eventuali nuove funzionalità che trovi nel codice di altre persone.
  • Conoscenza operativa di qualsiasi libreria e / o framework standard e la possibilità di trovare, leggere e comprendere la documentazione ufficiale su qualsiasi cosa di nuovo tu debba utilizzare.
  • Comprensione e capacità di utilizzare idiomi e convenzioni di denominazione comuni per la lingua.

Si noti che il modo in cui la lingua funziona è non in questo elenco, ma c'è una grande quantità di "capacità di apprendere". Avere almeno una comprensione superficiale degli interni può essere utile, ma non è necessario essere abile. Tuttavia, conoscerne abbastanza da essere in grado di comprendere qualsiasi riferimento nella documentazione che stai leggendo è un'ottima idea.

Ad esempio: so che sia VB.NET sia C # sono compilati in IL (Intermediate Language) di .NET, che viene poi compilato per il framework di destinazione. Non ne so molto di IL, ma so abbastanza per riconoscerlo quando lo vedo, e capisco in generale come gestisce certe cose. Mi considero competente in C #, ma non in VB.NET, anche se gli "interni" sono gli stessi, e la mia comprensione di loro non è profonda.

    
risposta data 08.08.2013 - 21:53
fonte

Leggi altre domande sui tag