Checked exception 관련 글들을 찾아 보다가 읽게 된 문서입니다. CLU라는 프로그래밍 언어를 개발하게 된 배경과 과정에 대한 내용인데 정말 재밌네요. 참고로 문서가 좀 길어보이지만 한 1/3은 부록입니다. :)
A History of CLU
거의 30~40년전 이야기인데 현재 사용하고 있는 언어들이 여기서 앞으로 많이 나간것 같아 보이지 않네요.
이 글을 읽고나니 Kent Beck이 세미나에서 언급했던 Structured Design이라는 책이 읽고 싶어지네요. Kent Beck도 이 책을 언급하며 수십년전에 쓰여진 책인데 필요한 내용이 전부 있다... 뭐 이렇게 소개했었던 것 같은데...
A History of CLU
거의 30~40년전 이야기인데 현재 사용하고 있는 언어들이 여기서 앞으로 많이 나간것 같아 보이지 않네요.
As mentioned, the concept of data abstraction arose out of work on structured programming and modularity that was aimed at a new way of organizing programs. The resulting programming methodology is object-oriented.
A keystone of the methodology is its focus on independence of modules.
Achieving independence requires two things: encapsulation and specification.
Specifications are needed to describe what the module is supposed to do in an implementation-independent way so that many different implementations are allowed. (Code is not a satisfactory description since it doesn’t distinguish what is required from ways of achieving it. One of the striking aspects of much of the work on object-oriented programming has been its lack of understanding of the importance of specifications; instead the code is taken as the definition of behavior.)
Specifications also allow code that uses the abstraction to be written before code that implements the abstraction, and therefore are necessary if you want to do top-down implementation.
In essence, having a language enforce encapsulation means that the compiler proves a global property of a program; given this proof, the rest of the reasoning can be localized.
CLU favors program readability and understandability over ease of writing, since we believed that these were more important for our intended users.
We worked on the implementation in parallel with the design. We did not allow the implementation to define the language, however.
이 글을 읽고나니 Kent Beck이 세미나에서 언급했던 Structured Design이라는 책이 읽고 싶어지네요. Kent Beck도 이 책을 언급하며 수십년전에 쓰여진 책인데 필요한 내용이 전부 있다... 뭐 이렇게 소개했었던 것 같은데...
일상적으로 쓰이는 언어들만 보면 지금의 프로그래밍 언어가 30년 전에서 많이 바뀌지 않은 것처럼 보일 수도 있지만, 저 언어가 30년 전에 일상적으로 쓰이지는 않았을 거라고 생각해보면 발전은 분명 존재하죠. Haskell 같은 언어도 곧 일상적으로 쓰일 거라고 봅니다.
ReplyDeleteTwitter에서도 Scala를 쓴다는 걸 보니 Haskell같은 functional programming language들은 곧 자리를 잡지 않을까 싶습니다.
ReplyDelete암튼 30년전에 object-oriented programming이 이미 연구되었듯이 지금은 어떤 미래의 개념들이 연구되고 있는지 궁금하네요.