@kyanny's blog

My thoughts, my life. Views/opinions are my own.

#crystallang

前々から気になっていた The Crystal Programming Language を細々と試してみている。

やはり静的型付けのコンパイル型言語を一つくらいはしっかり使えるようになりたい、しかし Rust はやはりだいぶ難しそうだし、書き慣れてる Ruby に型*1とコンパイラがあったらなあ・・と、それ Crystal じゃん、と思って、ダメもとで気軽に試してみようと意を決して(?)やり始めてみた。

チュートリアルとかで文法を学んでも実際に使う(その言語で何かしらプログラムを書く)機会が継続的にないと身につかない。しかし syntax にもライブラリにも無知で不慣れな言語を日々の雑多な仕事を片付けるために使うのは結構厳しい(yak shaving が過ぎるし、一定の時間内に仕事を片付けられるものの完成に至らないこともしばしば)。なので syntax については Ruby にそっくり*2ならそこのオーバーヘッドを無視できるから学習曲線をなだらかにできるのでは?という目論み。

brew install crystal したら python をインストールしているのに気づいたので何事かと思ったら、crystal が依存している llvm の依存のようだった。

dependency management - Easy way to have Homebrew list all package dependencies - Stack Overflow

❯ brew deps --tree --installed crystal
crystal
├── bdw-gc
├── gmp
├── libevent
│   └── openssl@1.1
│       └── ca-certificates
├── libyaml
├── llvm
│   └── python@3.10
│       ├── gdbm
│       ├── mpdecimal
│       ├── openssl@1.1
│       │   └── ca-certificates
│       ├── readline
│       ├── sqlite
│       │   └── readline
│       └── xz
├── openssl@1.1
│   └── ca-certificates
├── pcre
└── pkg-config

*1:Ruby3 から型書けるようになったけども

*2:に、現時点ではまだ見えている