Linguagem de script versus linguagem de programação

347

Alguém pode explicar a diferença entre linguagem de script e linguagem de programação, por favor?
Você também pode indicar alguns exemplos para cada um. Pesquisei bastante no Google, mas sempre encontro as melhores respostas do Stack Overflow.

Rahul Reddy
fonte

Respostas:

466

Linguagens de script são linguagens de programação que não exigem uma etapa explícita de compilação.

Por exemplo, no caso normal, você precisa compilar um programa C para poder executá-lo. Mas, no caso normal, você não precisa compilar um programa JavaScript antes de executá-lo. Portanto, o JavaScript às vezes é chamado de linguagem de "script".

Essa linha está ficando cada vez mais embaçada, pois a compilação pode ser tão rápida com hardware moderno e técnicas modernas de compilação. Por exemplo, o V8, o mecanismo JavaScript no Google Chrome e usado muito fora do navegador, compila o código JavaScript rapidamente no código da máquina, em vez de interpretá-lo. (De fato, o V8 é um compilador de duas fases otimizador.)

Observe também que o fato de um idioma ser ou não "de script" pode ter mais a ver com o ambiente do que com o idioma. Não há razão para que você não possa escrever um intérprete C e usá-lo como uma linguagem de script (e as pessoas o fazem). Também não há razão para que você não possa compilar JavaScript para codificar máquinas e armazená-las em um arquivo executável (e as pessoas o fizeram). A linguagem Ruby é um bom exemplo disso: a implementação original foi totalmente interpretada (uma linguagem de "script"), mas agora existem vários compiladores para ela.

Alguns exemplos de linguagens de "script" (por exemplo, linguagens tradicionalmente usadas sem uma etapa explícita de compilação):

  • Lua
  • Javascript
  • VBScript e VBA
  • Perl

E um pequeno número de itens tradicionalmente usados ​​com uma etapa explícita de compilação:

  • C
  • C ++
  • D
  • Java (mas observe que o Java é compilado no bytecode, que é então interpretado e / ou recompilado no tempo de execução)
  • Pascal

... e então você tem coisas como Python que ficam nos dois campos: Python é amplamente usado sem uma etapa de compilação, mas a implementação principal (CPython) faz isso compilando no bytecode on-the-fly e executando o bytecode em um VM e ele pode gravar esse bytecode em arquivos ( .pyc, .pyo) para uso sem recompilar.

Isso é apenas uma muito poucos, se você fizer alguma pesquisa você pode encontrar muito mais.

TJ Crowder
fonte
11
Excelente explicação!
Gladiator
48
@ mg30rg: Heh - scripting pode ser totalmente uma programação "real". (Você não acreditaria em alguns dos scripts do bash que eu vi ...) Acho que a maneira mais simples de defini-lo (e, novamente, isso não é uma coisa de linguagem, é uma coisa de ambiente) é: O ambiente de tempo de execução veja o código fonte? Nesse caso, eu chamaria isso de "script"; se não, eu não faria. Portanto, nesse sentido, o JavaScript baseado em navegador é "script" porque, mesmo que mecanismos como o V8 o compilem rapidamente, a fonte ainda é entregue ao ambiente de tempo de execução. Da mesma forma, conchas scripts. A fonte de um programa C tradicional não é entregue no tempo de execução.
TJ Crowder
2
@ mg30rg: Mas, novamente, essas linhas estão ficando mais borradas o tempo todo. :-) Considere o bytecode Java. Você não pode executá-lo sem uma JVM, mas não é um código-fonte. (Geralmente, ele pode ser transformado em código-fonte de aparência razoável por um descompilador, mas ...) Não penso (remotamente) em Java em um ambiente tradicional como uma linguagem de script. Mas também não passo muito tempo pensando nas categorias. :-)
TJ Crowder
2
@ CME64: Não, a implementação principal (CPython) compila o bytecode rapidamente e executa o bytecode em uma VM. Embora existam ferramentas Python para C (Cython e Pyrex), geralmente não é assim que o Python é executado.
TJ Crowder
2
Para defesa do @ Vityata, o VBScript é escrito no bloco de notas e interpretado como entrada de texto, enquanto o código VBA é compilado no código P à medida que você o digita no editor , ou seja, o código-fonte que você vê no editor depois de modificar uma linha de código, não é o código que você digitou, mas a versão do VBE do P-Code subjacente: a mecânica do VBA vs VBScript é completa e totalmente diferente, e agrupá-los nessa lista simplesmente não parece certo. O VBA está muito mais próximo do VB6 do que do VBScript; é apenas uma restrição explícita que impede a criação de um executável independente.
Mathieu Guindon
103

Para entender a diferença entre uma linguagem de script e uma linguagem de programação, é preciso entender por que nasceram as linguagens de script.

Inicialmente, havia linguagens de programação que foram escritas para criar programas como excel, word, navegadores, jogos e etc. Esses programas foram criados com linguagens como c e java. Com o tempo, esses programas precisavam de uma maneira para os usuários criarem novas funcionalidades; portanto, eles precisavam fornecer uma interface para seus códigos de bytes e, portanto, nasceram as linguagens de script.

Uma linguagem de script geralmente não é compilada, portanto pode ser executada assim que você escrever algo significativo. Portanto, o excel pode ser criado usando C ++, mas expõe uma linguagem de script chamada VBA para os usuários definirem a funcionalidade. Da mesma forma, os navegadores podem ser criados com C ++ / Java, mas eles expõem uma linguagem de script chamada javascript (não relacionada a java de nenhuma maneira). Os jogos geralmente são criados com C ++, mas expõem uma linguagem chamada Lua para que os usuários definam funcionalidades personalizadas.

Uma linguagem de script geralmente fica atrás de alguma linguagem de programação. As linguagens de script geralmente têm menos acesso às habilidades nativas dos computadores, pois são executadas em um subconjunto da linguagem de programação original. Um exemplo aqui é que o Javascript não poderá acessar seu sistema de arquivos. As linguagens de script geralmente são mais lentas que as linguagens de programação.

Embora as linguagens de script possam ter menos acesso e serem mais lentas, elas podem ser ferramentas muito poderosas. Um fator atribuído ao sucesso das linguagens de script é a facilidade de atualização. Você se lembra dos dias dos applets java na Web, este é um exemplo de execução de uma linguagem de programação (java) versus execução de uma linguagem de script (javascript). Na época, os computadores não eram tão poderosos e o javascript não era tão maduro, então os applets Java dominavam as cenas. Mas os applets Java eram irritantes, exigiam que o usuário carregasse e compilasse a linguagem. Avançando hoje, os applets Java estão quase extintos e o Javascript domina a cena. O carregamento do Javascript é extremamente rápido, pois a maioria dos componentes do navegador já foi instalada.

Por fim, as linguagens de script também são consideradas linguagens de programação (embora algumas pessoas se recusem a aceitar isso) - o termo que devemos usar aqui é linguagens de script versus linguagens compiladas.

Yang Li
fonte
4
Você não acha que quis dizer: "linguagens interpretadas versus linguagens compiladas" em vez de "linguagens de script versus linguagens compiladas"?
bitsapien
6
"Um exemplo aqui é que o Javascript não poderá acessar seu sistema de arquivos", dizem os Nodejs oi
Mohammad
O @Mohammad NodeJS é um tempo de execução que permite que os codificadores usem Javascript como uma "linguagem" para codificação. O NodeJS não é 100% Javascript.
9139 JeffNhan
65

Todas as linguagens de script são linguagens de programação.

Os idiomas não são classificados como script ou não - depende inteiramente do ambiente de execução.

Se o ambiente for interpretado, isso geralmente é chamado de ambiente de script.

Oded
fonte
18

As diferenças estão se tornando cada vez menos importantes. Tradicionalmente, as linguagens de script estendem os programas existentes ... Eu acho que essa é a principal definição de "script" é que ela se refere à escrita de um conjunto de instruções para uma entidade existente executar. No entanto, onde as linguagens de script começaram com sintaxe proprietária e coloquial, a maioria das prevalentes hoje em dia deve alguma relação com C.

Eu acho que a distinção "interpretado versus compilado" é realmente um sintoma de estender um programa existente (com um intérprete embutido), ao invés de uma diferença intrínseca. O que os programadores e leigos estão mais preocupados é: "o que o programador está fazendo?" O fato de um programa ser interpretado e outro ser compilado significa muito pouco para determinar a diferença de atividade do criador. Você não julga um dramaturgo se suas peças são mais lidas em voz alta ou executadas no palco, não é?

Eric Barker
fonte
12

Linguagem de programação: É compilada no código da máquina e executada no hardware do sistema operacional subjacente.

Linguagem de script: é um subconjunto de estrutura da linguagem de programação. Geralmente é interpretado. basicamente "scripts" outras coisas para fazer coisas. O foco principal não é criar seus próprios aplicativos, mas obter um aplicativo existente para agir da maneira que você deseja, por exemplo, JavaScript para navegadores, TCL etc.,

*** Mas há situações em que uma linguagem de programação é convertida em intérprete e vice-verso, como o uso de um intérprete C, onde você pode 'C' Script. Os scripts geralmente são escritos para controlar o comportamento de um aplicativo, onde a linguagem de programação é usada para criar aplicativos. Mas tenha cuidado, pois a demarcação está desfocando o dia a dia como exemplo de Python, depende de como se usa a linguagem.

saikumarm
fonte
10

Linguagens de script são um subconjunto de linguagens de programação.

  1. Linguagens de script não são compiladas no código de máquina pelo usuário (python, perl, shell, etc.). Em vez disso, outro programa (chamado intérprete, executa o programa e simula seu comportamento)
  2. Algumas linguagens de programação que não são de script (C, C ++, Haskell e outras linguagens 'compiladas') são compiladas no código da máquina e, posteriormente, executadas.
jh314
fonte
5

Eu acho que o que você está afirmando como "diferença" é na verdade uma consequência da diferença real.

A diferença real é o alvo do código escrito. Quem vai executar esse código.

Uma linguagem de script é usada para escrever o código que será direcionado a um sistema de software. Isso automatizará as operações nesse sistema de software. O script será uma sequência de instruções para o sistema de software de destino.

Uma linguagem de programação tem como alvo o sistema de computação, que pode ser uma máquina real ou virtual. As instruções são executadas pela máquina.

Obviamente, uma máquina real entende apenas código binário, então você precisa compilar o código de uma linguagem de programação. Mas isso é uma consequência do direcionamento de uma máquina em vez de um programa.

Por outro lado, o sistema de software de destino de um script pode compilar o código ou interpretá-lo. Depende do sistema de software.

Se dissermos que a diferença real é se ele é compilado ou não, então temos um problema porque quando o Javascript é executado na V8 é compilado e quando o Rhino não é.

Fica mais confuso, pois as linguagens de script evoluíram para se tornarem muito poderosas. Portanto, eles não se limitam a criar pequenos scripts para automatizar operações em outro sistema de software; você pode criar aplicativos ricos com eles.

O código Python tem como alvo um intérprete para que possamos dizer que ele "scripts" opera nesse intérprete. Mas quando você escreve código Python, não o vê como script de intérprete, mas como cria um aplicativo. O intérprete está lá apenas para codificar em um nível superior, entre outras coisas. Então, para mim, o Python é mais uma linguagem de programação do que uma linguagem de script.

Damian Jose
fonte
5

Quando o mundo era jovem e no mundo dos PCs, você optou por .exe ou .bat, o delineamento era simples. Os sistemas Unix sempre tiveram scripts de shell (/ bin / sh, / bin / csh, / bin / ksh, etc) e linguagens compiladas (C / C ++ / Fortran).

Para diferenciar papéis e responsabilidades, as linguagens compiladas (geralmente chamadas de Linguagens de 3ª Geração) foram vistas como linguagens de 'programação' e as linguagens de 'script' como aquelas que invocavam um intérprete (geralmente chamado de Linguagens de 4ª Geração). As linguagens de script eram frequentemente usadas como "cola" para conectar-se a vários comandos / programas compilados, para que o usuário não precisasse se preocupar com um conjunto de etapas para realizar sua tarefa - eles desenvolveram um único arquivo, que delineou quais etapas eles queriam realizar, e isso se tornou um 'roteiro' para qualquer um seguir.

Várias pessoas / grupos escreveram novos intérpretes para resolver um domínio de problema específico. O awk é um dos mais conhecidos e foi usado principalmente para correspondência de padrões e aplicação de uma série de transformações de dados na entrada. Funcionou bem, mas tinha um domínio de problemas limitado. A expansão desse domínio foi praticamente impossível porque o código fonte não estava disponível. Script da ferramenta Perl (Larry Wall, principal autor / arquiteto) para o próximo nível - e desenvolveu um intérprete que não apenas permitia ao usuário executar comandos do sistema, manipular dados de entrada e saída, suportava variáveis ​​sem tipo, mas também acessava APIs no nível do sistema Unix como funções de dentro dos próprios scripts. Foi provavelmente uma das primeiras linguagens de script de alto nível amplamente usadas.

Sua pergunta foi especificamente sobre Python. Como o interpretador python é executado em um arquivo de texto que contém o código python, e que o código python pode ser executado em qualquer lugar em que exista um intérprete python, eu diria que é uma linguagem de script (na mesma linha que o Perl). Você não precisa recompilar o arquivo de comando python do usuário para cada arquitetura diferente de OS / CPU (como faria com C / C ++ / Fortran), tornando-o significativamente mais portátil e fácil de usar.

O crédito por esta resposta vai para Jerrold (Jerry) Heyman. Tópico original: https://www.researchgate.net/post/Is_Python_a_Programming_language_or_Scripting_Language

Kartik Chauhan
fonte
4

Estou em desacordo com o fato de que as linguagens que usam intérpretes são linguagens de script e a que é compilada são linguagens de programação. Podemos desenvolver um intérprete ou compilador para qualquer idioma. O ambiente interpretado adapta-se melhor aos scripts da Web e facilita a utilização dos scripts.

Bem, sinto que não há diferença entre a linguagem de script e a linguagem de programação. É tudo sobre como fazer o trabalho. Quando se trata de tarefas relacionadas à Web, as chamamos de scripts da Web, considerando pequenas tarefas e, dessa forma, também podemos chamar as tarefas relacionadas ao sistema como scripts no nível do sistema ou sistema operacional e a linguagem de programação que usamos para realizar essas tarefas como linguagens de script do sistema.

Também não é assim que não se pode escrever código no nível do sistema em scripts Python e Web na linguagem C (definitivamente, se é possível estabelecer a plataforma e o ambiente necessários). Mas basta um esforço excessivo, que pode afetar a restrição de tempo para o desenvolvimento rápido e a pequena latência reduzida não vai nos beneficiar muito em scripts da web. Mas o verso sábio não é verdadeiro se executarmos tarefas no nível do sistema em Python.

Conclusão: a seleção de idiomas depende da natureza da tarefa a ser executada e discriminar um idioma, pois o idioma de script é um mito.

Paritosh Mishra
fonte
4

Linguagens com script

Linguagens de script são interpretadas dentro de outro programa. JavaScript é incorporado em um navegador e interpretado por esse navegador.

Exemplos de linguagens de script

  1. Javascript
  2. Perl
  3. Pitão

Vantagens das linguagens de script:

  1. Simples - as linguagens de script são mais fáceis de escrever do que a linguagem de programação.

  2. Menos linhas de código (LOC)

Linguagens programadas

Linguagens de programação como Java são compiladas e não são interpretadas por outro aplicativo da mesma maneira.

Exemplos de linguagens de programação

  1. C
  2. C ++ e
  3. Java

Mais detalhes

manisha mulchandani
fonte
Linguagens com script são linguagens de programação. Além disso, Java é interpretado por outro aplicativo chamado JVM.
precisa saber é
4

Em linguagens de script como (JavaScript e versões antigas do PHP), usamos funções e métodos fundamentais existentes para executar nosso trabalho. Vamos dar um exemplo em JavaScriptque podemos usar ajaxou web-socketsapenas se eles são suportados pelo navegador ou existem métodos ou eles no navegador. Mas em linguagens como C ou C ++, Java, podemos escrever esse recurso do zero, mesmo se alguma biblioteca para esse recurso não estiver disponível, mas não podemos fazê-lo em JavaScript.

você pode suportar soquetes da Web no Internet Explorer 8 ou anterior com a ajuda de JavaScript Mas você pode escrever um plug-in em C ou C ++ ou Java que pode adicionar um recurso do soquete da web ao Internet Explorer 8.

Basicamente, nas linguagens de script, escrevemos um código em uma sequência que executa métodos existentes em uma sequência para concluir nosso trabalho. Inserir números e fórmulas em uma calculadora digital para executar uma operação também é um exemplo muito da linguagem de script. Devemos observar que o ambiente do compilador / tempo de execução de cada linguagem de script é sempre escrito na linguagem de programação na qual podemos adicionar mais recursos. e métodos e pode escrever novas bibliotecas.

PHP Essa é uma linguagem que é um pouco de programação e script em preto e branco. Podemos adicionar novos métodos adicionando extensões compiladas escritas em outro idioma de alto nível. Não podemos adicionar recursos de alto nível de rede ou criar bibliotecas de processamento de imagem diretamente no PHP.

PS: Sinto muito por ter revolvido minha resposta apenas em PHP JavaScript, mas uso esses dois porque tenho uma experiência considerável nesses dois.

Ravinder Payal
fonte
3

Além da diferença de que a linguagem de script é interpretada e a linguagem de programação é compilada, há outra diferença como abaixo, que acho que foi perdida.

Uma linguagem de script é uma linguagem de programação usada para manipular, personalizar e automatizar os recursos de um sistema existente. Nesses sistemas, a funcionalidade útil já está disponível por meio de uma interface do usuário, e a linguagem de script é um mecanismo para expor essa funcionalidade ao controle do programa.

Enquanto uma linguagem de programação geralmente é usada para codificar o sistema a partir do zero.

src ECMA

Sukrit Gupta
fonte
2

Se virmos logicamente a linguagem de programação e a linguagem de script, é 99,09% o mesmo. porque usamos o mesmo conceito como loop, condição de controle, variável e tudo, então podemos dizer que sim são os mesmos, mas há apenas uma coisa diferente entre eles que está em C / C ++ e outra linguagem de programação que compilamos o código antes da execução. mas no PHP, JavaScript e outra linguagem de script não precisamos compilar, executamos diretamente no navegador.

Obrigado Nitish K. Jha

NITISH KUMAR Jha
fonte
2

Linguagens de script são linguagens de programação que as pessoas consideram como linguagens de script. É uma categoria artificial sem limites claros e onde todas as regras propostas têm uma exceção.

As regras clássicas usadas para dizer que uma linguagem é uma linguagem de script estão caracterizando, não definindo. Se uma linguagem atender a várias regras, há uma boa chance de ser considerada uma linguagem de script. Caso contrário, há uma boa chance de que não seja. As regras geralmente incluem:

  • Destina-se a pequenos "scripts", não a programas grandes.
  • Ele está incorporado em outro aplicativo, usado para pequenas modificações desse aplicativo.
  • É interpretado em vez de compilado.
  • Destina-se a programadores iniciantes, não profissionais.
  • Seu nome termina em "script".

Eu adicionaria:

  • Uma linguagem de script é uma linguagem de programação em que quase todos os erros são detectados em tempo de execução.

Ou seja, poderia ser uma linguagem interpretada.

Se uma linguagem de programação possui um comportamento "em tempo de compilação" significativo, onde analisa o código e relata erros sem executar o programa, como erros de tipo de C, Java ou C #, provavelmente não é considerada uma linguagem de script.

Tradicionalmente, muitas linguagens de script são interpretadas diretamente da fonte, mas as mais populares têm implementações com melhor desempenho que pré-compilam o código, como o Python .pyc compilam arquivos , ou otimizam os mecanismos JavaScript que compilam o código nativo antes da execução.

Se a linguagem puder ser implementada por um intérprete, que apenas analisa o código-fonte enquanto o executa, é provável que seja considerada uma linguagem de script. Se ele realmente é implementado dessa maneira não é importante, mas, se puder, também não poderá exigir uma verificação extensiva do código em tempo de compilação.

Se a linguagem fornecer uma semântica estática útil que ajude a detectar erros (que não sejam erros de sintaxe) sem precisar executar o programa, provavelmente não é uma linguagem de script.

Sempre há exceções, geralmente baseadas na tradição em torno de um idioma mais do que em qualquer regra real. O BASIC geralmente não é considerado uma "linguagem de script", mesmo que satisfaça praticamente todos os critérios que alguém já usou para ser um. É por isso que o Visual Basic Script precisou adicionar o "script" ao nome, para se diferenciar do Visual Basic, uma linguagem de programação "real" destinada a programas maiores.

O BASIC também é uma linguagem de programação antiga, como COBOL e Fortran, de antes que as pessoas esperassem análises estáticas de uma linguagem e, basicamente, antes de "linguagens de script" serem uma coisa.

lrn
fonte