Pergunta

Estou me referindo a distinções, como em esta resposta :

... festa não é para escrever aplicações É para, bem, scripting. Então, com certeza, a sua aplicação pode ter alguns scripts de limpeza mas não vá escrevendo critical-business-logic.sh porque outra língua é provavelmente melhor para coisas assim.

Como programador que trabalhou em muitas línguas, este parece ser C, Java e outras esnobismo linguagem compilada. Eu não estou procurando reenforcement da minha opinião ou respostas de mão-ondulado. Em vez disso, eu realmente quero saber o que as diferenças técnicas estão sendo referido.

(E eu uso C em meu trabalho do dia, então eu não estou apenas sendo defensiva.)

Foi útil?

Solução

Tradicionalmente um programa é compilado e um script é interpretado, mas isso não é realmente importante anymore. Você pode gerar uma versão compilada da maioria dos scripts se você realmente quer, e outras línguas 'compilado' como Java são, na verdade interpretada (ao nível do código de bytes.)

Uma definição mais moderna pode ser que um programa se destina a ser usado por um cliente (talvez um interno) e, portanto, deve incluir documentação e suporte, enquanto um script é destinado principalmente para o uso do autor.

A web é um contra-exemplo interessante. Todos nós gostamos de olhar as coisas com o motor de busca Google. A maior parte do código que vai criar o 'banco de dados' referenciado é usado apenas por seus autores e mantenedores. Isso faz dele um script?

Outras dicas

Eu diria que uma aplicação tende a ser usado de forma interativa, onde um script seria executado o seu curso, adequado para o trabalho de grupo. Eu não acho que é uma distinção concreta.

Normalmente, é "script" versus "programa".

Eu estou com vocês que esta distinção é principalmente "esnobismo linguagem compilada", ou para citar Larry Wall e tomar o outro lado da cerca "um script é o que os atores têm, um programa é dado para o público".

Este é um tema interessante, e eu não acho que há muito boas diretrizes para a diferenciação de um "script" e uma "aplicação".

Vamos dar uma olhada em alguns artigos da Wikipedia para ter uma idéia da distinção.

Script (Wikipedia -> Linguagem de script):

A linguagem de scripting, linguagem de script ou linguagem de extensão, é uma linguagem de programação que controla uma aplicação de software. "Scripts" são frequentemente tratados como distinto de "programas", que executam de forma independente a partir de qualquer outra aplicação. Ao mesmo tempo que eles são distintos de núcleo do código da aplicação, o que é normalmente escrito numa linguagem diferente, e por serem acessíveis para o utilizador final que permitem que o comportamento da aplicação a ser adaptado para as necessidades do utilizador.

Aplicação (Wikipedia -> software aplicativo -> Terminologia)

Na ciência da computação, um aplicativo é um programa de computador projetado para ajudar as pessoas a realizar um determinado tipo de trabalho. Uma aplicação difere, portanto, de um sistema operacional (que corre num computador), um utilitário (que executa a manutenção ou tarefas de uso geral), e uma linguagem de programação (com a qual os programas de computador são criados). Dependendo do trabalho para o qual foi concebido, um aplicativo pode manipular texto, números, gráficos, ou uma combinação desses elementos.

Lendo as entradas acima parece sugerir que a distinção é que um script é "hospedado" por um outro pedaço de software, enquanto o pedido não for. Suponho que se pode argumentar, como shell scripts que controlam o comportamento da shell e scripts perl que controlam o comportamento do intérprete para executar operações desejadas. (Eu sinto que este pode ser um pouco de um trecho, para que eu possa não concordar totalmente com ele.)

Quando se trata baixo para ele, é na minha opinião que a distinção coloquial pode ser feito em termos da escala do programa. Scripts são geralmente em menor escala, quando em comparação com aplicações.

Além disso, em termos de propósito, um roteiro geralmente tarefas executa que as necessidades de cuidado, digamos, por exemplo, scripts de construção que produzem várias versões de lançamento para uma determinada peça de software. Por outro lado, as aplicações são voltadas para fornecendo funcionalidade que é mais refinado e voltado para um usuário final. Por exemplo, o Bloco de notas ou Firefox.

John Ousterhout (o inventor do TCL) tem um bom artigo em http: // www. tcl.tk/doc/scripting.html onde ele propõe uma distinção entre linguagens de programação do sistema (para a implementação de blocos de construção, ênfase na correção, tipo de segurança) vs linguagens de script (para a combinação de blocos de construção, ênfase na capacidade de resposta às mudanças ambientais e exigências, facilitar a conversão dentro e fora das representações textuais). Se você vai com esse sistema de categorização, em seguida, 99% dos programadores estão fazendo trabalhos que são mais apropriados para linguagens de script do que linguagens de programação do sistema.

Um script tende a ser uma série de comandos que começa, os funcionamentos, e termina. Muitas vezes não requer pouca interação / humano. Um aplicativo é um "programa" ... que muitas vezes requer interação humana, ele tende a ser maior.

Script para mim implica interpretação linha por linha do código. Você pode abrir um script e ver o respectivo conteúdo programador legível. Uma aplicação implica um executável compilado stand-alone.

É muitas vezes apenas um argumento semântico, ou até mesmo uma forma de denegrir certas linguagens de programação. Tanto quanto eu estou em causa, um "script" é um tipo de programa e a definição exata é um pouco vago e varia com o contexto.

Eu poderia usar o termo "script" para significar um programa que executa principalmente linearmente, ao invés de com muita lógica seqüencial ou sub-rotinas, bem como um "script" em Hollywood é uma sequência linear de instruções para um ator para executar. Eu poderia usá-lo para significar um programa que está escrito em uma linguagem embutida dentro de um programa maior, com a finalidade de dirigir esse programa. Por exemplo, automatizar tarefas sob o velho Mac OS com AppleScript, ou dirigir um programa que expõe-se, de alguma forma com uma interface TCL incorporado.

Mas em todos os casos, um script é um tipo de programa.

O termo "linguagem de script" tem sido usado para linguagens interpretadas dinamicamente (por vezes compilados), geralmente estes têm um monte de características comuns, tais como instruções de nível muito elevado, construído em hashes e listas arbitrária de comprimento e outras estruturas de dados de alto nível , etc. Mas essas línguas são capazes de grandes complicadas, programas modulares, bem concebido, por isso, se você pensa em um "script" como algo diferente de um programa, esse termo pode confundi-lo.

Veja também É um programa Perl ou um script Perl? em perlfaq1.

Um script geralmente é executado como parte de uma aplicação maior dentro de um mecanismo de script por exemplo. JavaScript -> Navegador Isso está em contraste com tanto estática tradicional digitadas linguagens compiladas e para linguagens dinâmicas, onde o código se destina a formar a parte principal do aplicativo.

Um aplicativo é uma coleção de scripts voltados para um conjunto comum de problemas.

Um script é um pouco de código para executar uma tarefa bastante específica.

IMO, a diferença não tem nada a ver com a linguagem que é usada. É possível escrever um aplicativo complexo com bash, e é possível escrever um script simples com C ++.

Em primeiro lugar, gostaria de deixar bem claro que um script é um programa . Em outras palavras, um script é um conjunto de instruções.

Programa:

Um conjunto de instruções que vai ser compilado é conhecido como um programa.

Script:

Um conjunto de instruções que vai ser interpretado é conhecido como um script.

Tomar perl como um exemplo, você pode escrever perl scripts ou aplicações Perl.

Um script implicaria um único arquivo ou um único namespace. (Por exemplo updateFile.pl).

Uma aplicação seria algo feito de uma coleção de arquivos ou namespaces / classes (por exemplo, uma aplicação perl projetado-OO com muitos arquivos de módulo .pm).

Pessoalmente, acho que a separação é um passo para trás a partir da implementação real.

Em minha opinião, um aplicativo é planejado. Ele tem múltiplos objetivos, tem várias entregas. Há tarefas de lado no momento da concepção, antes da codificação que o pedido deve satisfazer.

Um script no entanto, é apenas jogado juntos como ternos, e pouco de planejamento está envolvido.

A falta de planejamento adequado não no entanto degradar-lo a um script. Possivelmente, ele faz o seu pedido de uma coleção mal organizado de scripts mal planejadas.

Ainda mais, um aplicativo pode conter scripts que agregadas compreendem o todo. Mas um script só pode fazer referência a um aplicativo.

Uma aplicação é grande e vai ser usado repetidas por pessoas e talvez vendido a um cliente.

Um script começa pequeno, estadias pequenas Se você tiver sorte, raramente é vendido a um cliente, e quer pode ser executado automaticamente ou cair em desuso.

E:

Script:

A roteiro é arquivo de texto (ou coleção de arquivos de texto) de instruções de programação escritas em uma linguagem que permite declarações individuais escritas em que seja interpretado máquina executável Código diretamente antes cada um é executado e com a intenção de isso acontecer .

aplicação:

Um aplicativo é qualquer programa de computador cuja funcionalidade primária envolve a prestação de serviço a um ator humano.

Um programa baseado em roteiro escrito em uma linguagem de script pode, portanto, teoricamente, ter suas demonstrações textuais alterado enquanto o script está sendo executado (em grande risco de, é claro). A situação análoga para programas compilados está lançando pedaços na memória.

Algum comprador? :)

@ resposta de Jeff é bom. Minha explicação favorita é

Muitos (a maioria?) Linguagens de script são interpretadas, e poucos compilado línguas são consideradas linguagens de script, mas a questão dos vs compilado é interpretada apenas vagamente ligadas à questão de "script" versus línguas "sérios".

Uma grande parte do problema aqui é que "script" é um muito vago designação - que significa uma linguagem que seja conveniente para a escrita scripts, em vez de escrever "programas full-blown" (ou formulários). Mas como distinguir um script complexo de um aplicação simples? Essa é uma pergunta essencialmente irrespondível. Geralmente, um script é uma série de comandos aplicado a um conjunto de dados, possivelmente em uma ordem definida pelo usuário ... mas, em seguida, pode-se esticar essa descrição para aplicar para o Photoshop, que é claramente um importante inscrição. Scripts são geralmente menores do que as aplicações, fazer alguma coisa bem definida e são "simples" para uso, e normalmente pode ser decomposta em uma série clara de sub-operações, mas todos estes coisas são subjetivas.

aqui .

Eu acho que não há importa em tudo se o código é compilado ou interpretado.

A verdadeira diferença está na lógica do núcleo de código:

  • Se o código faz nova funcionalidade que não é implementado em outros programas no sistema - é um programa. Ele ainda pode ser manipulado por um script.

  • Se o código é principalmente manipula por ações de outros programas e resultado total é, principalmente, os resultados do trabalho de programas manipuladas - é um script. Literalmente um roteiro de ações para alguns programas.

Na verdade, a diferença entre um script (ou uma linguagem de script) e uma aplicação é que um script não requerem que ele seja compilado em linguagem de máquina .. Você executar a fonte do script com um intérprete .. aplicação compila A a fonte em código de máquina para que você possa executá-lo como um aplicativo independente.

Eu diria que um script é geralmente um conjunto de comandos ou instruções escritas em texto simples que são executado por uma aplicação de hospedagem (navegador, interpretador de comandos ou shell ,. ..).

Isso não significa que não é poderoso ou não compilado, de alguma forma quando é realmente executado. Mas um script não pode fazer nada por si só, é apenas texto simples.
Por natureza, ele pode ser apenas um fragmento, precisando ser combinados para construir um programa ou uma aplicação, mas ampliado e totalmente scripts desenvolvidos ou conjunto de scripts podem ser considerados programas ou aplicações quando executado pelo anfitrião, assim como um monte de arquivos de origem pode se tornar um aplicativo uma vez compilados.

A linguagem de script não tem uma biblioteca padrão ou plataforma (ou não muito de um). É pequeno e leve, projetado para ser embutido em uma aplicação maior. Bash e Javascript são grandes exemplos de linguagens de script, porque eles dependem absolutamente em outros programas para sua funcionalidade.

Usando esta definição, um script é um código projetado para conduzir uma aplicação maior (suite). A Javascript pode chamar o Firefox para as janelas abertas ou manipular o DOM. executa um script Bash programas ou outros scripts e os conecta existentes juntamente com canos.


Você também perguntar por que não as linguagens de script, assim:

Existem mesmo algumas ferramentas de teste de unidade para linguagens de script? Isso parece uma ferramenta muito importante para aplicações "reais" que está faltando completamente. E raramente há quaisquer ligações biblioteca reais para linguagens de script.

Na maioria das vezes, os scripts poderia ser substituído por um real, linguagem luz como Python ou Ruby qualquer maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top