Opa (linguagem de programação)

Opa
Paradigma Linguagem de programação multiparadigma: programação funcional, programação imperativa
Surgido em 2011
Última versão 1.1.0 (estável) (10 dezembro 2012; 4222 dias)
Criado por MLstate
Estilo de tipagem tipagem estática, tipagem forte, tipagem inferida
Influenciada por OCaml, Erlang, JavaScript
Licença MIT License, AGPLv3
Página oficial opalang.org

Opa (conhecida como programação curvada) é um novo framework open source de programação para o desenvolvimento de aplicações web escaláveis.[1] Ele é composto por um servidor web, uma base de dados NoSQL - MongoDB.[2][3] e uma linguagem de programação. Todos os componentes são integrados para facilitar o processo. Opa é concisa, simples, extremamente poderosa, concorrente e distribuída. Além de segura.

A linguagem foi apresentada oficialmente na conferência OWASP em 2013 pelo seu autor W.S. Burns,[4] e o código fonte foi liberado no GitHub[5] em junho de 2011 sobre a licença GNU Affero General Public License. Mais tarde a licença mudou para a licença MIT para a parte do framework (biblioteca) e Affero General Public License para o compilador, assim as aplicações escritas em Opa podem ser liberadas em qualquer licença, proprietária ou open source.

Design e Características[editar | editar código-fonte]

Opa pode ser utilizada tanto para programar no cliente (client-side scripting), quanto no servidor (server-side scripting). O Código escrito em Opa no servidor é compilado para Javascript utilizando Node.js e para Javascript utilizando jQuery no clientes (para compatibilidade entre browsers diversos).[6] O compilador consegue automatizar totalmente a comunicação entre o cliente e o servidor.

Opa compartilha objetivos com outros web frameworks, mas tem uma abordagem diferente.[7] Em comparação com outras plataformas Rich Internet Application (Ria) a vantagem do Opa é que o usuário não necessita de instalar plugins no browser.[8] Os designers de Opa afirmam que o framework evita muitos riscos de segurança, tais como: SQL injection ou XSS attacks.[9]

Opa é uma linguagem funcional e tem um sistema de tipo estático forte com inferência. Isso auxilia na prevenção contra problemas de segurança e auxilia na depuração de erros.[10] A linguagem também possui: sessões que encapsulam partes do código que possuem uma estilo programação imperativa, e comunicação usando passagem de mensagens - similar a um processo Erlang. Opa possui muitas estruturas ou funções que são comuns no desenvolvimento web, tais como objetos de primeira classe, instâncias HTML[11] e parser.[12] Por causa da proximidade da linguagem com conceitos web, Opa não é indicada para aplicações não-web (como por exemplo aplicações desktop.[13]

Exemplos[editar | editar código-fonte]

Hello world[editar | editar código-fonte]

O tradicional Programa Olá Mundo, produz um [servidor web]] com a página estática "Hello, web!", seguida por um som de assobio é escrito assim:[14]

Server.start(Server.http,   { title: "Hello"   , page: function() { =Hello, web!<h1/> }   } ) 

O código é compilado em um executável JS com o comando:

opa hello_web.opa 

A aplicação web é iniciada executando o arquivo JS:

./hello_web.js 

Ver também[editar | editar código-fonte]

Referências

  1. «Programming Opa: Web development, reimagined». Computerworld. 1 de fevereiro de 2012 
  2. «Hello Database». Opa Documentation 
  3. «Low-level MongoDB suporte». Opa Documentation 
  4. «OPA: Language Support for a Sane, Safe and Secure Web, at OWASP 2010». OWASP. Junho de 2010 
  5. «GitHub repository» 
  6. «Interview: François-Régis Sinot on Opa, a Web Development Platform». InfoQ. 7 de setembro de 2011 
  7. «InfoWorld review: Tools for rapid Web development». InfoWorld. 12 de maio de 2010 
  8. Neil McAllister (8 de setembro de 2011). «Introducing Opa, a Web dev language to rule them all». InfoWorld 
  9. «Auch Opa ist für Cloud-Anwendungen». Heise Online. 29 de julho de 2011 
  10. Adam Koprowski (24 de fevereiro de 2012). «Node.js vs. Opa: Web Framework Showdown». developer.com 
  11. «Opa - a unified approach to web programming». i-Programmer. 28 de agosto de 2011 
  12. Koprowski, Binsztok (2011). «TRX: A Formally Verified Parser Interpreter». Logical Methods in Computer Science. doi:10.2168 Verifique |doi= (ajuda) 
  13. «Opa, un nouveau langage pour le développement d'applications Web» (em French). LinuxFr. 22 de junho de 2011 
  14. Alastair Aitken (26 de julho de 2011). «Opa, the cloud language – a test drive». Morgan Hill. Consultado em 5 de abril de 2013. Arquivado do original em 25 de setembro de 2011 

Ligações externas[editar | editar código-fonte]