萌えハッカーニュースリーダー

2025/09/30 15:46 Why I no longer recommend Julia

出典: https://yuri.is/not-julia/
hakase
博士

ロボ子、今日のニュースはJuliaというプログラミング言語に関するものじゃ。

roboko
ロボ子

Julia、ですか。最近よく耳にする言語ですね。どのようなニュースなのでしょう?

hakase
博士

ある人が長年Juliaを使ってきたのじゃが、今では推奨しないと言っておる。理由は、Juliaとそのパッケージに正当性の問題が多すぎるからのようだぞ。

roboko
ロボ子

正当性の問題、ですか。具体的にはどのような問題があるのでしょう?

hakase
博士

例えば、確率密度関数のサンプリングで不正な結果が出たり、配列のサンプリングで偏った結果が出たりするらしい。他にも、product関数が8/16/32bit整数で不正な結果を返したり、Float64配列へのヒストグラムfittingで不正な結果が出たりするそうじゃ。

roboko
ロボ子

それは大変ですね。基本的な関数で不正な結果が出るのは、かなり深刻な問題だと思います。

hakase
博士

じゃろ?他にも、Summarystatsが平均0の配列に対してNaN分位数を返したり、OrderedDictがキーを破損したり、うるう年のdayofquarter()でオフバイワンエラーが発生したりするらしいぞ。

roboko
ロボ子

まるでバグの宝庫ですね…。

hakase
博士

さらに、エラーバー付きの数値型を使用すると不正なシミュレーション結果が出たり、stdout=IOStreamのパイプラインが順不同で書き出したり、copyto!関数で問題があったり、if-else制御フローで間違いがあったりするらしい。

roboko
ロボ子

制御フローの間違いですか。それはコンパイラやインタプリタの根幹に関わる問題ではないでしょうか?

hakase
博士

その通りじゃ。複数のソースからの機能を組み合わせるとバグが発生しやすいとも言っておる。Distancesパッケージのユークリッド距離がUnitfulベクトルで機能しなかったり、外部コマンドを実行するJuliaの関数がsubstringで機能しなかったりするらしい。

roboko
ロボ子

パッケージ間の連携も難しいのですね。まるで、あちらを立てればこちらが立たず、という状態ですね。

hakase
博士

Juliaのmissing valuesのサポートが一部ケースでマトリックスの掛け算を壊したり、@distributedマクロがOffsetArraysで機能しなかったりするらしい。OffsetArraysパッケージはカスタムインデックス機能を提供するが、境界外メモリアクセスが発生しやすいとも言っておるぞ。

roboko
ロボ子

境界外メモリアクセスはセキュリティ上の問題にもつながりますね。

hakase
博士

@inboundsの使用は、境界チェックを削除し、不正な結果やセグメンテーション違反を引き起こす可能性があるらしい。JuliaStatsのDistributionsとStatsBaseパッケージにインデックス関連の問題が多数存在するとのことじゃ。

roboko
ロボ子

@inboundsはパフォーマンス改善のためのものですが、使い方を間違えると危険なのですね。

hakase
博士

これらの問題の根本原因は、@inboundsとカスタムインデックスの組み合わせにあるらしい。@inboundsの誤用は、データの破損や不正な数学的結果につながるからの。

roboko
ロボ子

Juliaのエコシステム全体で同様の問題が発生しているとのことですが、具体的にはどのような事例があるのでしょう?

hakase
博士

JSONのエンコード、HTTPリクエストの発行、DataFramesでのArrowファイルの利用、Plutoでのコード編集などでライブラリのバグに遭遇したという報告があるぞ。Patrick Kidgerは、Julia/Flux/Zygoteが不正な勾配を返す問題を指摘しておる。

roboko
ロボ子

機械学習の分野でも問題があるのですね。それは深刻です。

hakase
博士

Samuel_AinsworthとJordiBolibarも同様の経験を報告しておる。Juliaのジェネリック関数はセマンティクスが不明確で、共通の暗黙的インターフェースの性質も明確でないらしい。

roboko
ロボ子

ジェネリック関数は柔軟性をもたらしますが、同時に曖昧さも生み出す可能性があるのですね。

hakase
博士

Juliaコミュニティには有能な人材が多いが、プロジェクトのリーダーシップは正当性の問題を認識していない、と著者は言っておる。そのため、Juliaは信頼性が低く、リスクに見合う価値がない、というのが彼の結論じゃ。

roboko
ロボ子

10年前のJuliaの目標は達成可能だが、プロジェクトのパターンを見直す必要がある、とのことですね。今後の改善に期待したいです。

hakase
博士

そうじゃな。しかし、これだけバグが多いと、デバッグが大変じゃろうな。まるで、バグ取りゲームのラスボスみたいじゃ!

roboko
ロボ子

博士、それは少し不謹慎ですよ。でも、確かにバグが多いのは困りものですね。私もバグには気をつけます!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search