Introduction

이 문서는 Rust 프로그래밍 언어를 위한 레퍼런스 매뉴얼이다. 다음의 세 종류의 단원을 제공한다.

  • 언어 문법과 각 구조를 형식적으로 정의하고, 의미와 사용 예를 자유롭게 서술한 단원
  • 메모리 모델, 동시성 모델, 런타임 서비스, 링킹 모델과 디버깅 도구를 자유롭게 서술한 단원
  • 논리적 근거와 설계에 영향을 미친 언어를 참조하는 부록 단원

이 문서는 언어의 튜토리얼을 제공하지 않는다. 언어가 배경적으로 친숙하다고 가정한다. 분리된 튜토리얼 문서는 배경적 친밀도를 얻도록 도와준다.

이 문서는 언어 배포판에 포함되어 있는 core, standard 라이브러리의 참조를 제공하지 않는다. 이 라이브러리들은 소스 코드의 문서화 속성들에서 추출하여 따로 문서화된다.

Share Comments

고양이를 빌려드립니다

주인공이 외로운 사람들에게 고양이를 빌려주고, 고양이로 인해 외로움을 치유해가는 이야기이다.

오랜만에 가슴 따뜻해지는 영화를 본것같아 기분이 좋다.

요즘 외롭다는 생각을 많이 했는데, 고양이를 키우고 싶은 마음이 생기게 하는 그런 작품이다.

Share Comments

CD Manipulation 한설희 le plus grand cabaret du

한설희 마술사의 CD Manipulation 공연 영상이다.

관객이 잠깐이라도 눈을 깜빡이면 CD 가 바뀌는 현상을 놓치게 될 정도로 빠른 템포로 진행한다.

기교의 끝을 보여주고 연습량도 엄청날 것 같은 대단한 액트이다.

Share Comments

존재하지 않는 객체 다루기

명령줄로부터 이름을 입력받자. 명령줄에 아무것도 명시되지 않은 경우를 설명해야한다. 우리에게 Ceylon 에서 어떻게 null 값이 처리되는지 탐구할 수 있는 기회를 준 것이다. 아마도 Java 나 C# 에서 사용되는 것과 꽤 다를 것이다.

여기 지나치게 장황한 예제를 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
"Print a personalized greeting"
void hello() {
String? name = process.arguments.first;
String greeting;
if (exists name) {
greeting = "Hello, ``name``!";
}
else {
greeting = "Hello, World!";
}
print(greeting);
}

String? 타입은 namenull 값을 가질 수 있다는 것을 가리킨다. 그러면 이름이 ‘null’ 이 아닌 경우로부터 이름이 null 인 경우를 분리하기 위해 if (exists ...) 제어 구문을 사용한다.

아래처럼 if (exist ...) 제어 구문안에 지역 변수 name 을 선언하여 코드를 축약하는 것은 가능하다.

1
2
3
4
5
6
7
8
9
String greeting;
if (exists name =
process.arguments.first) {
greeting = "Hello, ``name``!";
}
else {
greeting = "Hello, World!";
}
print(greeting);

if (exist ...) 구문 밖에서 유용하게 name 을 실제로 사용할 수 없기 때문에, 이 것은 대부분 경우에 선호되는 스타일이다. (그러나 이렇게해도 코드 작성하는 것은 거의 줄어들지 않는다.)

Share Comments

문자열 끼워넣기와 연결하기

우리 프로그램에게 자신에 대해 좀 더 이야기 하도록 만들자.

1
2
3
4
5
6
7
"The Hello World program ... version 1.1!"
void hello() {
print("Hello, this is Ceylon ``language.version``
running on Java ``process.vmVersion``!\n
You ran me at ``process.milliseconds`` ms,
with ``process.arguments.size`` arguments.");
}

우리의 메시지에 문장들이 어떻게 삽입되었는지 보면, 더블백 “ 즉, 두개의 backtick 을 이용해 구분하였다. 이를 문자열 템플릿이라고 부른다.

필자의 컴퓨터에서 이 프로그램은 다음과 같은 결과를 출력하였다.

1
2
3
4
5
Hello, this is Ceylon 0.5
running on Java 1.7!
You ran me at 1362763185067 ms,
with 0 arguments.

다른 방법으로 + 연산자를 사용해 문자열을 이어붙히는 것도 가능하고, 이는 많은 경우에 더 유연하다.

1
2
3
4
5
print("Hello, this is Ceylon " + language.version +
"running on Java " + process.vmVersion + "!\n" +
"You ran me at " + process.milliseconds.string +
" ms, with " + process.arguments.size.string +
" arguments.");
  • 연산자를 이용해 문자열을 연결할 때, 명시적으로 string 속성을 호출해 숫자 표현을 문자로 변경해야 한다. + 연산자는 피연산자를 문자열로 자동적으로 변경하지 않는다.
1
2
3
4
print("Hello, this is Ceylon ” + language.version + “running on Java ” + process.vmVersion + “!\n” +
“You ran me at ” + process.milliseconds + //compile error!
“ ms, with ” + process.arguments.size + //compile error!
“ arguments.”);
Share Comments

문자열 그대로 유지하기

문자열 리터럴에 코드를 삽입하는 것처럼 때로는 이스케이프 문자열을 넣는 것이 성가실 때가 있다. 만약 문자열 양 끝에 세개의 큰 따옴표 “”“ 를 사용하면 보이는 그대로의 문자열을 얻을 수 있다. 이스케이프 안되는 백슬러시와 큰 따옴표도 포함할 수 있다.

1
print(""""Hello!", said the program.""");
Share Comments

이스케이프 문자

문자열 리터럴 안에 다른 C-like 언어들에서 사용되는 \n, \t, \, “ 등의 이스케이프 문자를 사용할 수 있다.

1
print("\"Hello!\", said the program.");

텍스트에서 유니코드를 표현하기 위해 2 바이트와 4 바이트 16진수 이스케이프 문자도 사용할 수 있다.

1
2
3
4
5
6
7
8
"The mathematical constant \{#03C0}, the
ratio of the circumference of a circle
to its diameter."
Float pi=calculatePi();
"The mathematical constant \{#0001D452},
the base of the natural logarithm."
Float e=calculateE();

Ceylon의 문자열은 UTF-32 문자로 구성된다. 나중에 살펴볼 것이다.

Share Comments

Robots

Robots

사내 아이라면 누구나 로봇 장난감을 가지고 놀 것이고 한번쯤은 로봇 과학자를 꿈꾸게 된다.

나 또한 그런 시절이 있었고 아직도 그 로망이 남아있다.

개인적으로 애니메이션 영화를 좋아해 재밌게 봤다.

Share Comments

인라인 문서 포맷팅하기

doc 어노테이션은 Markdown 포맷을 포함할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"The classic [Hello World program][helloworld]
that prints a message to the console, this
time written in [Ceylon][].
This simple program demonstrates:
1. how to define a toplevel function, and
2. how to `print()` a literal `String`.
You can compile and run `hello()` from the
command line like this:
ceylon compile source/hello.ceylon
ceylon run -run hello default
Or you can use `Run As > Ceylon Application`
in the IDE.
[helloworld]: [http://en.wikipedia.org/wiki/Hello_world_program](http://en.wikipedia.org/wiki/Hello_world_program)
[Ceylon]: [http://ceylon-lang.org](http://ceylon-lang.org)"
void hello() {
print("Hello, World!");
}

Markdown 은 텍스트가 나타나는 초기 컬럼에 민감하기 때문에 여러줄 리터럴의 들여쓰기를 정확히 하도록 신경써야 한다.

Share Comments

광해 왕이 된 남자 연극

광해 포스터

친구가 급한 볼일이 생겨 대신 연극을 보러 갔다.

영화 광해를 연극으로 옮긴 작품이고, 배우 배수빈이 주연으로 열연을 펼쳤다.

너무 재밌게 봤고, 영화도 얼른 봐야겠다.

Share Comments