Saltar para o conteúdo

Linguagem de script

Origem: Wikipédia, a enciclopédia livre.
Nota:Para outros significados, vejaScript.
Exemplo de código emPython.

Linguagem descriptouscriptingé umalinguagem de programaçãoque suportascripts,programas escritos para umsistema de tempo de execuçãoespecial queautomatizaaexecuçãode tarefas que seriam executadas, uma de cada vez, por um operador humano.[1]Linguagens descriptsão frequentemente interpretadas (ao invés decompiladas). Primitivas são frequentemente as tarefas elementares ou chamadas deAPI,e a linguagem permite a elas serem combinadas dentro de programas complexos. Os ambientes que podem ser automatizados através descriptingincluemaplicações de software,páginas webdentro de umnavegador web,osshellsdesistemas operacionais(OS),sistemas embarcados,bem como numerosos games. Uma linguagem descriptpode ser vista como umalinguagem de domínio específicopara um ambiente particular (no caso doscripting,uma aplicação também conhecida como uma "linguagem de extensão" ).

Linguagens descriptsão algumas vezes referidas comolinguagens de programação de altíssimo nível,pois operam com um altíssimo nível deabstração,ou como linguagens de controle, particularmente para linguagens de controle de emprego emmainframes.

A expressão "linguagem descript"é também eventualmente empregada para se referir alinguagens de propósitos diversosdealto níveldinâmicas,tais comoPerl,[2]Tcl,ePython,[3]sendo o termo "script"frequentemente aplicado a pequenos programas (pouco mais de alguns milhares de linhas de código) em tais linguagens, ou em linguagens de domínio específico tais como as linguagens de processamento de textosedeAWK.Algumas destas linguagens foram originalmente desenvolvidas para uso dentro de um ambiente particular e, posteriormente, desenvolvidas em linguagens de propósitos diversos ou de domínio específico portáteis. Inversamente, muitas linguagens de propósitos diversos têm dialetos que podem ser usados como linguagens descript.Este artigo examina as linguagens de script no sentido estrito de linguagens para um ambiente específico.

O espectrum das linguagens descriptvaria de muito pequenas a altíssimaslinguagens de domínio específicoalinguagens de propósitos diversosusadas parascripting.Exemplos de norma de linguagens descriptpara ambientes específicos incluem:Bash,para oUnixousistemas operacionaistipo Unix;ECMAScript(JavaScript), para navegadores web; eVisual Basic for Applications,para aplicaçõesMicrosoft Office.Luaé uma linguagem projetada e amplamente usada como uma linguagem de extensão. Python é uma linguagem de propósitos diversos que é comumente usada como uma linguagem de extensão, enquanto ECMAScript é ainda primariamente uma linguagem descriptpara navegadores web, mas é também usada como uma linguagem de propósitos diversos. O dialetoEmacs LispdoLisp(para o editorEmacs) e o dialeto Visual Basic for Applications doVisual Basicsão exemplos de dialetos de linguagens descriptpara linguagens de propósitos diversos. Alguns sistemas de jogos de computador, particularmente omundo virtualSecond Lifee a franquiaTrainzde simuladores de ferrovias, são consideravalmente estendidos em funcionalidade pelas extensõesscript.Em outrosgames,comoThe Battle for Wesnoth,sãoscriptsescritos por outros usuários.

Características

[editar|editar código-fonte]

Geralmente, as linguagens descriptsão muito rápidas para aprender e escrever, seja como arquivos decódigo-fontepequenos ou interativamente, em umread–eval–print loop(REPL, linguagemshell).[4]Isso geralmente implicasintaxeesemânticarelativamente simples; em geral, umscript(código escrito na linguagem descript) é executado do início para o fim, com nenhumponto de entradaexplícito.

É incomum caracterizar oJava,por exemplo, como uma linguagem descriptpor causa de sua sintaxe tediosa e regras sobre quais classes existem em quais arquivos, e não é diretamente possível executar o Java interativamente, porque os arquivos-fonte podem apenas conter definições que devem ser invocadas externamente por umaaplicação hostouaplicação launcher.

publicclassHelloWorld{
publicvoidprintHelloWorld(){
System.out.println("Hello World");
}
}

Este pedaço de código entendido imprimir "Hello World" não faz nada, pois omain()não é declaradona classeHelloWorld.

Em contraste,Pythonpermite definição de algumas funções em um arquivo simples, ou evitar funções completamente e usar estilo deprogramação imperativa,ou ainda usar ela interativamente.

print ( "Hello World" )

Esta linha de código Python imprime "Hello World"; nenhuma afirmaçãodeclarativacomomain()é requisitada aqui.

Uma linguagem descripté frequentementeinterpretadado código-fonte oubytecode.[5]Em contraste, no ambiente desoftware,osscriptssão escritos numa forma delinguagem compiladae distribuída nocódigo de máquinaespecífico.

Linguagens de script devem ser projetadas para uso por usuários finais de um programa—desenvolvimento de usuário final—ou devem ser apenas para uso interno por desenvolvedores, dessa forma eles podem escrever porções do programa na linguagem descript.Linguagens descriptgeralmente usamabstração,uma forma deocultação de informação,para poupar os usuários dos detalhes dos tipos de variáveis internas, armazenamento de dados egerenciamento de memória.

Scriptssão frequentemente criados ou modificados pela pessoa que os executa,[6]mas eles são também frequentemente distribuídos, tais como quando porções largas de games são escritas em linguagem descript.

Os primeiros computadoresmainframes(nadécada de 1950) não eram interativos (não usavam processamento embatch). AJob Control Language(JCL), da IBM, é oarquétipodas linguagens usadas para controlar o processamento em batch.[7]

Os primeirosshellsinterativos foram desenvolvidos nadécada de 1960para possibilitar a operação remota dos primeiros sistemas detempo compartilhado,e estes usavamshell scripts,que controlavam os programas de computador rodando dentro de um programa de computador, oshell.ACalvin Mooers,em sualinguagem TRAC,é geralmente atribuída a invenção da substituição de comandos - capacidade de incorporar comandos emscriptsque, quando interpretados, inseriam um caracterestring.[8]Multicschama isso defunções ativas.[9]

Louis Pouzinescreveu um primeiro processador para comandosscripts,chamado RUNCOM paraCTSS,por volta de 1964.Stuart Madnick,noMIT,escreveu uma linguagemscriptpara oCP/CMSda IBM, em 1966. Ele originalmente chamou este processador de COMMAND (mais tarde renomeadoEXEC).[10]Multicsincluiu um ramo do CTSS RUNCOM, também chamado de RUNCOM.[11]EXECfoi afinal substituído peloEXEC 2eREXX.

Linguagens comoTcleLuaforam especificamente projetadas como linguagens de script para propósitos diversos que poderiam ser incorporadas em alguma aplicação. Outras linguagens comoVisual Basic for Applications(VBA) forneceram integração forte com as facilidades de automação de um sistema subjacente. Incorporando tais linguagens de script de propósitos diversos em vez de desenvolver uma nova linguagem para cada aplicação tinha também benefícios óbvios, aliviando o desenvolvedor da aplicação de precisar codificar um tradutor da linguagem do rabisco e permitir ao usuário aplicar habilidades aprendidas em outro lugar.

Algunssoftwaresincorporam diversas linguagens descript.Osnavegadores webmodernos quase sempre fornecem uma linguagem para extensões escritas para o próprio navegador, e diversas linguagens padrão incorporadas para controlar o navegador, incluindoJavaScript(um dialeto doECMAScript) ouXUL.

Tipos de linguagens descript

[editar|editar código-fonte]

Linguagens aglutinativas (glue languages)

[editar|editar código-fonte]

Scriptingé frequentemente contrastado comprogramação de sistemas,como nadicotomia de Ousterhoutou "programação no grande e programação no pequeno".

Nesta visão,scriptingé particularmenteglue code,conectandocomponentes de softwarea uma linguagem especializada para este propósito. É umalinguagem aglutinativa.Pipelineseshell scriptingsão exemplos arquetípicos de linguagens aglutinativas, e Perl foi inicialmente desenvolvida para completar esta mesma função. Odesenvolvimento webpode ser considerado um uso de linguagens aglutinativas, intermediando umbanco de dadose umservidor web.Mas se uma quantidade substancial de lógica é escrita emscript,ela é mais bem caracterizada simplesmente como outro componente desoftware,não aglutinativo.

Linguagens aglutinativas são especialmente úteis para escrever e manter:

  • comandos customizados para um comandoshell;
  • pequenos programas que são mais bem implementados em uma linguagem compilada;
  • programaswrapper(empacotadores) para executáveis, como um arquivobatchque move ou manipula arquivos e faz outras coisas com o sistema operacional, antes ou após rodar uma aplicação como umprocessador de texto,umaplanilha eletrônica,umbanco de dados,umassembler,umcompiladoretc.;
  • scriptsque devem mudar;
  • protótipos rápidosde uma solução eventualmente implementada em outra linguagem, frequentemente compilada.

Exemplos de linguagens aglutinativas:

Linguagensmacroexpostas aosistema operacionalou componentes de aplicação podem servir como linguagens aglutinativas. Estas incluemVisual Basic for Applications,WordBasic,LotusScript,CorelScript,Hummingbird Basic, QuickScript,SaxBasic,eWinWrap Basic.Outras ferramentas comoAWKpodem também ser consideradas como linguagens aglutinativas como pode alguma linguagem implementada por um motorWindows Script Host(VBScript, JScript e VBA por padrão no Windows e motores de terceiros incluindo implementações de Rexx, Perl, Tcl, Python, XSLT, Ruby, Delphi, &c). Uma maioria de aplicações podem acessar e usar componentes do sistema operacional viamodelos de objetosou suas próprias funções.

Outros dispostivos como calculadoras programáveis também devem possuir linguagens aglutinativas; os sistemas operacionais de PDAs, tais como Windows CE devem possuir ferramentas macro nativas disponíveis ou de terceiros junto com aplicações aglutinativas, em adição à implementações de linguagens aglutinativas comuns—incluindo Windows NT, MS-DOS e algunsshellsUnix, Rexx, PHP, e Perl. Dependendo da versão do SO, WSH e motores de script padrão (VBScript e JScript) são disponíveis.

Calculadoras programáveis podem ser programadas com linguagens aglutinativas de três formas. Por exemplo, aTexas InstrumentsTI-92,por padrão de fábrica pode ser programada com uma linguagem descriptde comando. A inclusão de scripting e a linguagem aglutinativaLuanas sériesTI-NSpirede calculadoras poderia ser visto como um sucessor disso. As linguagens de programação de alto nível primárias de muitas calculadoras gráficas (muito frequentes variantes de Basic, algumas vez derivações de Lisp, e mais raramente, derivações de C) em muitos casos podem aglutinar junto com as funções da calculadora—tais como gráficos, listas, matrizes etc. Implementações de terceiros de versão mais compreensiva de Basic que deve ser mais próxima a variantes listadas como linguagens aglutinativas neste artigo são disponíveis—e tentam implementar Perl, Rexx, ou váriosshellsde sistema operacional nas calculadoras gráficas TI e HP são também mencionadas.compiladores cruzadosde computador pessoal baseados em C para algumas máquinas de TI e HP usaram em conjunção com ferramentas que convertem entre C e Perl, Rexx, AWK, bem comoshell scriptspara Perl, VBScript para e do Perl tornam isso possível para escrever um programa em uma linguagem aglutinativa para uma implementação eventual (como um programa compilado) na calculadora.

Job control languageseshells

[editar|editar código-fonte]
Ver artigo principal:Shell script

Uma principal classe de linguagens descriptcresceu fora da automação dejob control,que relata ao inicia e controla o comportamento dos programas do sistema. (Neste sentido, alguém pode pensar nosshellscomo sendo descendentes do JCL da IBM, ouJob Control Language,que foi usado exatamente para este propósito.) Muitos interpretadores destas linguagens duplicam comointerpretadores de linha de comandostais como oshell do Unixou oCOMMAND.COMdo MS-DOS. Outros, tais como oAppleScriptoferecem o uso de comandos semelhantes ao inglês para construir scripts.

Com o advento das interfaces gráficas do usuário, um tipo especializado de linguagem descriptsurgiu para controlar um computador. Estas linguagens interagem com as mesmas janelas gráficas, menus, botões, e dessa forma um usuário humano poderia. Elas podem fazer isso simulando as ações de um usuário. Estas linguagens são geralmente usadas para automatizar as ações do usuário. Tais linguagens são também chamadas de "macros",quando o controle é por meio de botões pressionados ou cliques demousesimulados, ou tocando/pressionando uma tela ativada por toque.

Essas linguagens poderiam, em princípio, ser usadas para controlar alguma aplicaçãoGUI;mas, na prática, seu uso é limitado porque requer suporte da aplicação e dosistema operacional.Há poucas exceções para esta limitação. Algumas linguagens descriptGUI são baseadas no reconhecimento de objetos gráficos dospixelsde sua tela de exibição e, nesse caso, não dependem de suporte do sistema operacional ou aplicação.

Linguagens de aplicações específicas

[editar|editar código-fonte]

Muitos programas de grande aplicação incluem uma linguagem descriptidiomática adaptada às necessidades do usuário da aplicação. Da mesma forma, muitos sistemas dejogos de computadorusam uma linguagem descriptcustomizada para expressar ações programadas depersonagens não jogáveise o ambiente do jogo. Linguagens dessa e tipo são projetadas para uma simples aplicação; e, embora elas devam assemelhar-se superficialmente a uma linguagem específica de propósitos diversos (por exemplo, QuakeC, modelada do C), possuem destaques customizados que as diferenciam.Emacs Lisp,enquanto dialeto completamente formado e competente doLisp,contém muitos destaques especiais que a tornam muito útil para ampliar as funções de edição de Emacs. Uma linguagem descriptde aplicação específica pode ser vista como umalinguagem de domínio específicoespecializada em uma simples aplicação.

Linguagens de extensão/incorporadas

[editar|editar código-fonte]

Um número de linguagens foi projetado com o propósito de substituir linguagens descriptpara aplicações específicas, sendo incorporadas emprogramas de aplicação.O programador de aplicação (trabalhando em C ou outra linguagem de sistema) inclui "ganchos" onde a linguagem descriptpode controlar a aplicação. Essas linguagens devem ser tecnicamente equivalentes a uma linguagem de extensão de aplicação específica mas, quando uma aplicação incorpora uma linguagem "comum", o usuário obtém a vantagem de poder transferir capacidades de aplicação para aplicação. Uma alternativa mais genérica é simplesmente fornecer uma biblioteca (frequentemente uma biblioteca C) que uma linguagem de propósitos diversos possa utilizar para controlar a aplicação, sem modificações para domínio específico.

JavaScriptcomeçou e ainda é uma linguagem principalmente parascriptingdentro donavegadores web;contudo, a padronização da linguagem comoECMAScripttornou-a popular como linguagem incorporada de propósitos diversos. Em particular, a implementação daMozillaSpiderMonkeyé incorporada em diversos ambientes, tais como oYahoo! Widget Engine.Outras aplicações que incorporam implementações ECMAScript incluem os produtosAdobe,como oAdobe Flash(ActionScript) eAdobe Acrobat(parascriptingde arquivosPDF).

Tclfoi criada como uma linguagem de extensão mas veio a ser usada mais frequentemente como uma linguagem de propósitos diversos em funções semelhantes aoPython,PerleRuby.Por outro lado,Rexxfoi originalmente criada como umajob control language,mas é amplamente usada como linguagem de extensão e como linguagem de propósitos diversos. Perl é uma linguagem de propósitos diversos, mas tinha o dialeto Oraperl (1990), consistindo de um Perl 4 binário com umaOracle Call Interfacecompilada nele. O dialeto foi, entretanto, substituído por uma biblioteca (Perl Module),DBD::Oracle.[12][13]

Outras aplicações complexas e orientadas a tarefas devem unir e expor uma linguagem de programação incorporada para permitir a seus usuários mais controle e dar a eles mais funcionalidade que pode ser disponível através de uma interface de usuário, não importa quão sofisticada seja. Por exemplo, ferramentas de autoria 3DAutodesk Mayaincorporaram a linguagem descriptMEL;Blenderusa Python para preencher essa função.

Alguns tipos de aplicações que precisam de rápida adição de recursos ou ciclos de ajustar e executar (por exemplo,motores de jogos) também usam uma linguagem incorporada. Durante o desenvolvimento, isso permite prototipar recursos rapidamente e fazer ajustes mais livremente, sem a necessidade de o usuário ter intimidade com o conhecimento do trabalho interno da aplicação ou reconstruí-la após cada ajuste (o que pode consumir um tempo considerável). As linguagens descriptusadas para esse propósito variam das mais comuns e mais famosas, comoLuae Python, até as menos conhecidas, comoAngelScripteSquirrel.

Ché outra opção descriptingcompatível com C para a indústria incorporar em programas de aplicação C/C++.

Referências

  1. Eva, Oceguera.«Owner».www.evaoceguera.com.Eva Oceguera. Arquivado dooriginalem 14 de março de 2018
  2. Sheppard, Doug (16 de outubro de 2000).«Beginner's Introduction to Perl».dev.perl.org.Consultado em 8 de janeiro de 2011
  3. «Programming is Hard, Let's Go Scripting…»Larry Wall,December 6, 2007
  4. Hey, Tony; Pápay, Gyuri (2014).The Computing Universe: A Journey through a Revolution.[S.l.]: Cambridge University Press. p. 76.ISBN978-1-31612322-5.A maior característica das linguagens descriptmodernas é a sua interatividade, algumas vezes referida como um ambiente de programaçãoREPL.[…]
    As características da facilidade de uso e execução imediata com um ambiente REPL são algumas vezes tomadas como a definição de uma linguagem descript.
  5. Brown, Vicki.«Scripting Languages».Consultado em 22 de julho de 2009
  6. Loui, Ronald (2008).«In praise of scripting».IEEE Computer.Consultado em 16 de janeiro de 2017.Arquivado dooriginalem 23 de setembro de 2015
  7. IBM Corporation (1967).IBM System/360 Operating System Job Control Language (C28-6529-4)(PDF).[S.l.: s.n.]
  8. Mooers, Calvin.«TRAC, A Procedure-Describing Language for the Reactive Typewriter».Consultado em 9 de março de 2012.Cópia arquivada em 25 de abril de 2001
  9. Van Vleck(ed.), Thomas.«Multics Glossary -A- (active function)».Consultado em 9 de março de 2012
  10. Varian, Melinda.«VM AND THE VM COMMUNITY: Past, Present, and Future»(PDF).Consultado em 9 de março de 2012
  11. Van Vleck, Thomas(ed.).«Multics Glossary -R- (RUNCOM)».Consultado em 9 de março de 2012
  12. «Oraperl»CPAN]
  13. «Perl»Underground Oracle FAQ
  14. Van Rossum, Guido (6–8 de Janeiro de 1998).«Glue it all together».Glue It All Together With Python.python.org

Leitura recomendada

[editar|editar código-fonte]
  • Barron, David William (2000).The World of Scripting Languages.[S.l.: s.n.]ISBN0-471-99886-9

Ligações externas

[editar|editar código-fonte]