Linguaggio di scripting vs linguaggio di programmazione


347

Qualcuno può spiegare la differenza tra linguaggio di scripting e linguaggio di programmazione per favore?
Puoi anche indicare alcuni esempi per ciascuno. Ho cercato su Google molto ma trovo sempre le risposte migliori da Stack Overflow.

Risposte:


466

I linguaggi di scripting sono linguaggi di programmazione che non richiedono un passaggio di compilazione esplicito.

Ad esempio, nel caso normale, è necessario compilare un programma C prima di poterlo eseguire. Ma nel caso normale, non è necessario compilare un programma JavaScript prima di eseguirlo. Quindi JavaScript viene talvolta chiamato linguaggio di "scripting".

Questa linea sta diventando sempre più sfocata poiché la compilazione può essere così veloce con hardware moderno e moderne tecniche di compilazione. Ad esempio, V8, il motore JavaScript in Google Chrome e utilizzato molto al di fuori del browser, in realtà compila il codice JavaScript al volo in codice macchina, anziché interpretarlo. (In effetti, V8 è un compilatore bifase ottimizzante.)

Si noti inoltre che il fatto che una lingua sia o meno un linguaggio di "scripting" può riguardare più l'ambiente che la lingua. Non c'è motivo per cui non puoi scrivere un interprete C e usarlo come linguaggio di scripting (e le persone hanno). Non vi è inoltre alcun motivo per cui non è possibile compilare JavaScript in codice macchina e archiviarlo in un file eseguibile (e le persone hanno). Il linguaggio Ruby ne è un buon esempio: l'implementazione originale è stata interamente interpretata (un linguaggio di "scripting"), ma ora ci sono più compilatori per esso.

Alcuni esempi di linguaggi di "scripting" (ad esempio, linguaggi tradizionalmente utilizzati senza un passaggio esplicito di compilazione):

  • Lua
  • JavaScript
  • VBScript e VBA
  • Perl

E una piccola quantità di quelli usati tradizionalmente con una fase di compilazione esplicita:

  • C
  • C ++
  • D
  • Java (ma nota che Java è compilato in bytecode, che viene quindi interpretato e / o ricompilato in fase di esecuzione)
  • Pascal

... e poi hai cose come Python che si trovano in entrambi i campi: Python è ampiamente usato senza un passo di compilazione, ma l'implementazione principale (CPython) lo fa compilando al bytecode al volo e quindi eseguendo il bytecode in un VM, e può scrivere quel bytecode in file ( .pyc, .pyo) per l'uso senza ricompilare.

Questo è solo un molto pochi, se fate qualche ricerca è possibile trovare molto di più.


1
Spiegazione eccellente!
Gladiatore,

48
@ mg30rg: Heh - lo scripting può essere totalmente una programmazione "reale". (Non crederesti ad alcuni degli script bash che ho visto ...) Penso che il modo più semplice per definirlo (e di nuovo, questa non è una cosa di lingua, è una cosa di ambiente) è: Fa l'ambiente di runtime vedi il codice sorgente? Se è così, lo definirei "scripting"; in caso contrario, non lo farei. Quindi, in questo senso, JavaScript basato su browser è "scripting" perché anche se motori come V8 lo compilano al volo, l'origine viene comunque consegnata all'ambiente di runtime. Allo stesso modo shell script. La sorgente di un programma C tradizionale non viene consegnata al runtime.
TJ Crowder,

2
@ mg30rg: Ma ancora una volta, queste linee diventano sempre più sfocate. :-) Considera il bytecode Java. Non è possibile eseguirlo senza una JVM, ma non è un codice sorgente. (Di solito può essere convertito in un codice sorgente dall'aspetto ragionevole da un decompilatore, ma ...) Non penso (da remoto) a Java in un ambiente tradizionale come un linguaggio di scripting. Ma poi, non trascorro neanche molto tempo a pensare alle categorie. :-)
TJ Crowder,

2
@ CME64: No, l'implementazione principale (CPython) si compila al bytecode al volo ed esegue il bytecode in una VM. Mentre ci sono strumenti da Python a C (Cython e Pyrex), di solito non è così come viene eseguito Python.
TJ Crowder,

2
A difesa di @Vityata, VBScript è scritto in Blocco note e interpretato come input di testo, mentre il codice VBA viene compilato in codice P mentre lo digiti nell'editor , ovvero il codice sorgente che vedi nell'editor dopo aver modificato una riga di codice, non è il codice che hai digitato, ma la rappresentazione del codice P sottostante da parte di VBE : la meccanica di VBA vs VBScript è completamente e totalmente diversa, e raggrupparli insieme in quella lista non sembra affatto giusto. VBA è molto più vicino a VB6 che a VBScript; è solo una limitazione esplicita che gli impedisce di creare un eseguibile autonomo.
Mathieu Guindon,

103

Per comprendere la differenza tra un linguaggio di scripting e un linguaggio di programmazione, bisogna capire perché sono nati i linguaggi di scripting.

Inizialmente, c'erano linguaggi di programmazione scritti per creare programmi come Excel, Word, browser, giochi e così via. Questi programmi erano costruiti con linguaggi come C e Java. Gli straordinari, questi programmi avevano bisogno di un modo per gli utenti di creare nuove funzionalità, quindi dovevano fornire un'interfaccia al loro bytecode e quindi sono nati i linguaggi di scripting.

Un linguaggio di scripting di solito non viene compilato, quindi può essere eseguito non appena scrivi qualcosa di significativo. Quindi Excel può essere creato usando C ++ ma espone un linguaggio di scripting chiamato VBA per consentire agli utenti di definire la funzionalità. Allo stesso modo i browser possono essere creati con C ++ / Java ma espongono un linguaggio di scripting chiamato javascript (non correlato a java in alcun modo). I giochi, di solito sono costruiti con C ++ ma espongono un linguaggio chiamato Lua affinché gli utenti possano definire funzionalità personalizzate.

Di solito un linguaggio di scripting si trova dietro un linguaggio di programmazione. I linguaggi di scripting di solito hanno meno accesso alle capacità native del computer poiché vengono eseguiti su un sottoinsieme del linguaggio di programmazione originale. Un esempio qui è che Javascript non sarà in grado di accedere al tuo file system. I linguaggi di scripting sono generalmente più lenti dei linguaggi di programmazione.

Sebbene i linguaggi di scripting possano avere meno accesso e essere più lenti, possono essere strumenti molto potenti. Un fattore che attribuisce al successo dei linguaggi di scripting è la facilità di aggiornamento. Ricordi i giorni delle applet Java sul Web, questo è un esempio di esecuzione di un linguaggio di programmazione (Java) vs esecuzione di un linguaggio di scripting (JavaScript). All'epoca, i computer non erano così potenti e JavaScript non era così maturo, quindi le applet Java dominavano le scene. Ma le applet Java erano fastidiose, richiedevano all'utente di caricare e compilare la lingua. Avanti veloce fino ad oggi, le applet Java sono quasi estinte e Javascript domina la scena. Javascript è estremamente veloce da caricare poiché la maggior parte dei componenti del browser sono già stati installati.

Infine, anche i linguaggi di scripting sono considerati linguaggi di programmazione (anche se alcune persone rifiutano di accettarlo) - il termine che dovremmo usare qui è linguaggi di scripting rispetto a linguaggi compilati.


4
Non pensi di voler dire: "lingue interpretate vs lingue compilate" invece di "lingue di scripting vs lingue compilate" ??
bitsapien,

6
"Un esempio qui è che Javascript non sarà in grado di accedere al tuo file system", dice Nodejs ciao
Mohammad

@Mohammad NodeJS è un runtime che consente ai programmatori di utilizzare Javascript come "linguaggio" per la codifica. NodeJS non è Javascript al 100%.
JeffNhan,

65

Tutti i linguaggi di scripting sono linguaggi di programmazione.

Le lingue non sono classificate come script oppure no - dipende interamente dall'ambiente di esecuzione.

Se l'ambiente viene interpretato, questo viene comunemente chiamato ambiente di scripting.


18

Le differenze stanno diventando sempre meno importanti. Tradizionalmente, i linguaggi di scripting estendono i programmi esistenti ... Penso che la definizione principale di "scripting" sia che si riferisce alla scrittura di una serie di istruzioni per l'esecuzione di un'entità esistente. Tuttavia, laddove i linguaggi di scripting sono iniziati con sintassi proprietaria e colloquiale, la maggior parte di quelli prevalenti in questi giorni hanno qualche relazione con C.

Penso che la distinzione "interpretato vs compilato" sia in realtà un sintomo dell'estensione di un programma esistente (con un interprete incorporato), piuttosto che una differenza intrinseca. Ciò che i programmatori e i laici sono più preoccupati è "cosa sta facendo il programmatore?" Il fatto che un programma venga interpretato e un altro venga compilato significa ben poco nel determinare la differenza di attività da parte del creatore. Non giudichi un drammaturgo se le sue opere sono più comunemente lette ad alta voce o eseguite sul palco, vero?


12

Linguaggio di programmazione: viene compilato in base al codice macchina ed eseguito sull'hardware del sistema operativo sottostante.

Linguaggio di scripting: è un sottoinsieme non strutturato del linguaggio di programmazione. È generalmente interpretato. fondamentalmente "script" altre cose per fare cose. L'obiettivo principale non è principalmente quello di creare le tue app, ma far sì che un'app esistente agisca nel modo desiderato, ad es. JavaScript per browser, TCL ecc.,

*** Ma ci sono situazioni in cui un linguaggio di programmazione viene convertito in interprete e viceversa come l'uso ha un interprete C in cui è possibile "C" Script. Gli script sono generalmente scritti per controllare un comportamento dell'applicazione in cui come linguaggio di programmazione viene utilizzato per creare applicazioni. Ma attenzione che la demarcazione sta sfocando giorno per giorno come esempio di Python, dipende da come si usa il linguaggio.


10

I linguaggi di scripting sono un sottoinsieme di linguaggi di programmazione.

  1. I linguaggi di scripting non sono compilati in codice macchina dall'utente (python, perl, shell, ecc.). Piuttosto, un altro programma (chiamato interprete, esegue il programma e simula il suo comportamento)
  2. Alcuni linguaggi di programmazione che non sono script (C, C ++, Haskell e altri linguaggi "compilati") vengono compilati in codice macchina e successivamente eseguiti.

5

Penso che ciò che stai affermando come "differenza" sia in realtà una conseguenza della vera differenza.

La differenza effettiva è l'obiettivo del codice scritto. Chi eseguirà questo codice.

Un linguaggio di scripting viene utilizzato per scrivere codice destinato a un sistema software. Automatizzerà le operazioni su quel sistema software. Lo script sarà una sequenza di istruzioni per il sistema software di destinazione.

Un linguaggio di programmazione prende di mira il sistema informatico, che può essere una macchina reale o virtuale. Le istruzioni vengono eseguite dalla macchina.

Naturalmente, una macchina reale comprende solo il codice binario, quindi è necessario compilare il codice di un linguaggio di programmazione. Ma questa è una conseguenza del targeting di una macchina anziché di un programma.

D'altra parte, il sistema software di destinazione di uno script può compilare il codice o interpretarlo. Dipende dal sistema software.

Se diciamo che la vera differenza è se viene compilato o meno, allora abbiamo un problema perché quando Javascript viene eseguito in V8 viene compilato e quando non viene eseguito in Rhino.

Diventa più confuso da quando i linguaggi di scripting si sono evoluti per diventare molto potenti. Quindi non si limitano a creare piccoli script per automatizzare le operazioni su un altro sistema software, è possibile creare qualsiasi applicazione ricca con loro.

Il codice Python si rivolge a un interprete in modo da poter dire che "script" operazioni su quell'interprete. Ma quando scrivi il codice Python non lo vedi come scripting di un interprete, lo vedi come creare un'applicazione. L'interprete è lì solo per programmare ad un livello superiore tra le altre cose. Quindi per me Python è più un linguaggio di programmazione che un linguaggio di scripting.


5

Ai tempi in cui il mondo era giovane e nel mondo dei PC che hai scelto da .exe o .bat, la delineazione era semplice. I sistemi Unix hanno sempre avuto script di shell (/ bin / sh, / bin / csh, / bin / ksh, ecc.) E linguaggi compilati (C / C ++ / Fortran).

Per differenziare ruoli e responsabilità, i linguaggi compilati (spesso indicati come linguaggi di terza generazione) sono stati visti come linguaggi di "programmazione" e i linguaggi di "scripting" sono stati visti come quelli che hanno invocato un interprete (spesso indicato come linguaggi di quarta generazione). I linguaggi di scripting venivano spesso usati come 'colla' per connettersi tra più comandi / programmi compilati in modo che l'utente non dovesse preoccuparsi di una serie di passaggi per svolgere il proprio compito - hanno sviluppato un singolo file, che ha delineato quali passaggi volevano realizzare, e questo divenne una 'sceneggiatura' che chiunque potesse seguire.

Varie persone / gruppi hanno scritto nuovi interpreti per risolvere un problema specifico. awk è uno dei più noti ed è stato utilizzato principalmente per la corrispondenza dei modelli e l'applicazione di una serie di trasformazioni di dati sull'input. Funzionava bene, ma aveva un dominio con problemi limitati. L'espansione di quel dominio era quasi impossibile perché il codice sorgente non era disponibile. Script di strumenti Perl (Larry Wall, principale autore / architetto) al livello successivo - e sviluppato un interprete che non solo consentiva all'utente di eseguire comandi di sistema, manipolare dati di input e output, supportare variabili non tipizzate, ma anche accedere a API di livello di sistema Unix come funzioni all'interno degli script stessi. È stato probabilmente uno dei primi linguaggi di scripting di alto livello ampiamente utilizzati.

La tua domanda riguardava specificamente Python. Poiché l'interprete python viene eseguito su un file di testo contenente il codice python e il codice python può essere eseguito ovunque sia presente un interprete python, direi che è un linguaggio di scripting (nella stessa ottica di Perl). Non è necessario ricompilare il file dei comandi python dell'utente per ogni diversa architettura OS / CPU (come si farebbe con C / C ++ / Fortran), rendendolo significativamente più portatile e più facile da usare.

Il merito di questa risposta va a Jerrold (Jerry) Heyman. Discussione originale: https://www.researchgate.net/post/Is_Python_a_Programming_language_or_Scripting_Language


4

Sono in disaccordo con il fatto che i linguaggi che usano gli interpreti sono linguaggi di scripting e quello che viene compilato sono linguaggi di programmazione. Siamo in grado di sviluppare un interprete o un compilatore per qualsiasi lingua. L'ambiente interpretato si adatta meglio allo scripting Web e rende più semplice la ragione per cui l'abbiamo.

Bene, sento che non c'è alcuna differenza tra il linguaggio di scripting e il linguaggio di programmazione. Si tratta solo di portare a termine il lavoro. Quando si tratta di attività relative al Web, le chiamiamo script Web in considerazione di piccole attività e in questo modo possiamo anche chiamare le attività relative al sistema come script a livello di sistema o di sistema operativo e il linguaggio di programmazione che utilizziamo per eseguire tali attività come linguaggi di scripting di sistema.

Inoltre non è così che non si possa scrivere codice a livello di sistema in script Python e Web in linguaggio C (sicuramente si può fare se possiamo stabilire la piattaforma e l'ambiente richiesti). Ma tutto ciò che serve è uno sforzo eccessivo che può influire sul vincolo di tempo per il rapido sviluppo e la piccola latenza ridotta non ci gioverà molto negli script web. Ma il saggio versa non è vero se eseguiamo attività a livello di sistema in Python.

In conclusione: la selezione della lingua dipende dalla natura del compito da svolgere e discriminare una lingua in quanto il linguaggio di scripting è un mito.


4

Lingue gestite da script

I linguaggi di scripting vengono interpretati all'interno di un altro programma. JavaScript è incorporato in un browser e interpretato da quel browser.

Esempi di linguaggi di scripting

  1. JavaScript
  2. Perl
  3. Pitone

Vantaggi dei linguaggi di scripting:

  1. Semplice: i linguaggi di scripting sono più facili da scrivere rispetto al linguaggio di programmazione.

  2. Meno righe di codice (LOC)

Lingue programmate

Linguaggi di programmazione come Java sono compilati e non interpretati da un'altra applicazione allo stesso modo.

Esempi di linguaggi di programmazione

  1. C
  2. C ++ e
  3. Giava

Più dettagli


I linguaggi con script sono linguaggi di programmazione. Inoltre, Java viene interpretato da un'altra applicazione chiamata JVM.
bfontaine,

4

In linguaggi di scripting come (JavaScript e vecchie versioni di PHP) utilizziamo funzioni e metodi fondamentali esistenti per eseguire il nostro lavoro. Facciamo un esempio in JavaScriptcui possiamo usare ajaxoweb-sockets solo se sono supportati dal browser o esistono metodi o li nel browser. Ma in linguaggi come C o C ++, Java possiamo scrivere quella funzione da zero anche se non è disponibile alcuna libreria per quella funzione ma non possiamo farlo in JavaScript.

puoi supportare web-socket in Internet Explorer 8 o precedenti con l'aiuto di JavaScript Ma puoi scrivere un plug-in in C o C ++ o Java che può aggiungere una funzionalità di web-socket a Internet Explorer 8.

Fondamentalmente nei linguaggi di scripting scriviamo un codice in una sequenza che esegue i metodi esistenti in una sequenza per completare il nostro lavoro. L'immissione di numeri e formule in una calcolatrice digitale per eseguire un'operazione è anche un esempio del linguaggio di scripting. Dobbiamo notare che l'ambiente di compilazione / runtime di ogni linguaggio di scripting è sempre scritto nel linguaggio di programmazione in cui è possibile aggiungere più funzionalità e metodi e può scrivere nuove librerie.

PHP Questo è un linguaggio che è in qualche modo programmazione e scripting in b / n. Possiamo aggiungere nuovi metodi aggiungendo estensioni compilate scritte in un'altra lingua di alto livello. Non possiamo aggiungere funzionalità di alto livello della rete o creare librerie di elaborazione delle immagini direttamente in PHP.

PS Mi dispiace davvero solo per aver girato la mia risposta su PHP JavaScript ma uso questi due perché ho una notevole esperienza in questi due.


3

A parte la differenza che il linguaggio di scripting è interpretato e il linguaggio di programmazione è compilato, c'è un'altra differenza come di seguito, che credo sia stata persa.

Un linguaggio di scripting è un linguaggio di programmazione utilizzato per manipolare, personalizzare e automatizzare le strutture di un sistema esistente. In tali sistemi, funzionalità utili sono già disponibili tramite un'interfaccia utente e il linguaggio di scripting è un meccanismo per esporre tale funzionalità al controllo del programma.

Considerando che un linguaggio di programmazione viene generalmente utilizzato per codificare il sistema da Scratch.

src ECMA


2

Se vediamo logicamente il linguaggio di programmazione e il linguaggio di scripting, questo è il 99,09% uguale. perché usiamo lo stesso concetto come loop, condizione di controllo, variabile e tutto così possiamo dire di sì entrambi sono uguali ma c'è solo una cosa diversa tra loro che è in C / C ++ e altri linguaggi di programmazione che compiliamo il codice prima dell'esecuzione. ma in PHP, JavaScript e altri linguaggi di scripting non abbiamo bisogno di compilare che eseguiamo direttamente nel browser.

Grazie Nitish K. Jha


2

I linguaggi di scripting sono linguaggi di programmazione che le persone considerano come linguaggi di scripting. È una categoria artificiale senza confini chiari e dove ogni regola proposta ha un'eccezione.

Le regole classiche usate per dire che una lingua è un linguaggio di scripting stanno caratterizzando, non definendo. Se una lingua soddisfa un certo numero di regole, ci sono buone probabilità che sia considerata un linguaggio di scripting. In caso contrario, ci sono buone probabilità che non lo sia. Le regole di solito includono:

  • È destinato a piccoli "script", non a programmi di grandi dimensioni.
  • È incorporato in un'altra applicazione, utilizzato per piccole modifiche di tale applicazione.
  • È interpretato piuttosto che compilato.
  • È destinato a programmatori alle prime armi, non a professionisti.
  • Il suo nome termina con "script".

Aggiungerei:

  • Un linguaggio di scripting è un linguaggio di programmazione in cui quasi tutti gli errori vengono rilevati in fase di esecuzione.

Cioè, potrebbe essere un linguaggio interpretato.

Se un linguaggio di programmazione ha un comportamento "tempo di compilazione" significativo in cui analizza il codice e segnala errori senza eseguire il programma, come errori di tipo da C, Java o C #, molto probabilmente non è considerato un linguaggio di scripting.

Tradizionalmente molti linguaggi di scripting sono stati interpretati direttamente dal sorgente, ma i più popolari hanno ottenuto implementazioni più performanti che precompilano il codice, come i .pycfile di Python , o ottimizzando i motori JavaScript che si compilano in codice nativo prima dell'esecuzione.

Se il linguaggio potrebbe essere implementato da un interprete, che guarda solo il codice sorgente mentre lo sta eseguendo, allora è probabilmente considerato un linguaggio di scripting. Il fatto che sia effettivamente implementato in questo modo non è importante, ma se può esserlo, allora non può nemmeno richiedere un ampio controllo degli errori in fase di compilazione del codice.

Se il linguaggio fornisce una semantica statica utile che aiuta a rilevare errori (diversi dagli errori di sintassi) senza la necessità di eseguire il programma, probabilmente non è un linguaggio di scripting.

Ci sono sempre delle eccezioni, di solito basate sulla tradizione attorno a una lingua più di qualsiasi regola reale. BASIC di solito non è considerato un "linguaggio di scripting", anche se soddisfa praticamente tutti i criteri che qualcuno ha mai usato per esserlo. Ecco perché Visual Basic Script ha dovuto aggiungere lo "script" al nome, per distinguersi da Visual Basic, un "vero" linguaggio di programmazione destinato a programmi più grandi.

BASIC è anche un vecchio linguaggio di programmazione, come COBOL e Fortran, da prima che le persone si aspettassero un'analisi statica da un linguaggio, e sostanzialmente prima ancora che i "linguaggi di scripting" fossero una cosa.

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.