【IT】C/C++に死を [無断転載禁止]©2ch.net

1ノチラ ★2017/07/17(月) 15:40:31.76ID:CAP_USER
プログラミング言語Cはおぞましい。いや、素晴らしくもある、もちろん。私たちの住む世界の大部分はCの上に作られている。そしてほとんどのコンピュータープログラミングの基礎をなしている、歴史的にも、実質的にも。Xavier Nielの革新的な “42” スクールのカリキュラムが、学生に標準Cライブラリー関数を一から書き直させることから始まるのはそれが理由だ。しかしCは、C自身が作り上げたこの世界にとってもはやふさわしくない。

「おぞましい」と言ったのは「悪い」ということではなく「畏敬の念を起こさせる怖さ」という意味だ。Cはモンスターになってしまった。あまりに多くの大砲を与えたためにユーザーは自分の足を撃ち抜いてしまう。豊富な体験が教えるところによると、セキュリティーホールにむしばまれることなく大量のCコードを書くことは非常に困難であり「事実上不可能」になりつつある。2年前、私は最初の「Cに死を[Death To C]」の記事にこう書いた:

原理上、ソフトウェアが成長し進化して成熟度を増すほど、セキュリティー脆弱性は複雑になっていく。しかし、C/C++で書かれたソフトウェアにそれは当てはまらない。バッファーオーバーフローや宙ぶらりんのポインターのために壊滅的セキュリティーホールが生まれる事態は、繰り返し繰り返し起こっていて、昔も今も変わることがない。

私たちはこれ以上巨大な口を開けたセキュリティーの盲点を放っておくことはできない。引退して別の言語に取って代わられる時期はとうに過ぎている。問題なのは、ほとんどの近代言語はCを置き換えようという意欲すら持っていないことだ。〈中略〉どの言語もCが最も得意とすることに長けていない ―― 例えばシステムの奥深くまで掘り下げてマッハスピードで動くこと。

あなたがデベロッパーなら、私の言いたいことはもちろんわかっているだろう。Rustの長所を並べることだ。実際これは有望なC/C++の後継だ。2年前に私は、新規の下層レベルコーディングをCではなくRustで書くことを勧めた。つまるところ、穴に関して何よりも大切なのは、掘るのをやめることだ。

Security tips when programming in C (2017 edition):
1) Stop typing
2) Delete what you've already typed
[Cでプログラミングする際のセキュリティー心得(2017年版):
1)タイプするのをやめる
2)すでにタイプしたものを削除する]

今私は、エンジニアが既存のCコードをリファクタリングするとき、特にパーサーなどの入力ハンドラーを書き直すとき ―― ゆっくりと、すこしずつ ―― Rustで置き換えるように真剣に勧めている。
http://jp.techcrunch.com/2017/07/17/20170716death-to-c/

514名刺は切らしておりまして2017/07/20(木) 00:11:37.20ID:10Cnq6Ze
>>511
そして、老害はメニーコアの時代について行けない・・・

515名刺は切らしておりまして2017/07/20(木) 00:17:09.77ID:zoXbw3GM
頓珍漢なレスしとる奴おるね

516名刺は切らしておりまして2017/07/20(木) 06:42:05.97ID:QZWrgkXr
>>386
Pascal式は、文字列の長さが想定を越えると破綻する。

517名刺は切らしておりまして2017/07/20(木) 06:48:26.60ID:wV8uxmeH
C言語野郎はなんでもループで回したがる

518名刺は切らしておりまして2017/07/20(木) 07:04:19.85ID:2LUooeay
だってループしかないだろw

519名刺は切らしておりまして2017/07/20(木) 07:10:14.51ID:0Q3wS7C3
「カーニハンの呪い」
64KのメモリしかないPDP11上でマルチタスクマルチユーザのOSを記述する為に開発した、最適化も出来ないC言語を、日本のお馬鹿なソフト会社はその必要も無いアプリ開発に適用し、ポインターも解らぬPGにカーニハンの教科書を与えて開発させた。
その結果アプリは予想外のエラーを吐き続け、殆どのプロジェクトは終了しないまま頓挫した。
これにより、日本で何兆もの費用と、IT発展の貴重な時間が失われた。

520名刺は切らしておりまして2017/07/20(木) 07:58:08.98ID:6ylJUamz
OSやデバイスドライバもかける、速度が速い、
ちょっとでもミスすればすぐにバグで動作異常になったりセキュリティホールができたりする

たとえるならF-1カーみたいなもんだな

問題なのは、それを一般アプリ開発にまで使用してる点

一般人がF-1カーで通勤したり買い物にいって事故おこしまくってる感じ

521名刺は切らしておりまして2017/07/20(木) 07:59:59.82ID:r0fKJAp6
ぬるぽ

522名刺は切らしておりまして2017/07/20(木) 08:00:48.92ID:6ylJUamz
現代のPCやスマホ、とくにGUIアプリの標準開発環境がC++ってのが悪い

523名刺は切らしておりまして2017/07/20(木) 08:00:57.33ID:mv+ttJfq
>>512
どんなプログラムで比較したのか
逆にErlangにメリットがないならそもそもErlangで試したこと自体ナンセンス
そんでErlangのメリットって速さだけじゃなくて、並行プログラミングやリカバリの基盤が揃ってることとかもあるからねぇ
それらをC++で実装しようとすると結局Erlangを再発明することになるだけなんだよ

524名刺は切らしておりまして2017/07/20(木) 08:30:46.09ID:2LUooeay
>>522
標準がC++のプラットフォームなんて聞いた事無いが

525名刺は切らしておりまして2017/07/20(木) 08:42:59.14ID:51S8swHU
いい加減数値解析の分野でもFORTRANに引導を渡してくれ

526名刺は切らしておりまして2017/07/20(木) 09:11:46.85ID:LP13iyZ/
>>1
Rustで書き換えるくらいじゃどうにもならない

527名刺は切らしておりまして2017/07/20(木) 09:12:10.30ID:LP13iyZ/
>>524
BeOSとかかな

528名刺は切らしておりまして2017/07/20(木) 09:39:31.35ID:2LUooeay
>>527
ああ、そうかも

529名刺は切らしておりまして2017/07/20(木) 09:49:11.22ID:10Cnq6Ze
>>520
F-1カーでも速度に影響ない範囲で安全な方がいい

530名刺は切らしておりまして2017/07/20(木) 10:14:22.31ID:bfAf6j8B
>>454
ビャーネ・ストロヴストルップの名前を見て、これを思い出した。
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
自分もウソだと信じたい。

531名刺は切らしておりまして2017/07/20(木) 10:48:12.34ID:WYsdKL9v
>>517
>C言語野郎はなんでもループで回したがる

やっぱ再帰だよなw

532名刺は切らしておりまして2017/07/20(木) 10:56:41.52ID:2LUooeay
>>530
くそわろたw

533名刺は切らしておりまして2017/07/20(木) 11:32:00.78ID:69yjRSXd
>>530
まあジョークだと思うけど
内容については辻褄が合ってるという非常に同意できる

534名刺は切らしておりまして2017/07/20(木) 16:26:06.26ID:iUsvHKfQ
d....D言語は…?

535名刺は切らしておりまして2017/07/20(木) 18:45:26.91ID:wV8uxmeH
Dの次はI言語だな

536名刺は切らしておりまして2017/07/20(木) 19:00:25.83ID:Ir5FbZpN
はじめてのC
さいごまでC

537名刺は切らしておりまして2017/07/20(木) 19:37:40.38ID:wV8uxmeH
Cの無作法とJavaの回りくどさを
双方あわせもつ言語C++

538名刺は切らしておりまして2017/07/20(木) 21:21:42.91ID:CFTD9Zde
>>524
WindowsもMFCがバージン3の頃はそうでしょ

539名刺は切らしておりまして2017/07/20(木) 21:32:57.42ID:CFTD9Zde
>>454
C++はコーディング規約のある仕事ならそれに従っていればいいんだが
独自にあれやりたいこれやりたいということであれば
Addison-Wesleyのprofessional computing seriesのC++のやつ、C++ in-depth seriesを一通り読まないと駄目

最低でもまとめ的な「C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス」は必要
それでも並列やWinの構造化例外はカバーしてない

540名刺は切らしておりまして2017/07/20(木) 22:07:25.25ID:LQckaH5H
>>539
C++ in-depth series、残念ながら日本語訳はほとんど古書扱い
日本語訳が残念なものもあったね
ざっと見渡すと書斎に9冊(原著3冊)、残りは職場だな

541名刺は切らしておりまして2017/07/20(木) 22:12:58.42ID:CFTD9Zde
>>540
まあ必要な人は原書読める人が多いからね

542名刺は切らしておりまして2017/07/20(木) 22:32:56.79ID:fq48LG2E
技術書なんて英語力悲惨な自分ですら
英語の原書の方が圧倒的に分かりやすいからな

543名刺は切らしておりまして2017/07/20(木) 22:50:37.01ID:LQckaH5H
>>542
うん、もう少しがんばって訳して欲しい。
プログラム関連の本や企画書(これはダメだよ)で、
文中に出でくる関数名やメソッド名を翻訳してしまうのはやめてくれ

544名刺は切らしておりまして2017/07/20(木) 22:59:45.49ID:YMQh2GMH
ところでRust がC++と同等の実行速度というのは本当なのか
LLみたいにCで作ったライブラリを呼び出しといて速いとか言ってるんじゃないのか?

545名刺は切らしておりまして2017/07/20(木) 23:02:32.43ID:CFTD9Zde
出版社が改訂する人的リソースも割いてない
ハウツーの方が儲かるからな

546名刺は切らしておりまして2017/07/20(木) 23:03:55.43ID:VV1AI6Ue
>>530
本物じゃないの、これは。

547名刺は切らしておりまして2017/07/20(木) 23:05:00.41ID:CFTD9Zde
>>544
応用によってはありうるでしょ
Javaだって応用によってはC/C++より速いし
JITのお陰で

でもRustで書いたライブラリが
OpenSSLの代わりが勤まるかというと違う

548名刺は切らしておりまして2017/07/20(木) 23:09:17.13ID:CFTD9Zde
>>546
ニセモンだよ
初期のC++にはテンプレートはないから
Hello, World!くらいで実行形式は増大しない
iostreamもまだない
C++、というかC with Classの初期の論文も読んだことない生半可な奴が書いたレベルの低い創作

549名刺は切らしておりまして2017/07/20(木) 23:10:23.08ID:VgKi1Vs3
セキュアな環境はどうやって構築されているのか考えたらナンセンスな主張だとわかろう

550名刺は切らしておりまして2017/07/20(木) 23:24:16.22ID:YMQh2GMH
>>547
Javaなんかと同じで特定の都合がいい条件を用意した結果だけを出して同等とか言ってるってことか

551名刺は切らしておりまして2017/07/20(木) 23:36:33.68ID:lit/bjAj
C++がいらない子なだけだろ

552名刺は切らしておりまして2017/07/20(木) 23:37:15.36ID:fq48LG2E
JITでもまともにコーディングしたC++に最適化かけたものより速くなるわけ無いじゃない。

JITで速くなるのは最内ループに分岐があるが実データでは常に同じ方向に分岐するようなコードとかでしょ。
でそれが実際にはループ外で判断できる場合じゃないとJITでも分岐削れないからそういうコードかけよとなる。

553名刺は切らしておりまして2017/07/21(金) 00:01:42.53ID:te9bd72i
>>552
ホットスポットはプロファイル取って
統計情報に基づいた最適化
アンローリングなんかも
やるかやらないかどの位するか
実測値に基づいてやる

554名刺は切らしておりまして2017/07/21(金) 00:02:41.97ID:+K8jfQZA
>>552
ムチはツミ

555名刺は切らしておりまして2017/07/21(金) 00:53:07.14ID:cQRn+Vpb
>>552
十年くらい前の知識だな
化石かよ

556名刺は切らしておりまして2017/07/21(金) 01:06:05.20ID:mGPsx4LD
C言語は、通信、制御系の雄者
雄叫びは定期的に挙げます
セキュリーホール・・・アフリカのサバンナで生息してるライオン君

557名刺は切らしておりまして2017/07/21(金) 01:06:42.23ID:mGPsx4LD
>>25
それがC+でC++の役回り

558名刺は切らしておりまして2017/07/21(金) 01:38:21.62ID:Xu72XYXw
Cどころか、Bにも達したことがない俺はどうしたらいいんだ!!!

559名刺は切らしておりまして2017/07/21(金) 01:41:56.21ID:bIkgw2mP
>>558
キャバクラに行って経験値積めば

560名刺は切らしておりまして2017/07/21(金) 01:48:25.49ID:Xu72XYXw
>>559
そんなことしたら、俺C++になっちまうだろ
手がつけられなくなるぜ

561名刺は切らしておりまして2017/07/21(金) 02:28:53.84ID:zAZf8Del
F#「せやな」
R「せやな」
S「せやな」

562名刺は切らしておりまして2017/07/21(金) 02:42:09.47ID:MNKfVOXw
F#は既に死んでるな
Sはまだ生きてる?

563名刺は切らしておりまして2017/07/21(金) 02:47:33.84ID:zAZf8Del
F#は死んだ。letにすべてを託して。

564名刺は切らしておりまして2017/07/21(金) 02:59:45.34ID:bIkgw2mP
>>560
Cすっ飛ばせば「死を」とか言われなくて済むからいいな

新着レスの表示
レスを投稿する