2009-03-01 15 views
5

dove viene finisce scripting e programmazione comincia? ActionScript 3 e JavaScript/JScript sono così diversi ...Scripting e Programmazione

+0

Una domanda migliore potrebbe essere "Quando è una lingua" linguaggio di scripting "?" – chakrit

+0

Questo è quello che sto chiedendo –

+1

Ma stai facendo una distinzione tra programmazione e scripting quando non ce n'è. –

risposta

20

La distinzione era significativa una volta, ma la linea si sta facendo sempre più confusa al punto in cui non penso sia utile oggi.

  • storicamente, i linguaggi di scripting sono interpretati, i linguaggi di programmazione sono compilati. Ma con l'avvento di VM e JIT, la linea è sempre più sfocata.

  • Lo script è quando un'applicazione o uno strumento esistente viene manipolato in modo programmatico (ad esempio, macro di ufficio) anziché creare un'app da zero. Ancora una volta la linea si sta offuscando, perché le librerie e i framework significano che ognuno sta costruendo su strumenti esistenti. Inoltre, le API consentono di utilizzare i linguaggi compilati tradizionali per manipolare le applicazioni, ad es. in Office ora puoi automatizzare l'uso di .net, che suppongo significhi che tu possa scrivere macro di Excel nel C++ gestito.

  • lingue tendono a superare la loro nicchia. Perl è stato concepito come un linguaggio di scripting per la manipolazione del testo, ma da allora è diventato un linguaggio di programmazione completo.

  • I linguaggi di scripting sono sempre stati di livello superiore con funzionalità come la garbage collection e la digitazione implicita che hanno consentito allo sviluppatore di concentrarsi sull'attività anziché sul metallo. I linguaggi di programmazione reali come C ti hanno costretto ad essere più interessato alla gestione della memoria e all'architettura della macchina. Ancora una volta, la linea è offuscata dalle nuove lingue. Ad esempio, C# presenta funzionalità di alto livello come la raccolta dei rifiuti e i tipi dinamici e funzionalità di basso livello come i puntatori.

Per questi motivi scripting è stato visto come più accessibile, dove programmazione è stato visto come più esigente e hard-core. Pertanto il termine script può essere utilizzato in modo dispregiativo, come in "JavaScript è solo un linguaggio di scripting, non un vero linguaggio di programmazione" o "è solo uno script, non un vero programmatore".

+0

Sei stato in grado di eseguire l'automazione COM in C++ non gestito per almeno 15 anni. –

+0

Alcuni linguaggi di programmazione molto vecchi come APL sono ancora interpretati. –

7

C'è una differenza? Tu sei solo la scrittura di software in lingue diverse per i diversi ambienti di run-time.

+0

Quindi, perché gli stessi software-venditori nominano le loro creature aggiungendo la stringa "Script" al nome della lingua? JavaScript, ActionScript, ecc.? Non ti stanno implicitamente dicendo che c'è una differenza? –

+0

Chiamerei script script di test di unità per il programma, ma in genere entrambi sono scritti nella stessa lingua e nello stesso runtime. –

5

The German Wikipedia says:

Architettonicamente linguaggi di scripting sono utilizzati per costruire un programma applicazione componenti esistenti. I componenti stessi sono sviluppate in un linguaggio di programmazione .

Traduzione:

Da un punto di vista architettonico, linguaggi di script vengono utilizzati per costruire al programma applicativo dal componenti esistenti. I componenti sono sviluppate utilizzando Sè stessi linguaggi di programmazione.

linguaggi di script utilizzano componenti hanno fatto sono già lì a fare programmi. Questi componenti sono scritti in linguaggi di programmazione. :)

Pensateci scripting di shell ... Ci si utilizza piccoli programmi "per lo più" scritto in C.

+0

Non si può dire di usare librerie e framework in generale? –

3

La programmazione è la programmazione.

persone spesso distinguono tra scripting languages e compiled languages, ma la distinzione non è così utile IMO.

I.U. può compilare molti linguaggi di scripting e interpretare molti linguaggi compilati.

5

Mi ricorda una vecchia definizione della differenza tra prosa e poesia che è andato qualcosa di simile:

C'era una volta una signora f rom Vetro
Chi è andato in acqua fino alle ginocchia.

Ecco prosa. Se fosse andata più in profondità, sarebbe stato la poesia.

Mi colpisce fatto la differenza tra scripting e la programmazione è una questione di grado, non ciò che la lingua che si sta utilizzando. Ho visto persone scrivere alcuni programmi molto sofisticati che utilizzano la shell bash, e altri scrivono cose banali che utilizzano C. Qual è il programmatore e tutto ciò che è lo scripter?

Quando si è in grado di scrivere qualcosa che è più di un attacco rapido o qualcosa messo insieme per ottenere il lavoro immediato, quando hai scritto qualcosa con un occhio verso l'artigianalità e la manutenibilità, allora hai scritto un programma .

+0

Ho sentito dire che la programmazione reale è di basso livello. –

+1

Ogni programmazione reale di generazione riguarda qualcos'altro :) –

+0

@Ionut G. Stan: :-))) –

1

La differenza dovrebbe essere fatta tra codice (interpretato) e codice compilato. La programmazione, penso, è solo il termine generale per dare istruzioni a un computer o una macchina.

3

Uno script, nell'uso comune, è una sequenza di azioni ("enter stage left"), come una ricetta.

Ad esempio, uno script di test è una semplice sequenza di azioni da eseguire. Ha zero cyclometric complexity.

I programmi sono più generali e possono fare qualsiasi cosa. Dovrebbero essere modulari e progettati per il riutilizzo.

Mentre il software si espande, gli script diventano più complessi, ma in fondo sono ricette imperative, progettate per un unico scopo.

In una delle simulazioni di wargame su cui ho lavorato, uno dei principali punti di vendita era che non era uno script, ma ogni entità nella simulazione era un attore autonomo che rispondeva agli eventi.

Indipendentemente dal fatto che il runtime sia interpretato, compilato, jited o qualsiasi cosa non abbia importanza. Gli script Awk sono stati compilati.I programmi Lisp sono stati spesso interpretati. Spesso gli script di test unitari per un programma sono scritti nella stessa lingua del programma.

Se dovessi indicare una differenza di linguaggio, sarebbe la presenza di un sistema di moduli. Oltre a C, tutti i linguaggi di programmazione "corretti" hanno un sistema di moduli. JavaScript sta ottenendo un sistema di moduli come parte del gruppo di lavoro ServerJS ed è ovviamente abbastanza maturo per la programmazione delle applicazioni, quindi ora non ha nulla a che fare con Java né con un linguaggio di scripting esclusivo.

1

Lingue di programmazione: lingue compilate prima della distribuzione.

Lingue di scripting: lingue che sono codice quando vengono distribuite e interpretate al volo quando vengono richieste.

Alla fine è tutto lo stesso sh * t, sono tutti i linguaggi di programmazione

+0

Secondo questa definizione python può essere un linguaggio di programmazione poiché può essere distribuito in forma compilata. Lo stesso per ActionScript. – George

+0

E C non è un linguaggio di programmazione, poiché ci sono interpreti per C. –

0

due definizioni che trovo particolarmente inutile sono:

  • programmazione dipende dal codice di essere compilato prima della distribuzione
  • Scripting significa che il codice è "solo" utilizzato per connettere i componenti

Inizialmente ero tentato di tracciare la linea attorno a con cui è stato scritto il codice. Avrei chiamato one-off con durata limitata e scope di uno script e tutto il resto un programma. Ma poi, ho scritto un bel po 'di questi programmi in C ... e non chiamerei nulla in C come script.

La mia attuale definizione di lavoro è questa: il codice di script tende ad essere limitato in ambito, piccolo e (si spera) semplice da comprendere e sostituire. Tutto il resto è programmato. :-)

0

Ricorda che i linguaggi di scripting più moderni hanno framework o backend con una compilazione incorporata per pre-compilare e memorizzare nella cache gli script. (vedi PHP con alcuni ottimizzatori come Zend o eAccelerator, template engine ...)

I linguaggi di scripting moderni come Actionscript3, PHP, Javascript consentono la maggior parte dei pattern di progettazione moderna (come MVC) e alcuni paradigmi OOP - e alcuni progetti avanzati come "chiusure". Quindi hai tutto per "programmazione". Rich Internet Applications (RIA) richiede molte competenze di programmazione, lo stesso con RIA in esecuzione come applicazione desktop (Flash/Flex con Adobe Air). Questo non ha più nulla da fare con alcuni script facili incorporati in un sito web. Si tratta di applicazioni complesse che necessitano di molte funzioni di programmazione .

Poiché la maggior parte dei linguaggi di scripting utilizza un "backend" per ottenere/recuperare dati dai database, queste applicazioni spesso non sono facili da sviluppare a causa di molti effetti collaterali. Le persone devono avere conoscenze con i server per configurare il loro ambiente di sviluppo, altri linguaggi di scripting come PHP per i backend e così via. Implementare alcune cose con C++ e un buon framework come Qt, i wxWidgets sono a volte più semplici e non richiedono molte più capacità di programmazione.

Gli script e la programmazione sono per me la stessa cosa. Sì, si potrebbe dire che "scrivere un gestore onclick per un pulsante su un sito Web è uno script ... scrivere un videoplayer o un gioco con Flex/Flash e Actionscript3 sta programmando"?

Esiste una differenza tra un linguaggio di scripting e un linguaggio compilato (accesso host, sandbox, prestazioni ...).Ma è tutto programmato.