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/
0854名刺は切らしておりまして
垢版 |
2017/07/27(木) 05:58:05.64ID:mZSqVGhq
今の王様はWeb、スマホのアプリケーションプログラミングだと思うけどなぁ…

この領域ではC/C++はお呼びでない
0855名刺は切らしておりまして
垢版 |
2017/07/27(木) 06:22:45.52ID:BtRV+mjc
ゼニカネを主軸に置くと、C関係は不要
しかし佳きPGを目指すなら「C言語」は必須

どのレベルで言ってるのか、人によって全く違うからね〜
0856名刺は切らしておりまして
垢版 |
2017/07/27(木) 06:25:03.18ID:BtRV+mjc
不易流行

Cが不易

これは即席ゼニに成らないね

流行に流されて終わるPGに成らん方が身のため
0857名刺は切らしておりまして
垢版 |
2017/07/27(木) 06:26:51.82ID:BtRV+mjc
機械語、アセンブラから入ったモンに言わせると「C言語」は高級言語
スタート言語が何処から入るかで言語マップが全く違ってきます
0859名刺は切らしておりまして
垢版 |
2017/07/27(木) 06:58:25.32ID:WEIbyGlW
メモリが数KBや数十KBの頃はアセンブラ全盛
メモリが数百KBつかえるようになり、C言語が普及
メモリが10MB以上使えるようになってオブジェクト指向言語が普及

結局、開発効率と、メモリの無駄遣いをどれだけ許容できるかを天秤にかけてるだけ

Javaやスクリプト言語の普及はそれだけではなく、
CPUの性能向上でCPU資源を無駄遣いできるようになり、
高速実行よりも開発効率を優先することが重要になり普及

開発効率はソフトウェアの価格に直結する
数をたくさん販売できるパッケージ製品にはまだC++が使われることが多いが
特注のシステムには開発効率が悪すぎる
0862名刺は切らしておりまして
垢版 |
2017/07/27(木) 09:28:32.70ID:Z4MSkJG0
スマホともなると、一番上のアプリと言われるユーザの目に触れるものから、
一番下の開発時のデバッグ用CPUすなわちICEあたりに、どれくらいどの言語が関与してるかも見ないとならない
0866名刺は切らしておりまして
垢版 |
2017/07/27(木) 13:49:21.25ID:BtRV+mjc
リソースが限られた世界でPGできれば〜今の無尽にリソースを駆使できる環境は天国
一種の「修行」な環境を各々が設定したらいい

「小は大を凌駕する」

これが電脳な世界観です
0867名刺は切らしておりまして
垢版 |
2017/07/27(木) 13:52:20.76ID:BtRV+mjc
C言語は樹木の「幹」

幹を知らずに「枝」「葉」は茂る事な一切無い

このイメージが理解できない人はPG屋として大成しません
他業界に転身することを勧奨します
0869名刺は切らしておりまして
垢版 |
2017/07/27(木) 13:57:16.32ID:BtRV+mjc
PGってゼニカネから離れたところで趣味的に弄るのは楽しい
しかしカネが絡むと事は厄介なことになる

カネ=不自由

天衣無縫な気分でPG不能
こんな暗澹たる気分では宜しくない作文(PG)しかできません
0870名刺は切らしておりまして
垢版 |
2017/07/27(木) 15:29:12.99ID:dTWpxXK+
   小保方晴子  >>>   前田敦子 菜々緒 長澤まさみ さとう珠緒


(一部抜粋)
 小保方氏への女性批評は、『女が嫌いな女性タレントランキング』にそのまま当てはまる。

 たとえば、「そこまで綺麗ではないのに、何でチヤホヤされるのか?」という意見で
『女が嫌いな女性タレントランキング』首位となった前田敦子。

「セクシーではなくて、媚を売るような感じが嫌」で上位の常連となった菜々緒や長澤まさみ。

そして、「ぶりっ子キャラは、ありえない」と、史上最も嫌われたさとう珠緒。

女性から見ると、小保方氏には、その全ての要素が当てはまるという。
0873名刺は切らしておりまして
垢版 |
2017/07/27(木) 20:10:08.03ID:3cYhKTFn
>>871
> >>868
> もう遅いや
>
> C言語で制御構造って教えて

横からすまんが、制御構造という言い方はある。C言語では言わないかもしれない。
ププグラミングで制御構造と言えば、
手続き型言語における、(順次構造)(選択構造)(反復構造)かな。
それぞれ、処理が現れた順番に実行する形式、 条件によって処理が分岐する形式、処理を繰り返し実行する形式。
かなり古い概念だな。

C言語で言えば、
if文 2方向分岐
elseif文 多方向分岐
switch 多方向分岐
for 指定回数反復  (指定回数じゃない使い方も多いが)
while 前反転型不定回数反復
do while 後判定型不定回数反復
break 反復脱出
continue 反復スキップ
と言える。

要するに、条件分岐とループ。
ただ単に、順番に処理することもできる。
これは、機械語そのものの機能。メモリ管理もそう。
機械語では、ラベルを使って、メモリアドレスを示すが、Cの場合、変数名を使ってメモリアドレスを示す。mallocもある。
条件分岐で goto を使わせるとスパゲッティになるし、危ないことも起こるので、ifやswitch等で goto のとび先を自動で決定している。
とは言え、多重ループからの脱出には goto が便利なので使いもする。使うなら限定的でわかりやすい使い方ね。
これらが、機械語じゃなく、Cを使うメリット。

条件分岐が出来るかどうかは、他のマシン、例えば織機などからの対比。
メモリを使うかどうかは、専用マシン、例えば、そうだなー、テープを読み込んで、その指示に単に従う、というような超古典的なマシンとの対比。

ま、要するに、プログラム内蔵型計算機とはこういうものですよ、という古典的教科書での書き方。
メモリーにプログラムを置き、まあ、データも置き、開始ボタンを押せば、計算できる。ということ。
普通の四則演算の電卓と、関数電卓の差程度の話。
0875名刺は切らしておりまして
垢版 |
2017/07/27(木) 21:56:38.68ID:cQdeiY6T
Cは縦横80に収めろ
それを超えたらクソコード
0877名刺は切らしておりまして
垢版 |
2017/07/28(金) 01:49:41.93ID:md7LgQBg
>>826
そういう曖昧で見落としやすくて間違いの元になりやすいこと自体が問題だと言っているのではないのかな

linuxのGPIOのある特殊なプロトコル向けのドライバでBIG endianのCPUを使って2ワード以上のI/Oを行った場合にだけ起きるバグを見つけたことあるけど
こんなの誰も問題が起きるなんて思っていないんだろうなぁってな
そもそも特殊な条件でないとテストもできないし環境を揃えても基本的なテストだけなら通ってしまう話でね
そういうのが言語処理系の曖昧さで発生したらとっても嫌じゃん
0878名刺は切らしておりまして
垢版 |
2017/07/28(金) 03:11:15.38ID:IKS1RFex
>>859
「開発効率と、メモリの無駄遣いをどれだけ許容できるかを天秤にかけてる」

御意

まことにその通りです

シビアでクリティカルな環境下でPG経験をしますと
現今のプログラム開発環境なんて天国クラスです
0880名刺は切らしておりまして
垢版 |
2017/07/28(金) 03:35:19.66ID:IKS1RFex
>>247
C言語は自由度が高い
自由度が高い=目的地に必ずしも到達しません

枠にはめられてないもん
野獣だな
これは愛人みたいなもんだな
スクリプト系は本妻です

ベル研の開発した通信系の言語

通信の本旨って「自由」にある
拘束を嫌がるのものです

馬で言えば「ジャジャ馬」
人で言えばどうぢようもない「不良児」


これがC言語の特長です
0881名刺は切らしておりまして
垢版 |
2017/07/28(金) 03:37:53.76ID:IKS1RFex
真の市場経済が拘束を嫌がるように「C」もそういうの大嫌い
BDSMは、オラの世界ジャネーの・・・
0882名刺は切らしておりまして
垢版 |
2017/07/28(金) 03:48:27.11ID:IKS1RFex
お城の構造に例えると〜

本丸、二の丸までは「C」とアセンブラ、機械語

三の丸以降・・・そして内堀、外堀はC言語を元に開発された
開発思想の明確な「オブジェクト言語」群

だから〜Cにはセキュリティーは無い
内堀、外堀で守護さえないといけません

大脳本体に痛覚が無いように、
Cにも痛覚というセキュリティーが無い
0884名刺は切らしておりまして
垢版 |
2017/07/28(金) 06:24:27.56ID:fYdVS414
日本のマイコンが滅びたのは
まともなCコンパイラを用意できなかった
のも要因の一つと考えている
0890名刺は切らしておりまして
垢版 |
2017/07/28(金) 09:06:26.01ID:Ma9d4Lqb
国産Cコンパイラもgccベースのは割と...いや、酷かったな。
OSもそうだけど、2000年代には見れる技術者がいなくなった。面子はいたけど技術水準が秀才レベルから天才レベルに引き上がって振り落とされた印象。
0892名刺は切らしておりまして
垢版 |
2017/07/28(金) 09:54:41.86ID:UGPjsPXM
>>885
ARMのことを全て知ってるわけではないけども、携帯端末向けによくできていた。
また、ヘンテコな工夫が随所に入ってる印象。
初期だと、条件分岐が常に命令の中に入っていて、パイプラインを長くした時に、遅延実行がうまくできる仕組みだった。
実行バイナリも小さいと思うし。
SHもいい製品だったと思うが、パイプラインの段数を増やした時に、互換性が無くなったことをボヤいてた人がいた。
ARMはJAVAVMのアクセラレータなど、機能の追加増設もうまく当たったんじゃないかな。
SHは国内のガラケーをかなり持ってたけども、ARMはGSMを持っていた。
国内のガラケーメーカーが世界を支配するかアップル・グーグルの下請けになっていたらARMは無かったかもしれないけども、GSMの次にスマホが来た時は、ARMか。
ワット当たりの能力が高いとか、いろんな半導体メーカーにライセンスしたのも良かったんだろうね。
ARMはもう20年以上になるのかな。インテル・MIPS・SPARC等と違うジャンル、携帯端末に特化してきたのが長く続いた理由なのだろう。
その意味では、SHは不幸だったかもしれない。
ARMもいつ泡沫メーカーとして消えてもおかしくないような状況は常にある。今はものすごく注目されているけどもね。
例えば、スマホ向けには、バッテリーの持ち時間がユーザーの気になるところだし、処理能力についてもそう。
なので、ARMをある程度超える、ワット当たりの処理能力があり、最大処理能力がARMよりも上ならば、アップルは躊躇なくARMを切り捨てるだろうな。
なにしろ、自社のOSをいろんなアーキテクチャのCPUで走らせることが出来るのだから。
グーグルも同様でしょう。自社サーバーをインテルからPOWERにしたり、ディープラーニング用のTPUを作ったりしている。
今は、ARMを土台にしているけども、ARMのうち必要の無い機能、より高速化する機能を考えていくうちに、独自で作った方がいいとなるかもしれない。
出来るかどうかはさておき、ARMと同じ価格で、20%低消費電力か20%高速かを選べる競合が出たら乗り換えるんじゃないかな。
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#なんか遅くてカスみたいな言語だよ。
レス数が950を超えています。1000を超えると書き込みができなくなります。

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