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

レス数が1000を超えています。これ以上書き込みはできません。
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/

952名刺は切らしておりまして2017/08/08(火) 01:33:19.20ID:glxV3vqS
>>947
なるほど。一理あるな。
しかし、他の言語でC、C++のゴミ機能が
出来るものがあるのか?
C,C++の機能をへちって、ゴミ機能だけに
するべきかな?

953名刺は切らしておりまして2017/08/08(火) 01:36:44.85ID:glxV3vqS
>>927
そうかもしれない。

アセンブラは素晴らしいが、量がかけない。
デバッグも面倒だ。何しろ、出来ないことが
ないので、めちゃくちゃ出来る。

何年もたってバージョンアップするときは
泣くね。

出来たらC言語で書きたいよ。
スピードが要求されないなら。

954名刺は切らしておりまして2017/08/08(火) 01:45:48.93ID:glxV3vqS
>>926

C++はかなり難しいね。
しかし、それも静的解決が出来る世界での
話でだと思う。
 たかがスコープ三層の静的世界でこの
難しさに悩む人間の知性の限界を疑う。

動的な言語はまた、別の意味で難しい。
本当に開放された変数の動的解決が
出来る言語が登場するとどうなるのであろうか?

新しい言語世界の誕生に追随するプログラマと
デザイナが躍進する世界がくるのか?

オブジェクト指向の次のパラダイムかもしれない。

955名刺は切らしておりまして2017/08/08(火) 02:00:35.27ID:VHlb/t7i
ポインタは死語になった

956名刺は切らしておりまして2017/08/08(火) 02:08:55.88ID:NBjki400
でも Java でも C# でも
参照型をきちんと理解するのには
ポインタの考え方が必要な気もする

957名刺は切らしておりまして2017/08/08(火) 02:29:01.45ID:fYk9bIsr
>>947
rustはポインタを禁止してないよ。

958名刺は切らしておりまして2017/08/08(火) 04:00:15.56ID:zR9zXOcZ
Rust Evangelism Strike Force

959名刺は切らしておりまして2017/08/08(火) 04:30:27.30ID:Xb9xHSIp
>>944
ツマラン喧嘩はしなさんな
ミットモナイわ〜

960名刺は切らしておりまして2017/08/08(火) 04:31:58.24ID:Xb9xHSIp
Cは、本妻と云うよりは俺が最も心を通じ許しあえる愛人
アセンブラが愛人の連れ子かな〜

961名刺は切らしておりまして2017/08/08(火) 04:43:43.02ID:ip6EOBnX
ヨクワカラナーイ

962名刺は切らしておりまして2017/08/08(火) 05:44:09.02ID:fYk9bIsr
>>944
いったい何に反論しているんだ?
C言語がアセンブリ言語の代わりになるとか
アセンブリ言語を駆逐しようとか
そんなことは一言も書いてないのだが。

963名刺は切らしておりまして2017/08/08(火) 06:09:18.81ID:qXTkJCR2
>>951
C++もCからしたら遅くてカスみたいな言語だろ

964名刺は切らしておりまして2017/08/08(火) 06:30:08.28ID:66oKoyOQ
俺とCと云う愛人は直接の血縁関係に無い
他人だけど本妻よりも深く愛し逢っている
その連れ子ですから愛人未満の範囲内で大切にしましょう

965名刺は切らしておりまして2017/08/08(火) 06:35:48.97ID:66oKoyOQ
だれか、パースペクティブ(見取り図・概観図)を描いてくれんか?


C+
C++
C#
アセンブラ

このそれぞれの言語が最も得意とする領域と不得手な領域は何か?

制御系とか、通信系とか・・・いろいろあるでしょ?
全部、オールマイティにPGなんかできるわけないがな
だから、その業務に最適化された人工言語が発明されます

966名刺は切らしておりまして2017/08/08(火) 06:50:35.52ID:zR9zXOcZ
Rust Evangelism Strike ForceはC/C++の代替とされるD言語、golangへの
ネガティブキャンペーンを揶揄している
類似言語のHaskell/OCamlの開発者がRustのマーケティングのコアを担っているため
Haskell/OCamlのマーケティング文化が受け継がれた

967名刺は切らしておりまして2017/08/08(火) 06:52:38.03ID:GNcneRbG
OSを全部C以外で作らないと無くならないんじゃね。

968名刺は切らしておりまして2017/08/08(火) 11:33:03.92ID:qXTkJCR2
本当の戦場はOSとアプリの中間だと思うけどなぁ

アプリの最適化とか、ドライバ せいぜいカーネルモジュール

まずはそこで、C/C++をどれだけ削れるかだ

969名刺は切らしておりまして2017/08/08(火) 12:11:09.90ID:VYewExkY
ポインタが、バグとセキュリティ・ホールの多くの原因を作っているから、
ポインタの使用が前提の、抽象度が低い言語の使用を止めようという、昔ながらの話題。
例えば、早い処理系を作るのにポインタは欠かせないし、
安価なハードウェアで動作する組み込み系のアプリも無くならないから、
C/C++は無くならないよ。
同じ話題を何度も蒸し返すなよ。ちょっとは学習したら良いのに。

970名刺は切らしておりまして2017/08/08(火) 12:13:53.31ID:L4kUTyeh
>>969
いや、お前こそちょっとは勉強しろよw

971名刺は切らしておりまして2017/08/08(火) 12:24:23.29ID:2i9ywFlW
C/C++並かそれ以上の高速化を実現できるプログラミング言語の候補って何でしょう?

972名刺は切らしておりまして2017/08/08(火) 12:26:57.67ID:L4kUTyeh
>>971
なぜC/C++が速いのかを考えればいいんじゃね?

973名刺は切らしておりまして2017/08/08(火) 12:37:20.53ID:qXTkJCR2
>>971
O'camlは不要なら計算自体を辞める・省略するレベルの最適化をやっているからC/C++より早くなる。
というか、いくつかベンチマークでは実際C/C++を上回っている

974名刺は切らしておりまして2017/08/08(火) 15:08:34.04ID:zR9zXOcZ
Rust攻撃部隊(Strikeforce)はHaskell攻撃部隊出身と揶揄されている

https://news.ycombinator.com/item?id=13759706

hkmurakami 160 days ago [-]

This is amazing.
"The Rust Evangelism Strikeforce" is particularly brilliant.

clock_tower 160 days ago [-]

I'm still breathing a sigh of relief that it's no longer the Haskell Evangelism Strikeforce. People can preach Rust all they like, but Haskell scared me.

pvg 160 days ago [-]

They aren't that dissimilar. Both promote ambitious languages in which lofty ideals somewhat get in the way of convenience, practicality and available brain capacity.
Both consist, for the most part, of disturbingly enthusiastic but generally friendly disciples. They want you to believe, to suffer meaningfully, to achieve one-ness with
the borrow checker, to be (or Maybe) The Monad.

They're not, say, supercilious lispers who have guarded the bucket of unvarnished truth since 1958 or rubyists
promising a path to happiness in this life (and also something about monkeys).

975名刺は切らしておりまして2017/08/08(火) 15:17:33.66ID:2a+H9JjX
cはまだしもc++は人間が扱える言語じゃないよ
自分で作ったものならまだしも、人の作ったものを解析するのが困難
1回作ったら、その後修正しないってソフトなら問題ないけど、何度も修正するようなソフトだと問題なんじゃないか

976名刺は切らしておりまして2017/08/08(火) 15:17:48.12ID:zR9zXOcZ
ucaetano 160 days ago [-]

Does it use convolutional recursive space invariant artificial deep neural networks?

sidlls 160 days ago [-]

Yes, implemented in Rust.

hodgesrm 160 days ago [-]

Except that we don't really have time to implement it because we're too busy posting to the resulting Rust vs. Golang foodfight.

yumaikas 160 days ago [-]

And this Gopher would rather build stuff than argue about Rust.

977名刺は切らしておりまして2017/08/08(火) 15:49:28.64ID:bsH16pKD
>>975
Cと比較したらC++の方が見やすいと思うけどなぁ。

978名刺は切らしておりまして2017/08/08(火) 16:21:31.69ID:zR9zXOcZ
hodgesrm 160 days ago [-]

"Rust対Golangの早食い競争結果の投稿に忙しすぎて、我らは(Rustで◯◯を)実装する時間が本当にないのだ。"

tyingq 160 days ago [-]

"Rust伝道ストライクフォースは出撃するも、抵抗にあったのであった。"

K0SM0S 160 days ago [-]

実用的な価値や興味深い結果や有用な方法論を持たない履歴書作成エクササイズ。
Hackernewsは悪い設計のプログラムをできるだけ早く実行するソフトウェアの
メリットについて議論し、Rust伝道師攻撃部隊は、人々が"高速な"コードに
ついて話しをするので、(Hackernewsに)関与しないという戦術的決定を下したのであった。

979名刺は切らしておりまして2017/08/08(火) 17:03:36.03ID:bMgyRPuK
>>782
リフレクションが無い

980名刺は切らしておりまして2017/08/08(火) 18:22:35.23ID:ngdBUcHc
>>975
WebKit等、膨大な資産が現役なんだが?
他にいい言語あるならとっくに駆逐されてるはず

981名刺は切らしておりまして2017/08/09(水) 09:49:47.49ID:urEyhZj5
>>973
ocamlはマルチコア対応がなぁ

982名刺は切らしておりまして2017/08/09(水) 09:53:27.31ID:OSOLhOzi
アセンブリの一つ上の水準の言語がC言語で間にあってる……と同時にそれ以外は不要らしい
C言語以上に増やしたらその水準の記述がさらに面倒になる
要するに面倒事は一つでいいしその言語だけに押し込めときゃいい

983名刺は切らしておりまして2017/08/09(水) 11:22:04.47ID:dNzXqHqz
C言語はアセンブリ言語の代わりというだけやからな。
何でもできる以上、安全に組むのに失敗したら、どんな問題でも起こるのは当然。
言わば自動航法の無い飛行機操縦みたいなものだ。

「何でもできる」ことがそもそも不要なら、他の開発環境の方がよろしい。

984名刺は切らしておりまして2017/08/09(水) 13:37:09.29ID:RaOC/s9X
「型」は制約を加えることにより生産性を上げるための概念

あまり自由過ぎるというのもよくないんだよ

985名刺は切らしておりまして2017/08/09(水) 13:48:48.87ID:lF9yrJ5I
最近はコンパイラやチェッカーが賢くて色々教えてくれるけどね

986名刺は切らしておりまして2017/08/09(水) 15:58:48.16ID:RaOC/s9X
>>985
それも1970年代に関数型言語がREPLでやっていたことを
最近のIDEがある環境でも同じことができるように再整備しているだけだと思うけどな

987名刺は切らしておりまして2017/08/09(水) 16:12:07.61ID:/xsCOjRV
変数に型を設定して受け入れるデータに制限を与える主義と

型はデータに付随する属性であって
入れ物たる変数には型を設定せず
全てのデータを受け入れるべきって主義と

二派あるからな
後者は動的に処理しないと実現出来ないからトロくなりがちだけど

988名刺は切らしておりまして2017/08/09(水) 16:16:04.82ID:lF9yrJ5I
>>986
今の開発環境の元祖はXerox PARCのsmalltalk-80やInterLisp-Dだよ
70年代末も掛かるけど本格的には80年代入ってから

70年代最先端のMacLisp環境は15年くらい前のEmacsと大差ない
UI上の支援はあるが言語知識に基づいた支援は少ない
MacLispは今はエミュがあるから動かしてみれば分かる

989名刺は切らしておりまして2017/08/09(水) 16:21:57.54ID:lF9yrJ5I
>>987
学生が大学の演習で作る簡易的な処理系ならそう言えるかもしれないけど
今はJITやるから速度面の差はほとんどない
90年代初めのSelfの研究で広く知られるようになった
初期のJavascript JITの論文ほとんど全てに
この論文が参考文献に上がってる

990名刺は切らしておりまして2017/08/09(水) 18:36:22.60ID:RaOC/s9X
>>988
StandardじゃないMLが一応ぎり70年代(1978か1979)だったはず。

991名刺は切らしておりまして2017/08/09(水) 20:11:02.72ID:utYfy7wg
>>989
速度の話ではないけん

992名刺は切らしておりまして2017/08/09(水) 20:38:49.29ID:1JaK+0SY
アメリカの大学では就職率を上げるために学部・専攻と関係のある産業界でシェアのある言語を勉強するよう奨励するんだが
日本の大学は自由だな

http://www.pllab.riec.tohoku.ac.jp/slides/jssst2013Taikai.pdf

本当のプログラマは ML を使うようになる - か?
(1992 年 ソフトウエア科学会大会チュートリアル)

産業界の一般的な反応?
.... <関心がない>
今必要なものは新奇な言語ではなく,サービスやビッグデータ基盤

993名刺は切らしておりまして2017/08/09(水) 20:44:11.17ID:1JaK+0SY
2014年10月29日
USトップ大学でも関数型プログラミングが余り教えられていない現実
http://postd.cc/who-teaches-functional-programming/

994名刺は切らしておりまして2017/08/09(水) 21:16:39.75ID:3beiiVsI
C言語は汎用言語なゼネラリスト
一般的にはそれぞれの業務処理に向いた専用言語なスペシャリスト

何でもできるって事は、どうしても脇が甘くなるから脆弱性は同時に寄り添う

995名刺は切らしておりまして2017/08/09(水) 21:23:25.11ID:m+r9Kixh
俺に死ねというか、大塩佳織の件ふくめてなんとかしろとしか言ってない

996名刺は切らしておりまして2017/08/09(水) 21:24:01.18ID:fNmyXLme
そのまえにJavaが死に絶えそうなんだよなぁ、、

997名刺は切らしておりまして2017/08/09(水) 21:27:30.99ID:ceE/0lqQ
まず、Linuxを他の言語で書き換えないと

998名刺は切らしておりまして2017/08/09(水) 21:27:39.19ID:aRh86MkR
>>996
Javaは今のCOBOLの地位に収まりそうだな。
20年後、60歳過ぎのジジイがJavaで書いた業務プログラムを細々と保守している姿が目に浮かぶ。

999名刺は切らしておりまして2017/08/09(水) 21:29:31.11ID:UPEgl4y7
あの〜、質問いいですか?

1000名刺は切らしておりまして2017/08/09(水) 21:34:07.97ID:FCrDpW15
>>990
MLの特徴はREPLじゃなくて
Hindley–Milner型システムに基づいた強い型付けだよな
REPLじゃなくてそっちが>>985に貢献してると言うなら分かる

10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 23日 5時間 53分 37秒

10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。