「プログラミング」の記事一覧
-
Pythonのasync/awaitを内部から理解する
2025-05-09 10:54
IT・ネット本記事は、Pythonにおけるasync/await構文の内部的な動作を解説する技術解説です。非同期処理の本質である並行性と並列性、イベントループ、I/O多重化、コルーチンなどの基礎概念を紹介した上で、TCPエコーサーバの実装例を通じて、従来のスレッド方式からジェネレータ、そしてasync/await構文への発展的実装を段階的に示しています。async/awaitの背後にある仕組みを丁寧に解説し、理解を深める内容となっています。
-
Prologでの平均計算:教育的制約と実用性のジレンマ
2025-05-07 19:54
文化・芸術Danielのブログでは、Prologによる平均計算の実装を例に、教育現場における非効率なコーディング課題について皮肉を込めて論じられています。標準ライブラリを用いれば簡潔な処理も、教育目的では再帰による低水準な実装が求められ、実用性が損なわれると指摘。Prologの有用性や可読性を犠牲にするような教育手法に対し、問題提起をしています。
-
CやC++だけじゃない:コンパイラの使い方を学ぶ意義
2025-05-05 02:17
IT・ネットこの記事は、CやC++の学習は豊富な良書で楽しい体験だったが、プログラムを実行形式に変換するためのコンパイラやリンカの使用方法を学ぶのは困難だったという著者の経験から始まります。その原因として、ツールの使い方に関する体系的な解説がほとんど存在しない点を挙げています。そこで本シリーズでは、コンパイラドライバ、プリプロセッサ、コンパイラ、リンカ、ローダといった各段階を丁寧に解説し、特に初心者がつまずきやすい実用的な知識のギャップを埋めることを目的としています。
-
浮動小数点乱数を正確に生成する新アルゴリズム
2025-05-04 14:56
科学・技術多くのプログラミング言語で使われている乱数生成アルゴリズムは、浮動小数点数を正確には扱えず、[0, 1)の範囲でも一部の値しか生成できない問題があります。この記事では、全ての浮動小数点数の範囲をカバーし、ビットごとの偏りもなく、丸めモードにも対応した新しいアルゴリズムを紹介しています。計算効率も高く、シミュレーションや数値計算における乱数の精度向上に貢献するものです。
-
プログラミング学習に重要なのは「言語脳」だった
2025-05-02 15:19
科学・技術ワシントン大学の研究によると、Pythonプログラミングの習得には数学的能力よりも言語能力が大きく影響することが明らかになりました。実験では、事前に言語や問題解決力を測定し、その後Pythonを学習させたところ、学習速度と習得度は言語能力と強く関連していました。特に脳波のβオシレーションが高い被験者ほど学習が速く、理解も深い傾向が見られました。この研究結果は、プログラミング教育や多様性促進のあり方に影響を与える可能性があります。
-
JDK 25でStringが高速化、定数マップの性能が8倍に
2025-05-01 06:33
科学・技術JDK 25では、JavaのStringクラスにおいてhashCodeが@Stable注釈によって定数畳み込み可能になり、定数文字列をキーとする不変Mapの性能が大幅に向上しました。これにより、MethodHandleを用いたネイティブ呼び出しのようなケースで、最大8倍の高速化が実現されています。ただし、ハッシュコードが0の文字列には適用されない制約がありますが、今後改善が見込まれます。
-
文字列の長さ制限、最適な方法とは?
2025-04-30 20:37
IT・ネット文字列の長さ制限は簡単そうに見えて、実はプログラミングにおいて多くの落とし穴があります。使用する言語やフレームワークによって「長さ」の定義が異なり、UTF-8バイト数、UTF-16コードユニット、Unicodeコードポイント、グラフェムクラスタなど複数の数え方が存在します。これにより、フロントエンドとバックエンド、データベース間での不一致がバグやユーザー体験の悪化を引き起こします。記事では、それぞれの長さの数え方の違いと利点・欠点を解説し、Googleの推奨する「Unicodeコードポイントによる制限」が最も実用的だと結論付けています。ただし、すべてに完全な解決策はなく、場面に応じた意図的な選択が重要であると強調されています。
-
LinuxでPATHは幻想?実際のコマンド探索の仕組み
2025-04-29 22:35
科学・技術Linuxでコマンドがどのように実行されるかを解説した記事。環境変数PATHによりコマンドが探索されるように見えるが、実際にはシェル(dashなど)がPATHを解釈し、パスを決定してexecveを呼び出している。またPythonやGo、Rustなど各言語の標準ライブラリもPATHの探索処理を自前で実装している。つまり、PATHはカーネルレベルでは存在せず、すべてユーザーランドの実装で機能しているというのが実態。シェバンの記述でも絶対パスが必須となる背景もこれに起因する。