なんでもC言語で開発する奴アンチスレ
リーダーの命令でC#、C++、Python、Java、Javascript、Kotlin等、OOPパラダイムを取り込んだ言語及びフレームワークを使った開発を封印して苦労しながら開発している人達のためのアンチスレです 昔はアセンブラができないCプログラマーは使えないと言われてたな そうだな、アセンブラを知り、その開発効率の悪さを
思い知らされた挙句の果てで、Cを使うぐらいが望ましい。 MFC縛りで開発してる奴おる?
私 で す
ふえぇ...辛いよぉ...
先輩の書くコードがC言語風
しかもこれ、2021年の話なんだよ
信じてくれる? 先輩ってことは自社開発のようだが、
お前らが何かにつけて自社開発やりたいっていうから、
ハケンジジーのおれが、何度もCは必須って言ってきたのに。 >>394
> 先輩ってことは自社開発のようだが、
> お前らが何かにつけて自社開発やりたいっていうから、
> ハケンジジーのおれが、何度もCは必須って言ってきたのに。
使えるのならC#使いたいよぉ...
でも、頑固上司及び先輩がそれを許さない
C#とか言うなんちゃてC言語wwww
https://medaka.5ch.net/test/read.cgi/prog/1398490686/
2014年にあのようなスレを建てた人がおったじゃろ?
2021年にも、あのようなスレを建てそうな人達が会社を運営しているんじゃよ
ふぇぇ...辛いよぉ...XamlやHtmlでレイアウトを記述したぃぃぃいいいい
リソースファイルも使わずにC言語風のプログラムでデバイスコンテキストを叩いて印刷レイアウトを描画するのは、もう嫌じゃぁぁぁああああ C++とC#は全くの別物だからね。
なんちゃってですらない。
C#は事実上のVBで、Javaと比較する言語なんだよ。 DelphiとJavaを混ぜてVB風に仕上げたのがC# C#とVBの比較でC#に幻想抱いてる奴いるけどさ
あんなのMS社内の派閥争いでしかないよ >>398
逆に聞くけど、貴方は何言語でWinネイティブアプリ開発するの?
Reactとか言って逃げるの無しね
Winネイティブアプリ(exeかwin10アプリね) >>393
CStringさえも使わずひたすらTCHAR[]で頑張るってこと? 最近はすっかりpython使いになってしまった
もうCなんて原始人の使う言語にゃ戻れないわ >>96
俺、理工学部出身でIT業界で働いた事は無いけど、在学中にC言語なんて授業ではやらなかったぞ。
電子計算機演習は、FORTRAN77っていう化石みたいな言語を、TSS端末経由でVOS3っていう化石OSの稼働しているHITACというマシンで、
授業で扱ったのは、主に数値計算に関するプログラムばかり。
レポート課題は、ニュートン法による√xの計算や、ピボット交換を伴う連立多元1次方程式、
ニュートンコーツ法やルンゲクッタ法、予測子修正子法、リープフロッグ等の数値積分法や常微分・偏微分法、
FFT、線形回帰、二次方程式等ばかり。
ペーパー試験問題も、
・0.01を100回足して1にならない理由
・円周率πを数値計算で求めるのに、π/4を計算して最後にそれを4倍しなければならない理由
・実数の合計値や平均値を求めるのに、昇順でソートした後、小さな数値から計算していかなければならない理由
・ビット列で示された浮動小数点数を、IBM形式からIEEE形式への変換(ビット列を記述)
といった問題ばかり。
しかも、二次方程式の問題は、わざと引っ掛けで高校で習った二次方程式の一般解の公式が書かれている。
これをそのまま使うと0点。
他には、Common Lisp、Prolog、EFS等。 東大だって今はC言語じゃなくJavaだ、京大はC言語やってる。 >>404
GithubとかだとC単体だし、普通に文脈があればCで通じるんじゃないかね >>404
日本語と同じよ
時と場合によっては”C”で通る時もあれば”C language”でないとダメな時もある プログラミング言語って英語で対応する動詞ってuse?speak?
言語だからspeak? >>405
東大理を6年前くらい前に出たけどFortran(2008)だったぞ、2年前にもやってた
ハートリーフォック法とかDFTとかフルスクラッチ
あとPythonも押してる
弥生キャンパスにある情報センター開講なんで他の学部学科もそんなもんかと、さすがに情報学環はIT向き言語やってそうだけど c自習してるけど癖だらけで学び甲斐があって好きだよ
検索に埋もれるからc-languageと書いてほしい
なげーからclangみたいな通称使いたいけどclang死ね
clispお前もだ(common lisp処理系)
しかもclangほど頑張ってない最終更新十年以上前のゴミクヅ
なぜコンパイラ書きは自己顕示欲を抑えられないのか? Cで検索するだけで上から二番目がC言語だったぞ
ちょっと「練」が足りないんじゃないか .NET開発はVBかC#、どっちかに統一しろよと思う 書き途中
>>414
pl/1思い出した…
まだ残ってるのかな… >>416
吐き出す中間コードは同じだと聞いたが? >>4
C++すらって…
C++が一番難しい気がする… C++の難しさは
後から後からその場しのぎに拡張して来たことによる複雑さと「わかりにくさ」
そしてそれらを完璧に理解して使いこなしていても
複雑な込み入ったプログラムではどうしても主にメモリ関連のバグ(ミス)が生じてしまっている現状
だから有能な人ほどRust導入を検討もしくは導入しているし大手IT企業はRustを採用しようとしているか既に採用している そりゃあ企業単位でC++で開発するのはもう無理だよ。
できる奴確保できないもん。
最初に言ったように、能無しをうっかり雇うのを防ぐという目的なわけだが、
そのふるいをかけて人材確保に成功するかどうかは、あくまでも別の話だからね。 >>420
言語の優秀さの差で勝負ついたね
新規プロジェクトはC++捨ててRustだらけ C++使いの人に質問
これは10年前の記事からの抜粋だけどいまでは解決されてるの?
・STL のアロケータは極めて扱いづらいく、コードの肥大化を招き、効率も最適ではない。
・いくつかの STL の実装には slist, hash_map, shared_ptr などの有用なものが用意されているが、これらはポータブルではない。用意されてない実装もあるし、バージョンの違いで互換性がなかったりもする。
・STL は関数呼び出しの階層が深く、それによりインライン化が妨げられ、遅くなっている。
・STL は非常にデバッグしづらい。例えば std::list は void* を使うためにデバッガで内容を見れないことがある。また、暗号めいた変数名やデータ構造だらけな上、コードに関するドキュメントがない。
・STL のコンテナは、格納するオブジェクトのアライメントをサポートしていない。アライメントに関するサポートが弱いのは C++ の欠点である。アライメントに関するサポートは C++09 で提案されている。
・STL のコンテナは、要素を追加するときにコピー渡しする必要がある。これはコンストラクタのコストが高いオブジェクトで非効率的である。
・STL コンテナは private な実装を持ち、データ構造などをポータブルには弄れないようになっている。これができることが重要な場合もある (node pool など)。
・STL の多くの現在の実装が、空のコンテナにメモリを割り当てることがある。これは最適化を妨げており、効率改善の大きな余地がある。空のコンテナはメモリを割り当てるべきではない。
・STL のアルゴリズムの全ての実装は述語の参照をサポートしておらず、それが原因で非効率的なハックを強いられることがある。
・STL は実用性、効率より正当性に重点を置いている。これは妥当なポリシーだが、std::allocator など、いくつかのケースではユーザビリティと効率を妨げている。 ホントに最適化が必要なら自力で高速コンテナ作るよ
べつにすべてが最適化されている必要はないし最適化されていないと夜も寝れないビョウキなのか どちらかというと自分が書いたコードの動きが詠めずにコンパイルエラーに頼りまくるやり方の方が大問題な気がする コンパイルエラーが難しくて解りにくいってコード書いてエラー出しているのは自分なんだから少し考えればどうしてそうなったか判るだろ普通は 新たな案件だとバックエンドから組み込みまであらゆる分野で、C++捨ててRustにする例が増えているから、C++は既存の案件メンテ用の地位に落ちた。 >あらゆる分野で、C++捨ててRustにする
だったら良かったけど、まだまだC++な部分が多いしなぁ
>C++は既存の案件メンテ用
にまで行くには、まだあと5年10年かかるコースでしょ >>424
最適化されないと夜も寝れないビョウキな人はいる
ゲーム機向けに開発している連中は病的なほどに最適化にこだわる
この記事は米EA社(Apex Legendsとか作ってる会社)が書いたもの
STLはゲーム開発に適さないのでEASTLという自社ライブラリを作成して使った
というのが10年前のはなしなんだけど、10年経って状況は変わったのだろうか? 規格レベルの話と実装レベルの話が混在しててなぁ
少なくとも規格レベルの話はざっと見ただけでも解決されてるものは多い
std::unordered_map / std::unique_ptr / std::shared_ptr の標準入り(C++11) とか要素の直接構築, ムーブ挿入 (C++11) とか そうか、C++も日々改良されて使いやすくなっているんですね C++より便利かつ安全なRustが登場したことで徐々に置き換わっていきそうですね ゲーム開発の現場ではそろそろC++では難しくなっているのかもしれない
その理由の一つがビルド時間である
ハードのスペックが年々上がり、それにともないゲームも複雑化している
昔は1対1だった対戦ゲームがいまでは100人バトロワである
カプコンはモンスターハンターRISEでC++をやめてC#を採用した
結果ビルド時間が1/100になったそうである
https://www.nintendolife.com/news/2021/06/feature_monster_hunter_rise_director_talks_re_engine_on_switch
その面でRustはC++の代替候補にはなりえない
RustもC++並にビルド時間を要するのだから >>433
その論だとC#の代替にはならないだけで
C++並みなのだから、C++の代替にはなるだろ なんでもKotlinとswiftで作ってごめんなさい
C♯とかDartとかC++は無理でございます 業務系のプログラム作ってて、ラムダ式やテンプレート知らなくて困ったことが1度もない。 >>436
ラムダ式ってsort関数みたいなやつに渡す一回限りの処理をぱっと作るためのやつでは?(細かく言えば違うけど)
確かに使わんでも組めるけど使えるのなら実装が楽になる ビット一つが重要な意味を持つハードウェア制御とかにゃCが向いてるよな、軽いし 一回限りといえば一回限りだが、ループぶん回して何百もバリエーションを量産して、それを何百回も使って初めて意義があるので、使い捨てになるのは結果論でしかない
大体無名なのは、そういう使い方では名前なんて一々付けてられないし、その必要がないからで
無名なのも結果論 名前を必要とするという仕様はいわゆるarbitrary limitationだよな
名前を付けたければ付ければいいんだし、コンパイル時にはどうせシンボル名は適当な識別子を割り当てられるんだから >>483のように、無数のバリエーション必要としない、本当に使い捨ての関数を一回限り定義する為に無名関数を使うのは明らかにバッドプラクティス
名前を付ける事が可能であるかぎりは付けるべき
一つ一つの関数に名前を付ける事が現実的に不可能であるケースにのみ使用すべき >>436
それは高階関数を引数とするメソッドが多い現代的なプログラミング言語を使ったことがない初心者なだけでは メンテナンス考えたら本当に同じ役務にしか使い回しはしたらダメだしなぁ
基本関数以外に同じにしていい関数なんてほぼ無いんだよなぁ >>442
ほとんどの言語では無名関数(ラムダ式)を変数に入れることができて変数名が付くので全く問題ない
そして何でも通常の名前のある関数にしてしまうのは名前汚染で邪魔
もちろん高階引数を取るsort, map, filter類などに渡す時は名前すら必要なく無名関数(ラムダ式)のまま渡せたほうがメリット多い Cを笑うものはCに泣く
この世の9割はCで出来ているのだから 自分「組込でCを10年以上使ってます」
敵「じゃあC++でもC#でもJavaでも何でも応用効くよね」
無茶言うなや
10年もそれだけやってたら今更簡単には他の言語に移れんわ CしかやってなかったらC++でさえ厳しいのにね
C#なんてむしろJavaとかやってなかったら多分Cからの移行は結構しんどいかも
オブジェクト指向というかクラス的な考えを中々理解出来ない人も多いようだし C++のテンプレート
C#のデリゲートやラムダ式
いまだに使いこなせないわ C++のテンプレートはコンパイル時に処理される別の言語だと思った方がいい気がする
デリゲートやラムダ式は使いこなすのに修練が必要な類のものでもない デリゲートをラムダ式で書くとかさ、
まあ、むしろ追うの一箇所で済むからいいけど Cは開発当時は完成度が高い最強の言語だったと思うよ
俺もCでプログラム覚えたし
でも今は流石にね 今はCの代わりにRust
言語機能の利便性と安全性が段違い bufに詰めて返すAPIが分かりにくすぎる、サブルーチンなのか関数なのか、呼び方の文法だけ改善してほしい
Fortranみたいにせめて文法的に分けるとか
func()
call subr() intent指定ができずaliasingの問題で最適化が妨げられてるし、そういうところでハイパフォーマンス言語としても中途半端でFortranに後塵を拝したわけで なんでもFortranで書くやつなんて居ないから無害じゃね 何でも重たい関数呼び出しにしてしまったツケは、まあ地道にinlineすればある程度埋められるだろ opencobolというのがある
cobolの正反対の立場にいた
gnuが提供していることが
歴史の皮肉だな 久しぶりにこのスレを見るのだが、Cは必須厨のハケンジジーが、
なんと、Cの組み込み案件に携わることになってしまった。 なんでもC言語で書くのはあまり見たこと無いけど、なんでもC言語(の書き方)で書く人は結構見てきている
お前今書いてるのC++/C#だぞCじゃねぇんだぞって何度思ったことか。おっさんや組み込み出身者は大体そう >>466
例えば?
クラスにせずに全てC#でいうstaticなメソッドとか? C++とC#なんて全く違うのに同じ括りで語るとか
C++ならまだCっぽく書けるがC#なんて無理だろ >>466
Cの汎用性の高さが証明されたな
ちゃんと動くならどんな書き方でも良くね? ん?
a << bで済むのが、わざわざstrcatつかってるとか? C言語なんて勉強していたらコロナ禍でリモートワーク率0%の現場に派遣される
キャリアサポートセンターの人もC言語は学ばない方がいいとセミナーで話していた リモートワークの現場なんてスグにクビになるからねぇ。 >>468
極端な例だとstringすら使わずchar[]で全部書いて標準ライブラリも使わず関数は自分で実装
クラス変数は全部パブリックみたいなとんでもないのは見たことがある
まぁそこまで極端でなくても割と組み込みとか制御とかそっち系の人が書くC#はバリバリハンガリアンですforeachなにそれみたいなのが多い C#のコーディングスタイルでグローバル変数云々とかヤメレ
staticメンバーならまだ許せる >>475
そこまでするんならアンセーフコードもバリバリ書けそう
擁護する訳でないがアンマネージコードで処理したい場合に活用する事がごく稀にある >>475
まあ、自分勝手な業務外アプリの開発とかなら、それぐらい普通だけどね。
Cが必須ってのは、勉強の一環としてそれぐらいやれってことね。
なんのライブラリ使ってるのか、ちゃんと意識しないといけない。 C言語はどんなマシン語、アセンブラになるのかわかるレベルの人間が使わないと意味がない。 まあ結局はそうなんだけどね。
最近、アセンブラのことが書かれた本もチラホラ見るようになった。 >>482
横だけど、標準にあるやつを使えばいいのでは?
多分>>475の「クラス変数」は「インスタンス変数」の書き間違いだと思う
クラス変数ってC++だとstatic付きメンバ変数のことらしいし
打ち間違いだと思う
もしそうなら普通はよっぽどの理由がない限りpublicにはしないと思う
システムハンガリアンは使わずに変数名をつける
foreachが使えるなら使う
とかじゃない?
あとはその言語のコーティング規約を読んで対応するとか 地味に言語によってコーティング規約が違うみたいだし
C++ではメンバ関数は大文字から始めるキャメル、Javaだとメソッド名は小文字から始めるとか >>483
たぶん元レスはメモリをどこに確保するのかの話だよ
C++としてマナーのいい書き方をしたところでハードウェア的にはマナーの悪い動きしかしない
だから「どんなマシン語、アセンブラになるのかわかるレベルの人間が使わないと意味がない」ってレスが続いてるんだと思うよ googleの出してるC#ガイドラインの方が好きだな Googleのガイドラインはあんまり好きでない
仕事でも圧倒的多数はMicrosoftのほう
だがこれ以上言うと戦争起こりそうなのでやめとく >>484
C++には大文字と小文字を使い分ける慣習はない。
単語の区切りに大文字を使い始めて普及させたのはマイクロソフト。 c以前の言語は後方互換の為に大文字小文字を区別しないのが多いねFortran, lisp, cobolとか
lispとFortranは書くけど、lispは出力は出力は自動で大文字になるので入力(コード)は全て小文字で書く、replで入出力が一目で分かるので便利な慣習
まあスネークでもなくて独特なkebab-case-pだけど
Fortranはスネークもキャメルも居るけど、repl開発じゃないし大文字にするか悩む合成語の表記揺れてもコンパイル通るので俺はキャメル クラスとそのインスタンスを大文字小文字違いでしか命名出来ないような奴はOOP向いてない説