【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/ >>690
オレの知り合いがそうだわ
一旦ビルドしたexeを、バイナリーエディタで修正しよるw 原発制御.exeとかなら機械語での精査は当然
月面着陸装置やトカマク装置もやはり機械語あるいはアセンブリで精査
世の中には絶対にミスれないものがある ミッションクリティカルの領域だと定理証明系MLの領域だと思うけどなぁ…
バグの有無で言うとアセンブラなんてヘルメット被ってないどころか
真っ裸フルチンくらいバグに対して無防備だと思うのだが >>768
もっと身近なものに、パチンコ用のがあるよ。
最新情報は追いかけてないが、CPU指定、アセンブリ言語のソースコード、バイナリも添付、審査だったような。
今でも、
・Z80系アセンブラを使用してのソフトウェア開発
・ソフトウェア関連のドキュメントの作成、検定機関への申請
とかになってるっぽいね。
話が飛ぶが、医療機器のプログラムだけは絶対に嫌だ、という人がいたな。
ミスって人命に関わる事態になるのは、良心が耐えられないらしい。
原発関連の仕事は、まあ、知ってるが、どのように品質を担保してるか。
通常3重のQAチェックをするところ、6重にやる。
あまり関わりたくはないね。
納期優先でQAがザルなのはどこの業界も同じだからね。 >>763
> じゃあ8bit CPUの時代になぜ256進数にならなかったのでしょうかw
実質的に256進数だったね。
16進数2桁で、0から255まで表せるわけだが、例えば、D0とかEFとか見たら、10進数でいくつになるかすぐわかったものだよ。たいていの人は。
なにしろ、パターンが256個しかないし、いちいち道具を使って計算するのは面倒なくらいに、付き合うことになってたからね。
65536までは、割と容易に、という人は多いんじゃないかな。今でも現役でやってる人ならば。
今よりも遥かに、何もかもが遅かったし、リソースもほとんどなかった。
ある程度のサイズになると、アセンブルにかなりの時間がかかったよ。20分とかね。
となると、少し変更して、アセンブルなんてことには耐えられなくなるんだよ。
NOPを沢山入れて、パッチ用の領域を置いておく。ある程度の場所にね。
そこに機械語を手入力して、パッチを当てる。
この時、相対ジャンプで飛ばすことが多いんだが、その計算を道具をいちいち使ってやること自体がだるくなる。
なので、どれだけ飛ばせばいいのかは、256進数で考えるようになるわけ。
命令セットも、使うクロック数も、何もかもが頭の中に入っていたものだよ。
まともなデバッグ環境と言えるものも無かったからね。
モニター、と言って、16進数の表示と書き換えができる小さなものだけを置いて、それでデバッグするわけ。
大きなものは入れられない。
初期では、アセンブラとリンカも同時に走らないから、切りかえながら使ってたね。
256個のキーがあるキーボードがあればいいとか言いたいんだろう?
キーが多いのは初期のワープロだね。
漢字の数がものすごいから、キーが膨大な数になってたよ。
16進数の時は、キーは16個で十分だったし、2桁打てばいいからね。
16ビット分なら4桁だ。そのあたりに合理性があった。 >>763
何言ってるんだか
wordが6bitの時も7bitの時も8bitの時も
大昔は8進で入力したわけ
A-Fが付いてるキーなんか
コンソールにはなかったから
16進数では入力出来なくて
3bitごとに区切って数値を扱った
内部表現の2進数に近い形で扱う時は
これはアポロのオンボードコンピュータ
https://history.nasa.gov/afj/pics/dsky.jpg >>764
お前の言うポータブルの定義はなんだ?
言語仕様で保証されてない記述があると
もう全くポータブルではないという二極思考か?
現実世界ではポータブルという考えはもっとグラデーションがある
そして>>665のコードがターゲット上で意図どおりに動くかなんて簡単にテスト化出来る
だから
>ポータブルなプログラムは作れない
>Cはアセンブラの代わりにはならない
に対してCの方がポータブルだと言ってる
これは妄想でも強弁でもなく
UNIXはそれであちこちで移植されて広まった
アセンブラの利用を最小限にしたOSだったから >>773
>>763は>>760のヘンな理論wに対してだよ。
>>772見たら、本人は分かってないようだけど。 c, java, python, perl, ruby, c++, c#, and .net 求人数・求職者数トレンド
https://www.indeed.com/jobtrends?q=c%2C+java%2C+python%2C+perl%2C+ruby%2C+c%2B%2B%2C+c%23%2C+.net&l=
job postings=求人票数=需要
job seeker interested=興味を持った求職者数=供給
Java 供給>需要
需要と供給で見るとJavaは2005年をピークにして供給サイドが過剰
Python 供給=需要(需要供給は2017年前期では均衡、このままのトレンドだと供給が需要を越す)
Pythonは2016年前期に求人数がピークで、その後は供給が増加するが需要はピークに戻っていない、供給>需要
C 供給<需要(常に求職者数が低く均衡した期間なし)
Cは需要の量に比べ供給が低い、需要は2014年前期がピークだが、2017年に大幅に需要が上昇するも供給は安定して低い
ruby 供給=需要(安定、求職者数も安定)
perl 供給<需要(求職者がperlを見捨てるが企業側の需要は根強い)
C++ 供給<需要(需要データが欠損)
C# 供給=需要(需要と供給が高い精度でマッチ) 海の向こうのプログラマーはC/C++の不満点を改善した新しい言語を作ろうとしているのに
我が国のプログラマーは昔話しかしない >>770
俺の友人がロマンス系言語のプロ翻訳家
医療・薬学系は値段はいいけど一切受注しません
命に係わる翻訳は誤訳が一切ゆるされません
しかし、誤訳は付いて回る
もちろん機械翻訳なんか出来ません
たらい回しになるみたい、みなさん、この手のクリティカルな御仕事は忌避
これって自由業だから出来る事です
サラリーマンだとしなければならんでしょ・・・良心の呵責と云うか
そのうち麻痺させて受注するんだろうな〜罪作りかもしれん >>778
聴くけど、オマエに新規言語造れるのか?
日本から発信した言語は所詮ローカル言語です
おまえやれよ・・ってバカにしたように云われます C/C++の不満点て何?
完璧すぎてどこもいじるところないわ
強いて言えば、ルールが多すぎて覚えるのが大変ってことくらいだと思うが、
使わないルールなんて覚えなきゃいいだけだし
参考書では盛んに変数名やら関数名が被った際の話を紙面全体の1/3くらい使って説明してるが、
そもそも同じ名前使わなきゃいいだけの話で、オーバーロードのオーバーライドもポリモーフィズムも
言語(コンパイラの機能)に頼らずに簡単に自分でできる BASICに「Only Seven」技法ってあります
PGするのにどれだけ少ないコマンドで綺麗で軽く速いプログラムを組むか?
この考え方は〜「モールス信号」に近いものがある
電信(CW)波って非常に単純で帯域が最高に狭い
低送信出力で遠方に飛ぶ
そして混信に強い
帯域が広域になるほど不安定化する
だから送信出力を上げます
しかしそれでも混信には弱い
これって人間1人1人にも通用します
シンプルな人生を送ってる奴は変な拘りが一切無い
「断捨離」人生こそ真骨頂
この手の人物はオカネで自分を安売りしません
ある種の信念を持ってます
だから地位立場オカネに一切の価値を置いてないから
引くときには一気に引ける潔さがある
Simple is Best
これは真理です >>775
確信が無ければコメントしなくてもいいのに。 ハードが最初にできます
最初のエニアックって回線を直接つなぐことでPG
タイプもコンソールも無い
電話交換機が自動化される前、交換手という♀が
「どこへ繋ぎますか」
「麻布46番」
これでプラグをコネクタへ直結
これと全く同じ事を二極管20000本ぐらいあるところへ繋ぐ
ただね〜真空管がこれだけあるとヒータがキレます
室温が上るもんで強烈なクーラーが必要
https://ja.wikipedia.org/wiki/ENIAC >>778
C/C++の不満点を改善する方法は新しい言語を作るだけじゃないよ。
同じ言語でも次の規格を作るのに参加してる人はいる。
今の日本人は、日本語を求めるでしょ。
昔は日本語を扱うこと自体が無理があったのですよ。
なので、英語版のをどこでも使ってたし、それをフィードバックもしてた。
少し前は、日本語が使えない英語のを、どうにか i18nすることだけやってれば良かった。
もちろん、本体に手を入れないとどうしようもないのは、本体にフィードバックしてたよ。
今は、元から何語でも使えるようにしてあるので、日本人が日本語のためにすることはほとんどない。
マイナーな言語を作ってる人はいなくもないし、遅いだの利用者が少ないだの言われても続けている人もいる。
rubyみたいな例は稀有だと思うよ。20年位以上もやってるでしょ。 >>786
他人の話に、YESかNOかで乗っかるだけで、マウントした気になってるのがいるなー、って話。 >>789
PGできる人は英語はできます
英語が出来ないPGなんて早晩リストラされます
AIが自動プログラム始めます
この界隈がAIが一番速く導入されます
電脳は米国で華が開きます
英語なんか論文読めるレベルでやっとこさ
この業界でサバイバル可能
きちんと大学の理学部、工学部の物理とか情報、数学科とか卒業してるだろ?
PG構築には哲学、法学も役に立つ
こういう基礎の無い人がここにいてもボロボロにされて殺され末世
ゲームソフトの米国製の「シビライゼーション」ですと
日本語版は英語版よりもホンの少しだけ処理に時間が掛かります 言語としてのrubyより、カネの流れのカラクリを知りたい。
rubyチップ詐欺とかな。 >>792
> あいかわらず、よくわかりませんがw
これこそが、他人の話にNOだけ言ってマウントしてる例なんだよ。
自分の知ってることを何か書いてごらん。
選挙じゃないんだから、誰かの話にYES・NOじゃ全く面白くないわけ。 世界でもコミュ力重要だろ
論文書いたりRFC立ち上げたり >>794
>カネの流れのカラクリ
前にphpとZendの話あったろ。
そういう仕組みが無くても、一定の有名人になれば、本も売れるし、
講演するだけでも金が入る。
とても有名な人で1回200万。
その下でも100万。
宣伝のために無料で講演するクラスもいる。
何万円も払って、セミナーで偉い人の話を聞きたい人もいるし、
会社が金払って、聞いてこい、と言う場合もある。
4万×50人で、200万の売り上げ。そこから会場費や宣伝費用(雑誌社やセミナー会社が多いだろうな)を引いたのが手取り。
これをせっせと、毎月欠かさずやる。
どこにでも出かけて行って、ちょこっと話して、名前と顔を売る。
最早駆け出し芸能人みたいな商売。
rubyの場合、一緒に仕事したいなら、まともな本の一冊も書いた人なら、話聞きますよ、からスタート。
これはかなりの初期ね。
大御所になれば、書かなくても、監修の名前で楽していくらかもらえる。
大抵の場合は、大会社向けに特別パッケージ出したりや、優先的にセキュリティアップデートを供給したりね。
それがうまくいく場合もあれば、そうじゃない場合もある。
詐欺事案とかは個別の話なのでね。被害者でもなければ興味ないでしょ。
全般的に持続可能な儲け方なら、上に書いた通り。
もっとうまくいけば、IPOとかM&Aで会社を売る方法だね。
ビジネス板っぽい話になってきたな。 >>797
そうだね。英語で存在をアピールできないのは、いないのと同じだろう。 >>796
なんだかわけわからん面倒くさいこと言ってこらんでくるヤツだな。ここは2ちゃんねるだぞwww
ま、何進数ってのは単なる「表現」の仕方だ。
8進数表記だから3bitが都合がいいとか言うのは本末転倒だわ。 出来の悪い人の将来は、会社には事務手続きに月1回出社
それ以外の平日はクライアントの仕事場で気を使いながら派遣労働
おれの知人が30代までは社内でPGしてましたが
出世競争に負けまして、あっちこっち関東圏を渡り歩いてます
千葉市に住みながら2時間も掛けて栃木県のクライアント先に通うとかね〜
土曜日は24時間寝続け、日曜日は洗濯掃除で終わる
おかげでストレスで激太り・・・生活習慣病の塊となりました
俺はお前はPG向かないから転職しろと口酸っぱく言ったんですけどね〜 >>734
ソ連の真空管がEMP対策云々は昭和の軍オタの勘違い知識
今そんなこというと笑われるぞ >>811
当時の話しをしてるの
今は電磁波をブロックできるから「フライ・バイ・ワイヤ」でOK >>782
生産効率かな。特にCは現代的な機能皆無だから。それを補う便利なライブラリが常に使えるわけでもない。 Cは汎用アセンブラ扱い
python とかから自動生成すんだよ >>491
コードは隠蔽性意味なしの割とひどい感じになるよな
全部をリフレクションで処理している様な感じのコードに・・ >>778
日本人はシステム的なものを作るのが超ニガテなんだとおもうわ
仕組みは海外の人に作ってもらってこちらは使う側なだけで良いよ >>766
コンパイラ依存なんて要素があること自体が問題なんだがな >>774
処理系依存(あるいは未定義動作)というブラックボックスを抱えることをなんとも思わないなら
これ以上議論しても無駄だと思うよ >>818
実際そのあたり処理系、実装依存なんだよ このスレの本来の話題で言うような問題にも処理系、環境依存で予想外の動きをされる場合の話も含まれる
ヌルポインタアクセスで実メモリにはアクセスしない環境も実際あるしね
出てきたアセンブラのコード読んで納得したわ。一応gccだけどさ >>819
また「なんとも思わない」と二極思考か
それは詭弁の一つだぞ >>801
> 日本人のLinuxただ乗りのこと?
日本人で、kernel に初今トリビュートした話って、かなり前だよね。
今だと、かなりの数になってるはず。
他にも、日本語版の話から、keernel以外の各種要素から、いろんな人が絡んでいる。
参加したいなら、誰も止めはしないでしょ。
Lunux だから、全員外人が作ってるとか、日本人はタダ乗りとか、あからさますぎるのはやめてくれ。
わざとなのか、無学なのか。 >>803
日本語のコミュニティで、英語で書くとか、ないでしょ。
英語のコミュニティで、日本語で書くとかもないなー。
英語コンプレックスの奴多いんだな。どんな仕事してるんだろ。 >>806
> あれ?ID:I7yLCD5yはもう出てこないの?
楽しい?
まあ、楽しいなら何よりだ。
どんなプログラミング言語を使ってるか書いてごらん。2−3個でもいいよ。 >>817
nullPointerの実装以外にも、bitfieldの順番とかstructのpaddingとか変数のalignmentとか
処理系依存な箇所はたくさんあるんだけど。
C言語はそういう、便利だったり速かったりするけど処理系依存なコードを書くことを認めてる言語なんだし。 >>823
日本人メインテナがいることも知らない無知な奴だからスルーで >>826
そうですねぇ。
ビットのエンディアンが問題になったこともありましたね。
http://www.takeoka.org/~take/cpu/endian/bit-endian.html
メモリー上に何をどう置くのかも、結局はハードウエア依存の問題。最適化した場合は。
DDR4のメモリーは、デュアルチャンネルで、128ビットなのかな。
メモリーバンドの効率的な利用を考えると、バイトでギッチリ詰めるよりは、
メモリーのアライメントに沿って、1回の転送で済むように配置した方がお得、という話。
そのうちに、128ビットが512ビットになるらしいです。もっと増えるかも。 C言語は懐が深い
あらゆるものを受け入れるだけの器量がある OSS関係は日本のPGのボランティアでかなり支えられてます
Linux系のDebian、Redhat、Vineとあるが
それぞれ、欧州、米州、日本で宜しく使われている
だからVineで組んだ方が日本用途としては使い勝手が良い
これはあくまでも個人的観相であるが・・・ 移植性とか考える必要はあるが、何も努力しなくても、そのままコンパイル実行可能を
保証しろというのは、やりすぎじゃないかと思う。 >>602
アセンブル : 組み立てる
アセンブリ : 中間部品程度の意味
アセンブラ : 処理系、アセンブリ言語の俗称
アセンブリ言語 : 言語
ふつうIT系では、「アセンブラ」と呼んでおいたほうが、
周囲との摩擦が少ない PC初期のころ、タイトルが「機械語〜」で
中身がアセンブリ言語の初歩とアセンブル方法の解説ってのが多かったな
アーキテクチャ入門書かと思って開いてガッカリ >>812
当時、なんで今頃真空管なんか使ってるんだと悩んだ西側がひねくり出した答えがEMP対策な
で、真相は当時の東側ではまだ真空管のほうが普通に使われて流通してたから
今でも秋葉の部品屋にいくとソ連製の真空管が大量に売られている >>832
いやアセンブリだろ
普通
アセンブラっていったら通じないことはないまでも誤解を招きかねないし突っ込まれる >>834
ジャック品ってオモロイ部材に出会えました
真空管回路は単純明快
1つの素子から、どんな回路設計ができるかな「パズル」心が揺れ動く
いま、これが無い
アナログは〜鈍重だが非常に分かり易い反応します C言語は、英語です
PGの国際語
趣味でいいから、きちんと領得して損は無い
通信、制御の「王様」なポジションにある
スクリプト言語はPG用では無い
自由度が高い、ここに意味がある 送信機の方簡単に構成可能
受信機の方が格段にテクを要します
発話よりも受話能力の方が格段に高級つー事と同値 自閉症な子って受話能力はピカイチ
発話能力は意図的に絞ってる
聴きはするが送信機能を落してる バカどもはこの逆をします
受信能力は非常にプアー
何もわからずギャーギャ―ギャギャー騒がしい
黙るという作法を知りません
ひたすら「ギャーギャ―ギャギャー」五月蠅い
ここに理念も思想も無い「街宣車」 いまの日本の風景は、五月蠅い送話しかない
ココロもなければ、気持ちもなにもない
ひたすら、五月蠅いだけのクズ 配列のインデックスチェックを無駄に繰り返すことは避けたい
そうなるとインデックスが変なところに指すことがないように、コードを書く人が注意することになる
それなら別にC/C++でいいよ
そうなりそう >>844
foreach的なもの使えばいいだけだからCに拘る必要なし >>536
「はじめてのC
さいごまでC」
シーシーオシッコ
やはり、ヴァイタミン「C」が足りないようです >>156
御意・・・
その通り
C言語って忍者と云うか蛞蝓というか〜
明確な形が無い
♀とオマンコしてるんだが
オマンコの情況が良く分からん
普通はオマンコは定期的なサイクルで締まる・緩むですけど
C言語♀の万個は、挙動不審
PG屋してるの、この怪しいマンコをどのように調教しようかという
途方もない欲望に捉われます >>156
「制御構造とメモリ管理」
これに尽きる、頂きました >>830
Vineってw
いつからLinux使ってないんだ? >>849
10年は仕事では弄って無い
ブドウ球菌にヤラレタみたいw
この業界から脚を洗いました いまヘベレケしてますんでマトモな返答は保証できません 今の王様はWeb、スマホのアプリケーションプログラミングだと思うけどなぁ…
この領域ではC/C++はお呼びでない ゼニカネを主軸に置くと、C関係は不要
しかし佳きPGを目指すなら「C言語」は必須
どのレベルで言ってるのか、人によって全く違うからね〜 不易流行
Cが不易
これは即席ゼニに成らないね
流行に流されて終わるPGに成らん方が身のため 機械語、アセンブラから入ったモンに言わせると「C言語」は高級言語
スタート言語が何処から入るかで言語マップが全く違ってきます >>848
C言語で
制御はわかるが
構造ってなんだい? メモリが数KBや数十KBの頃はアセンブラ全盛
メモリが数百KBつかえるようになり、C言語が普及
メモリが10MB以上使えるようになってオブジェクト指向言語が普及
結局、開発効率と、メモリの無駄遣いをどれだけ許容できるかを天秤にかけてるだけ
Javaやスクリプト言語の普及はそれだけではなく、
CPUの性能向上でCPU資源を無駄遣いできるようになり、
高速実行よりも開発効率を優先することが重要になり普及
開発効率はソフトウェアの価格に直結する
数をたくさん販売できるパッケージ製品にはまだC++が使われることが多いが
特注のシステムには開発効率が悪すぎる スマホともなると、一番上のアプリと言われるユーザの目に触れるものから、
一番下の開発時のデバッグ用CPUすなわちICEあたりに、どれくらいどの言語が関与してるかも見ないとならない >>854
古いよ。
一昨年辺りから機械学習やIoTに移ってる。 >>863
MITは8年前にその辺をカバーする良質のライブラリがないschemeは捨ててpythonを使うことにした >>862
スマホじゃICEはなかなか使えないだろう
ユーザーの見えるところにJTAG端子が出ていないし リソースが限られた世界でPGできれば〜今の無尽にリソースを駆使できる環境は天国
一種の「修行」な環境を各々が設定したらいい
「小は大を凌駕する」
これが電脳な世界観です ■ このスレッドは過去ログ倉庫に格納されています