Opa(프로그래밍 언어)
Opa (programming language)![]() | |
패러다임 | 멀티탭: 기능, 필수 |
---|---|
개발자 | ML스테이트 |
처음 등장한 | 2011 |
안정된 릴리스 | ; 전 ( |
타이핑 분야 | 정적, 강력, 추론 |
OS | Linux, OS X, Windows |
면허증. | MIT 라이선스, AGPLv3 |
웹 사이트 | opalang |
영향을 받다 | |
OCaml, Erlang, JavaScript |
Opa는 확장 가능한 웹 애플리케이션을 개발하기 위한 오픈 소스 프로그래밍 언어입니다.
클라이언트측과 서버측의 양쪽의 스크립트에 사용할 수 있습니다.이 스크립트는 완전한 프로그램을 Opa로 작성한 후 서버의 Node.js와 클라이언트의 JavaScript로 컴파일러가 [3][4]둘 사이의 모든 통신을 자동화합니다.Opa는 강력한 정적 타이핑을 구현하여 SQL 주입 및 사이트 간 스크립팅 [5]공격과 같은 보안 문제로부터 보호하는 데 유용합니다.
이 언어는 2010년 [6]OWASP 컨퍼런스에서 공식적으로 발표되었으며 소스 코드는 GNU Affero General Public License에 따라 2011년 6월에 GitHub에서[7] 공개되었습니다.나중에 라이선스는 프레임워크 부분(라이브러리)의 경우 MIT 라이선스로 변경되었으며 컴파일러의 경우 AGPL로 변경되어 Opa로 작성된 어플리케이션은 라이선스, 소유권 또는 오픈 소스의 경우 모두 릴리스할 수 있게 되었습니다.
설계 및 기능
Opa는 웹 서버, 데이터베이스 및 분산 실행 [8]엔진으로 구성됩니다.Opa로 작성된 코드는 서버 측에서 Node.js를 사용하여 JavaScript로 컴파일되고 클라이언트 [9]측에서 크로스 브라우저 호환성을 위해 jQuery를 사용하여 JavaScript로 컴파일됩니다.특정 리치 인터넷애플리케이션(RIA) 플랫폼과 비교하여 이 접근방식의 장점은 사용자가 브라우저에 [10]플러그인을 설치할 필요가 없다는 것입니다.Opa는 웹 프레임워크와 동기를 공유하지만 다른 접근법을 [11]취합니다.Opa의 설계자는 이를 통해 SQL 주입이나 XSS([12]크로스 사이트 스크립팅) 공격과 같은 많은 보안 문제를 방지할 수 있다고 주장합니다.
핵심 언어는 기능하며 유형 추론을 가진 정적 유형 시스템을 가지고 있습니다.Opa는 Erlang 프로세스와 마찬가지로 필수 상태를 캡슐화하고 메시지 전달을 사용하여 통신하는 세션도 제공합니다.Opa는 구문 분석식 [14]그래머를 기반으로 HTML[13] 및 파서 등 웹 개발에서 공통적인 많은 구조 또는 함수를 제공합니다.Opa는 언어와 웹 관련 개념 간의 이러한 유착 때문에 웹이 아닌 애플리케이션(데스크탑 애플리케이션 [15]등)을 위한 것이 아닙니다.
2012년 2월 0.9.0 릴리즈에서는 객체-관계 [16][17][18]매핑과 유사한 비관계형 문서 지향 데이터베이스 MongoDB용 데이터베이스 매핑 기술이 도입되었습니다.2013년 2월 1.1.0 릴리즈에서는 Postgre 지원도 추가되었습니다.SQL을 통해 여러 SQL 데이터베이스를 지원할 수 있습니다.
예
안녕 세계
기존의 Hello world 프로그램은 "Hello, web!"을 콘텐츠로 하는 정적 페이지를 제공하는 웹 서버를 생성하며 Opa에서는 다음과 [19]같이 기술할 수 있습니다.
Server.start(Server.http, {title: "Hello" , page: function() {<h1> 안녕하세요, Web!</h1> } } )
다음 기능을 사용하여 독립 실행형 실행 파일 JS 파일로 컴파일할 수 있습니다.
$opa hello_web.opa
결과 실행 파일 JS 파일을 실행하면 웹 응용 프로그램이 실행됩니다.
$./hello_web.web.s
「 」를 참조해 주세요.
- Ur - 웹 개발을 위한 기능적 프로그래밍 언어
- Dart - 웹 앱용 Javascript 대체 프로그램
- Haxe - 웹 애플리케이션용 유사한 프로그래밍 언어
- CoffeeScript - 웹 앱용 Javascript로 변환된 프로그래밍 언어
- 다크(Dark)는 서버리스 서비스 개발과 도입을 통합하는 프로그래밍 언어입니다.
레퍼런스
- ^ "Release 1.1.1 · MLstate/opalang". GitHub. Retrieved 2021-01-29.
- ^ "Some great news on Opa". Retrieved 2021-01-29.
- ^ Adam Koprowski (24 February 2012). "Node.js vs. Opa: Web Framework Showdown". developer.com.
- ^ Opa는 실제로 다양한 서버 측 백엔드를 지원하며, Nodej가 가장 인기 있는 백엔드입니다.
- ^ Robertson, William; Giovanni, Vigna (2009). "Static Enforcement of Web Application Integrity Through Strong Typing". SSYM'09 Proceedings of the 18th Conference on USENIX Security Symposium.[영구 데드링크]
- ^ "OPA: Language Support for a Sane, Safe and Secure Web, at OWASP 2010". OWASP. June 2010.
- ^ "GitHub repository".
- ^ "Opa – The Scalable Open Source Cloud Language". WebAppers. 22 July 2011.
- ^ "Interview: François-Régis Sinot on Opa, a Web Development Platform". InfoQ. 7 September 2011.
- ^ Neil McAllister (8 September 2011). "Introducing Opa, a Web dev language to rule them all". InfoWorld.
- ^ "InfoWorld review: Tools for rapid Web development". InfoWorld. 12 May 2010.
- ^ "Auch Opa ist für Cloud-Anwendungen". Heise Online. 29 July 2011.
- ^ "Opa - a unified approach to web programming". i-Programmer. 28 August 2011.
- ^ Koprowski, Binsztok (2011). "TRX: A Formally Verified Parser Interpreter". Logical Methods in Computer Science.
- ^ "Opa, un nouveau langage pour le développement d'applications Web" (in French). LinuxFr. 22 June 2011.
- ^ "Hello, database". Opa Documentation. Archived from the original on 2014-01-12. Retrieved 2012-02-22.
- ^ "Low-level MongoDB support". Opa Documentation. Archived from the original on 2014-01-12. Retrieved 2012-02-22.
- ^ "Programming Opa: Web development, reimagined". Computerworld. 1 February 2012.
- ^ Alastair Aitken (26 July 2011). "Opa, the cloud language – a test drive". Morgan Hill. Archived from the original on 25 September 2011. Retrieved 6 September 2011.
참고 문헌
- Opa: Up and Running, 2013, O'Reilly Media ISBN 978-1449328856