낯선 Rust에서 오래된 Object Pascal의 향기를 느끼다

Robert Teminian - Oct 17 - - Dev Community

이 글은 2024년 4월 20일에 제 옛 블로그에서 작성된 글입니다.
https://codenested.blogspot.com/2024/04/rust-object-pascal_20.html


요즘 새로운 프로그램을 만드는데, 이 참에 공부좀 해보자 해서 Rust로 만들어보고 있습니다.

아무래도 멘땅에 헤딩하다 보니까 고조할아버지 제삿날 종가집 시어머니급 잔소리를 늘어놓으며 사사건건 시시콜콜하게 간섭해대는 rust-analyzer와 싸우면서(?) 즐거운(?) 나날을 지내고 있습니다만...... 오늘 재미있는걸 하나 발견했습니다.

Rust에서는 이 구문을 오류로 보더군요.

let mut raw: String;
handle.read_to_string(&mut raw);
Enter fullscreen mode Exit fullscreen mode

이걸 수정하려면 이렇게 고쳐야 됩니다.

let mut raw=String::new();
handle.read_to_string(&mut raw);
Enter fullscreen mode Exit fullscreen mode

이 코드를 보니 예전 Object Pascal (Delphi) 시절이 생각나는군요. primitive type이 아니면 var 절에서 객체 변수를 선언한 뒤에 구현부에서 꼭 초기화를 시켜줘야 하고, 그렇지 않으면 바로 runtime error를 뻥뻥 토해냈는데, 구조가 완전히 똑같습니다. Rust도 마찬가지이긴 합니다만, 차이점이라면 메모리가 할당되지 않았다는걸 컴파일 타임에 발견해낼 수 있다는 정도일까요.

procedure function1();
var anObject: TAwesomeClass;
begin
anObject:= TAwesomeClass.Create(); // 이거 없으면 터짐
end;
Enter fullscreen mode Exit fullscreen mode

Pascal이란 언어는 자기 자신은 비주류인 주제에 온갖 잡다한(?) 언어들에게 무수한 영향을 끼치는군요. Java도 Python도 Javascript도 심지어는 Rust도 모두 다 Object Pascal의 구조를 일정수준 이상 차용해왔으니......

과거 해당 언어의 추종자로서, 아련한 기분이 듭니다.

. . . . . . . . . . . . . .
Terabox Video Player