コルーチンの哲学:プログラマの省察

2025-03-27

この記事は、著者の個人的な経験を通してコルーチンの哲学を探ります。プリプロセッサのテクニックでC言語でコルーチンをシミュレートした初期の頃から、C++20のネイティブコルーチンが登場するまで、著者はその使用と利点に関する洞察を共有します。状態マシンやスレッドと比較することで、コルーチンの柔軟性、デバッグの容易さ、クリーンアップの容易さが強調され、特にネットワークプロトコルやデータストリーム処理などのシーケンシャルなタスクに役立つことが示されています。この記事では、様々なコルーチンの実装、キューとプリフィルターを使用した最適化技術、そしてコルーチンの将来像について探求します。

続きを読む
開発

PuTTYアイコンの進化:手描きからSVGへ

2025-03-12

この記事では、PuTTYのアイコンが1990年代の手描きから、今日のスケーラブルなSVGベクターへと進化してきた過程をたどります。著者は当初、MSVCアイコンエディターを使用して32x32ピクセルのアイコンを作成しましたが、当時の16色パレットとディスプレイ技術の制約を受けました。時間とともに、より高解像度のディスプレイと様々なツールのニーズに対応するため、著者はプロセスを改良し、最終的に複数のサイズとフォーマットでアイコンを自動生成するスクリプトを開発しました。これは、真のスケーラビリティを実現するSVGバージョンへとつながりました。デザインの理念はシンプルで明確であり、「安心できる古風な」PuTTYのスタイルを反映しており、今日まで使用されています。

続きを読む

バグトラッカーの再考:懸念事項の分離

2025-03-10

様々なバグトラッカーを長年使用してきた著者は、そのデータ表現に根本的な欠陥があり、繰り返し不満が生じていることを突き止めました。3つの主要な問題が強調されています。事実と計画を混同する統一された「修正バージョン」フィールド、コードの現実と将来の意図の境界線を曖昧にする2段階のステータスと解決策システム、バグリストとToDoリストの混同により、バグ以外のタスクに困難が生じることです。著者は「懸念事項の分離」という原則を提案し、「事実」と「計画」のテーブルに分割することを提案しています。「事実」テーブルには、バグの客観的な情報(存在、バージョン、重大度)が記録され、「計画」テーブルには、意図、タイムライン、主観的な優先順位が追跡されます。この分離により、バグトラッキングが合理化され、さまざまなプロジェクトタイプにより適応し、バグ解決のみに焦点を当てたプロジェクトでは「計画」テーブルを完全に省略することもできます。

続きを読む

一人で開発:ベテランプログラマによるGit Forgeの拒否

2025-03-05

ベテランプログラマのSimon Tatham氏は長年、GitHubやGitLabなどのコードホスティングプラットフォームを利用せず、独立したGitリポジトリを使用してオープンソースプロジェクトを維持してきました。彼はその理由として、信頼性(大企業への依存ではなく自己管理を重視)、効率性(複雑なForgeシステムのオーバーヘッドを回避)、ユーザーエクスペリエンス(アカウント作成の手間を最小限に抑える)、ワークフローの自律性(プラットフォームの制約よりも独立した開発プロセスを優先)を挙げています。彼はメールによるパッチ送信を好み、GitリポジトリのURL、増分Gitバンドルなどの好ましい方法を詳細に説明し、それぞれの理由を説明しています。彼の方法では透明性が低いことを認めていますが、Forgeの利点が欠点を上回るとはまだ確信していません。彼は、透明性と軽量な管理の両方を提供する代替システムにオープンであると結論付けています。

続きを読む

XORの深淵:ブール論理から暗号化まで

2025-02-18

この記事では、一見単純なコンピュータサイエンスにおけるXOR(排他的論理和)演算子について深く掘り下げます。ブール論理におけるXORから始まり、整数のビット演算へと進み、暗号化、ピクセルグラフィックス、ゲーム理論、有限体におけるXORの応用を探ります。著者は魅力的なストーリーテリングと数多くの例を用いて、XORの特性と用途、例えば暗号化における単純な暗号化手法、ピクセルグラフィックスにおける可逆的な描画と消去、Nimゲームにおける最適戦略の決定などを説明します。最後に、この記事ではXORを、集合の対称差、指数2の群、Nim和、GF(2)有限体、CRCチェックサムといった数学的概念と結びつけ、XOR演算子のより深い数学的基礎と幅広い応用を示します。

続きを読む
開発