본문 바로가기

Computer Science/PL5

A Taste of GPU 이 프레젠테이션에서 발표자인 라프 르비엔은 GPU에 프로그래밍 하는 좋은 방법은 사실 함수형 프로그래밍이며, 함수형 프로그래밍이야말로 문제를 작은 단위로 쪼개어 각 상태끼리의 의존관계가 진짜 함수 단위로 명백한 것이라고 한다. 그는 GPU 위에서 동작하는 고성능의 렌더링 프로그램 예시를 들어 GPU 프로그래밍의 구조를 설명한다. 왜 GPU에서 코드를 돌리고 싶을까? 기존의 칩 제작자들은 무어에 법칙에 따라 칩 위에 트랜지스터 갯수를 늘리는 트렌드에 따랐지만 15년전후로부터는 데너드 스케일: 칩이 또한 속도가 계속 빨라진다는 법칙을 따랐다. 이 말인즉슨, 이제 싱글코어 성능을 향상에 퍼포먼스 향상을 기대하는 것은 끝났고, 현대의 컴퓨터 칩에서 성능향상을 도모할 수 있는 방법은 병렬화와 멀티코어 뿐이라는 것.. 2022. 9. 12.
What is Type-safe? Type Safety에 대한 정의에 대해 완전한 이해를 위해 포스팅을 준비하던 중, PL Enthusiast 블로그에서 너무 좋은 글을 찾게 되었다. 따로 정리할 필요없이 본 포스팅에서는 해당 글에 대한 이해와 번역을 한글로 정리한다. Type Safety는 잘 이해되는 개념이지만, 쉽게 고정되는 개념은 아니다. 특히 누군가 "JAVA는 Type-safe한 언어다."라고 하면 이는 정확히 무엇을 의미하는가? 모든 종류의 Type-safe한 언어들은 어떤 면에서 "같다"고 볼 수 있는가? Type-safe의 개념은 특정 언어에서, 그리고 일반적으로 어떻게 받아들여지는가? 사실, Type Safety의 개념은 해당 언어의 타입 시스템의 정의에 따라 달라진다. 가장 간단한 예시로, Type Safety는 프로.. 2020. 9. 5.
Why OCaml? 이 발표에서 야론 민스키는 제인 스트릿이라는 회사에서 왜 오캐믈이라는 변방의 언어로 모든 시스템을 구축하고 개발하게 되었는가를 설명한다. 먼저 그는 일반적인 프로그래밍 언어를 4개의 범주로 나누어 설명한다. 아래와 같이 좌측 열 위쪽에 있는 언어들은 파이썬, PHP 같은 언어들인데 이들은 일반적으로 스크립트 언어라고 불리우는 것들로, 짜기 쉽고 간편하지만 컴파일되는 언어가 아니라 컴파일 되는 언어보다 속도가 매우 느리다는 단점이 있다.(언어의 종류에 따라서는 100배까지도!) 그에 반면 좌측 열 아래쪽에 있는 언어들은 C#, 자바같은 일반적인 언어들인데, 이들은 컴파일되어 빠르고 좋은 성능을 가지는 언어인 것을 보여준다. 여기서, 좌측열과 우측열의 명령형 언어와 함수형 언어를 구분하는 차이점은 함수형 언.. 2020. 9. 5.
프로그램 분석에서의 Soundness PL에서 Soundness와 Completeness는 자주 언급되는 개념이다. 하지만 이에 대한 정의는 일정하게 사용되지 않는 양상을 보여, 가끔 혼동을 주기도 한다. 그리고, 정적분석에 대해서 Sound(안전하다), Complele(완전하다), 혹은 Soundy(적당히 안전하다)라는 개념 또한 고려해 보아야할 것이다.정적분석에서의 Soundness(안전성) Soundness의 개념은 형식적인 수학 논리 모델에서 온 것이다. 어떤 증명 시스템과 모델이 있다고 가정하자. 증명 시스템은 성질들을 증명할 수 있는 규칙들의 집합이고, 이는 수학적인 구조를 가진다. 증명 시스템 L이 증명하는 모든 statement들이 true라면 Sound하다고 할 수 있다. 그리고 L이 모델에 있는 모든 true인 statem.. 2020. 9. 4.
NP 문제에 대한 쉬운 설명 P 문제 Polynominal complexity의 알고리즘을 가지고 있는 쉬운 문제. 즉, 다항 시간내에 풀리는 문제. NP 클래스 Non-deterministic Polynominal complexity를 가지는 문제들. 운에 기대면 현실적인 비용으로 해결할 수 있는 문제들. 예를 들자면 주어진 지도 위의 도시(그래프)를 한 번씩만 방문하는 경로 찾기 문제인 해밀턴 경로(Hamilton path) 문제가 대표적이다. 이를 다항시간 내에 푸는 알고리즘은 아직 없다. 건너풀기(Problem Reduction) 문제 A를 푼 알고리즘으로 동일하게 B 문제를 해결할 수 있다면, 그 문제는 간접적으로 풀 수 있는 것이다. 단, A 문제로 푼 답을 B 문제의 답으로 옮기는 건 다항 시간내에 되야한다. NP 완전.. 2020. 9. 4.