【IT】C/C++に死を [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語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/ PICでもC言語使えるじゃん
PHPメインだがCが元になってるからほとんど違和感ないな
ってか今さらC以外の言語を作り直すメリットあるの?コストからして割に合わないだろ 言語以前にコンピュータシステムや通信プロトコルを理解していないSEが多すぎる
それなのに言語やPCスペックだけはやたらこだわる ミジカビの
キャプリキ取ればスギチョビれ
スギカキスラの
ハッパフミフミ
ウッシッシ 今じゃクラス機能が入ったりPHP7が出てきたりマシンの性能が上がってPHPの開発が増えてるぞ
JAVA系がPHPに置き換わったりしてるしFWの種類や開発速度を考慮するとPHPが最強なのでは?
Cが元になってるからCは使われ続けるということだな >>160
PHPから入ったから少しずつわかってきたが完全には理解してないなw
PCスペックは最近のWEBやアプリ開発ではローカルに本番と同じ環境を構築するからある程度のものは必要になる 03103103000010310103011000000130000000000013101 1001031011010101000010310100000000000001 >>163
https://clearedjobs.net/job/principal-real-time-embedded-software-engineer-e05-e06-tucson-arizona-395808
今はC++とAdaが共存
U.S. Citizenship is required
Minimum of 8 years of experience in an embedded real-time setting
Experience using C / C++
Experience developing, testing and integrating real-time software
Experience using embedded RTOSs (e.g. VxWorks, Integrity)
Experience with software/hardware/firmware integration もし幼稚語ならコンピュータがバカにするなって
書いてきたら面白いww CとかC++とか、あんな変態言語、いまさら使う気も起きねえわ。
PythonとC#で十分。 >>14
これはハゲしくハゲ
こんなハゲな意見にハゲしたのは久々
最後にもう一度、ハゲしく同意 >>94
gccだってc++で書かれるようになったのにそれは無いだろ >>153
AWSとかAzureとか使えばいいじゃないの Rustは置き換えコストと学習コスト、継続性、可搬性を考慮して、
C/C++を捨てるに足る言語なのか? C#は逆アセンブルされて技術が漏れやすいからな。
Cやアセンブラなら、リバースエンジニアリング対策が楽。 Pythonや Javaでドライバは書けない。
C 要らないって言ってるやつはハード操作どうしてんの? ポインタとかバグの温床だしガベージコレクションない言語はもう使いたくねぇわ そういうレイアーに無縁なんだろうね
うらやましいっちゃ、うらやましい >>181
ガベージコレクションと言語は 関係ないけどな。 キャメロン前首相が、監視できないwebはあってはならないとか言ってから、
まあ筒抜けなんじゃないかな。
完璧なセキュリティーというのは、無理というか、過度な期待を寄せすぎというか、
極端な話、地震を余地しょうとする試みなのかも知れない。 量子コンピューターにも何らかのバックドアが仕込まれる可能性がある。 >バッファーオーバーフローや宙ぶらりんのポインターのために壊滅的セキュリティーホールが生まれる事態
半高級言語なんてバカや不注意なやつが使えばどんな言語だって壊滅的セキュリティーホールが生まれるように思うが メディアからイメージを吸い出せないゲーム機というのも
意外に実現していない。 セキュア系のAPIやらCRT関数は、範囲チェックを中で行っているから、
安心なんだろうな。
まあ、渡したサイズが違ってたら、一緒だろうけど。 >>96
やっぱりそうか。1見ておかしいなぁと思ってた。注目集めたいだけだったのかな。 >>132
誰かが、システム記述言語C
OSを書けるのはCだけ
と騒いだから
アセンブラに辟易してた時に降臨したから
無料で使えるUNIXもどきがCで書かれてたから >>36
RAMのサイズが2kBとかだとC以外は考えられない
あとはASMくらいだ >>64
ゲーム屋にいたすごい昔の話
仕事変えてだいぶ経つけど懐かしくなって最近はアンドロイドでJAVA勉強してるよ Microsoft製を使うメリットはないだろ
全てのOSにide用意しないとか話にならん 世界はCとC++が支えている
いまさら消し去ることなど無理
そしてプログラマはエベレスト級のC++に挑む >>15
プログラミングの経験が全くない人には向かないかもしれない。
しかし他の言語やアセンブラの経験があれば大変優れた入門書だと思う。
俺はあまりの分かり易さに衝撃を受けた。それでいて言語仕様の非常に細かい
ところまで網羅されている。
他のプログラミング言語の入門書もあんな風に書かれていたら楽なのにと思う。 C++は、
cout << var << endl;
たったこれだけでデバッグログが出力できる。varが数字であろうと、文字であろうとだ。
便利すぎだろ。 >>96
C以外でも書けるけど。
何処かで読んだ内容をただ丸暗記してるだけで、
なんでOSを書ける言語とそうでない言語があるのかとか考えたことないでしょ。 C#+P/Invoke+unsafe+fixed=最強 なんで組込み系は馬鹿にされるのか
MISRA-Cとかクソミソな言われようだもんな
アレはアレで意味があると思うけどな
バグが人命に関わるような場面では特に この手のエバァンジェリスト達は、手法を誤ってる
そんな脅し文句や呪詛を吐き続けるよりも
linuxのソースコードを書き換えて魅せた方がよほど説得力があるのに このスレで言うところのアセンブラってPICとかSHとかARM7TDMIとか?
まさかCortex-A系とかをフルで手書きのアセンブリ言語で書いて、
LLVM/CLANGとかの生成コードより早く動作するとか寝言言ってる? ppなんてエンジニアから嫌われてるもんなのに擁護多いなwwそんなに恐れてんのか?ppより学習コスト低いんだぜ? EF
ENDEL;=COUNT#
ふーん人間はおもしろいなこれがツィッターて呼ぶんだろ セキュリティ対策を施した新言語
C with Rubber この速さだからいうがRenesasのpinfuncは嫌いだ。 >>205
Cortexは知らんが、
ARMの初期のJITコンパイラ作ってた人はアセンブラで書いてたよ。 >>36
AplleがなぜLLVMを作ったのか調べてみよう Cは組み込み、あるいはライブラリ
C#はゲームでunity
C++はゲームでUE4
で生き残るんでは。。
rubyとかの方が死ぬでしょ。
ただ個人的にはgo langがポストCになって欲しいが。。 >>212
ARMでいうと、ARM7ぐらいまではアセンブリ言語を覚えるのもそれほど苦ではないし。
従来の8080/8086とか6809とかのノリで覚えられるけど。
今のARMは、Cortex-A/R/M シリーズに分かれていて、特にAシリーズをCPUおよび
周辺の初期化まで自力で機械語で書くのは、ちょっと無理なんじゃないかな。
通常は、ありものを使う。 >>195
エディタだけどVisual Studio Codeいいよね VSCodeはいまだにダイレクトタグジャンプの出来ない糞エディタ swiftって言語として、ライブラリの充実度として有望なの? >>224
cobolって手間暇掛かるだけで基本cよりはるかに簡単だもの。
ぶっちゃけcobolは他の言語+sqlでいつでも書き換え可能だが
cみたくなんでもできちゃう言語はかなりどうしようもない。
c++みたくフツーのプログラマが全く触らない標準ライブラリから派生したツールなんてもっとどうしようもない。 >>224
COBOLは20年前から終わった言語扱いだから 大学のプログラミングの授業で入門者相手にCを教えるのはやめるべき
PythonとかJSから初めて、Cは上級者向けに選択科目で教育すべきだな >>233
ぶっちゃけ組み込み以外の世界じゃもう殆ど意味の無いアセンブラコンパイルだのポインタだのの要素弾けばcほど分かりやすくて強力な言語未だにないぽいのがなぁ >>1
cは暴れ馬
手綱をとれる者だけが扱えば良い
無理なら簡単な馬を使えば良い
どんなに Python だの Kotlin だの Haskell だの使っても
絶対バカがとんでもないセキュリティーホール作る >>1
大丈夫だよ。ウィルス作っているやつも
C/C++を使っているからミスってうまく動かないはずだ。
同じぐらいの出来のシステムで殴り合いするんだから、
最悪でも分け(50:50)だよ。
まだ、世界は半分残っているじゃないかぁ。 C/C++は他の言語とは違う
>>1みたいなことを言っているやつは最初から近づかなくていいし、RustがC/C++の代わりになることは永久にない プログラミングの初学者にCよりもPythonのほうが簡単だと言いがたい。 >>233
同意。Pythonは習得が簡単な言語というのが売りだしね。
学習用に開発されたハードウェア「ラズベリーパイ」もパイソン使う前提で「パイ」の
文字を付けたわけだし。
Pythonはライブラリも充実しているから、専門ジャンルのプログラミングに
すぐに使えるのもイイところ。 要件やプログラマスキルにあった言語を使えよ
C/C++が怖いなら使わなければいいだけ
実装がヘボいのを言語のせいにするな Rustの生き残り戦略は悪手だ
能力を認めさせるのであれば、一度馬鹿になって既存の全てのOSを凌駕する性能・機能を持つカーネルを作ることを目的とすべきだ
いまマイクロカーネルを開発している最中と聞いて期待していたし良い印象をもっていたが、地道な努力を忘れて数十年もくり返されている
ポインターが安全でない程度で殺すと脅しても、やってる事がCの真似事では期待はずれだ
少し改良するだけで全てが好転すると考えるのは浅はかであり、次代のAI開発環境になりうる革新技術を作ることに注力すべきだろう
そのためにまずはマイクロカーネルを完成させて、次代のチップの第一選択となるべきであり
実績のあるC勢を殺すと脅しても、危機感を煽って逆にC/C++が進化をして殺されて終るだけだ アセンブラに近い処理を高速でやる言語 C/C++
メモリ管理の煩わしさを低減しつつアプリケーションをつくる言語 C#/Java/Swift
すでにある部品を組み合わせることを気楽にやるための言語 Ruby/Python/PHP/Javascript
あたらしい概念の実験場となる言語 関数型言語いろいろ
もう棲み分けできてるし
新しい言語が入り込む余地はあんまりないね
コンパイラ・ツール、ライブラリ、エディタ・統合環境
それらのメンテナンスを長期間やりそうな開発元
書籍、話者人口、その言語が主流になるような主戦場
そういうのがそろわないと言語は普及しないしね 新しい言語覚えるのマンドクセコさんだよ
Javaをロードモジュール化すれば良いじゃん
別にJVMで動かんでもいいんだよ
リンカするコンパイラ作れば >>240
Cは、覚えるのは簡単だけど初学者にとって真に理解するのが大変だと思う。
ポインタもそうだし、メモリリークなどもそう。
間違えるとすぐに暴走するし、初学者が自力でデバッグするのが難しい。
例えばでいうと
int add_five(int a)
{
int ret = a;
return ret + 5;
}
こんなコードを書くと、自動変数を返しているので動いたり動かなかったりして
すごーく悩む。挙句の果てにコンパイラのバグとか言い出す。
これがダメな理由をまともに説明しだすと、スタックの説明やらヒープの説明やら
変数がどこに確保されるかの話に直結する。
Pythonは、インタープリターもあるので少しづつ動作を確認することができるし
今時の言語なのでCのようなメモリリークは起きない。
わりとすぐに的確なエラーを返すので学習しやすい。
と、俺は思っている。 現役引退したが、Cは30年ぐらい前に習得した。
コボルはもっと昔だ。 >>96
OSがメイン関数呼んでくれなきゃ動かないCのプログラムだけでOS書くのは無理だろうが うわぁぁ。自動変数のポインタを返す関数にしようとして
間抜けにもちゃんと動作するプログラム書いちゃったよ。てへっ。
さっきの例は、適当に自動変数のポインタを返す関数だと思ってください。
(くゎー恥ずかし) >>252
ご指摘ごもっともデス。(ノ≧∇≦)ノ⌒・。. >>251
別に普通に動くコードだよなーって思ったw >>255
も、もう許して〜。251のライフはゼロよ つーか>>1の主題はC/C++という鋼鉄の巨人に竹槍で挑むRustの話だからな ■ このスレッドは過去ログ倉庫に格納されています