Devo capire gli interni di un linguaggio di programmazione?


11

Sono un principiante di Python e mi piace molto finora. Una domanda che mi viene in mente molto spesso è se ho bisogno di capire e quindi imparare 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 in profondità bisogna immergersi in un linguaggio di programmazione per essere abili o fluenti in questo linguaggio. Confronto questa domanda con le lingue "naturali". Non conosco ogni dettaglio grammaticale nella mia lingua madre, ma sono in grado di esprimermi senza problemi in quella lingua. Questo è quando dico che parlo fluentemente una lingua. Questo vale anche per i linguaggi di programmazione?


4
Gli interni diventano importanti quando devi preoccuparti delle prestazioni.
Gort il robot

7
Conosco un bel po 'degli interni di CPython e PyPy, ma l'80% delle volte sono inutili (o addirittura dannosi, come per distrarre) per la mia programmazione Python. Sono contento di sapere che roba dell'altro 20% però, e non è solo per le prestazioni, anche per comprendere stupidi messaggi di errore e evitare comportamenti non portatili.


2
No e no. Sicuramente non è un duplicato di nessuno dei due.

1
Dipende da cosa intendi per "gli interni", ma so che non è affatto raro che i programmatori professionisti C # e Java abbiano almeno una certa comprensione della CLI o della JVM.
user16764

Risposte:


8

Non è necessario conoscere nulla degli interni di un linguaggio di programmazione per poter scrivere programmi in quel linguaggio. Tuttavia, meglio comprendi la lingua, migliore sarà il tuo programma.

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

  2. Comprendere la "cultura" della lingua ti aiuta a scrivere programmi che seguono le "migliori pratiche", rendendole più facili da capire, più sostenibili e dalle migliori prestazioni.

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

  4. Essere abili in altre lingue (specialmente quelle di un diverso paradigma) ti rende un programmatore migliore nella tua lingua principale, perché puoi mettere in pratica quelle abilità e quegli strumenti nella tua lingua principale.

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


7

Non conosco ogni dettaglio grammaticale nella mia lingua madre, ma sono in grado di esprimermi senza problemi in quella lingua. Questo è quando dico che parlo fluentemente una lingua. Questo vale anche per i linguaggi di programmazione?

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

Detto questo, semplicemente essere fluenti non è sufficiente per alcuni lavori. Alcuni tipi di autori, lavori che richiedono capacità di parlare in pubblico esemplari e alcuni accademici che si concentrano sulla lingua devono conoscerla "meglio che fluente". Allo stesso modo, alcune specialità del programmatore richiedono la conoscenza degli interni della lingua, ma per la maggior parte delle persone conoscere l'equivalente del linguaggio di programmazione di come chiedere il suo numero o ordinare un cheeseburger è sufficiente.


0

Definirei "competente" con una lingua come:

  • Comprendi la maggior parte della sintassi e le conoscenze sufficienti per ricercare eventuali nuove funzionalità che trovi nel codice di altre persone.
  • Conoscenza pratica di eventuali librerie e / o framework standard e capacità di trovare, leggere e comprendere la documentazione ufficiale su tutto ciò che è necessario utilizzare.
  • Comprensione e capacità di usare idiomi comuni e convenzioni di denominazione per la lingua.

Si noti che il modo in cui funziona la lingua non è in questo elenco, ma esiste una grande capacità di "apprendimento". Avere almeno una comprensione superficiale degli interni può essere utile, ma non è necessario per essere competente. Tuttavia, sapendo abbastanza su di loro che sarai in grado di comprendere eventuali riferimenti nella documentazione che stai leggendo è un'ottima idea.

Ad esempio: so che sia VB.NET che C # sono compilati in IL (Intermediate Language) di .NET, che viene quindi compilato per il framework di destinazione. Non so molto di IL, ma ne so abbastanza per riconoscerlo quando lo vedo e capire in senso 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 essi non è profonda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.