【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/ コンピュータ言語が 統一どころか乱立の方向なのは 何故なんだい? >>736 それだけ「電脳」があら世界のプロセスに関与する時代に入ったということです 電脳は、最適化という「オプティマイゼーション」が味噌 業務が細分化されるように人工言語も分派が次から次へと造られていく 佛教が細分化したのと同じです 真言宗と言えば、日本一の霊場「高野山」金剛峰寺が大本山 しかし、この宗派は歴史が古いだけに分派が日本一あります 明治維新以降の新興宗教ですと「大本教」でーす 新興宗教が数多の新興宗教を生み出します 日本宗教界のこのストリームに非常に近いモノを感じます アセンブラが〜アニミズム Cが原始佛教本体 そこからあらゆるジンコウゲンゴという子供や孫が派生 だから「C」言語は必須 アニミズムの深い精神が解れば〜神道・仏教の精神も分かる 宗教界で新興宗教が数多でてくる時代は不幸な時代 いまの政治体制では人民の安寧が保全できない時代 こっちは自然言語な世界で重い しかし人工言語な世界は所詮、電脳という人間が造った出来損ないを動かすだけだ 適当に付き合っておけ、こんなもんに人生を捧げる奴は狂ってる 大は小を兼ねる 小をいくら習得しても大の習得がなければ、君の将来は昏い ハッキリ言うが、C言語だけはマトモなPGは皆さん習得済 これにアセンブラが付けば最高、どんな言語でもOK スクリプト言語しか出来ないヤツは捨てられます C使うのはいいんだけどLinuxと同じで選民思想的な人が多すぎなのが嫌 用途に応じて他の言語も使えるぐらいの柔軟性を持って欲しい Cは新卒の人が仕事で使って上達していけるほど利用されてないんでは? 組み込みのところは使ってると思うけどさ だからCがオールマイティなら他人口言語でもOK しかし逆は必ずしも成立しません あと数学センスの無い奴はこの業界を去った方が身のため PGだめでも幾等でも浮かぶ瀬はいくらでもある リナックスはユニックスを平易にしたもの UNIXが完璧に弄れれば、Linixなんか簡単 UNIXが抱えてきた歴史思想が分かってるわけだからね >>722 割り込みが入らないのはccNUMAなんかで都合が悪いから lock freeなアルゴリズムには十分なll/scが考え出された ところがGPUではwarpベースのデータ並列だから分岐は固定的に最小限にしたい それで昔に戻した CPUでもGPUと全く同じでいいかというとそうでもない >>736 言語の特質 自然言語と人工言語は大差ない エスペラントですら方言はあるし 手話の動作も世界統一は無理だった 自然言語は、口語から始まる 初めに言葉あれど文字は無し アーだ〜ウーだ〜・・・こうやって言い始めます ここに法則は無い しかし言葉が自然に出来てくる過程で何と法則を必ず持ちます これが「文法」です どんな自然言語でも美しい「文法」を纏います これってちょいと不思議です なんでかな〜? >>754 単に表現が違うってだけでしょ。 アルファベットまで使う16進数表現が昔はなかったってだけじゃん。 電機と電器・・・この違いがメインフレームとパーソナルコンピュータ >>756 表現方法、表記方法の有無じゃないよ。 8進数マシンと書いただろう? つまり、3ビットですね。3ビット区切りがしっくりくるマシンがあったってことさ。 12ビットくらいが丁度いいという時が。 その後、4ビット区切りがしっくるくるマシンが来て、16進数の需要が増えた経緯。 なんで頭でっかちなエアプキチガイって連投してしまうん? >>760 そういう問題じゃなくて 入力機器の問題 8進数使ったのは まあ昔wordが6bitのマシンはありましたが >>762 ですよね。 >>760 じゃあ8bit CPUの時代になぜ256進数にならなかったのでしょうかw >>706 ポータブルではない例を出して「アセンブラよりは」なんて話はナンセンス 処理系依存なコードならアセンブリ言語で意図の明確なコードを書いたほうが保守性も安全性も高い てか、組み込みの中でも8bitとかリソース制限きつい領域ってだいぶ減ったよな? >>764 8割の環境で動くコードを書くか、特定の環境でしか動かないコードを書くか。 俺だったら前者を選ぶな。 >>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 いやアセンブリだろ 普通 アセンブラっていったら通じないことはないまでも誤解を招きかねないし突っ込まれる ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる