O que torna uma linguagem uma linguagem de script? Já ouvi algumas pessoas dizerem "quando for interpretado em vez de compilado". Isso tornaria o PHP (por exemplo) uma linguagem de script. Esse é o único critério? Ou existem outros critérios?
O que torna uma linguagem uma linguagem de script? Já ouvi algumas pessoas dizerem "quando for interpretado em vez de compilado". Isso tornaria o PHP (por exemplo) uma linguagem de script. Esse é o único critério? Ou existem outros critérios?
Respostas:
Uma linguagem de script é uma linguagem que faz o "script" de outras coisas para fazer. O foco principal não é principalmente construir seus próprios aplicativos, mas fazer com que um aplicativo existente funcione da maneira que você deseja, por exemplo, JavaScript para navegadores, VBA para MS Office.
Simples. Quando eu uso, é uma linguagem dinâmica moderna, quando você usa, é apenas uma linguagem de script!
Tradicionalmente, ao falar sobre a diferença entre scripts e programação, os scripts são interpretados e os programas compilados. Uma linguagem pode ser executada de diferentes maneiras - interpretada ou compilada (para bytecode ou código de máquina). Isso não faz uma linguagem um ou outro.
Em alguns olhos, a maneira como você usa uma linguagem a torna uma linguagem de script (por exemplo, os desenvolvedores de jogos que desenvolvem principalmente em C ++ irão criar scripts dos objetos em Lua). Novamente, as linhas estão borradas - uma linguagem pode ser usada para uma programação por uma pessoa e a mesma linguagem pode ser usada para uma linguagem de script por outra.
Isto é do artigo da Wikipedia sobre linguagens de script:
Uma linguagem de script, linguagem de script ou linguagem de extensão é uma linguagem de programação que permite o controle de um ou mais aplicativos de software. "Scripts" são distintos do código central do aplicativo, já que geralmente são escritos em uma linguagem diferente e geralmente são criados ou pelo menos modificados pelo usuário final. Os scripts são frequentemente interpretados a partir do código-fonte ou bytecode, enquanto os aplicativos que eles controlam são tradicionalmente compilados para o código de máquina nativo. As linguagens de script são quase sempre incorporadas aos aplicativos que controlam.
Você notará o uso de "normalmente", "frequentemente", "tradicionalmente" e "quase sempre" - todos eles indicam que não há um conjunto de atributos distintos que tornem uma linguagem específica uma "linguagem de script".
"Um roteiro é o que você dá aos atores. Um programa é o que você dá ao público." - Larry Wall
Eu realmente não acho que haja mais muita diferença. As chamadas linguagens de "script" são frequentemente compiladas - muito rapidamente e em tempo de execução. E algumas das linguagens de "programação" são posteriormente compiladas em tempo de execução também (pense em JIT) e o primeiro estágio da "compilação" é a verificação de sintaxe e a resolução de recursos.
Não fique preso a isso, não é realmente importante.
Minha definição seria uma linguagem normalmente distribuída como fonte em vez de binária.
Existem muitas respostas possíveis para isso.
Primeiro: não é realmente uma questão de diferença entre uma linguagem de script e uma linguagem de programação, porque uma linguagem de script é uma linguagem de programação. É mais uma questão de quais características tornam uma linguagem de programação uma linguagem de script, enquanto outra linguagem de programação não é uma linguagem de script.
Segundo: é realmente difícil dizer o que é uma linguagem XYZ, se XYZ é "script", "programação funcional", "programação orientada a objetos" ou o que quer que seja. A definição do que é "programação funcional" é bastante clara, mas ninguém sabe o que é uma "linguagem de programação funcional".
A programação funcional ou a programação orientada a objetos são estilos de programação ; você pode escrever em um estilo funcional ou orientado a objetos em praticamente qualquer linguagem. Por exemplo, o Linux Virtual File System Switch e o Linux Driver Model são altamente orientados a objetos, embora escritos em C, enquanto muitos códigos Java ou C # que você vê na web são muito procedurais e não orientados a objetos . OTOH, eu vi alguns códigos Java altamente funcionais.
Portanto, se a programação funcional e a programação orientada a objetos são meramente estilos que podem ser feitos em qualquer linguagem, então como definir uma "linguagem de programação orientada a objetos"? Você poderia dizer que uma linguagem de programação orientada a objetos é uma linguagem que permite a programação orientada a objetos. Mas isso não é exatamente uma definição: todas as linguagens permitem a programação orientada a objetos, portanto, todas as linguagens são orientadas a objetos? Então, você diz, bem, uma linguagem é orientada a objetos, se ela o força a programar em um estilo orientado a objetos. Mas isso também não é uma definição: todas as linguagens permitem programação funcional, portanto, nenhuma linguagem é orientada a objetos?
Então, para mim, encontrei a seguinte definição:
Uma linguagem é uma linguagem de script (linguagem orientada a objetos / linguagem funcional) se ambas
- facilita o scripting (programação orientada a objetos / programação funcional), ou seja, não só permite , mas torna-o fácil e natural e contém recursos que ajudam com isso, E
- incentiva e orienta você na direção de scripts (programação orientada a objetos / programação funcional).
Assim, após cinco parágrafos, cheguei a: "uma linguagem de script é uma linguagem de script". Que definição ótima. NÃO.
Obviamente, agora precisamos examinar a definição de "script".
É aqui que entra o terceiro problema: enquanto o termo "programação funcional" é bem definido e é apenas o termo "linguagem de programação funcional" que é problemático, infelizmente com o script, tanto o termo "script" quanto o termo "linguagem de script "estão mal definidos.
Bem, em primeiro lugar, o script é programação. É apenas um tipo especial de programação. IOW: todo script é um programa, mas nem todo programa é um script; o conjunto de todos os scripts é um subconjunto adequado do conjunto de todos os programas.
Na minha opinião pessoal, o que torna o script de script e o distingue de outros tipos de programação é que ...
Os scripts manipulam amplamente objetos que
- não foram criados pelo script,
- ter uma vida útil independente do script e
- vivem fora do domínio do script.
Além disso, os tipos de dados e algoritmos usados geralmente não são definidos pelo script, mas pelo ambiente externo.
Pense em um script de shell: scripts de shell geralmente manipulam arquivos, diretórios e processos. A maioria dos arquivos, diretórios e processos em seu sistema provavelmente não foi criada pelo script atualmente em execução. E eles não desaparecem quando o script termina: sua vida útil é completamente independente do script. E eles não são realmente parte do script, eles são parte do sistema. Você não começou seu script escrevendo File
e Directory
classes, esses tipos de dados não são da sua conta: você apenas assume que eles estão lá, e você nem mesmo sabe (nem precisa saber) como eles funcionam. E você não implementa seus próprios algoritmos, por exemplo, para a travessia de diretório, você apenas usa em find
vez de implementar sua própria busca em largura.
Resumindo: um script se liga a um sistema maior que existe independentemente do script, manipula uma pequena parte do sistema e então sai.
Esse sistema maior pode ser o sistema operacional no caso de um shell script, o DOM do navegador no caso de um script de navegador, um jogo (por exemplo, World of Warcraft com Lua ou Second Life com a Linden Scripting Language), um aplicativo (por exemplo, o AutoLisp idioma para macros AutoCAD ou Excel / Word / Office), um servidor web, um pacote de robôs ou algo totalmente diferente.
Observe que o aspecto de script é completamente ortogonal a todos os outros aspectos das linguagens de programação: uma linguagem de script pode ser fortemente ou fracamente tipada, estrita ou fracamente tipada, estática ou dinamicamente tipada, nominalmente, estruturalmente ou tipo duck, diabos ela pode até ser não tipada . Pode ser imperativo ou funcional, orientado a objetos, procedimental ou funcional, estrito ou preguiçoso. Suas implementações podem ser interpretadas, compiladas ou combinadas.
Por exemplo, Mondrian é uma linguagem de script funcional preguiçosa estritamente fortemente tipada estaticamente com uma implementação compilada.
No entanto, tudo isso é discutível, porque a forma como o termo linguagem de script é realmente usado no mundo real, não tem nada a ver com nenhum dos itens acima. Na maioria das vezes é usado simplesmente como um insulto, e a definição é bastante simples, até mesmo simplista:
- linguagem de programação real : minha linguagem de programação
- linguagem de script: sua linguagem de programação
Esta parece ser a forma como o termo é usado com mais frequência.
É como pornografia, você sabe quando vê. A única definição possível de uma linguagem de script é:
A language which is described as a scripting language.
Um pouco circular, não é? (Aliás, não estou brincando).
Basicamente, não há nada que torne uma linguagem uma linguagem de script, exceto que ela é chamada assim, especialmente por seus criadores. O principal conjunto de linguagens de script modernas é PHP, Perl, JavaScript, Python, Ruby e Lua. Tcl é a primeira grande linguagem de script moderna (não foi a primeira linguagem de script, eu esqueci o que é, mas fiquei surpreso ao saber que era anterior ao Tcl).
Eu descrevo recursos das principais linguagens de script em meu artigo :
A Practical Solution for Scripting Language Compilers
Paul Biggar, Edsko de Vries and David Gregg
SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)
A maioria é digitada e interpretada dinamicamente e a maioria não tem semântica definida fora de sua implementação de referência. No entanto, mesmo que sua implementação principal seja compilada ou JITed, isso não muda a "natureza" da linguagem.
A única questão restante é como você pode saber se uma nova linguagem é uma linguagem de script. Bem, se é chamado de linguagem de script, é um. Portanto, Factor é uma linguagem de script (ou pelo menos era quando foi escrita), mas, digamos, Java não é.
"Linguagem de script" é um daqueles conceitos confusos que podem significar muitas coisas. Normalmente, refere-se ao fato de que existe um processo de uma etapa que leva você do código-fonte à execução.
Por exemplo, em Perl você faz: perl my_source.pl
Dados os critérios acima, o PHP é uma linguagem de script (embora você possa ter um processo de "compilação", por exemplo, ao usar o Zend Encoder para "proteger" o código-fonte).
PS. Freqüentemente (mas nem sempre) as linguagens de script são interpretadas. Muitas vezes (mas nem sempre) as linguagens de script são digitadas dinamicamente.
Todas as linguagens de script são linguagens de programação. Então, estritamente falando, não há diferença.
O termo não se refere a nenhuma propriedade fundamental da linguagem, ele se refere ao uso típico da linguagem. Se o uso típico é escrever programas curtos que fazem principalmente chamadas para código pré-existente e algum processamento simples nos resultados (isto é, se o uso típico é escrever scripts ), então é uma linguagem de script.
Acho que o Sr. Roberto Ierusalimschy tem uma resposta muito boa ou a pergunta em 'Programação na Lua':
No entanto, a característica distintiva das linguagens interpretadas não é que elas não sejam compiladas, mas que qualquer compilador faz parte do tempo de execução da linguagem e que, portanto, é possível (e fácil) executar o código gerado em tempo real
eval
função de força total .
Uma divisão é
Uma linguagem interpretada dinamicamente é interpretada em tempo de execução, enquanto uma linguagem compilada é compilada antes da execução.
Devo acrescentar que, como Jörg apontou, a distinção interpretado / compilado não é uma característica da linguagem, mas do mecanismo de execução.
Você também pode estar interessado nesta explicação do sistema de tipos , que está relacionado e se concentra mais no aspecto da linguagem, em vez do mecanismo de execução. A maioria das linguagens de script são digitadas dinamicamente, enquanto as linguagens "normais" são geralmente digitadas estaticamente.
Em geral, a divisão de linguagens tipadas estaticamente vs dinamicamente é melhor definida e tem mais implicações na usabilidade da linguagem.
Uma linguagem de script é normalmente :
Enquanto uma linguagem sem script é geralmente : 1. Estaticamente tipada 2. Compilada, com ênfase no desempenho 3. Requer mais código clichê, levando a prototipagem mais lenta, mas mais legibilidade e manutenção de longo prazo 4. Usada para grandes projetos, adapta-se a muitos Padrões de design
Mas é mais uma diferença histórica hoje em dia, na minha opinião. Javascript e Perl foram escritos com scripts pequenos e simples em mente, enquanto C ++ foi escrito com aplicativos complexos em mente; mas ambos podem ser usados de qualquer maneira. E muitas linguagens de programação, modernas e antigas, confundem a linha de qualquer maneira (e era confusa em primeiro lugar!).
O triste é que conheço alguns desenvolvedores que detestam o que entendem como "linguagens de script", pensando que são mais simples e menos poderosas. Minha opinião é aquele velho clichê - use a ferramenta certa para o trabalho.
As linguagens de script foram originalmente pensadas como mecanismos de controle para aplicativos escritos em uma linguagem de programação rígida. Os programas compilados não podiam ser modificados em tempo de execução, portanto, os scripts proporcionavam flexibilidade às pessoas.
Mais notavelmente, o script de shell estava automatizando processos no kernel do sistema operacional (tradicionalmente, AppleScript em Macs); um papel que cada vez mais passou para as mãos de Perl, e depois para Python recentemente. Eu vi Scheme (particularmente em sua implementação Guile) usado para declarar cenas de raytracing; e recentemente, Lua é muito popular como a linguagem de programação para criar scripts de jogos - a tal ponto que a única coisa codificada em muitos jogos novos é o motor gráfico / físico, enquanto toda a lógica do jogo é codificada em Lua. Da mesma forma, o JavaScript foi pensado para fazer o script do comportamento de um navegador da web.
As linguagens emancipadas; ninguém agora pensa no SO como um aplicativo (ou pensa muito nele), e muitas linguagens de script anteriores começaram a ser usadas para escrever seus próprios aplicativos completos. O próprio nome perdeu o sentido e se espalhou para muitos idiomas interpretados em uso hoje, independentemente de serem ou não projetados para serem interpretados de dentro de outro sistema.
No entanto, "linguagens de script" definitivamente não é sinônimo de "linguagens interpretadas" - por exemplo, BASIC foi interpretado durante a maior parte de sua vida (ou seja, antes de perder sua acronimicidade e se tornar Visual Basic), mas ninguém realmente pensa nisso como scripts.
ATUALIZAÇÃO: Material de leitura normalmente disponível na Wikipedia .
Primeiro ponto, uma linguagem de programação não é uma "linguagem de script" ou outra coisa. Pode ser uma "linguagem de script" e outra coisa.
Segundo ponto, o implementador da linguagem dirá se é uma linguagem de script.
Sua pergunta deve ser "Em quais implementações uma linguagem de programação seria considerada uma linguagem de script?", E não "Qual é a diferença entre uma linguagem de script e uma linguagem de programação?". Não há meio-termo.
Ainda assim, considerarei uma linguagem uma linguagem de script se for usada para fornecer algum tipo de middle ware. Por exemplo, eu consideraria a maioria das implementações de JavaScript uma linguagem de script. Se o JavaScript fosse executado no sistema operacional, não no navegador, não seria uma linguagem de script. Se o PHP é executado dentro do Apache, é uma linguagem de script. Se for executado a partir da linha de comando, não é.
Eu vejo uma linguagem de script como qualquer coisa que não requer uma etapa de 'compilação' com uma sensação de peso aberto. A principal característica do ponto de vista do programador é: você edita o código e o executa imediatamente.
Portanto, eu consideraria JavaScript e PHP como linguagens de script, enquanto o ActionScript 3 / Flex não é realmente.
Meu amigo e eu acabamos de ter este argumento: Qual é a diferença entre uma linguagem de programação e uma linguagem de script.
Um argumento popular é que as linguagens de programação são compiladas e as linguagens de script são interpretadas - no entanto, acredito que esse argumento seja completamente falso ... por quê?
Com base nisso, este é meu argumento para a diferença entre uma linguagem de programação e uma linguagem de script:
Uma linguagem de programação é executada no nível da máquina e tem acesso à própria máquina (memória, gráficos, som etc).
Uma linguagem de script é uma caixa de areia e só tem acesso a objetos expostos na caixa de areia. Ele não tem acesso direto à máquina subjacente.
Em minha opinião, eu diria que linguagens interpretadas dinamicamente como PHP, Ruby, etc ... ainda são línguas "normais". Eu diria que exemplos de linguagens de "script" são coisas como bash (ou ksh ou tcsh ou qualquer outra coisa) ou sqlplus. Essas linguagens são frequentemente usadas para agrupar programas existentes em um sistema em uma série de comandos coerentes e relacionados, como:
Então, eu diria que a diferença (para mim, pelo menos) está mais em como você usa a linguagem. Linguagens como PHP, Perl, Ruby podem ser usadas como "linguagens de script", mas geralmente as vejo usadas como "linguagens normais" (exceto Perl que parece funcionar nos dois sentidos.
Vou apenas migrar minha resposta da pergunta duplicada
O nome "Linguagem de script" se aplica a uma função muito específica: a linguagem que você escreve comandos para enviar a um aplicativo de software existente. (como um "script" de TV ou filme tradicional)
Por exemplo, era uma vez, páginas da web em HTML eram chatas. Eles estavam sempre estáticos. Então, um dia, a Netscape pensou: "Ei, e se deixarmos o navegador ler e agir em pequenos comandos na página?" E assim, o Javascript foi formado.
Um comando javascript simples é o alert()
comando, que instrui / comanda o navegador (um aplicativo de software) que está lendo a página da web para exibir um alerta.
Agora, está alert()
relacionado, de alguma forma, ao C ++ ou a qualquer linguagem de código que o navegador realmente usa para exibir o alerta? Claro que não. Alguém que escreve "alert ()" em uma página .html não entende como o navegador realmente exibe o alerta. Ele está apenas escrevendo um comando que o navegador interpretará.
Vamos ver o código javascript simples
<script>
var x = 4
alert(x)
</script>
Estas são instruções que são enviadas ao navegador, para o navegador interpretar por si mesmo. A linguagem de programação que o navegador usa para realmente definir uma variável para 4 e colocar isso em um alerta ... não está totalmente relacionada ao javascript.
Chamamos essa última série de comandos de "script" (que é o motivo pelo qual está entre <script>
tags). Apenas pela definição de “script”, no sentido tradicional: Uma série de instruções e comandos enviados aos atores . Todo mundo sabe que um roteiro (um roteiro de filme), por exemplo, é um roteiro.
O roteiro (roteiro) não são os atores, nem a câmera, nem os efeitos especiais. O roteiro apenas diz a eles o que fazer.
Agora, o que é uma linguagem de script , exatamente?
Existem muitas linguagens de programação que são como ferramentas diferentes em uma caixa de ferramentas; alguns idiomas foram projetados especificamente para serem usados como scripts.
Javasript é um exemplo óbvio; existem muito poucos aplicativos de Javascript que não se enquadram no domínio dos scripts.
ActionScript (a linguagem para animações em Flash) e seus derivados são linguagens de script, pois simplesmente emitem comandos para o reprodutor / interpretador Flash. Claro, existem abstrações, como a programação orientada a objetos, mas tudo isso é simplesmente um meio para o fim: enviar comandos para o flash player.
Python e Ruby também são comumente usados como linguagens de script. Por exemplo, uma vez trabalhei para uma empresa que usava Ruby para fazer scripts de comandos para enviar para um navegador que eram do tipo "vá para este site, clique neste link ..." para fazer alguns testes automatizados básicos. Eu não era um "Desenvolvedor de Software" de forma alguma, naquele trabalho. Acabei de escrever scripts que enviam comandos ao computador para enviar comandos ao navegador.
Por causa de sua natureza, as linguagens de script raramente são 'compiladas' - isto é, traduzidas em código de máquina e lidas diretamente pelo computador.
Mesmo os aplicativos GUI criados em Python e Ruby são scripts enviados a uma API escrita em C ++ ou C. Diz ao aplicativo C o que fazer.
Existe uma linha de imprecisão, é claro. Por que você não pode dizer que Linguagem de máquina / C são linguagens de script, porque são scripts que o computador usa para fazer interface com a placa-mãe / placas gráficas / chips básicos?
Existem algumas linhas que podemos traçar para esclarecer:
Quando você pode escrever uma linguagem de script e executá-la sem "compilar", é mais um tipo de coisa de script direto. Por exemplo, você não precisa fazer nada com um roteiro para dizer aos atores o que fazer com ele. Já está lá, usado, como está. Por esse motivo, excluiremos as linguagens compiladas de serem chamadas de linguagens de script, embora possam ser usadas para fins de script em algumas ocasiões.
Linguagem de script implica comandos enviados a um aplicativo de software complexo ; essa é a razão pela qual escrevemos scripts em primeiro lugar - então você não precisa saber as complexidades de como o software funciona para enviar comandos para ele. Portanto, as linguagens de script tendem a ser linguagens que enviam comandos (relativamente) simples para aplicativos de software complexos ... neste caso, a linguagem de máquina e o código assembly não são suficientes.
Posso sugerir que linguagens de script é um termo do qual muitas pessoas estão se afastando. Eu diria que tudo se resume a linguagens compiladas e linguagens dinâmicas hoje em dia.
Quer dizer, você não pode realmente dizer algo como Python, ou Ruby são linguagens de "script" nos dias de hoje (você ainda tem coisas como IronPython e JIT-your-favorite-language , a diferença foi borrada ainda mais).
Para ser honesto, pessoalmente, não acho que o PHP seja mais uma linguagem de script. Eu não esperaria que as pessoas gostassem de categorizar o PHP de forma diferente de dizer Java em seus currículos.
As linguagens de script tendem a ser executadas em um mecanismo de script que faz parte de um aplicativo maior. Por exemplo, o JavaScript é executado dentro do mecanismo de script do seu navegador.
Uma linguagem de script é uma linguagem que é interpretada toda vez que o script é executado, isso implica ter um intérprete e a maioria é muito legível por humanos, para ser útil uma linguagem de script é fácil de aprender e usar.
Cada linguagem compilável pode ser transformada em uma linguagem de script e vice-versa, tudo depende da implementação de um interpretador ou compilador, por exemplo, C ++ tem um interpretador, então pode ser chamado de linguagem de script se usado (não é muito prático em geral como C ++ é uma linguagem muito complexa), uma das linguagens de script mais úteis no momento é o Python ...
Portanto, para responder à sua pergunta, a definição está no uso de um intérprete para executar programas de script rápidos e fáceis, para lidar com tarefas simples ou aplicativos de protótipo, o uso mais poderoso que se pode fazer das linguagens de script é incluir a possibilidade de cada uso para estender um aplicativo compilado.
Prefiro que as pessoas não usem o termo "linguagem de script", pois acho que diminui o esforço. Pegue uma linguagem como Perl, frequentemente chamada de "linguagem de script".
Por que precisamos distinguir entre uma linguagem como Java que é compilada e Ruby que não é? Qual é o valor da rotulagem?
Para mais informações, consulte http://xoa.petdance.com/Stop_saying_script .
Uma diferença importante é a tipagem forte (versus tipagem fraca ). As linguagens de script são frequentemente digitadas de maneira fraca , tornando possível escrever pequenos programas mais rapidamente. Para programas grandes, isso é uma desvantagem, pois inibe o compilador / interpretador de encontrar certos bugs de forma autônoma, tornando muito difícil refatorar o código.
Linguagens de script são linguagens de programação em que os programas são normalmente entregues aos usuários finais em uma forma textual legível e onde existe um programa que aparentemente pode executá-lo diretamente. (O programa pode muito bem compilar o script internamente; isso não é relevante aqui porque não é visível para o usuário.)
É relativamente comum que as linguagens de script sejam capazes de oferecer suporte a uma sessão interativa em que os usuários podem simplesmente digitar seu programa e executá-lo imediatamente. Isso ocorre porque esta é uma extensão trivial do requisito essencial do primeiro parágrafo; o principal requisito extra é a adição de um mecanismo para descobrir quando uma instrução digitada é concluída para que possa ser enviada para o mecanismo de execução.
Para uma visão ligeiramente diferente da questão. Uma linguagem de script é uma linguagem de programação, mas uma linguagem de programação não é necessariamente uma linguagem de script. Uma linguagem de script é usada para controlar ou criar um script de sistema. Esse sistema poderia ser um sistema operacional em que a linguagem de script seria o bash. O sistema pode ser um servidor web com PHP como linguagem de script. Linguagens de script são projetadas para preencher um nicho específico; são idiomas específicos de domínio. Os sistemas interativos têm linguagens de script interpretadas, dando origem à noção de que as linguagens de script são interpretadas; no entanto, isso é uma consequência do sistema e não da linguagem de script em si.
Uma linguagem de script é uma linguagem que configura ou estende um programa existente.
Uma linguagem de script é uma linguagem de programação.
A definição de "linguagem de script" é bastante confusa. Eu basearia nas seguintes considerações:
Linguagens de script geralmente não têm etapas de compilação visíveis ao usuário. Normalmente, o usuário pode apenas executar programas em um comando fácil.
Os programas em linguagens de script são normalmente transmitidos na forma de origem.
Linguagens de script normalmente têm tempos de execução que estão presentes em um grande número de sistemas, e os tempos de execução podem ser instalados facilmente na maioria dos sistemas.
As linguagens de script tendem a ser multiplataforma e não específicas à máquina.
As linguagens de script facilitam a chamada de outros programas e a interface com o sistema operacional.
As linguagens de script são geralmente facilmente embutidas em sistemas maiores escritos em linguagens de programação mais convencionais.
As linguagens de script são normalmente projetadas para facilitar a programação e com muito menos consideração pela velocidade de execução. (Se você quiser uma execução rápida, o conselho usual é codificar as partes demoradas em algo como C e incorporar a linguagem em C ou chamar os bits C da linguagem.)
Algumas das características que listei acima são verdadeiras para as implementações; nesse caso, estou me referindo às implementações mais comuns. Existem interpretadores C, com (AFAIK) nenhuma etapa de compilação óbvia, mas isso não é verdade para a maioria das implementações C. Você certamente poderia compilar um programa Perl para código nativo, mas não é assim que ele é normalmente usado. Algumas outras características são de natureza social. Alguns dos critérios acima se sobrepõem um pouco. Como eu disse, a definição é confusa.
Eu diria que a linguagem de script é aquela que manipula pesadamente as entidades que ela mesma não define. Por exemplo, JavaScript manipula objetos DOM fornecidos pelo navegador, PHP opera uma enorme biblioteca de funções baseadas em C e assim por diante. Claro que não é uma definição precisa, mais uma forma de pensar se ela.
Se não funcionar ou não funcionar na CPU, é um script para mim. Se um intérprete precisa ser executado na CPU abaixo do programa, é um script e uma linguagem de script.
Não há razão para complicar mais do que isso?
Claro, na maioria (99%) dos casos, é claro se uma linguagem é uma linguagem de script. Mas considere que uma VM pode emular o conjunto de instruções x86, por exemplo. Isso não tornaria o bytecode x86 uma linguagem de script quando executado em uma VM? E se alguém fosse escrever um compilador que transformasse o código perl em um executável nativo? Nesse caso, eu não saberia mais como chamar a própria linguagem. Seria a saída que importaria, não o idioma.
Então, novamente, não estou ciente de que nada parecido tenha sido feito, então, por enquanto, ainda estou confortável em chamar linguagens interpretadas de linguagens de script.
Um script é um programa relativamente pequeno . Um sistema é um programa relativamente grande ou uma coleção de programas relativamente grandes.
Algumas linguagens de programação são projetadas com recursos que o designer da linguagem e a comunidade de programação consideram úteis ao escrever programas relativamente pequenos. Essas linguagens de programação são conhecidas como linguagens de script , por exemplo, PHP.
Da mesma forma, outras linguagens de programação são projetadas com recursos que o designer da linguagem e a comunidade de programação consideram úteis ao escrever programas relativamente grandes. Essas linguagens de programação são conhecidas como linguagens de sistema , por exemplo, Java.
Agora, programas pequenos e grandes podem ser escritos em qualquer idioma. Um pequeno programa Java é um script. Por exemplo, um programa Java "Hello World" é um script, não um sistema. Um grande programa, ou coleção de programas, escrito em PHP é um sistema. Por exemplo, o Facebook, escrito em PHP, é um sistema, não um script.
É questionável considerar um único recurso de linguagem como um "teste decisivo" para decidir se a linguagem é mais adequada para scripts ou programação de sistemas. Por exemplo, os scripts podem ser compilados para código de byte ou código de máquina, ou podem ser executados por interpretação de árvore de sintaxe abstrata direta (AST).
Portanto, uma linguagem é uma linguagem de script se for normalmente usada para escrever scripts . Uma linguagem de script pode ser usada para escrever sistemas, mas esses aplicativos provavelmente serão considerados duvidosos.