본문 바로가기
컴퓨터/전산, 그 외

여러 프로그래밍 언어를 익히는 것

by adnoctum 2016. 2. 8.




   여전히 나의 주 언어는 C++ 인데, 재미있게도 파이썬이나 R 등의 다른 언어들이 나의 C++ 코딩 형식에 조금씩 영향을 주고 있다. 이것은 곧 현재 염두에 두고 있는 다른 언어들을 좀 더 배워보고 싶게 한다. Julia랑 Rust. 요 며칠은 계속 library 를 만들었다. class 3 개로 구성이 되어 있는데, 실제로는 두 개의 클래스가 주요한. 이 세 개의 클래스 간 구조도 골치가 좀 아팠는데 어쨌든 지금 가장 핵심적인 기능들이 제대로 구현됨을 확인했다. 이것을 구현함에 있어 여러 함수들이 파이썬과 R 에서 사용하던 함수들의 형식과 내용을 따랐다. 물론 포인터와 const 를 상당히 많이 사용하기 때문에 코드 자체는 매우 C++스러우나 사용법 자체는 파이썬 혹은 R처럼 느껴지도록 코딩하게 되는 것이다. 예를 들면, 


const double * const get_expression(const std::string& geneId) const;


같은 형식, ㅋ. 계속 하고 싶었던 것은 [ ] 연산자를 연이어 사용할 수 있게끔 재정의하는 것이었는데, C++ 에서 이렇게 하기는 매우 까다롭다. [ ] 연산자가 operand 로 여러 개를 받을 수 있으면 좋겠는데 딱 한 개의 피연산자만 받을 수 있는 것 같다 - 아직 자세히 찾아 보진 않았지만. 그래서 , 연산자를 재정의해서 두 개의 std::string 을 받아서 std::pair 로 반환하게 하려 했는데 잘 안 되었다. 이 때 문득 R의 c 가 생각이 났다. 매우 단순하지만 - 한 글자로 된 함수 이름, ㅋ - 이런 식으로 하면 되겠다 싶어 c 라는 이름의 함수를 만들었고, 이 반환값을 [ ] 연산자의 피연산자로 집어 넣을 수 있게 해서 결과적으로 a[c("a","b")] 가 되도록 했다. 원했던 것이 a["a"]["b"] 인 것이니까 그럭저럭 만족할만하게는 되었다. 


   매우 사소한 경험이었지만 이런 식이라면 내가 다른 언어들을 여럿 익히면 익힐수록 C++ 의 코딩 방식도 변할 것이란 생각이 든다. 아직은 구체적이거나 실제적인 필요가 없기 때문에 Julia랑 Rust 를 배우진 않고 있었는데, 조만간 조금씩 해 봐야겠다는 생각이 든다.