交大観察と所感(4):修士2年(1学期)
- 2021年1月27日
- Liu, An-Chi 劉安齊
Code makes the world a better place
Rust で書かれた Servo ブラウザのように、大規模なオープンソースプロジェクトは非常に巨大です。行数を数えたことがあるのですが、Servo プロジェクトには 10 万行近いコードがあります。こうした大規模プロジェクトを開発するには、正しい方法でデバッグできることがとても重要です。なぜなら、ボトルネックを素早く効率的に見つけたいからです。
本記事では、Rust のコードや Servo プロジェクトを開発・デバッグするために GDB を使うコツを紹介します。このデバッグ手法は C/C++ にも応用できます。
Continue reading
性能分析ツール(Profiler)を使うと、ソフトウェアの実行に関するより多くの情報を得られます。たとえば、使用メモリ量、CPU サイクル、キャッシュミス、I/O 処理時間などです。これらの情報は、プログラムの性能ボトルネックを見つける上で非常に役立ちます。どこがプログラムを遅くしているのかを見つけ、性能を最大化することが性能分析の最大の目的です。
本記事では Linux の性能分析ツール perf を紹介します。簡単なプログラム例を使って perf による分析手順を示し、分析ツールを使うと問題の根本原因をより見つけやすくなることを確認します。本文は Gabriel Krisman Bertaz の Performance analysis in Linux を参考にしています。
Continue readingElixir は動的型付けの関数型プログラミング言語で、スケーラブルで保守性の高いシステムを構築するために設計されています。
Elixir は Erlang VM 上に構築されており、低レイテンシ・分散・フォールトトレラント(fault-tolerant)が求められるシステムに向いています。また、Web 開発、組込みソフトウェア、データ処理、マルチメディア処理など幅広い用途で利用できます。「Game of Phones: History of Erlang and Elixir」という記事では Elixir の背景が紹介されており、読む価値があります。
Elixir は書いていてとても面白い言語です。実際に触ってみると、JavaScript や Rust が関数型プログラミングから多くの概念を取り入れていることに気づきます。そのため、Elixir をゼロから学ぶ過程でも、Pattern Matching や Enumerable といった FP の特徴は、以前に触れた経験があるものとして自然に理解できます。
公式の言語ガイド を読んだあと、小さなプロジェクトを書いてより慣れる必要があると感じたため、Elixir で簡単な HTTP サーバーを作る方法を調べました。
Continue reading