시드7

Seed7
시드7
패러다임멀티패키지: 확장 가능, 객체 지향, 명령형, 구조화, 범용, 반사형
설계자토머스 머티스
처음 등장한2005년, 17년 전(2005년)
안정된 릴리스
2022-03-12 / 149일[1]
타이핑 분야정적, 강력, 안전, 주격, 매니페스트
OS크로스 플랫폼: BSD, Linux, OS X, Unix, Windows
면허증.GPL, LGPL(런타임 라이브러리용)
파일 이름 확장자.sd7, .s7i
웹 사이트seed7.sourceforge.그물
주요 구현
오픈 소스 레퍼런스 실장
영향을 받다
Pascal, Modula-2, Ada, ALGOL 68, C, C++, Java

Seed7Thomas Mertes가 설계한 확장 가능한 범용 프로그래밍 언어입니다.파스칼과 에이다와 구문적으로 유사하다.다른 많은 기능과 함께 확장 [2]메커니즘을 제공합니다.Seed7은 새로운 구문 요소와 그 의미를 언어에 도입하는 것을 지원하며, 새로운 언어 구조를 Seed7에서 정의하고 [3]기술할 수 있습니다.예를 들어 프로그래머는 새로운 문장과 사용자 정의 연산자 심볼의 구문과 의미론을 도입할 수 있습니다.Seed7의 구현은 구문 및 의미론이 하드 코드화된 언어의 구현과 크게 다릅니다.

특징들

Seed7은 필수, 객체 지향(OO) 및 일반 프로그래밍 패러다임을 지원합니다.또한 이름별 콜, 다중 디스패치, 함수 오버로드, 연산자 오버로드, 예외 처리 및 임의 정밀도 연산 등의 기능도 지원합니다.

주요 기능은 다음과 같습니다.

몇 가지 프로그래밍 언어 개념이 일반화되어 있습니다.

  • 유형 선언(유형에 이름을 할당함) 및 함수 정의는 상수 정의 형식을 취합니다.
  • 컴파일 시간 식은 사용자 정의 함수를 실행할 수 있습니다.
  • 오버로드 및 객체 지향(복수의 디스패치 포함)은 일반적인 개념으로 간주됩니다.컴파일 시간과 실행 시간이 각각 다를 입니다.
  • 유형명과 유형설명을 파라미터 및 함수결과로 사용할 수 있습니다.
  • 컴파일실행되는 함수는 객체를 정의하는 데 사용할 수 있습니다.
  • 템플릿은 유형 파라미터를 사용하여 컴파일 시간 함수로 작성됩니다.
  • 어레이, 해시 맵 및 구조는 하드 코드 기능이 아닙니다.대신 라이브러리에서 추상 데이터 유형으로 정의됩니다.
  • 파서와 인터프리터는 런타임 라이브러리의 일부입니다.
  • UTF-32 Unicode 지원이것에 의해, UTF-8UTF-16 와 같은 가변 길이의 부호화의 문제가 회피됩니다.

Seed7 프로젝트에는 인터프리터컴파일러가 모두 포함되어 있습니다.인터프리터는 매우 빠르게 프로그램을 시작하여 빠른 프로그램 개발을 지원합니다.컴파일러는 런타임라이브러리로부터의 파서와 리플렉션인터페이스를 사용하여 C 프로그램을 생성하고, C 프로그램은 머신코드로 컴파일 됩니다.컴파일된 Seed7 프로그램은 C [4]프로그램과 동등한 성능을 가질 수 있습니다.

라이브러리

Seed7은 컨테이너, 숫자 함수, 어휘 분석, 파일 조작, 네트워킹(소켓, Transport Layer Security(TLS/SSL), Hypertext Transfer Protocol(HTTP), HTTP Secure(HTTPS), File Transfer Protocol(FTP), Simple Mail Transfer Protocol(SMTP), 벡터 그래픽스 등을 포함한 많은 라이브러리를 갖추고 있습니다.e독립 API, Common Gateway Interface(CGI; 공통 게이트웨이 인터페이스) 지원, 데이터 압축, 아카이브 파일(tar, zip, cpio, ar, rpm), 문자 인코딩, 시간과 날짜 처리, XML 처리, 메시지 다이제스트 등.[5]이러한 라이브러리를 통해 휴대용 운영 체제 기능과 서드파티 라이브러리(항상 존재하지 않을 수 있음)를 직접 사용할 필요가 줄어듭니다.Seed7 라이브러리에는 하드웨어, 운영체제 및 서드파티 라이브러리(그래픽 및 데이터베이스 라이브러리 등)의 추상화 레이어가 포함되어 있습니다.즉, Seed7 프로그램을 다른 프로세서 또는 운영 체제 간에 이동하기 위해 변경할 필요가 없습니다.

TLS 라이브러리

Seed7에는 트랜스포트 레이어 보안[6]독자적인 실장이 있습니다.라이브러리에는 AES와 타원곡선암호화포함되어 있습니다.

데이터베이스 추상화 API

Seed7은 데이터베이스에 의존하지 않는 [7]API를 라이브러리에 제공합니다.MySQL, MariaDB, SQLite, Postgre접속할 수 있는 프로그램SQL, Oracle, ODBC(Open Database Connectivity), Firebird, InterBase, IBM DB2SQL Server 데이터베이스.데이터베이스 준비 문장과는 무관하게 바인드 변수를 사용할 수 있으며 문을 실행할 수 있으며 결과 세트를 가져올 수 있습니다.

역사

Seed7은 Thomas Mertes의 [8][9]학위 논문과 박사 학위 논문으로 기술된 확장 가능한 프로그래밍 언어인 MASTER를 기반으로 합니다.사용자 정의 스테이트먼트나 연산자 등 MASTER의 오리지널 아이디어 대부분은 Seed7에서 찾을 수 있습니다.MASTER를 Pascal로 변환하는 프리 컴파일러가 원래 프로젝트에서 제안되었지만 구현되지는 않았습니다.1989년에 HAL이라는 이름의 MASTER 통역사의 개발이 시작되었습니다.2005년에 마스터 및 HAL 프로젝트는 Seed7 프로젝트 이름으로 오픈 소스로 출시되었습니다.그 이후로 새로운 버전이 2, 3주마다 출시되었습니다.2021-04-25 버전 현재 Seed7 프로젝트에는 500,000개 이상의 코드 소스 행과 수백 페이지의 문서가 포함되어 있습니다.

확장 메커니즘

확장은 구문 정의, 새로운 구문 형식을 위한 템플릿을 제공하는 구문 정의와 [2]의미론을 정의하기 위해 사용되는 표준 Seed7 함수를 포함한다.

구문 정의

구문 정의에서는 Seed7 Structured Syntax Description(S7SSD)을 사용합니다.S7SSD 문장은 다음과 같습니다.

$ 구문 expr : . ( ) + . ( )는 -> 7 입니다.

의 구문을 지정합니다.+ 오퍼레이터.오른쪽 화살표->에, 어소시에이티비티: 오퍼랜드의 왼쪽에서 오른쪽으로 바인딩을 나타냅니다.와 함께7우선 순위+연산자가 정의되어 있습니다.구문 패턴.(). + .()는 도트로 구분되어 있습니다..). 도트가 없으면 패턴은() + (). 기호()는 비단말기호이며,+는 터미널 [10]기호입니다.S7SSD는 서로 다른 비단말기 기호를 구분하지 않습니다.대신 단말기가 아닌 기호는 1개뿐입니다.().

의미 확장

의 정의+복소수 연산자는 함수 정의일 뿐입니다.

const func complex: (복소수: summand1) + (복소수: summand2)는 func 결과 var complex: sum is complex.value; sum.re : = summand1.re + summand2.re; sum.im : = summand1.im + summand2.im; end func;

레퍼런스

  1. ^ Mertes, Thomas (12 March 2022). "New Seed7 Release 2022-03-12". Retrieved 12 March 2022 – via SourceForge.
  2. ^ a b Daniel Zingaro, "Modern Extensible Languages", SQRL Report 47 McMaster University (2007년 10월), 16페이지 (대체 링크)
  3. ^ Abrial, Jean-Raymond and Glésser, Uwe, "소프트웨어 구축분석을 위한 엄격한 방법", ISBN 978-3-642-11446-5, Springer, 2010, 166페이지.
  4. ^ Stadfeld, Paul (1 April 2010). "The Quest for the Ultimate Cycle (includes a performance comparison between Python, Seed7 and C)". Archived from the original on 25 October 2013. Retrieved 19 August 2019.
  5. ^ Seed7 라이브러리
  6. ^ Seed7로 작성된 TLS(TLS(Transport Layer Security)
  7. ^ 데이터베이스 추상화 API
  8. ^ Mertes, Thomas, "Entwurf einer erweiterbaren höheren Programmiersprache", 학위 논문 Vienna 공과대학(1984)(개요)
  9. ^ Mertes, Thomas, "Definition einer erweiterbaren höheren Programmiersprache", 박사학위 논문 Vienna 공과대학(1986).(개요)
  10. ^ David Gudeman (2015년 3월 26일), "The Seed7 Programming Language" (Seed7에서는 다음과 같은 구문을 지정할 수 있습니다)

외부 링크