본문 바로가기

PL

(3)
What is Type-safe? Type Safety에 대한 정의에 대해 완전한 이해를 위해 포스팅을 준비하던 중, PL Enthusiast 블로그에서 너무 좋은 글을 찾게 되었다. 따로 정리할 필요없이 본 포스팅에서는 해당 글에 대한 이해와 번역을 한글로 정리한다. Type Safety는 잘 이해되는 개념이지만, 쉽게 고정되는 개념은 아니다. 특히 누군가 "JAVA는 Type-safe한 언어다."라고 하면 이는 정확히 무엇을 의미하는가? 모든 종류의 Type-safe한 언어들은 어떤 면에서 "같다"고 볼 수 있는가? Type-safe의 개념은 특정 언어에서, 그리고 일반적으로 어떻게 받아들여지는가? 사실, Type Safety의 개념은 해당 언어의 타입 시스템의 정의에 따라 달라진다. 가장 간단한 예시로, Type Safety는 프로..
Why OCaml? 이 발표에서 야론 민스키는 제인 스트릿이라는 회사에서 왜 오캐믈이라는 변방의 언어로 모든 시스템을 구축하고 개발하게 되었는가를 설명한다. 먼저 그는 일반적인 프로그래밍 언어를 4개의 범주로 나누어 설명한다. 아래와 같이 좌측 열 위쪽에 있는 언어들은 파이썬, PHP 같은 언어들인데 이들은 일반적으로 스크립트 언어라고 불리우는 것들로, 짜기 쉽고 간편하지만 컴파일되는 언어가 아니라 컴파일 되는 언어보다 속도가 매우 느리다는 단점이 있다.(언어의 종류에 따라서는 100배까지도!) 그에 반면 좌측 열 아래쪽에 있는 언어들은 C#, 자바같은 일반적인 언어들인데, 이들은 컴파일되어 빠르고 좋은 성능을 가지는 언어인 것을 보여준다. 여기서, 좌측열과 우측열의 명령형 언어와 함수형 언어를 구분하는 차이점은 함수형 언..
프로그램 분석에서의 Soundness PL에서 Soundness와 Completeness는 자주 언급되는 개념이다. 하지만 이에 대한 정의는 일정하게 사용되지 않는 양상을 보여, 가끔 혼동을 주기도 한다. 그리고, 정적분석에 대해서 Sound(안전하다), Complele(완전하다), 혹은 Soundy(적당히 안전하다)라는 개념 또한 고려해 보아야할 것이다.정적분석에서의 Soundness(안전성) Soundness의 개념은 형식적인 수학 논리 모델에서 온 것이다. 어떤 증명 시스템과 모델이 있다고 가정하자. 증명 시스템은 성질들을 증명할 수 있는 규칙들의 집합이고, 이는 수학적인 구조를 가진다. 증명 시스템 L이 증명하는 모든 statement들이 true라면 Sound하다고 할 수 있다. 그리고 L이 모델에 있는 모든 true인 statem..