Comprendi il linguaggio di scripting

6

Citato da Wikipedia :

A scripting language, script language or extension language is a programming language that allows control of one or more applications and makes the compiler of the language part of the language runtime, and as a result, enables code to be generated dynamically. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the end-user. Scripts are often interpreted from source code or bytecode, whereas the application is typically first compiled to native machine code.

  1. Mi chiedevo cosa "abilita il codice" essere generato dinamicamente "significa? Non è il codice in un linguaggio di scripting scritto prima che venga eseguito, quindi come è generato dinamicamente?
  2. Per definizione, è uno script linguaggio sempre interpretato linguaggio? Al contrario, è un linguaggio interpretato sempre a linguaggio di scripting? Sembrano essere molto simili tra loro, o persino la stessa cosa.
  3. Com'è un linguaggio non-scripting?

Grazie e saluti!

    
posta Tim 09.07.2011 - 04:32
fonte

4 risposte

10

Non esiste uno standard tecnico che definisca un linguaggio di scripting. È solo una parola definita dall'uso comune e, come ogni altra parola di uso comune, non garantisce che tutti gli usi siano coerenti. Affrontando le tue domande specifiche:

  1. La generazione del codice dinamico che sono parlare di codice macchina. In un linguaggio interpretato classico (pensa Interprete BASIC), ogni volta una riga di uno script è eseguito, quella linea è tradotta sul posto nel codice macchina nativo. È più complicato ora, dal momento che molti linguaggi di scripting verranno tradotti in byte code per una macchina virtuale e il codice byte potrebbe essere memorizzato nella cache.

  2. Questo è dove diventa molto confuso, e cambia nel tempo. In olden giorni, praticamente ogni script il linguaggio era un classico interpretato linguaggio. Oggigiorno molti usano codice byte, macchine virtuali e possono usare il Just-in-time compilatori. A quel punto la linea tra lingue interpretate e compilate le lingue sono sfocate. Eppure, io no conosci di qualsiasi lingua comunemente indicato come linguaggio di scripting che è compilato nel classico senso di una conversione una volta a codice macchina nativo.

  3. Lingue comunemente chiamate scripting le lingue di solito forniscono una suite di strutture di dati di alto livello come insiemi, elenchi e dizionari, come bene come caratteristiche come regolari espressioni. Ci sono interpretati lingue che non forniscono quelle caratteristiche di alto livello, e loro di solito non sono chiamati scripting le lingue. Non penso molte persone farebbe riferimento a BASIC interpretato o anche a UCSD Pascal come un linguaggio di scripting.

risposta data 09.07.2011 - 05:58
fonte
5

Charles E. Grant ha colpito il chiodo sulla testa, ma vorrei aggiungere qualcosa. Da un punto di vista pratico, i linguaggi di scripting sono (soprattutto) quelli in cui non è necessario impostare un processo di compilazione per ottenere una soluzione in esecuzione. Quindi puoi semplicemente prendere un editor di testo, digitare il tuo codice Perl / Python / Ruby / Bash / VBScript / awk / [... aggiungi il tuo linguaggio di scripting preferito qui ..], salvarlo in un file ed eseguirlo. Ciò semplifica anche la creazione di programmi che generano codice di scripting in modo dinamico sulla macchina degli utenti ed eseguono quel codice, cosa si intende con l'istruzione wikipedia citata.

Quando usi linguaggi come C / C ++ / Java / Fortran / COBOL / Pascal / [... aggiungi qui il tuo linguaggio non-scripting preferito ...], in genere devi impostare una fase di compilazione / collegamento prima di ottenere qualcosa di eseguibile dal tuo codice sorgente. In molti scenari, l'utente non ha un compilatore per quelle lingue sulla sua macchina, quindi non è possibile scrivere facilmente programmi che creano altri programmi nella stessa lingua al volo ed eseguono quelli sulla macchina degli utenti. Ci sono, naturalmente, linguaggi che non sono considerati come linguaggi di scripting dove questo è possibile (come C # e VB.NET, non sono sicuro di Java), ma come scrisse Charles E. Grant, la linea tra quelle categorie è sfocata .

Alla tua domanda sui "linguaggi interpretati": per quanto ne so, ciò che accade dietro le quinte non è importante per la distinzione tra linguaggi di scripting e non scripting. Non importa se il tuo ambiente di esecuzione interpreta direttamente il codice sorgente, o se lo compila con un codice byte, che può essere compilato in tempo reale per codice macchina. Finché l'ambiente ti fa "sentire", esegue direttamente il codice sorgente senza la necessità di creare una fase di costruzione, è un linguaggio di scripting.

    
risposta data 09.07.2011 - 10:08
fonte
3

La prima domanda a cui rispondere, cos'è uno script (e in che cosa differisce da un programma).

Uno script è una sequenza predefinita di comandi che in genere non richiede alcuna interazione con la console (e in effetti spesso nessuna interfaccia utente). Un linguaggio di scripting è una lingua che supporta lo scripting. In generale, qualsiasi linguaggio può fare ciò che fa un linguaggio di scripting, ma non è necessariamente interpretato (ad esempio uno script awk può essere convertito in C).

    
risposta data 09.07.2011 - 05:27
fonte
3

Ecco la mia definizione di script, spero che possa aiutarti a capire.

Script - è una soluzione rapida per alcuni semplici problemi. Alcuni esempi sono: script di implementazione (copia i file delle app nei luoghi richiesti, riavvia i servizi), script di parsing del log, ecc. Le prestazioni non contano qui, la capacità di scrivere e modificare lo script velocemente - questo è importante. Quindi, il linguaggio di scripting è la lingua adatta per scrivere script.

I was wondering what "enables code to be generated dynamically" means? Isn't code in a scripting language written before it gets run, so how is it generated dynamically?

"consente al codice di essere generato dinamicamente" significa che in linguaggio di scripting si potrebbe fare qualcosa come eval("print 'hello world! ")".

By definition, is a scripting language always an interpreted language? Conversely, is an interpreted language always a scripting language? They seem to be very close related, or even the same thing.

Sì, una specie di. Ma molti dei moderni linguaggi di scripting non sono interpretati in modo restrittivo. Per esempio. python genera bytecode dalla sorgente. Non è un codice macchina, ma esiste ancora una fase di compilazione.

How is a language non-scripting?

Qualsiasi linguaggio che non consente di scrivere one-liners è non-scripting. Per esempio. non puoi scrivere l'app C senza la funzione main () o l'app java senza scrivere una singola classe. Ma puoi farlo con python, che è completamente orientato agli oggetti, ma permette di scrivere programmi semplici senza funzioni o classi.

    
risposta data 10.07.2011 - 15:21
fonte

Leggi altre domande sui tag