Search

'2022/05'에 해당되는 글 3건

  1. 2022.05.28 Rust 언어의 match문
  2. 2022.05.27 Go언어 안정성 문제.
  3. 2022.05.26 5월에 도망가기 전략

Rust 언어의 match문

프로그래밍 2022. 5. 28. 13:04 Posted by UnHa Kim

Rust의 match문은 C, C++, Go의 switch와 비슷한 기능을 판단/분기를 하는 기능이다.

그런데, 눈에 번쩍 띄는 특징을 발견했다.

 

----------------------------------------------------------------------------------------------

Rust prohibits match expressions that do not cover all possible values:

(Rust언어에서는 모든 가능성을 커버하지 않는 match문은 허용되지 않는다.)
----------------------------------------------------------------------------------------------

 

C, C++, Go언어에서는 switch문에서 default가 강제되지 않아서, 미처 예상하지 못한 예외적인 상황에 대한 대응을 누락할 위험이 상존하지만, Rust언어에서는 그럴 가능성을 원천적으로 봉쇄했다는 의미이다.

 

매매 시스템은 돈을 다루는 프로그램이다 보니 안전성, 정확성이 중요한 데,

판단/분기에서 예외적인 상황을 놓칠까봐 항상 불안감을 안고 살다가,

Rust의 match문을 보니 가슴이 확 트이는 기분이다.

 

사실, Ocaml의 match문에서도 이러한 특징이 있다는 것을 알고 있었고, 그래서, Ocaml을 어떻게 한 번 써볼려고 여러 번 시도했으나, MS-Windows 지원이 너무나 부실하여 번번이 포기했었는 데, Rust언어에서도 이게 된다니..  ㅎㅎ

 

'프로그래밍' 카테고리의 다른 글

WebAssembly는 이식성 높은 바이트코드였구나.  (0) 2022.06.11
Rust 언어의 match문  (0) 2022.05.28
Go언어 안정성 문제.  (0) 2022.05.27
Go언어 에러처리  (0) 2016.11.02
Go언어 소개  (0) 2014.11.04

댓글을 달아 주세요

Go언어 안정성 문제.

프로그래밍 2022. 5. 27. 19:16 Posted by UnHa Kim

Go언어는 버전별로 안정성에  큰 기복이 있는 듯 하다.

 

Go 1.17 출시 초기 버전을 적용하고,  장중에 매매 시스템에서 에러가 발생하면서 중단되는 현상을 몇 번 경험했고, 이후 안정성이 확보된 1.16으로 되돌아갔다.

Go 1.18의 경우 더 심각한 데, 1.18.2가 발표된 현재 시점까지 가장 기초적인 DLL 호출에서 에러가 발생하며 유닛 테스트도 통과하지 못한다.

그래서, 여전히 Go 1.16.15 버전에 머물러 있다.

 

예외 처리를 if문에 의존하는 Go언어 특성 상 Generics가 없는 1.16 버전으로는 코드 가독성이 떨어지는 지라,  코드 가독성 개선을 위해서 Go 1.18의 Generics 기능을 애타게 기다려온 입장에서, Go 1.18이 기본적인 DLL 호출에서조차 에러가 발생하는 상황이 실망스럽기 그지없다.

 

Go언어 특유의 빠른 컴파일 속도와 간결한 코드, 높은 개발 생산성 덕분에 어찌어찌 자동 매매 시스템 개발에 성공해서 운용하는 단계에 이르렀으므로, Go언어는 내 인생에서 소중한 존재임은 틀림없지만 현 시스템을 개선하는 데 장애물로 작용하는 것도 사실이다.

 

이럴 바에야 Go 언어의 대안을 찾아봐야 겠다는 생각이 들어서, Rust 언어를 공부하기 시작했다.

 

Rust 언어로 재개발 하는 데 성공하지 못하더라도, 이미 개발해 놓은 Go언어 시스템을 계속 사용하면 되므로, 어떻게든 성공시켜야 하던 절박함은 많이 줄어들었기에, Rust언어로 재개발을 완성할 때까지 끈질기게 진행할 수 있을 지는 모르겠다.

 

지금까지 공부한 바로는 Rust 언어도 try/catch/finally로 대표되는 예외처리 기능이 없고, 에러 발생 여부를 match문을 이용해서 일일이 확인해 줘야 하지만, 코드의 반복을 줄여주는 '?' 연산자가 존재하므로, 에러처리 때문에 코드 가독성이 낮아지던 Go언어에서의 문제는 없는 듯 하다.

그외 Generics/메모리 안정성/동시처리 등 여러가지 기능 면에서도 부족해 보이지 않는다.

 

다만, 변수 소유권 문제등 새로운 개념을 습득해야 하고, 예외처리를 제외한 나머지 코드 가독성은 Go언어보다 떨어지고, 컴파일 속도도 Go언어보다 많이 느리므로 개발 생산성도 낮을 텐데, 이 나이에 굳어버린 머리로 이런 단점을 극복해 낼 수 있을 지 모르겠다.

 

여러모로 Go 언어 1.18에서 기본적인 DLL 호출에서조차 에러가 발생하는 현 상황이 너무 안타깝다.

 

'프로그래밍' 카테고리의 다른 글

WebAssembly는 이식성 높은 바이트코드였구나.  (0) 2022.06.11
Rust 언어의 match문  (0) 2022.05.28
Go언어 안정성 문제.  (0) 2022.05.27
Go언어 에러처리  (0) 2016.11.02
Go언어 소개  (0) 2014.11.04

댓글을 달아 주세요

5월에 도망가기 전략

투자 이야기 2022. 5. 26. 23:47 Posted by UnHa Kim

'Sell in May and go away.' (5월에 팔고 떠나라)는 증시 격언이 있다.

여기에서 나온 게 '5월에 전량 매도, 10월말(혹은11월말)에 재진입'하는 할로윈 전략이다.

 

강환국 작가가 할로윈 전략을 설파해서 눈여겨보고 있던 차에,

4월말 러시아 푸틴과 측근들이 공공연하게 핵무기 사용을 언급하자,

3차 대전 발발할까봐 쫄아서 전량 매도 후 5월 내내 푹 쉬었다.

(참고로 세계대전이 발발하면 증시가 폐쇄되고 현금화 할 수가 없어진다.)

 

결론적으로 마음 편하게 나스닥과 암호화폐 폭락을 구경할 수 있었고,

원숭이화 되었던 판단력은 다시 인간화 되었으며,

정신적 압박감으로 인한 불면증도 자연스럽게 사라졌다.

 

할로윈 전략은 수익성, MDD등 투자 지표로만 표현할 수 없는 '삶의 질'에 관한 전략이기도 한 것 같다.

수익성을 양보하더라고 1년에 5~6개월만 투자하는 할로윈 전략을 지속하는 것을 고려 중이다.

 

https://youtu.be/X_gqR23avxc

 

댓글을 달아 주세요