고수(프로그래밍 언어)
Gosu (programming language)개발자 | 가이드와이어 및 오픈 소스 기여자 |
---|---|
안정적 해제 | 1.14.23 / 2021년 8월 10일; 전 |
타이핑 규율 | 정태의 |
플랫폼 | Java Virtual Machine에서 정적 및 동적으로 바이트 코드에 컴파일 |
OS | 모든 지원 JVM |
면허증 | 아파치 라이선스 2.0 |
파일 이름 확장명 | .gs, .gsp, .gst, .gsx |
웹사이트 | 고수입.github.이오 |
영향을 받은 | |
자바, C# | |
영향받은 | |
코틀린 |
고수는 자바 가상 머신에서 실행되는 정전기식 범용 프로그래밍 언어다.그것의 영향으로는 자바, C#, ECMAScript가 있다.고수 개발은 2002년 가이드와이어 소프트웨어 내부에서 시작됐으며, 2010년 아파치 2 라이선스 하에 첫 커뮤니티 릴리즈가 이뤄졌다.[1]
고수(Gosu)는 스크립팅을 위한 자유형 프로그램 유형(.gsp 파일)과 정적으로 검증된 템플릿 파일(.gst 파일)을 가진 스크립팅 언어 역할을 할 수 있다.고수(高水)는 사전 컴필레이션 없이 이들 및 다른 모든 유형을 선택적으로 소스에서 직접 실행할 수 있어 다른 정적 언어와도 구별된다.
역사
고수는 2002년 Guidewire Software에서 GScript라는 스크립팅 언어로 시작했다.[2][3]근본적인 효용성과 자바와의 호환성을 유지하면서 유용한 개선을 시도하는 자바 변종이라고 설명되어 왔다.Guidewire의 애플리케이션에서 비즈니스 로직을 구성하는 데 사용되었고, 단순한 규칙 정의 언어에 가까웠다.그것의 원래 화신에서 그것은 ECMAScript 가이드라인을 따랐다.가이드와이어는 이후 8년간 스크립팅 언어를 강화했으며, 2010년 11월 고수 0.7 베타 버전을 커뮤니티에 출시했다.0.8 베타는 2010년 12월에 발매되었고, 0.8.6 베타는 2011년 중반 추가 타입 로더와 함께 발매되어 고수는 XML 스키마 정의 파일과 XML 문서를 고유 고수 타입으로 로딩할 수 있게 되었다.최신 버전은 새로운 IntelliJ IDEA 편집기 플러그인과 함께 2016년 1월에 출시된 1.10이다.
Guidewire는 InsuranceSuite 애플리케이션 내에서 고수(Gosu)를 지속적으로 지원하고 사용하고 있다.가이드와이어는 이번에 고수 프로그래밍 언어구축 신규 개발을 동결하기로 했다.GuideWire는 Java를 사용하여 액세스할 수 있는 RESTful API와 Integration Frameworks를 통해 InsuranceSuite를 지속적으로 발전시키고 있다.
철학
고수 언어의 창조자 겸 개발 리더인 스콧 매키니는 언어의 디자인을 이끄는 우선 원리로 가독성과 발견성에서 발견되는 실용주의를 강조한다.[4]예를 들어, 고수의 풍부한 정적 타입 시스템은 정적 프로그램 분석, 리치 파서 피드백, 코드 완성, 결정론적 리팩터링, 사용 분석, 항법 등을 통해 최고의 품종 툴링을 위한 필수 요소다.
구문 및 의미론
고수씨는 다른 언어의 조합과 비슷한 구문을 따른다.예를 들어, 선언문은 이름부터 문법까지 파스칼의 행을 따라 더 많이 따른다.고수반은 기능, 분야, 속성, 내부계급을 회원으로 둘 수 있다.위임을 통한 명목상속 및 구성은 유형 시스템과 바둑 프로그래밍 언어와 유사한 구조 타이핑이 내장되어 있다.
Gosu는 다음과 같은 몇 가지 파일 형식을 지원한다.
- 클래스(.gs 파일)
- 프로그램(.gsp 파일)
- 향상(*.gsx 파일)
- 템플릿(*.gst 파일)
고수는 표준 클래스 형식 외에도 에넘, 인터페이스, 구조, 주석을 지원한다.
프로그램 파일은 고수(高水)를 스크립팅 언어로 용이하게 한다.예를 들어, 고수의 헬로 월드!는 간단한 한 줄 프로그램이다.
인쇄하다("안녕, 월드!")
고수 클래스는 또한 실행 가능한 자바:
계급 메인 { 정태의 기능을 하다 본래의(아그: 끈[]) { 인쇄하다("안녕, 월드!") } }
데이터 유형
고수만의 독특한 특징은 언어를 쉽게 확장해 대부분의 다른 언어에서 런타임에만 확인되는 컴파일 타임 체크와 IDE 인식 정보를 제공할 수 있는 오픈 타입 시스템이다.향상된 기능을 통해 문자열, 목록 등과 같은 기본 제공 Java 유형을 포함한 다른 유형에 추가 기능 및 속성을 추가할 수 있다.이 예는 인쇄() 함수를 java.lang에 추가하는 것을 보여준다.끈.
강화 MyStringEnhancement : 끈. { 기능을 하다 인쇄하다() { 인쇄하다(이) } }
이제 String에게 직접 인쇄하도록 지시할 수 있다.
"에코".인쇄하다()
폐쇄성과 향상된 기능의 조합은 컬렉션으로 코딩하는 강력한 방법을 제공한다.고수는 자바하천의 오버헤드가 불필요하다.
시합을 하다 리스트를 작성하다 = {1, 2, 3} 시합을 하다 결과 = 리스트를 작성하다.어디에(\ 엘렘 -> 엘렘 >= 2) 인쇄하다(결과)
사용하다
이 범용 프로그래밍 언어는 주로 Guidewire Software의 상용 제품에서 사용된다.
참조
추가 읽기
- Gross, Carson (2011-07-18). "Language Features As A Library: Using Gosu's Open Type System With External DSLs" (PDF). JVM Language Summit 2011. Oracle. 비디오