C言語なら俺に聞け 144
■ このスレッドは過去ログ倉庫に格納されています
おまえら暢気だなー
ほんっと金銭感覚が絶望的にアウトなやつら
AIが人の要望に応えるまでに
人力でやるべきことは無尽蔵とは言わんまでも
特需はごまんとあるわけで
それを指くわえて見送るのは
アンダードッグな精神構造がそうさせるんだろ
仕事ってそういうもんだぜ?
未来永劫食うに困らないなんて保証はねえんだよ
その時その時の社会情勢を見て自分にできることをやって
おまんまにありつくんだよ >>360
要望はあげられるけれど、それが要求と一致することは稀だよ。良い要求分析ができるAIはしばらく先だろうね。 >>354
同意
>>353
情報系の適所はITドカタだよ。(PCで完結するソフトウェア)
電気電子(製造業)や自動車(機械)に於いては電気電子/機械の知識が無いと話にならんだろ。
例のブランコは、
https://www.tamingdata.com/wp-content/uploads/2010/07/tree-swing-project-management-large.png
結局のところ、仕様が分からない奴同士で話を進めるからそうなるのであって、
仕様を決められる奴自身がプログラミングすれば解決するんだよ。
今のところプログラミングは文系馬鹿には難しすぎる、ってことでITドカタが担当しており、
仕様のすりあわせをもっと確実に、ってことになっているが、
そもそも発注元がプログラミング出来ればこんなことにはなりようも無いのさ。
(最大の問題は発注元が工数《どれくらい難しいか》を全く見積もれないこと。例:京都市)
だから小学生から全員にプログラミングを教え、これが成功した場合、この話はなくなる。
プログラミングを万人が出来る時代になろうとしているのさ。
だから情報系特化なら、常人の領域ではなく、達人になっていないとただのゴミだ。
「プログラミングが出来る」だけで食える時代ではなくなりつつある。ちゃんと認識しろ。
そしてソフトウェアインフラのほぼ全てをCが担当している現在の状況で、
C抜きで達人になれるはずも無いだろ。
情報系でPythonしか出来ません=おまえ=ゴミ確定だよ。
情報系の学生ならグダグダ言わずにCもやるしかないだろ。アホなのか?
逆に工学系で専門領域がPythonやMatlabで完結しているのならそれだけでいいが。
工学系にとってのプログラミングはあくまでもツールだからね。 DNS登録されてないようなURL貼って長文書かれても困るなぁ マ板でするような話を指摘されても延々と続けるような奴らが何を言おうと、まったく説得力がない。 荒れてるな
それではネタでも投下してみるか
単純な制御プログラムのサンプルとして物理現象を連立微分方程式としてどの様にプログラムに落とし込むかを示してみる
実際は目標値に対して追従するように入力項を加えるのだけど面倒くさいので省略
制御プログラムのサンプルと言いながら実は中身は単純なシミュレーションだけど大体こんな感じ
>>348,349で微分方程式の解そのものを求める必要はないといった意味は分かると思う
https://ideone.com/Od1fxj 微分方程式君がマウントしに来てるだけだからスルーしとけ 工学系のプログラミングの一面を示しただけだよ
業務系そのものを否定する気はない
スレに粘着してる情報工学の学生の参考にどうぞ
組み込みのC言語プログラムの理解の助けにでもなればいい >>368
そんなもん俺でもできるわ
何をドヤ顔で... 情報工学の学生は>>340 だからな
正直言うと既に手遅れな感じはしてる >>372
どうでもいいけど末尾6でガックシって大学内でのWi-Fi経由での書き込みやん
大学内Wi-Fiは監視されてるから2chに書き込まないほうがいいぞマジで
俺の大学は学籍番号登録して大学Wi-Fi繋ぐタイプだったがアプリとか落としまくってたらメールで呼び出しくらったわ
利用禁止だけで済んだけど どうやったらこんなつまんないレスを返せるんだよ...
重症やな w 大学当局が何の規制も監視もしていないことは自慢にはならないぞ
外部の違法サイトにも好き放題でアクセス出来てしまうって事は、
学内に不正侵入も招きかねない
学生の個人情報も流出しかねない大学だって言うことだろう スレ違いや板違いが100レス以上も続いてしまってるからそろそろこのスレ見るのを止める C言語勉強するにあたり相談です。
@スクールに通って学ぶ(170時間程度)
A3日間の会社主催のセミナー参加
B本、参考書等やネットで独学
Cその他
それぞれ理由とおすすめがあればお願いします! >>387
何のために勉強するかも書けよ
ってか会社主催のセミナーとか言ってるなら仕事か?
なら只だろうからそれからやれば? >>388
なにも知らないです。VBかじってる程度。
>>389
富士通のって結構いいですか? >>390
会社の命令ですね。
スクール通うより富士通とかのがためになるんですかね? >>392
会社の命令なら会社主催のセミナー行けよ
C言語の話以外にもその会社独自のやり方の説明もあるだろうし
それとは別に独学でも学びたいと言うならスクールでも本でもいいけど、なんか簡単なゲームでも作って色々ここで聞きまくるって言うのでいいんじゃね? いろいろとありがとうございました!
参考にさせてもらいます! Cのマクロでその場じゃないところに展開って出来ないかな?
VC++2008環境でVC++2017(C++11相当)のラムダを使いたいのだが、当然使えない。
そこで以下を参考にしてマクロで乗り切れないかと考えている。
http://koturn.hatenablog.com/entry/2013/08/06/223805
字句の置換は何とかなるとして、問題なのは「関数内関数定義」がない事。
だから手動でいいから関数の外側に展開させたい。具体的に言えば、以下。
void abssort(float* x, unsigned n) {
std::sort(x, x + n, [](float a, float b) {return (std::abs(a) < std::abs(b));});
}
を書き換えるとして、LAMBDAがマクロで、
// ここに出力する方法あるか?
void abssort(float* x, unsigned n) {
std::sort(x, x + n, LAMBDA(ホニャララ) );
}
// 或いはここでもいい
マクロ内で#defineしてプリプロセッサをもう一度くぐらせればいけそうな気がするが、これって無しだよな?
出力場所は手動、名前は手動マングリングで構わない。記述上ラムダを使いたい。
環境を上げるとしたらVS2017なので、そのときに書き換えがほぼ無しで済ませたいから。
delegateで書いてみたものの、やっぱり記述量が無駄に多いので、ラムダにしたい。 void abssortごと置き換える
C++詳しくないから知らんけど 関連質問しました。
http://mevius.2ch.net/test/read.cgi/tech/1413180800/138
VSにユーザ定義プリプロセッサを噛ませられればいけるのだけど、
知っている人がいたらよろしく。
>>396
それは無理。
実際はLAMBDAは大量にバラバラに使ってる。
というかそういう使い方しないと大してメリットないし。以下とか。
viod function(){
if (xx) x = LAMBDA( xxxx );
else if (yy) y = yyyy;
else z = LAMBDA( zzzz );
} 今使ってコンパイラがweakって宣言子があって、どうやらデフォルトの関数処理を書いておいて、後から同じ名前の関数でそのまま飛び先を上書いてくれる機能があるなぁ >>395
自己解決しました。
結局自前のスクリプトを作成したので、エレガントではありませんが。
知恵を絞ってくれた人はありがとう。
http://mevius.2ch.net/test/read.cgi/tech/1413180800/150 こんばんは
はじめて書き込みします。
入門書としてやさしいCをやり終えたのですが、今後やっていった方がいい本はどんなのがありますか? 今、何が出来るのか
これから、何がしたいのか
↑
による Cって何のためにやるの?組み込みしかなくね?そんなの極める必要ある?
C++やろうぜ >>405
>Cって何のためにやるの?
C++をやるため >>402
単純な数行のソースかいて、コンパイルしてコマンドプロンプトに出力するだけです。
>>403
何ですかそれ?
>>405
将来的にはやるつもりです。
ですがその前にDirectXでスーファミソフトの模擬展開してみたいとも思っとります ダイレクトエックス?テン?か知らないけどそれの本は? >>410
探してるんですけど、なかなか本やにないので ますますよく分からんが
少なくとも「その前に」ってレベルじゃねぇ >>412
自作ゲームを作るのが目的で、自分の性分として元祖からやっていきたいと思って、、、、
ファミコンの実機はパソコンx86とDirectXで作ったとかなんとか、、、、
要領が小さい横スクロールアクション(ロックマンの亜種)を作ってみたいのです。 >>413
実機って何を指してるか知らんけど
ファミコン(1983)、スーファミ(1990)に対してDirectX1.0は1995年発表だぞ
x86は流石にもっと古かった >>413
>ファミコンの実機はパソコンx86とDirectXで作ったとかなんとか、、、、
何処からそんなデマを聞いたんだ?
ファミコン実機の中身はx86どころか8bitCPU(6502ベースのカスタム品)だということ知ってる? >>413
ファミコンの発売は1983年でスーパーファミコンは1990年だ。
まだDirectXも何もない時代なんだけど、何のことを言っているのかな?
Windows上でのエミュレータの話? >>409
単純な数行のソース?
Hello worldでさえ6行もあるよな。。。 >>416
Vipでゲーム機の進化の話があ出たときに、スーファミの開発環境がDirectXだって書いてあった >>419
DirectXはその前身のGame SDKでさえWin95(1995年)と同時期にリリースされてる
スーパーファミコンの登場はそれより前のWin3.1(1992年)すら登場していない時期
まだMS-DOSの全盛期だよ、タイミング的に有り得ない >>152
遅くなったが、なかなか難しいがその難しさ含めアイデア次第でとても面白いな!
ツイやらインスタみたいのがもてはやされとるけどやっぱこういう反リアルタイムで半匿名性保持したものって必要なんだと思うし、2hは仰るとおりこのまま行くと5年後10年後にはホントの過疎化で存続危ういし、今からテコ入れして人の誘導図るのは大賛成!
よし、俺もC本気出してやるかw https://ideone.com/Jhbm7n
グラムシュミット計算して結果をそのまま出力するって課題が出て、一応出来はしたんだけど出力で変になったんだ
リンク先に書いてる奴が正しい出力で、最後のコメントみたいにすると違う結果が出てくる
具体的に言えばcmdで
「 f3 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 1.000」ってやると
「 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000 1.000」が出力される(リンク先はコレ)はずなんだが
コメント通りにすると
「1.000 1.000 0.000 0.000 0.000 1.000 0.000 0.000 0.000」になっちゃう
環境はVSCodeでコンパイラはVS2017のcl >>427
Cは複数の値を返却値として返すことはできない。関数の引数リスト以外で、カンマを書くとカンマ演算子として解釈される。 >>428
なるほど、ありがとう
カンマ演算子ってのを初めて知ったよ
>>429
41行目 >>428
構造体を型宣言して戻り値にすれば、複数の値を実体返し出来るけどね。 結局、質問者は問題点が何処にあるか理解できたのかな?
カンマ演算子の評価結果は、最後の式の評価結果だからね
余計なお世話かも知れないけど、どうしても結果を戻り値で返したい場合は構造体に纏めれば出来るよ
というか、ベクトル自体を配列ではなくて構造体に纏めた方がプログラムの見通しがすっきりすると思う もう駄目だ
>>427のコードを構造体に纏めて書き換えてみたけど、ideoneのコマンドライン入力がどうやってもエラーを吐く
もう諦めたのでテストデータ埋め込みでコードを晒す(数学的には意味のないテストデータだけど)
誰か原因分かる人確認お願いします
手元のVC++2017ではコマンドライン入力でも正常動作することは確認してる
https://ideone.com/IEGKl0 もしかして勘違いしてた?
ideoneの標準入力stdinってプログラム実行開始前のコマンドライン入力としては使えないのか?
もうどうでもいいけど… fscanf(stdin,...) とかの 入力ストリームにこれを与えるってだけ
実行時引数を渡すしくみはなかったような >>436
ちなみに初心者だよな?
だとすると、一般的にはCでは構造体の値渡しは(特に理由がある場合以外は)しないので、
ポインタ渡しで書くことに慣れた方がいい。 . はほぼ使わず、 -> ばかりになる。
具体的に言うと、
void gram_schmidt(BASIC3* bas, VECT3* v_1, VECT3* v_2, VECT3* v_3);
として、
BASIS3 bas;
gram_schmidt(&bas, &v_1, &v_2, &v_3);
とする。
値渡しする場合の理由だが、通常は、以下のどちらか。
・中で一時期的に書き換えるため、どうせコピーが必要。
・中で何度も使う場合、値渡しの方が速い場合がある。
値渡しはスタック上に置かれるためイミディエートオフセット命令が出る。(Read1回でデータを読み込める)
ポインタ渡しは間接参照になるため、アクセス速度が少し遅い。(2回Readが必要)
ただし値渡しは呼ぶ際と戻る際に構造体の中身を全コピーするので、それとの兼ね合いになる。
単純には、値渡しはコピーが2回発生するのだから、確実に速くなるとしたら3回以上使う場合で、
逆に言えば、2回以下のときはポインタ渡しにしておけ、となる。だから大体ポインタ渡しになる。
個人的には、このくらい自動で最適化してくれとも思うが、
Cは「書いたように動かせ、余分なことはするな」の文化だから、手動で切り替える方が好まれているのだろう。
(C++の場合はコピーコンストラクタが動くことになっているので、自動で切り替えたら違反になり、出来ないはず。) >>440
うーん、まあそうなんだけどね
今回はそんなに大きなデータでも無いので手抜きしてる
元々のコードは次元もパラメータとして持っていたので、基底空間の構造体そのものをベクトル構造体のリスト構造で構成するのが正解なんだろうね
ポインタでベクトル構造体を引き渡すことになるとは思う
ただそこまでやるのが面倒くさかったので、3次元ベクトル空間に限定して無理やりデータを小さくまとめてしまってる
この程度なら値渡しでもいいかと手抜きしてるのが裏事情、ぶっちゃっけて言うとまともに実装するのが面倒臭かった
まあ、あんまり細かいこと突っつかないで>< >>441
やれば分かるが、そんなに記述量は変わらないぞ。
. が -> に変わるのが大半で、それ以外はほぼそのままで済むはず。
主に計算用途で、Python -> Cを目指しているのか?
だとしたら速い書き方が出来ないと意味無いだろ。
そして、ベクトルの値渡しとかスタックを余計に食う=再帰したら悲惨なことになるから止めとけ。
->の表記が気に入らないのなら、C++の「参照」を使えば . のままでも書ける。
この場合は、ソース自体の書き換えは呼び出し部分だけで済む。
(ただし、非const参照は推奨されていない場合もある。例:googleのコーディングルール) >>442
このスレには珍しく数学的な背景に詳しそうだな
ちょっと聞きたいけど、基底空間の拡張そのものはベクトル構造体をリスト化すれば簡単なんだけど、ベクトルの要素の拡張で簡単な方法ないかな?
実は最初にそれを考えたんだけど要素もリスト化するとポインタの連鎖が大変なことになりそうで、躊躇した結果がVECT3やBASIS3などの次元決め打ちになってしまってる
あとは演算部も際限なく項が増えていくので再起でも使わなければとても実装できそうもない
これもポインタの実装が大変なことになるのが容易に想像できる
参考までに先のコードを拡張するにあたって何か良さそうなアイディアないかな >>443
いや俺は多分君よりは詳しくないが。
ただ、君はだいぶ勘違いしてると思うぞ。
1. まず、値渡しをポインタ渡しにしたところで、記述量は大して変わらない。
これはやってみれば分かるし、どのみち通る道だろうからやっとけ。
大変なことになんてならない。
2. 次に、Cのポインタは配列のサイズは気にしてない。
だからベクトル要素の拡張とか、最初から気にする必要が無い。
強いてコツを言うなら、ド頭を「長さ」にして、データは末尾にしとけ、という程度。
(大体これで上手くいく)
typedef struct {
int num;
// int elemSize;
double* elems;
} VECTX;
typedef struct {
int num;
// int elemSize;
VECTX* vectors;
} BASISX;
多分これで全て事足りる。
混乱するようなら num を dim(ension) なり rank 等に変えてもいいが、
ダックタイプ的に手抜きする気なら num に統一してついでに int elemSize も構造体に入れとけ。
そしたらコピー等は同じ関数が使えるようになる。
(void*にキャストしてmemcpyするにしてもサイズが無いと無理。
Cには実行時型情報(RTTI)が無いから、必要なら自前で用意するしかない)
或いは、VECTXとBASISXを分けずに、どちらもvoid*にキャストして1種類の構造体で扱ってもいい。 構造体返しなんか、知らないうちに使ってるんだから気にするな。
君が返り値に指定したその型が実は構造体だったなんて誰も気にしてないから。 ファイル操作しているなら、
FILE構造体のお世話になっているはず
この構造体の中身を一度見てみると良いよ でも FILE 構造体を構造体返しや構造体渡しにはしないからなあ… 構造体返しやら構造体渡しやらを使ってる標準ライブラリ関数なんかあらへんやろ K&Rでも初期のほう
構造体の値渡し/構造体の値戻しは出来なかったわけで
標準関数に盛り込まれることはなかったんじゃなかろうかと いや、コンパイラの吐くコードがアホだったから解放したスタックから値をコピーする事になっちまってただけだ。
割り込み専用スタックが無いアーキテクトマシンはそこで死んだ。 >>453
socket関連に構造体渡しってあったっけ?
あったっけっつっちゃった >>456
由緒正しきバークレーソケットに構造体渡し・構造体返しがあるわけがない、常識的に ■ このスレッドは過去ログ倉庫に格納されています