흥미롭다:뭔가 정말 흥미롭다면, 그게 흥미롭다는 이야기를 굳이쓸필요가 없다

짧은단어:쓰기도 쉽고 이해하기도 쉽다. 뜻이 같은 두 단어가 있다면 짧은 쪽을 쓰자



TistoryM에서 작성됨
,

Best Practices for Scientific Computing

  • Write programs for people, not computers 사람을 위해 만들어라 컴퓨터가 아니라
  • Automate repetitive tasks
  • Use the computer to record history
  • Make incremental changes
  • User version control
  • Don't repeat yourself
  • Plan for mistakes - Defensive programming, Write and run tests, Use a variety of oracles, Turn bugs into test cases, Use a symbolic debugger
  • Optimize software only after it works correctly 최적화는 제대로 작동한 후 할것
  • Document design and purpose, not mechanics 설계와 목적을 문서로 만들 것 작동원리가 아니라
  • Collaborate
,

FFI

from 몸에 새기게 공부다 2013. 9. 6. 11:14

하스켈을 들여다 보면 자주 보게되는 FFI에 대해 정리 9/5/2013 9:54:57 PM

FFI

Foreign function interface (FFI)은 프로그래밍 언어에서 다른 프로그래밍 언어로 정의 된 함수 등을 이용하기위한 기법이다. 주로 고급 언어에서 C / C + + 등의 함수 나 메서드를 호출하여 OS 고유의 기능 등을 이용하기 위해 사용되는 경우가 많다. FFI라는 용어는 Common Lisp의 사양에 유래,Haskell에서도 마찬가지로 FFI라는 용어가 사용되고있다. Ada 등의 언어 사이 바인딩 (또는 바인딩 language binding)이라고한다. FFI라는 용어 자체에 "함수 (Function)"라는 말이 포함되어 있지만, 많은 FFI는 단순히 다른 언어로 작성된 함수를 호출 할뿐만 아니라 개체의 메서드를 호출하거나 그 결과를 가져 하고 데이터 형식 또는 클래스를 언어간에 상호 변환 할 수있다.

배경

FFI의 주요 기능은 호출자의 언어 (호스트 언어)와 수신자의 언어 (게스트 언어)의 호출 규칙과 의미론을 맞추는 것이이다. 주로 다음과 같은 방법 등으로 구현된다: 게스트 언어 호출되는 함수에 대해 호스트 언어에서 사용 가능한 특정 프로토콜을 구현하는 것을 요구한다 (예 : Java Native Interface). 게스트 언어의 함수를 감싸기 글루 코드를 작성하는 래퍼 라이브러리를 만든다. (예 : Haskell 98 FFI) 게스트 언어로 정의 된 함수는 호스트 언어의 기능과 의미론의 하위 집합이여야 한다 (예 : C + +에서 C 언어의 기능을 사용)

또한, FFI의 이용 및 구현에는 다음과 같은 경우에 주의가 필요하다.

  • 다른 언어가 가비지 수집 기능을 갖고 있지 않은 경우 개체 참조 및 삭제가 제대로되지 않는 경우가있다. 경우에 따라서는 수동으로 개체를 관리 할 필요가있다.
  • 언어 간 데이터 형식이나 개체의 변환이 어려운 경우가있다.
  • 위 데이터 형식 변환 문제 등을 위해 언어간에 동일한 인스턴스에 대한 참조가 어려울 수있다.
  • 하나 또는 두 언어가 가상 머신상에서 동작하고있는 경우가있다. 또한 두 언어가 다른 가상 머신에서 작동하는 경우도있다.
  • 상속 개체와 형의 합성이 언어마다 다를수 있다


,