Linguaggio di programmazione rispetto a Markup Language e Scripting Language

37

Fino ad ora non conosco le differenze KEY tra questi tre. Quando qualcuno me lo chiede, dico solo che C # è un linguaggio di programmazione, HTML e XML sono Markup Languages e JavaScript e VBScript sono linguaggi di scripting. Ma quali sono le differenze chiave che li distinguono l'uno dall'altro?

    
posta rcadaoas 26.05.2014 - 09:48
fonte

5 risposte

34

Lasciatemi tentare di trovare una linea divisoria tra questi tre tipi di linguaggio. Naturalmente, ci saranno numerose eccezioni e controesempi, poiché questa è solo la mia opinione.

  • Un linguaggio di markup viene utilizzato per controllare la presentazione dei dati, come "rappresentare questi nomi utente come elenco puntato o come tabella".

  • Un linguaggio di scripting è usato per mediare tra i programmi per generare dati. Questo è particolarmente vero per i linguaggi di scripting di shell come bash, ma se si riflette su questo, anche Python o Perl derivavano dalla necessità di eseguire attività in UNIX senza scrivere un programma in C. Il programma che si controlla la maggior parte del tempo in quelle lingue è l'interprete della lingua stessa , che svolge compiti generali per te. Altri programmi tipici con cui si interagisce sono server di database o server Web.

    Tornando alla metafora della lista utenti, in un linguaggio di scripting chiedi al database "dammi tutti i nomi utente", poi chiedi al server web "invia questo elenco utenti a questo richiedente".

  • Un linguaggio di programmazione è usato per trasformare i dati . Lo fa creando istruzioni per la CPU che riscrivono i dati di input nell'output; si spera che l'output desiderato . Esempi di trasformazione dei dati consistono nel calcolare una somma da un numero di addendi, o nel risolvere un sistema di equazioni differenziali da un insieme di condizioni, o scrivere e leggere da una struttura ad albero in modo coerente, data una sequenza di query possibilmente simultanee .

    Tornando alla metafora della lista utenti, in un linguaggio di programmazione scrivi come attraversare una tabella di record, estrai da ogni record il campo "nome" e restituiscili tutti al richiedente.

Si noti che i linguaggi di scripting sono un sottoinsieme di linguaggi di programmazione, ad esempio un linguaggio può essere sia "scripting" che "programming": Python viene regolarmente utilizzato per "mediare tra programmi" e anche per "trasformare i dati". Esistono altri linguaggi come Java che vengono raramente utilizzati per "mediare tra i programmi", non perché ciò sia impossibile ma perché non sono progettati per renderlo facile. La caratteristica chiave di un linguaggio di scripting è che può orchestrare altri programmi, proprio come una sceneggiatura dà lo spunto a un attore per iniziare la sua parte.

    
risposta data 26.05.2014 - 12:36
fonte
11

Un linguaggio di marcatura è un linguaggio utilizzato per rappresentare i dati strutturati. Ad esempio, HTML consente di specificare che una parte del documento è un titolo o un'altra parte è un elenco, rispetto a un documento di testo piatto.

I linguaggi di marcatura non sono considerati come linguaggi di programmazione¹.

La differenza con i linguaggi di programmazione non è sempre ovvia. Ad esempio, XSLT è un linguaggio completo di Turing², ma è basato su XML che è un linguaggio di markup.

Wikipedia stessa fa sforzi importanti per evitare di qualificare XSLT come linguaggio di programmazione o linguaggio di markup. Dice solo che è un linguaggio dichiarativo e che usa "tecniche di ottimizzazione trovate nei linguaggi di programmazione funzionale e nei linguaggi di query del database".

Un linguaggio di scripting è un linguaggio di programmazione che viene interpretato, anziché compilato, il che significa che i linguaggi di scripting rappresentano un sottoinsieme di tutti i linguaggi di programmazione.

Non è sempre ovvio se un linguaggio di programmazione sia un linguaggio di scripting, come se non fosse sempre ovvio se una lingua è compilata o interpretata. Ad esempio, PHP può essere compilato in un bytecode³ intermedio e quindi essere ranslate in codice macchina dal compilatore JIT, pur essendo ancora considerato come linguaggio di scripting⁴.

Vedi anche: Dividere i Meta-capelli di Steven Lott.

¹ "XML non è un linguaggio di programmazione". Vedi XML in 10 punti .

² "XSLT è una lingua completa di Turing" Vedi XSLT su Wikipedia

³ "HHVM compila Hack e PHP in un bytecode intermedio. Questo bytecode viene quindi tradotto in codice macchina x64 dinamicamente in fase di esecuzione da un compilatore just-in-time (JIT). "Vedere HHVM .

Lingue di scripting in Elenco dei linguaggi di programmazione per tipo su Wikipedia.

    
risposta data 26.05.2014 - 09:53
fonte
2

Per produrre qualsiasi tipo di tassonomia, devi prima pormi alcune domande:

  • Gli oggetti che inserirò in qualsiasi relazione verranno definiti correttamente?
  • In tal caso, esistono realmente?
  • Mi sto limitando a un tipo specifico di relazioni tra oggetti, oppure esiste un requisito per il sistema di utilizzare solo relazioni legittime?

Tipicamente, quando si sente una domanda come quella che hai chiesto, la risposta attesa fa diverse ipotesi. Ad esempio, è naturale assumere che dal momento che tutte queste sono lingue, devono formare una gerarchia sotto un concetto più generale di linguaggio, o che suddividano lo spazio di tutte le lingue, o che siano sottogruppi l'uno dell'altro.

Linguaggi di programmazione

Sfortunatamente, nessuna delle precedenti sembra essere vera. Forse solo i linguaggi di programmazione hanno una definizione più d'accordo. I linguaggi di programmazione sono le lingue che codificano i programmi. Codifica significa che una parola nella lingua può essere interpretata come un programma (una sequenza di azioni). I linguaggi di programmazione informatica sono un sottoinsieme di questi. Esempi di linguaggi di programmazione diversi dal computer: una lista della spesa, interpretata come indicazioni per un acquirente in un supermercato, DNA interpretato trascrivendo peptidi, un record musicale analogico che serve come programma per un registratore.

I linguaggi di programmazione per computer sono quindi quelli che programmano i computer.

Lingue di scripting

Non sono ben definiti. È aperto all'interpretazione che cosa significa questo termine. Storicamente, sembrerebbe che i linguaggi di programmazione che non avevano un compilatore per produrre codice macchina fossero stati chiamati in questo modo. Con gli standard odierni, questo metterebbe tutti i linguaggi di programmazione più popolari in Assembler in questa categoria. Anche i cosiddetti linguaggi di basso livello come C richiedono un runtime con procedure preesistenti, quindi i file binari ottenuti compilando un programma C non sono interamente codice macchina, ma richiamano anche il runtime di tanto in tanto.

Lingue di markup

Non sono ben definiti. Ogni volta che viene usato il termine, l'intenzione sembra essere quella di descrivere un linguaggio di programmazione con lessico molto limitato, utilizzato principalmente per generare immagini visive o audio. Potrebbe essere difficile vedere l'XML come qualcosa da programmare, ma se guardi il markup Man o TexInfo, vedrai che i caratteri "speciali" sono in realtà le istruzioni dell'interprete.

È anche possibile dare un'interpretazione "di programmazione" per il linguaggio XML, qualcosa che potrebbe andare così:

< := put interpreter in the reading node mode
! := if reading node, start CData/Comment mode
     else if not in read text mode, signal error
-- := if in start CData/Comment mode, start comment
      else if in comment, put in end comment mode
      else if in end comment mode, signal error
...

Conclusione: questa divisione, ad oggi, non sembra molto significativa, può solo darvi qualche intuizione sul tipo di linguaggio con cui vi trovate, ma non vi fornirà una definizione rigorosa.

    
risposta data 19.09.2015 - 14:39
fonte
1

Tutti e tre i concetti si sovrappongono in qualche modo, quindi puoi ottenere argomenti infiniti sia che XSLT sia un linguaggio di programmazione o se Python sia o meno un linguaggio di scripting.

Un linguaggio di marcatura è un linguaggio che rappresenta dati strutturati in un formato testuale , l'HTML è il più noto, ma esistono numerosi formati per vari scopi, come SVG per la grafica, WSDL per la descrizione delle interfacce dei servizi Web, resx per i file resiuce in .net e così via. Una regola empirica è che un linguaggio di markup non descrive un processo o un algoritmo (come fa un linguaggio di programmazione) ma è puro dato. Ma è anche una visione fondamentale di CS che non c'è è nessuna differenza fondamentale tra codice e dati. Alcuni linguaggi di markup come XSLT hanno loop e condizionali come un linguaggio di programmazione "reale", e alcuni linguaggi di programmazione come Prolog sono dati quasi puri senza processo specificato nel codice. E Lisp sfoca la linea così tanto che tratta il proprio codice come un formato di dati strutturato.

Per quanto riguarda la distinzione tra linguaggio di programmazione e linguaggio di scripting , questa è una distinzione storica che è quasi obsoleta oggi. In passato avevamo compilato programmi stand-alone scritti in C, e poi avevamo linguaggi di scripting come dire script di shell o Word Basic, che sono stati interpretati e progettati per manipolare altri programmi e strumenti. Oggi la linea è piuttosto sfocata con molti punti di riferimento, dato che abbiamo vari livelli di compilazione e interpretazione (compilazione bytecode, compilation JIT, ecc.) E varie API indipendenti dalla lingua. Quindi la distinzione non è così utile.

    
risposta data 19.09.2015 - 18:03
fonte
0

Un linguaggio di markup è usato per descrivere i dati piuttosto che la logica. Un tipico utilizzo di questi è la descrizione del documento, l'HTML è progettato per questo ad esempio. Ma a volte vengono usati anche come formati generali di dati, XML è un linguaggio di marcatura che viene spesso utilizzato per descrivere semplicemente i dati.

La differenza tra i linguaggi di programmazione e di scripting è molto confusa, entrambi tendono ad essere completi in quanto è possibile risolvere qualsiasi problema computabile con essi. Ci sono alcuni "suggerimenti" generali che puoi cercare per vedere se una lingua è o meno un linguaggio di programmazione.

  • Le lingue di scripting sono spesso interpretate piuttosto che compilate, o almeno forniscono l'opzione di essere interpretate.
  • Le lingue di scripting sono spesso progettate per essere veloci da utilizzare piuttosto che veloci da eseguire.
  • Le lingue di scripting tendono a venire con librerie standard molto estese. Molti linguaggi di programmazione fanno altrettanto, ma sono più opzionali per loro.

Ma alla fine, se una lingua è linguaggio di scripting o linguaggio di programmazione è più una questione di convenzione piuttosto che un criterio rigoroso. Anche i suggerimenti sopra sono solo trend, troverete linguaggi di programmazione che soddisfano tutti i criteri per un linguaggio di scripting e sono ancora considerati linguaggi di programmazione.

    
risposta data 26.05.2014 - 10:11
fonte

Leggi altre domande sui tag