시트린(프로그래밍 언어)

Citrine (programming language)
시트린
Citrine programming language logo.png
패러다임객체 지향, 프로토타입 기반
설계자가보르 드 무이 아브시 질라니
개발자가보르 드 무이 아브시 질라니
첫 등장2014
안정적 해제
0.9.2 / 2020; 2년 전 (1998년)
타이핑 규율동적인
OS크로스 플랫폼(멀티 플랫폼)
면허증BSD
파일 이름 확장명ctr
웹사이트citrine-lang.org
주요 구현
C
영향을 받은
스몰토크 셀프

씨트린은 크로스 플랫폼(멀티 플랫폼) 운영체제용 범용 프로그래밍 언어다. 가독성과 유지보수에 초점을 맞춘다. 가독성은 통사적이고 개념적인 미니멀리즘에 의해 달성된다. 이 언어는 스몰토크셀프에서 많은 영감을 받았으나 매우 독특한 특징을 가지고 있다. 스몰토크와 마찬가지로 시트린은 모든 것을 하나의 물건으로 취급하며 이러한 물건에 메시지를 보내는 데 초점을 맞춘다. 그러나 스몰토크와 달리 씨트린은 계급 개념이 부족하다. 이런 점에서 시트린은 프로토타입을 사용하기 때문에 셀프나 자바스크립트에 가깝다. 메시지와 프로토타입 같은 스몰토크의 조합이 씨트린을 독특하게 만드는 것이다.

0.7 버전 현재 씨트린은 언어장벽으로 인한 혼란과 오해로 인한 벌레 수를 줄일 수 있도록 영어만 지원하는 것이 아니라 원어민 언어 지원에 주력하고 있다. 이와 같이 시트린 0.7 이상에서는 인간의 언어 사이를 번역할 수 있는 번역기가 등장하고 있다.

구문

시트린은 구문이 매우 제한적이고 스몰토크와 매우 밀접하게 관련되어 있다. 시트린의 모든 것은 물체다. 5리터가 있다.

  • Nil
  • True, False
  • 0,1,2,3
  • 'String'
  • { ...params.. ...block of code... }

코드블록 리터럴은 파이프 기호를 사용하여 ', 매개변수가 없으면 '\' 대신 백슬래시를 사용해야 한다.

씨트린은 풀라인 코멘트만 지원하고, 코멘트는 '#'로 시작한다.

시트린 프로그램은 기본적으로 사물에 전송되는 메시지의 순서다. 예를 들어, 5가 짝수인지 판단하기 위해 '짝수?'라는 메시지가 5로 전송된다.

5 짝수? 

이것은 논쟁을 하지 않기 때문에 단항 메시지라고 불린다. 이진 메시지는 항상 단일 UTF-8 문자로, 이것은 고정된 이진 메시지 세트가 있는 Smalltalk와는 다르다. 예를 들면 다음과 같다.

6 + 7. 

여기서 이진 메시지 '+'는 숫자 6으로 보내지고, 이 이진 메시지의 인수는 '7'이며, 이것은 새로운 숫자 개체 '13'을 낳게 될 것이다. 이 작업의 결과를 변수에 할당하는 것은 할당 연산자 :=를 사용한다.

총계 :=  + 빚을 지다. 

또한 시트린 프로그램의 각 행은 스몰토크에서와 마찬가지로 점으로 끝난다는 점에 유의한다. 단수 메시지와 이진 메시지 외에도, 씨트린은 스몰토크나 목표-C처럼 메시지 자체에 포함된 논쟁을 하는 키워드 메시지를 제공한다.

 x := 숫자 다음 사이: 1 및: 5. 

위의 코드 조각은 부울 객체 True를 반환한다.

제어 흐름

스몰토크와 마찬가지로 시트린의 제어 흐름은 메시지의 전략적 이용에 의해 구현된다. 예를 들어 조건문을 작성하려면 부울에 코드 블록을 보내야 한다.

( > 가격) 참: {  글: '그래, 이것만은 살 수 있어' }. 

마찬가지로, 포루프는 다음과 같이 기록된다.

{ :step  write: ' this is step:' + step } * 10. 


시트린에서 루프를 벗어나려면 'break'라는 메시지를 부울에 보내야 하는데, 이렇게 하면 파단 조건을 고려하지 않고도 루프의 조건부 파단이 가능하다.

{ :i (i = 3) break 例句:i.} * 5 

파이프라인

스몰토크와 달리 씨트린은 원래 수신자에게 메시지를 보낼 세미콜론이 없다. 대신 씨트린은 키워드 메시지 체인에 사용되는 쉼표 토큰 ','를 가지고 있으며, 이것은 유닉스 같은 파이프라인을 쓸 수 있다. 다음 코드는 파이프라인과 같은 구문을 사용하여 모든 'o' 문자를 0으로 대체하며, 그 결과 문자열은 '1010101...'과 같은 것이 될 것이다.

원앤드제로이스 := '1o1o1o1o1o1o1' 분할: 'o', 지도: 맵업, 가입: '0'. 

프로토타입

스몰토크와 가장 큰 차이점은 프로토타입 사용이다. 씨트린은 계급의 개념이 없고 물건에 대해서만 알고 있다. 개체가 새 메시지를 사용하여 생성됨:

고양이를 := 오브젝트 새로운. 

이 개체는 개체가 이벤트를 수신하도록 명령함으로써 메시지에 응답하도록 만들 수 있다. 이것은 Java와 같은 언어로 메소드를 추가하는 것과 비슷한 것이다.

고양이 on: '야옹' do: { 쓰기: '야옹!' }. 

상술한 바와 같이 상속은 시제품에 근거한다. 다른 개체에서 개체를 가져오려면 확장될 개체로 새 메시지를 보내야 한다.

 Animal := Object new. Animal on: 'makeSound' do: { ✎ write: '??'}.  Cat := Animal new. 고양이 켜기: '사운드 만들기' 실행: { ✎ 쓰기: '야옹!' }}.  := . 사운드를 만든다.  

유니코드

시트린은 UTF-8 유니코드를 광범위하게 사용하며, 물체와 메시지 모두 유니코드 기호로 구성될 수 있다. 모든 문자열 길이는 UTF-8을 사용하여 계산된다. 씨트린은 문자열 길이와 크기를 바이트 단위로 구분한다.

'텍스트' 길이. 

UTF-8 코드 포인트의 문자열 길이를 반환하는 동안:

'텍스트' 바이트. 

바이트 수를 반환한다.

범위 지정

시트린은 어휘적 범위 지정 대신 동적 범위 지정을 사용한다. 따라서 종속성 주입이나 글로벌 변수가 필요하지 않지만 어휘적 범위보다 추론하기가 어려울 수 있다. 이것은 Emacs LispBASIC과 같은 프로그래밍 언어에서도 유사하다. 코드 블록에서 var 키워드를 사용하여 로컬 변수를 선언해야 한다.

다음과 같은 데모를 통해 모듈에서 Mailer 개체를 사용할 수 있게 된다.

애플리케이션 := { ☞ mailer := mailer new. module run. }. 

참고 항목

참조

외부 링크