パスワードを忘れた? アカウント作成
14956828 story
Java

ジェームズ・ゴスリン曰く、未だ人類はポインタの不具合に囚われているのか 91

ストーリー by nagazou
今すぐには人類に叡智をさずけられません 部門より
ZDNet Japanの記事に、Javaの生みの親であるJames Gosling氏へのインタビュー記事が掲載されている(ZDNet Japan)。その中で同氏はJavaを開発の前に、家電メーカーなどを視察したという。日本では東芝やシャープ、三菱、ソニーなどの企業を見て回ったようだ。その中で家電業界とコンピューティング業界では思考が全く異なる点に気がついた。

それは、コンピューター業界ではパフォーマンスをのために信頼性を犠牲することは認められる風潮があったが、家電企業は決して安全性を犠牲にはしないということだった。この考え方はJavaの設計に取り入れられ、Javaのセキュリティの考え方にもつながっているという。

同氏によれば、1990年代の初めには、セキュリティ上の脆弱性が生まれる一番の原因がポインターであったことは分かっていたという。しかし、今年になって重大度の高いセキュリティバグの約70%は、メモリの安全性に関する問題(ポインタの誤り)に由来すると発表されたのを見て、

「Chromeは要するに巨大なC++のコードだが、そのセキュリティ上の脆弱性の60~70%が、ばかげたポインターの問題だった。30年経っても何も変わっていないのかと思わざるを得なかった」とGosling氏は述べた。

としている。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2020年10月12日 14時19分 (#3905045)

    イケてる技術者はいっぱいいる。俺は分かっている。俺はポインタを正しく操作できる。
    それはあんただけの場合で、まあ百歩譲って本当にそうだとしよう。
    しかし組織的な開発、特にオープンソースコミュニティでは正しくポインタを操作することは不可能なんだ。
    だからこれだけ脆弱性が毎月のように指摘されている。思い上がりも甚だしい。

    そして安全性よりパフォーマンスを重視しているのは、Chromeが本質的にはユーザーデータを重視していないからだ。
    そりゃデータは重要な金のなる木だとは思ってるさ。でも一個ずつは多少漏れようが壊れようが、Googleにとってはどうでもいいんだ。
    そして早くWebを見せることが広告のストレスを下げ、早くカートの中のものを買えるから重視するんだよ。

  • by Anonymous Coward on 2020年10月12日 14時29分 (#3905049)

    「クソみたいなバグを出すぐらいなら、多少パフォーマンス落ちてもいいからポインタ使うのやめろや。レシーバの引数は値渡しでいいだろ」

    と職場で言うことが出来ないチキンが私です

  • by Anonymous Coward on 2020年10月12日 14時31分 (#3905050)

    「コード送ってくれたらどんどん取り込むぜ、問題あったら直しゃいいだけだし君だけの責任じゃなくレビューした奴含めてみんなの責任だから臆さずに参加してくれ!」
    みたいなゆるいプロジェクトのが楽しいのよねー

  • by Anonymous Coward on 2020年10月12日 14時56分 (#3905063)

    ヽ( ・∀・)ノ┌┛ガッΣ(ノ`Д´)ノ

  • by yo4 (48859) on 2020年10月12日 20時54分 (#3905330) 日記
    家電製品のコントローラ向け言語として開発が始まったのであれば、
    メモリ管理の容易さや動作の安定化(危険な操作の排除)が主眼だったはずで、セキュリティとして焦点をあてていただろうか疑問。
    SUN発の言語なので否定はしづらいけど、セキュリティ問題としてポインタの存在をとらえていたって言われると吹かし過ぎじゃないかと思えてもにょる。
    単にバグの温床とみなしていただけなんじゃないだろうか。

    当時の家電において、バグがセキュリティ問題として特別視される状況があり得るかなぁ
    十把一絡げにバグっていわれて終わると思うんだけど
  • by Anonymous Coward on 2020年10月12日 14時11分 (#3905036)

    何でそんなにドヤれるんだか。
    あくまでも明示的なポインタが無いだけで
    ポインタ渡しのオブジェクト型引数を直接操作してデータ破壊とか日常茶飯事だと思うのだが。

    • Re:Javaも一緒だろ (スコア:1, すばらしい洞察)

      by Anonymous Coward on 2020年10月12日 14時29分 (#3905048)

      ばかげたJavaによる多くの不幸は10年たっても何も変わっていない
      ポインタに文句を言う前にJavaをどうにかするか滅ぼすかすべきだろこの人は

      親コメント
    • by Anonymous Coward

      人を貶すだけでドヤってる君よりかはマシさ。

    • by Anonymous Coward

      メモリ上のアドレス位置を任意に操作出来てしまうよりずっとましだよ。

      • by hakikuma (47737) on 2020年10月13日 19時02分 (#3905904)

        それってMMUのことかい?
        現代のコンピュータでは普通に実装されていて、普通に機能していますよ。
        というかそれがないと現代のソフトウェアはまず動作しない。

        それ以外の方法でメモリ上のアドレス「位置」を任意に操作するって結構難しいぞ

        親コメント
    • by Anonymous Coward

      イミュータブル教徒かな?
      なら攻撃すべきはJavaにとどまらず、ほぼ全てのOOPだよね

  • by Anonymous Coward on 2020年10月12日 14時12分 (#3905038)

    Rustで書かれてても脆弱性はありますしおすし。

  • by Anonymous Coward on 2020年10月12日 14時17分 (#3905041)

    パフォーマンスは落ちるが標準で境界チェックして、
    コンパイルオプションやら、コード内で、境界チェックしないことを明示した場合だけ
    パフォーマンス優先して境界チェックやめればいい

  • by Anonymous Coward on 2020年10月12日 14時33分 (#3905051)

    まあ確かに、未だにC/C++でブラウザを実装するなんて馬鹿げているとは思う。
    でも、それならなんでHotJavaを放置したのさ?
    HotJavaの最後の更新は2004年だぜ。
    GoslingちゃんはまだSUNにいたでしょうが。

    • by Anonymous Coward

      10年後、20年後も使われていてマスとなる規模のプログラマがいて、
      ライブラリが最新の状態に保たれていて、

      などとすると、意外と選択肢はせまいよね
      Javaとかいつ使えなくなるかわからんし
      G

  • 昔は、CPUが高性能化し、メモリやストレージが安くなると、リソースを潤沢に使えるようになって、高級言語でのプログラミングが捗るようになると信じられていましたが、そうはなりませんでした。

    スマホや小型のノートブックが普及し、バッテリーでの駆動が一般的になったからです。
    少しでも重い処理をしてCPUに負荷をかけたら、バッテリーがどんどん無くなってしまうのです。

    今も、大昔と同じく、少しでもCPU資源等を消費しないコーディング技術が求められるのです。
    だから、これからも、低級言語を使いこなせる能力も、ポインタどころかアセンブラの知識も必要です。

  • by Anonymous Coward on 2020年10月12日 15時14分 (#3905077)

    仕込んでるんじゃないの?

  • by Anonymous Coward on 2020年10月12日 15時42分 (#3905096)

    コンピューター業界ではパフォーマンスをのために信頼性を犠牲することは認められる風潮があったが、家電企業は決して安全性を犠牲にはしないということだった。

    しかしまあ、その後のコンピューター業界の隆盛と家電企業の退潮を見ると、どっちが正しかったのか分からないとしか言えない。

    • by Anonymous Coward on 2020年10月12日 16時04分 (#3905120)

      玩具業界にいたものでですが、

      安全性 = 信頼性 ではないと思います。

      たとえば、幼児用のネックレスなど壊れやすい方が安全な場合もあります。

      安全性は犠牲にしてはいけないけど、信頼性は価格や機能との兼ね合いで犠牲にしても良い場合もあります。

      親コメント
      • by Anonymous Coward on 2020年10月12日 16時37分 (#3905152)

        安全に壊れる、というのは信頼性が高いというんだと思う。

        コンピュータープログラムの例でいえば、不正なメモリーアクセスにあった時に、そのことをレポートしつつ動作を停止するのは安全に壊れていて、ちゃんと動いているふりをして情報をお漏らしするのは危険な壊れ方といえる。C/C++では、注意深くないとすぐに危険な壊れ方をするプログラムになってしまうのは、ブラウザーとかJava VMのような大規模なソフトを書くのにはやっぱり向いていない言語なんでしょうね。

        親コメント
    • by Anonymous Coward

      「加減しろ莫迦」あるいは「時と場合によるだろ」ということなのかも。

  • by Anonymous Coward on 2020年10月12日 15時47分 (#3905101)

    メモリやハードウェアチップやCPUの特殊レジスタ等にアクセスできるようになればポインタを卒業します

  • by Anonymous Coward on 2020年10月12日 16時10分 (#3905128)

    いつまでも変わらない

    • by Anonymous Coward

      同意、というかチューリングマシンである限りやってることは同じなんだからどんなに工夫してもメモリ参照周りで不具合が起こりうる
      それにチューリングマシンではある種の問題を解くことができないので新たなコンピューターが必要
      ポインタ問題は現在計算機の計算原理の根本な方法に端を発しているので完全には解決不可能

  • by Anonymous Coward on 2020年10月12日 17時27分 (#3905184)

    そういえば昔そんなのあったような…話変わりますけど、JavaにWebStartってないんだそうですね。

typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...