Opa (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
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; 4171 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 é 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, extramamente poderosa, concorrente e distribuída. Além de segura.

A linguagem foi apresentada oficialmente na conferência OWASP em 2013, [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

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 imperativo, 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

Hello world

O tradicional Hello world program, produz um web server com a página estática "Hello, web!" é 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

Referências

  1. «Programming Opa: Web development, reimagined». Computerworld. 1 February 2012  Verifique data em: |data= (ajuda)
  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. June 2010  Verifique data em: |data= (ajuda)
  5. «GitHub repository» 
  6. «Interview: François-Régis Sinot on Opa, a Web Development Platform». InfoQ. 7 September 2011  Verifique data em: |data= (ajuda)
  7. «InfoWorld review: Tools for rapid Web development». InfoWorld. 12 May 2010  Verifique data em: |data= (ajuda)
  8. Neil McAllister (8 September 2011). «Introducing Opa, a Web dev language to rule them all». InfoWorld  Verifique data em: |data= (ajuda)
  9. «Auch Opa ist für Cloud-Anwendungen». Heise Online. 29 July 2011  Verifique data em: |data= (ajuda)
  10. Adam Koprowski (24 February 2012). «Node.js vs. Opa: Web Framework Showdown». developer.com  Verifique data em: |data= (ajuda)
  11. «Opa - a unified approach to web programming». i-Programmer. 28 August 2011  Verifique data em: |data= (ajuda)
  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 June 2011  Verifique data em: |data= (ajuda)
  14. Alastair Aitken (26 July 2011). «Opa, the cloud language – a test drive». Morgan Hill  Verifique data em: |data= (ajuda)

Ligações externas