競プロに使った言語が10言語になったので感想
なんでそんないっぱい使ったの?
- 問題の種類によって使い分けるのがかっこいいと思ったから
- 同じ言語ばっかり使ってると飽きるから
言語に求めたこと
- 書きやすいこと、コードが冗長にならないこと
- テスティングツールが使いやすいこと
- 早いこと
- できれば型も欲しい
以下使った言語一覧
C++
- だいたい解答例はこれなのでとりあえず勉強した。
- 特に言うことはない。みんなだいたい知ってるでしょ。
- あえて特筆すると、文字列処理が難しいのとテストが若干使いづらいのが難点。
Java
Rust
- 人気だったので使った。
- イテレーターが最高で、特に整数ベクターを扱う問題に強い印象。
- コミュニティ全体として競プロに積極的で、有志による情報やライブラリが豊富(標準入力を行うライブラリが最強)。
- 文字列を扱うときは冗長になりがち。
Go
- 多分早いだろうと思って一旦使ってみることに。
- 予想はしていたけど使いづらかった。
- 「このメソッドがないの!?」と思うことしばし。
Python/PyPy
- 解答例に記載されていることも多いので採用。
- 文法がとにかく直感的で書きやすい。
- 周辺ツールがモダンでUIもかっこいいものが多く、テンションがあがる。
Ruby
- 遅いのはどうしようもないけどv3.0.0はまあまあ早いらしい(AtCoderは執筆時点でv2.7.1)から、未来に期待して使ってみた。
- 便利なメソッドや省略記法が多くて書きやすい。
Julia
- 数値計算で使ってみて良い感じだったので競プロでも採用。
- 数学関数がデフォルトで豊富なのが便利で、Floatを扱うような問題に適している印象。
- テストコードが簡単にかけるのが意外だったし、出力もわかりやすい。
- 文字列処理が苦手な印象だったが、全然そんなことはなかった。
TypeScript
- Web開発の方で使い慣れてるので使った。
- 標準入力だけで一手間必要で、アルゴリズム実装以外の部分に時間がかかってしまう印象。
- とはいえ、特に配列に対するメソッドが豊富で書きづらいわけではない。
C Sharp
- LINQという文法がめちゃくちゃ便利だと布教されたので使ってみた。
- 実際めちゃくちゃ便利ではあった。
- 名前にCを冠する割には速度が遅かったのと、痒いところにギリギリ手が届かない言語仕様がなんとも愛らしい。
Kotlin
- 人気だったので触れた。
- どうせならと思いJetBrainsのIDEを使ってみたが、これがよくなかった。快適すぎた。