Domanda

Mi riferisco a distinzioni come in questa risposta:

...bash non è per scrivere applicazioni ma, beh, per lo scripting.Quindi certo, la tua applicazione potrebbe avere alcuni script di pulizia ma non scrivere critical-business-logic.sh perché un'altra lingua probabilmente è migliore per cose del genere.

Come programmatore che ha lavorato in molti linguaggi, questo sembra essere lo snobismo di C, Java e altri linguaggi compilati.Non sto cercando il rafforzamento della mia opinione o risposte agitate.Vorrei piuttosto sapere a quali differenze tecniche si fa riferimento.

(E uso C nel mio lavoro quotidiano, quindi non sono solo sulla difensiva.)

È stato utile?

Soluzione

Tradizionalmente si compila un programma e si interpreta uno script, ma questo non è più così importante.Puoi generare una versione compilata della maggior parte degli script se lo desideri, e altri linguaggi "compilati" come Java vengono infatti interpretati (a livello di codice byte).

Una definizione più moderna potrebbe essere che un programma è destinato ad essere utilizzato da un cliente (magari interno) e quindi dovrebbe includere documentazione e supporto, mentre uno script è destinato principalmente all'uso dell'autore.

Il web è un interessante controesempio.A tutti noi piace cercare cose con il motore di ricerca di Google.La maggior parte del codice utilizzato per creare il "database" a cui fa riferimento viene utilizzato solo dai suoi autori e manutentori.Questo lo rende uno script?

Altri suggerimenti

Direi che un'applicazione tende ad essere utilizzata in modo interattivo, dove uno script farebbe il suo corso, adatto al lavoro batch.Non credo che sia una distinzione concreta.

Di solito si tratta di "script" rispetto a "programma".

Sono d'accordo con te nel ritenere che questa distinzione sia principalmente "snobismo linguistico compilato", o per citare Larry Wall e passare dall'altra parte della barricata, "una sceneggiatura è ciò che hanno gli attori, un programma viene dato al pubblico".

Questo è un argomento interessante e non credo che esistano linee guida molto valide per distinguere uno "script" da una "applicazione".

Diamo un'occhiata ad alcuni articoli di Wikipedia per avere un'idea della distinzione.

Copione (Wikipedia -> Linguaggio di scripting):

Un linguaggio di scripting, linguaggio di script o linguaggio di estensione, è un linguaggio di programmazione che controlla un'applicazione software.Gli "script" sono spesso trattati come distinti dai "programmi", che vengono eseguiti indipendentemente da qualsiasi altra applicazione.Allo stesso tempo sono distinti dal codice principale dell'applicazione, che di solito è scritto in un linguaggio diverso, ed essendo accessibili all'utente finale consentono di adattare il comportamento dell'applicazione alle esigenze dell'utente.

Applicazione (Wikipedia -> Software applicativo -> Terminologia)

In informatica, un'applicazione è un programma informatico progettato per aiutare le persone a svolgere un determinato tipo di lavoro.Un'applicazione è quindi diversa da un sistema operativo (che esegue un computer), da un'utilità (che esegue attività di manutenzione o di carattere generale) e da un linguaggio di programmazione (con cui vengono creati i programmi per computer).A seconda del lavoro per cui è stata progettata, un'applicazione può manipolare testo, numeri, grafica o una combinazione di questi elementi.

La lettura delle voci precedenti sembra suggerire che la distinzione sia che uno script è "ospitato" da un altro software, mentre un'applicazione no.Suppongo che si possa sostenere che, ad esempio, gli script di shell controllano il comportamento della shell e gli script Perl controllano il comportamento dell'interprete per eseguire le operazioni desiderate.(Penso che questo potrebbe essere un po’ esagerato, quindi potrei non essere completamente d’accordo.)

In fondo, secondo me, la distinzione colloquiale può essere fatta in termini di scala del programma.Gli script sono generalmente di dimensioni inferiori rispetto alle applicazioni.

Inoltre, in termini di scopo, una sceneggiatura in generale esegue compiti che deve essere curato, ad esempio, creare script che producano più versioni di rilascio per un determinato software.D'altra parte, le applicazioni sono orientate verso fornire funzionalità che è più raffinato e orientato all'utente finale.Ad esempio, Blocco note o Firefox.

John Ousterhout (l'inventore di TCL) ha scritto un buon articolo su http://www.tcl.tk/doc/scripting.html dove propone una distinzione tra linguaggi di programmazione di sistema (per l'implementazione di elementi costitutivi, enfasi sulla correttezza, sicurezza del tipo) e linguaggi di scripting (per combinare elementi costitutivi, enfasi sulla reattività ai cambiamenti di ambienti e requisiti, facile conversione dentro e fuori rappresentazioni testuali).Se si segue questo sistema di categorizzazione, il 99% dei programmatori svolge lavori più appropriati ai linguaggi di scripting che ai linguaggi di programmazione di sistema.

Uno script tende ad essere una serie di comandi che iniziano, vengono eseguiti e terminano.Spesso non richiede alcuna/poca interazione umana.Un'applicazione è un "programma"...spesso richiede l'interazione umana e tende ad essere più grande.

Lo script per me implica l'interpretazione riga per riga del codice.È possibile aprire uno script e visualizzarne il contenuto leggibile dal programmatore.Un'applicazione implica un eseguibile compilato autonomo.

Spesso è solo un argomento semantico o addirittura un modo per denigrare determinati linguaggi di programmazione.Per quanto mi riguarda, uno "script" è un tipo di programma e la definizione esatta è alquanto vaga e varia a seconda del contesto.

Potrei usare il termine "copione" per indicare un programma che viene eseguito principalmente in modo lineare, piuttosto che con molta logica sequenziale o subroutine, proprio come un "copione" a Hollywood è una sequenza lineare di istruzioni da eseguire per un attore.Potrei usarlo per indicare un programma scritto in un linguaggio incorporato all'interno di un programma più grande, con lo scopo di pilotare quel programma.Ad esempio, automatizzando le attività nel vecchio sistema operativo Mac con AppleScript o guidando un programma che si espone in qualche modo con un'interfaccia TCL incorporata.

Ma in tutti questi casi, uno script è un tipo di programma.

Il termine "linguaggio di scripting" è stato utilizzato per linguaggi interpretati dinamicamente (a volte compilati), di solito questi hanno molte caratteristiche comuni come istruzioni di altissimo livello, hash incorporati ed elenchi di lunghezza arbitraria e altre strutture dati di alto livello, ecc.Ma questi linguaggi sono capaci di programmi molto grandi, complicati, modulari e ben progettati, quindi se pensi a uno "script" come a qualcosa di diverso da un programma, quel termine potrebbe confonderti.

Guarda anche È un programma Perl o uno script Perl? in perlfaq1.

Uno script viene generalmente eseguito come parte di un'applicazione più ampia all'interno di un motore di scripting, ad esempio.JavaScript -> browser Questo è in contrasto sia con i tradizionali linguaggi compilati tipizzati statici sia per i linguaggi dinamici, in cui il codice è destinato a formare la parte principale dell'applicazione.

Un'applicazione è una raccolta di script orientati verso una serie di problemi comuni.

Uno script è un pezzo di codice per eseguire un'attività abbastanza specifica.

IMO, la differenza non ha nulla a che fare con la lingua utilizzata.È possibile scrivere un'applicazione complessa con bash ed è possibile scrivere uno script semplice con C++.

Innanzitutto vorrei che questo fosse chiarissimo uno script è un programma.In altre parole, uno script è un insieme di istruzioni.

Programma:

Un insieme di istruzioni che verrà compilato è noto come Programma.

Sceneggiatura:

Un insieme di istruzioni che verrà interpretato è noto come Script.

Prendendo perl come esempio, puoi scrivere script o applicazioni Perl.

Uno script implicherebbe un singolo file o un singolo spazio dei nomi.(per esempio.updateFile.pl).

Un'applicazione sarebbe qualcosa costituito da una raccolta di file o spazi dei nomi/classi (ad es.un'applicazione Perl progettata da OO con molti file di moduli .pm).

Personalmente ritengo che la separazione sia un passo indietro rispetto all'effettiva attuazione.

A mio avviso, an applicazione è pianificato.Ha molteplici obiettivi, ha molteplici risultati finali.Ci sono attività accantonate in fase di progettazione prima della codifica che l'applicazione deve soddisfare.

Una sceneggiatura, tuttavia, viene semplicemente messa insieme come un seme e richiede poca pianificazione.

La mancanza di una pianificazione adeguata, tuttavia, non ti declassa a un copione.Forse, rende la tua applicazione una raccolta mal organizzata di script mal pianificati.

Inoltre, un'applicazione può contenere script che aggregati costituiscono il tutto.Ma uno script può fare riferimento solo a un'applicazione.

Un'applicazione è grande e verrà utilizzata più e più volte dalle persone e forse venduta a un cliente.

Uno script inizia in piccolo, rimane piccolo se sei fortunato, raramente viene venduto a un cliente e potrebbe essere eseguito automaticamente o cadere in disuso.

Che dire:

Sceneggiatura:

UN sceneggiatura è un file di testo (o una raccolta di file di testo) di istruzioni di programmazione scritte in un linguaggio che consente l'esistenza di singole istruzioni scritte in esso interpretato in eseguibile dalla macchina codice direttamente prima ciascuno viene eseguito e con l'intenzione che ciò accada.

Applicazione:

UN applicazione è qualsiasi programma per computer la cui funzionalità primaria comporta la fornitura di servizi a un attore umano.

Pertanto, in teoria, un programma basato su script scritto in un linguaggio di scripting può subire alterazioni testuali durante l'esecuzione dello script (con grande rischio, ovviamente).La situazione analoga per i programmi compilati è l'inversione dei bit in memoria.

Qualche acquirente?:)

La risposta di @Jeff è buona.La mia spiegazione preferita è

Molte (più?) Lingue di scripting sono interpretate e poche lingue compilate sono considerate lingue di scripting, ma la questione di compilata vs.interpretato è solo vagamente connesso alla questione dello "scripting" vs.lingue "serie".

Un sacco del problema qui è che lo "scripting" è una designazione piuttosto vaga-significa una lingua che è conveniente per scrivere script, invece di scrivere "programmi in piena regola" (o applicazioni).Ma come si fa a distinguere uno script complesso da una semplice applicazione?Questa è una domanda essenzialmente senza risposta.Generalmente, uno script è una serie di comandi applicati a qualche set di dati, possibilmente in un ordine definito dall'utente ...Ma poi, si potrebbe allungare quella descrizione per applicare a Photoshop, che è chiaramente un'importante applicazione.Gli script sono generalmente più piccoli delle applicazioni, fanno qualcosa di ben definito e sono "più semplici" da usare e in genere possono essere scomposti in una chiara serie di sotto-operazioni, ma tutte queste cose sono soggettive.

Riferimento da Qui.

Penso che non abbia alcuna importanza se il codice viene compilato o interpretato.

La vera differenza sta nella logica fondamentale del codice:

  • Se il codice crea nuove funzionalità che non sono implementate in altri programmi nel sistema, è un programma.Può anche essere manipolato da uno script.

  • Se il codice è PRINCIPALMENTE manipolato dalle azioni di altri programmi e il risultato totale è PRINCIPALMENTE il risultato del lavoro dei programmi manipolati, è uno script.Letteralmente uno script di azioni per alcuni programmi.

In realtà la differenza tra uno script (o un linguaggio di scripting) e un'applicazione è che uno script non richiede che sia compilato in linguaggio macchina.Esegui il sorgente dello script con un interprete..Un'applicazione compila il codice sorgente in codice macchina in modo da poterlo eseguire come applicazione autonoma.

Direi che una sceneggiatura è solitamente a insieme di comandi o istruzioni scritti in testo semplice che sono eseguito da un'applicazione hosting (browser, interprete dei comandi o shell,...).

Ciò non significa che non sia potente o non compilato in qualche modo quando viene effettivamente eseguito.Ma uno script non può fare nulla da solo, è solo testo.
Per natura può essere solo un frammento, che deve essere combinato per creare un programma o un'applicazione, ma script o serie di script estesi e completamente sviluppati possono essere considerati programmi o applicazioni quando eseguiti dall'host, proprio come un mucchio di file sorgente può diventare un'applicazione una volta compilata.

Un linguaggio di scripting non ha una libreria o piattaforma standard (o non ne ha molte).È piccolo e leggero, progettato per essere integrato in un'applicazione più ampia.Bash e Javascript sono ottimi esempi di linguaggi di scripting perché si basano assolutamente su altri programmi per la loro funzionalità.

Utilizzando questa definizione, uno script è un codice progettato per gestire un'applicazione (suite) più ampia.Un Javascript potrebbe richiedere a Firefox di aprire finestre o manipolare il DOM.Uno script Bash esegue programmi esistenti o altri script e li collega tra loro tramite pipe.


Chiedi anche perché non i linguaggi di scripting, quindi:

Esistono anche strumenti di unit test per i linguaggi di scripting?Sembra uno strumento molto importante per applicazioni "reali" che manca completamente.E raramente esistono collegamenti reali alla libreria per i linguaggi di scripting.

Nella maggior parte dei casi, gli script potrebbero comunque essere sostituiti con un linguaggio reale e leggero come Python o Ruby.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top