Is it true that one doesn't "implement a programming language"?
No, non è vero.
Sicuramente puoi implementare un linguaggio di programmazione. Ad esempio, Clang, GCC, icc, xlc, PathScale, Metrowerks, pcc e tcc sono tutte implementazioni del linguaggio di programmazione C. Oracle javac
ed Eclipse ecj
sono entrambe implementazioni del linguaggio di programmazione Java. Zend Engine, Quercus e P8 sono tutte implementazioni del linguaggio di programmazione PHP. YARV, Rubinius, JRuby, Opal, MRuby, MagLev, IronRuby, Cardinal, Ruby.NET, XRuby, RubyGoLightly, MRI, tinyrb, Alumina, IoRuby, Smalltalk.rb, SmallRuby, BlueRuby, Carbone, Topaz, RubyMotion, MacRuby, Corindone, e Red Sun sono (o erano) tutte le implementazioni del linguaggio di programmazione Ruby. CPython, PyPy, IronPython, Jython, pynie e Pyston sono tutte implementazioni del linguaggio di programmazione Python.
I was told that in some comment around here several years ago and I read that actually you do "implement a programming language".
Sì, è possibile implementare un linguaggio di programmazione. Non è necessario, tuttavia: una programmazione non è meno un linguaggio di programmazione se non è implementata. Non puoi semplicemente eseguire i programmi scritti in esso se non hai un'implementazione.
Ad esempio: il linguaggio di programmazione Plankalkül è stato creato da Konrad Zuse nel 1942-1946, ma non è stato implementato fino al 1972. Tuttavia, nei 30 anni intermedi, era certamente un linguaggio di programmazione.
The background is that I was trying to check if it is true that python is a "programming language" and not a scripting language. I think I found that the difference is meaningless and I have to know how the language is used.
Lo scripting è un tipo specifico di programmazione, quindi un linguaggio di scripting è un tipo specifico di linguaggio di programmazione. Chiedere se Python è un linguaggio di programmazione e non un linguaggio di scripting è come chiedere se un ThinkPad è un computer e non un laptop.
For example: Perl has a compiler and therefore it is a programming language if the compiler is used. The same goes for python doesn't it?
No. Questo non ha senso: perché decidere se Perl è un linguaggio di programmazione diverso a seconda che io usi o meno un compilatore? Cosa succede se tu usi un compilatore per Perl e I usi un interprete per Perl? Ciò significa che Perl è allo stesso tempo un linguaggio di programmazione e non un linguaggio di programmazione? Come funzionerebbe?
Dovrebbe essere ovvio da questo esempio, che una lingua essendo un linguaggio di programmazione che dipende da come qualcuno sceglie di eseguire programmi scritti in quella lingua è logicamente non sensata.
So if one is gonna categorize "programming language", "scripting language", "compiled language" and/or "interpreted language" then you can't know just from knowing the language, you must know how it is used or implemented.
I termini "linguaggio compilato" e "linguaggio interpretato" non sono sensoriali: la compilazione e l'interpretazione sono tratti di un'implementazione linguistica, non tratti di una lingua. La lingua rimane la stessa, indipendentemente da come tu o io abbiamo scelto di eseguire programmi scritti in esso.
Ancora una volta, immagina la seguente situazione: io e te eseguiamo esattamente lo stesso programma Python; Io uso un interprete, tu usi un compilatore: ora, Python è un linguaggio compilato o un linguaggio interpretato?
Lì non è una cosa simile come linguaggio compilato o linguaggio interpretato. I termini non hanno senso.
"Scripting" è un tipo specifico di programmazione, in cui il programma (noto anche come "script") fa parte di un ambiente più ampio e in cui la maggior parte degli oggetti viene manipolata dallo script, la maggior parte delle operazioni viene utilizzata per manipolare oggetti e la maggior parte dei tipi di dati, sono forniti da tale ambiente. Inoltre, le vite degli oggetti manipolati dallo script sono in genere indipendenti dalla durata dello script stesso.
Alcuni esempi sono lo scripting del browser con ECMAScript, dove i tipi DOM, gli oggetti DOM e le API DOM non fanno parte di ECMAScript ma piuttosto parte del browser e la durata degli oggetti DOM dipende dal browser, non dallo script. O script OS con qualcosa come Bash, Perl, Python o Ruby, in cui i processi, i file e le directory esistono indipendentemente dallo script e le utilità utilizzate per manipolarli fanno parte del sistema operativo, non della lingua.
Hence I now think that Python and Ruby not necessarily are "interpreted languages", it depends on if you use a compiler or an interpreter.
No, non dipende da niente. Sono lingue. Periodo. Il termine "linguaggio interpretato" non ha senso. Se l'inglese fosse una lingua tipizzata, sarebbe un errore di tipo.
Ancora una volta, pensaci logicamente: IFF Python essendo un linguaggio interpretato dipende dal fatto che tu usi un compilatore o un interprete, che cosa sarebbe se usassi un interprete e tu usassi un compilatore? E se cancello l'interprete e installo un compilatore, perché la definizione di Python cambierà improvvisamente per tutti sul pianeta?
Semplicemente non ha senso.