0001ノチラ ★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/ 0952名刺は切らしておりまして2017/08/08(火) 01:33:19.20ID:glxV3vqS
>>947
なるほど。一理あるな。
しかし、他の言語でC、C++のゴミ機能が
出来るものがあるのか?
C,C++の機能をへちって、ゴミ機能だけに
するべきかな? 0953名刺は切らしておりまして2017/08/08(火) 01:36:44.85ID:glxV3vqS
>>927
そうかもしれない。
アセンブラは素晴らしいが、量がかけない。
デバッグも面倒だ。何しろ、出来ないことが
ないので、めちゃくちゃ出来る。
何年もたってバージョンアップするときは
泣くね。
出来たらC言語で書きたいよ。
スピードが要求されないなら。 0954名刺は切らしておりまして2017/08/08(火) 01:45:48.93ID:glxV3vqS
>>926
C++はかなり難しいね。
しかし、それも静的解決が出来る世界での
話でだと思う。
たかがスコープ三層の静的世界でこの
難しさに悩む人間の知性の限界を疑う。
動的な言語はまた、別の意味で難しい。
本当に開放された変数の動的解決が
出来る言語が登場するとどうなるのであろうか?
新しい言語世界の誕生に追随するプログラマと
デザイナが躍進する世界がくるのか?
オブジェクト指向の次のパラダイムかもしれない。 でも Java でも C# でも
参照型をきちんと理解するのには
ポインタの考え方が必要な気もする
0958名刺は切らしておりまして2017/08/08(火) 04:00:15.56ID:zR9zXOcZ
Rust Evangelism Strike Force
>>944
ツマラン喧嘩はしなさんな
ミットモナイわ〜 Cは、本妻と云うよりは俺が最も心を通じ許しあえる愛人
アセンブラが愛人の連れ子かな〜
>>944
いったい何に反論しているんだ?
C言語がアセンブリ言語の代わりになるとか
アセンブリ言語を駆逐しようとか
そんなことは一言も書いてないのだが。 >>951
C++もCからしたら遅くてカスみたいな言語だろ 俺とCと云う愛人は直接の血縁関係に無い
他人だけど本妻よりも深く愛し逢っている
その連れ子ですから愛人未満の範囲内で大切にしましょう
だれか、パースペクティブ(見取り図・概観図)を描いてくれんか?
C
C+
C++
C#
アセンブラ
このそれぞれの言語が最も得意とする領域と不得手な領域は何か?
制御系とか、通信系とか・・・いろいろあるでしょ?
全部、オールマイティにPGなんかできるわけないがな
だから、その業務に最適化された人工言語が発明されます
0966名刺は切らしておりまして2017/08/08(火) 06:50:35.52ID:zR9zXOcZ
Rust Evangelism Strike ForceはC/C++の代替とされるD言語、golangへの
ネガティブキャンペーンを揶揄している
類似言語のHaskell/OCamlの開発者がRustのマーケティングのコアを担っているため
Haskell/OCamlのマーケティング文化が受け継がれた
OSを全部C以外で作らないと無くならないんじゃね。
本当の戦場はOSとアプリの中間だと思うけどなぁ
アプリの最適化とか、ドライバ せいぜいカーネルモジュール
まずはそこで、C/C++をどれだけ削れるかだ
0969名刺は切らしておりまして2017/08/08(火) 12:11:09.90ID:VYewExkY
ポインタが、バグとセキュリティ・ホールの多くの原因を作っているから、
ポインタの使用が前提の、抽象度が低い言語の使用を止めようという、昔ながらの話題。
例えば、早い処理系を作るのにポインタは欠かせないし、
安価なハードウェアで動作する組み込み系のアプリも無くならないから、
C/C++は無くならないよ。
同じ話題を何度も蒸し返すなよ。ちょっとは学習したら良いのに。
0971名刺は切らしておりまして2017/08/08(火) 12:24:23.29ID:2i9ywFlW
C/C++並かそれ以上の高速化を実現できるプログラミング言語の候補って何でしょう?
>>971
なぜC/C++が速いのかを考えればいいんじゃね? >>971
O'camlは不要なら計算自体を辞める・省略するレベルの最適化をやっているからC/C++より早くなる。
というか、いくつかベンチマークでは実際C/C++を上回っている 0974名刺は切らしておりまして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). cはまだしもc++は人間が扱える言語じゃないよ
自分で作ったものならまだしも、人の作ったものを解析するのが困難
1回作ったら、その後修正しないってソフトなら問題ないけど、何度も修正するようなソフトだと問題なんじゃないか
0976名刺は切らしておりまして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.
>>975
Cと比較したらC++の方が見やすいと思うけどなぁ。 0978名刺は切らしておりまして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に)関与しないという戦術的決定を下したのであった。
0979名刺は切らしておりまして2017/08/08(火) 17:03:36.03ID:bMgyRPuK
>>975
WebKit等、膨大な資産が現役なんだが?
他にいい言語あるならとっくに駆逐されてるはず 0981名刺は切らしておりまして2017/08/09(水) 09:49:47.49ID:urEyhZj5
アセンブリの一つ上の水準の言語がC言語で間にあってる……と同時にそれ以外は不要らしい
C言語以上に増やしたらその水準の記述がさらに面倒になる
要するに面倒事は一つでいいしその言語だけに押し込めときゃいい
0983名刺は切らしておりまして2017/08/09(水) 11:22:04.47ID:dNzXqHqz
C言語はアセンブリ言語の代わりというだけやからな。
何でもできる以上、安全に組むのに失敗したら、どんな問題でも起こるのは当然。
言わば自動航法の無い飛行機操縦みたいなものだ。
「何でもできる」ことがそもそも不要なら、他の開発環境の方がよろしい。
「型」は制約を加えることにより生産性を上げるための概念
あまり自由過ぎるというのもよくないんだよ
最近はコンパイラやチェッカーが賢くて色々教えてくれるけどね
>>985
それも1970年代に関数型言語がREPLでやっていたことを
最近のIDEがある環境でも同じことができるように再整備しているだけだと思うけどな 変数に型を設定して受け入れるデータに制限を与える主義と
型はデータに付随する属性であって
入れ物たる変数には型を設定せず
全てのデータを受け入れるべきって主義と
二派あるからな
後者は動的に処理しないと実現出来ないからトロくなりがちだけど
>>986
今の開発環境の元祖はXerox PARCのsmalltalk-80やInterLisp-Dだよ
70年代末も掛かるけど本格的には80年代入ってから
70年代最先端のMacLisp環境は15年くらい前のEmacsと大差ない
UI上の支援はあるが言語知識に基づいた支援は少ない
MacLispは今はエミュがあるから動かしてみれば分かる >>987
学生が大学の演習で作る簡易的な処理系ならそう言えるかもしれないけど
今はJITやるから速度面の差はほとんどない
90年代初めのSelfの研究で広く知られるようになった
初期のJavascript JITの論文ほとんど全てに
この論文が参考文献に上がってる >>988
StandardじゃないMLが一応ぎり70年代(1978か1979)だったはず。 0992名刺は切らしておりまして2017/08/09(水) 20:38:49.29ID:1JaK+0SY
0993名刺は切らしておりまして2017/08/09(水) 20:44:11.17ID:1JaK+0SY
C言語は汎用言語なゼネラリスト
一般的にはそれぞれの業務処理に向いた専用言語なスペシャリスト
何でもできるって事は、どうしても脇が甘くなるから脆弱性は同時に寄り添う
0995名刺は切らしておりまして2017/08/09(水) 21:23:25.11ID:m+r9Kixh
俺に死ねというか、大塩佳織の件ふくめてなんとかしろとしか言ってない
0996名刺は切らしておりまして2017/08/09(水) 21:24:01.18ID:fNmyXLme
そのまえにJavaが死に絶えそうなんだよなぁ、、
>>996
Javaは今のCOBOLの地位に収まりそうだな。
20年後、60歳過ぎのジジイがJavaで書いた業務プログラムを細々と保守している姿が目に浮かぶ。 >>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