X



【IT】C/C++に死を [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
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/
0893名刺は切らしておりまして
垢版 |
2017/07/28(金) 10:00:19.68ID:UGPjsPXM
>>890
gcc、MSC、iccと並べると、icc。
gccが何故iccに並べないのかは知らないけども、コンパイル元とコンパイル結果が解っても、それに並べないだけの差があるんだろう。
CPU作ってる最中にコンパイラも同時に作ってる連中に追いつけと言うのには無理があるかもしれないが、数か月で追いつけてもいい気はする。
0895名刺は切らしておりまして
垢版 |
2017/07/28(金) 19:31:55.33ID:K4KKHYq6
そういうレベルじゃないよ

まず構造体が使えない
ちょっと凝った書き方するとバグる
ライブラリが動かないのにコードもない

開発してんだかコンパイラのバグ取ってんだが
0896名刺は切らしておりまして
垢版 |
2017/07/28(金) 20:59:19.98ID:5YC/n8/R
>>892
GoogleはOpenPowerとかRISC-VであからさまにARM潰ししてるし、
アポーはMacOS]をx86からARMへ移行する準備で、サブCPUとしてARMを採用するらしい

ちょっと最近の動向が少し違う
0901名刺は切らしておりまして
垢版 |
2017/07/30(日) 00:41:36.81ID:fOh7SjCG
>>899
普通、インテルかAMDかで選択肢が止まる会社が多いが、その枠を越えてるよ。
MSのよう過去との互換を極度に気にする会社もあれば、ソフトウエアを動かすプラットホーム、乗り換えはいつでも可能な会社は違う。
アップルが一番凄いと思うが、スマホだと、グーグル。グーグルは過去のバージョンを切り捨てることに躊躇がない。
パソコンだと、MS=互換性重視、アップル=最新の体験をしたい人だけどうぞ、だが。
スマホだと、アップル=互換性重視・ハードウエアの修理可能な期限まではソフトはメンテし続ける。グーグル=新しいOS使えない人は早くハードを買い替えろ。
となっていて、グーグルはアップルよりも躊躇がないほど。
自社のソフトが動くハードをみんなが作ればいいんだよなのかな。
最初アンドロイドは、組み込み機器向けのOSで押して、いろいろ気にしてたが、今は、殿様だろう。
0905名刺は切らしておりまして
垢版 |
2017/07/30(日) 20:55:50.44ID:9Ki4ANHE
>>904
まだ規格になってないtemplateが載っていたアグレッシブな本
当時のC++は特殊化にcppのマクロ展開を使っていた
0906名刺は切らしておりまして
垢版 |
2017/07/31(月) 00:28:03.66ID:jO3s7ZqD
>>905
>cppのマクロ展開を使っていた

MFCのことか?(笑)
0915名刺は切らしておりまして
垢版 |
2017/08/02(水) 02:16:44.67ID:ws1YR8yh
C--なら実際にあって
イギリスでは言語処理系実装に使われてた
MS Researchでも論文出てる
その後メタサキュラー実装のネイティブコンパイラが増えて下火になった
0921名刺は切らしておりまして
垢版 |
2017/08/06(日) 05:56:44.24ID:jQfNirjB
https://www.indeed.com/jobtrends/q-java-q-python-q-ruby-q-c++-q-c%23-q-script-q-javascript.html

java, python, ruby, c++, c#, script, and javascript Job Trends

javascript(1%)のワード内にはscript(1.5%)も入ってるので、何でも系のスクリプト言語は0.5%と考えていい
Pythonの求人は(0.85%)なので、スクリプト言語で記載されたものを引き算すると0.35%がPythonメインの求人と考えられる

Pythonの求職者が、0.62%でさらに求職者数が増加するなら、実際にある求人を下回るどころか求職者にとっては短期・長期的に不利となる

求人と求職者のバランスが、求職者に有利なのはJavaとJavascriptとなる
Javaは求人は減っているが、求職者側のキーワードは割合は低く、需給バランスは需要が圧倒する

C++は集計不能なので、求職キーワードとしてつかう人間が少数すぎるか、求職者が圧倒的に仕事で使いたくない言語の可能性が高い(マイナーキーワードは集計外のため)

C#とRubyは需給が長期的に均衡しており、目先の利益でなく長期的な安定を目指すなら良いだろう
なぜ安定するかだが、供給側が安定しているということは、求職者が増えすぎて需給が反転する可能性が低いと理解できるからだ

CとGoについては、DやEやFといったキーワードが増えるため、cの入る単語、goの入る求人もヒット(go to officeのような一般的な文字もマッチ)している模様
そのため英単語にマッチするワードはトレンド集計の対象外となる
0922名刺は切らしておりまして
垢版 |
2017/08/06(日) 06:04:58.06ID:0opw/BYf
Cは現在の多くの高級言語の基本になってるから勉強するには大変便利

ポインタさえなければ(´・ω・`)
0924名刺は切らしておりまして
垢版 |
2017/08/06(日) 06:11:23.98ID:nn9dE1S6
Rustは他言語で現場に入って勝手に使うしかないだろうね

結構混ぜ込む形でつかえたりする
0925名刺は切らしておりまして
垢版 |
2017/08/06(日) 06:15:20.47ID:jQfNirjB
>求人と求職者のバランスが、求職者に有利なのはJavaとJavascriptとなる
>Javaは求人は減っているが、求職者側のキーワードは割合は低く、需給バランスは需要が圧倒する

JavaもJavascriptと文字がかぶるため、求人ヒット数が上がっている可能性もあるので注意
(JavaとJavascriptのトレンドがあまりにも似すぎている)
0926名刺は切らしておりまして
垢版 |
2017/08/06(日) 06:17:46.11ID:nn9dE1S6
あと、C++はねつ造くさいな

俺が前調べたときは、求人数に対して、ユーザー数が多すぎて、
非常におすすめできない言語だったと思う
0927名刺は切らしておりまして
垢版 |
2017/08/06(日) 06:33:41.05ID:YE22UAxx
 


Cがアセンブラとか言ってるのを聞くと違和感がある。

アセンブラやったことない人間がそう言ってるんじゃねえかって思う。


 
0930名刺は切らしておりまして
垢版 |
2017/08/06(日) 09:43:56.92ID:7dWzsbCv
Cのmain関数すら呼ばれてないマイコンの起動直後にいろいろ弄ったりするくらいしか使わないなーアセンブラは
SIMDやコプロのコードも大抵Cで書けるように関数用意してくれてるからね

でもデバッグ時にディスアセンブルされたコード見るから自然に覚えるでしょみんな
0931名刺は切らしておりまして
垢版 |
2017/08/06(日) 18:31:43.85ID:LMORoep0
>>928
そりゃCがアセンブラをほぼ駆逐したんだから
低レベル記述可能言語として
>>922
ポインタなければそれは不可能だった
0932名刺は切らしておりまして
垢版 |
2017/08/06(日) 20:50:39.62ID:WDq3uM3Z
>>931
Cは低レベルの記述は欠陥品だけどな
できないことが多すぎて話にならん
それっぽいことのうち一部の事ができることもあるという程度
勘違いする奴多数なので今となっては有害でしかない
0937名刺は切らしておりまして
垢版 |
2017/08/07(月) 23:01:36.52ID:gTXrdgb+
>>935
現実?
Cで逆立ちしてもできない事とか、出来ても恐ろしく不効率になる所ではアセンブラ使っているよ
バカには見えないかもしれないけどな
0938名刺は切らしておりまして
垢版 |
2017/08/07(月) 23:16:58.76ID:gTXrdgb+
>>935
というか
お前「Cでできないこと」が想像つかないんじゃないか?
アトミックな処理とか
CPUのモードを変更する処理とか
スタックフレームを直接操作する処理とか
この手の処理はデバッガでは使うぞ
0940名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:00:02.37ID:mTNMxUul
Objective C
0941名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:06:35.53ID:fYk9bIsr
>>938
プロセッサ固有の処理を入れなかったからこそ、普及したんだが。
もしかして、全てのCPUがモードを持ってると思ってる?

> スタックフレームを直接操作する処理とか
あえて操作できないようにすることで開発効率を上げていることに気付こう。
0943名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:19:12.28ID:fYk9bIsr
なんでもできることは必ずしもいいことじゃないんだよ
そもそもC言語はアセンブリ言語(もしくはインラインアセンブリ)
と組み合わせて使われることを想定しているんだから
アセンブリ言語でできることがC言語ではできないと文句言うのは不毛
0945名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:26:38.56ID:DMHcmh8f
ならば死をくれてやる
0946名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:27:21.40ID:+b52SiDi
>>944
もとは、Cに「欠陥」があると言い出した >>932 が発端なわけだが、
別に欠陥があるわけじゃない。

CPUアーキテクチャに依存する部分は、
アセンブリ言語で書くのが最も理にかなっているから、
最初からコンパイラがそんな部分に対応する必要はないということ。
0947名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:27:38.91ID:kCYtKZaP
>>943
>そもそもC言語はアセンブリ言語(もしくはインラインアセンブリ)
>と組み合わせて使われることを想定しているんだから

そういう立場ならば「Cのポインタで低レベルの操作ができる」なんていうのは
実は中途半端なことしかできないゴミクズ機能でむしろ有害な仕様だ、という
見方するほうが自然で、最近は実際にそういう立場をとる人も多い
それで>>1の話に戻るってわけだ
0948名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:28:13.46ID:glxV3vqS
>>14
賛成!
でも、とても面倒だ。
0949名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:29:46.11ID:kCYtKZaP
ちと別回線から書いているが944と同一人物だ。
>>946
だから「今となっては欠陥」という立場をとる人も最近は増えているという話
0950名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:30:06.52ID:0quylM6u
C/C++にCを
0951名刺は切らしておりまして
垢版 |
2017/08/08(火) 01:30:50.10ID:glxV3vqS
>>914
まちがっている。
++がだぶっているだけだ。

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

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

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

オブジェクト指向の次のパラダイムかもしれない。
0956名刺は切らしておりまして
垢版 |
2017/08/08(火) 02:08:55.88ID:NBjki400
でも Java でも C# でも
参照型をきちんと理解するのには
ポインタの考え方が必要な気もする
0958名刺は切らしておりまして
垢版 |
2017/08/08(火) 04:00:15.56ID:zR9zXOcZ
Rust Evangelism Strike Force
0960名刺は切らしておりまして
垢版 |
2017/08/08(火) 04:31:58.24ID:Xb9xHSIp
Cは、本妻と云うよりは俺が最も心を通じ許しあえる愛人
アセンブラが愛人の連れ子かな〜
0962名刺は切らしておりまして
垢版 |
2017/08/08(火) 05:44:09.02ID:fYk9bIsr
>>944
いったい何に反論しているんだ?
C言語がアセンブリ言語の代わりになるとか
アセンブリ言語を駆逐しようとか
そんなことは一言も書いてないのだが。
0964名刺は切らしておりまして
垢版 |
2017/08/08(火) 06:30:08.28ID:66oKoyOQ
俺とCと云う愛人は直接の血縁関係に無い
他人だけど本妻よりも深く愛し逢っている
その連れ子ですから愛人未満の範囲内で大切にしましょう
0965名刺は切らしておりまして
垢版 |
2017/08/08(火) 06:35:48.97ID:66oKoyOQ
だれか、パースペクティブ(見取り図・概観図)を描いてくれんか?


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のマーケティング文化が受け継がれた
0968名刺は切らしておりまして
垢版 |
2017/08/08(火) 11:33:03.92ID:qXTkJCR2
本当の戦場は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++並かそれ以上の高速化を実現できるプログラミング言語の候補って何でしょう?
0973名刺は切らしておりまして
垢版 |
2017/08/08(火) 12:37:20.53ID:qXTkJCR2
>>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).
0975名刺は切らしておりまして
垢版 |
2017/08/08(火) 15:17:33.66ID:2a+H9JjX
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.
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
>>782
リフレクションが無い
0981名刺は切らしておりまして
垢版 |
2017/08/09(水) 09:49:47.49ID:urEyhZj5
>>973
ocamlはマルチコア対応がなぁ
0982名刺は切らしておりまして
垢版 |
2017/08/09(水) 09:53:27.31ID:OSOLhOzi
アセンブリの一つ上の水準の言語がC言語で間にあってる……と同時にそれ以外は不要らしい
C言語以上に増やしたらその水準の記述がさらに面倒になる
要するに面倒事は一つでいいしその言語だけに押し込めときゃいい
0983名刺は切らしておりまして
垢版 |
2017/08/09(水) 11:22:04.47ID:dNzXqHqz
C言語はアセンブリ言語の代わりというだけやからな。
何でもできる以上、安全に組むのに失敗したら、どんな問題でも起こるのは当然。
言わば自動航法の無い飛行機操縦みたいなものだ。

「何でもできる」ことがそもそも不要なら、他の開発環境の方がよろしい。
0984名刺は切らしておりまして
垢版 |
2017/08/09(水) 13:37:09.29ID:RaOC/s9X
「型」は制約を加えることにより生産性を上げるための概念

あまり自由過ぎるというのもよくないんだよ
0986名刺は切らしておりまして
垢版 |
2017/08/09(水) 15:58:48.16ID:RaOC/s9X
>>985
それも1970年代に関数型言語がREPLでやっていたことを
最近のIDEがある環境でも同じことができるように再整備しているだけだと思うけどな
0987名刺は切らしておりまして
垢版 |
2017/08/09(水) 16:12:07.61ID:/xsCOjRV
変数に型を設定して受け入れるデータに制限を与える主義と

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

二派あるからな
後者は動的に処理しないと実現出来ないからトロくなりがちだけど
0988名刺は切らしておりまして
垢版 |
2017/08/09(水) 16:16:04.82ID:lF9yrJ5I
>>986
今の開発環境の元祖はXerox PARCのsmalltalk-80やInterLisp-Dだよ
70年代末も掛かるけど本格的には80年代入ってから

70年代最先端のMacLisp環境は15年くらい前のEmacsと大差ない
UI上の支援はあるが言語知識に基づいた支援は少ない
MacLispは今はエミュがあるから動かしてみれば分かる
0989名刺は切らしておりまして
垢版 |
2017/08/09(水) 16:21:57.54ID:lF9yrJ5I
>>987
学生が大学の演習で作る簡易的な処理系ならそう言えるかもしれないけど
今はJITやるから速度面の差はほとんどない
90年代初めのSelfの研究で広く知られるようになった
初期のJavascript JITの論文ほとんど全てに
この論文が参考文献に上がってる
0992名刺は切らしておりまして
垢版 |
2017/08/09(水) 20:38:49.29ID:1JaK+0SY
アメリカの大学では就職率を上げるために学部・専攻と関係のある産業界でシェアのある言語を勉強するよう奨励するんだが
日本の大学は自由だな

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

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

産業界の一般的な反応?
.... <関心がない>
今必要なものは新奇な言語ではなく,サービスやビッグデータ基盤
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況