今はC言語は選ばない方がいい
■ このスレッドは過去ログ倉庫に格納されています
0001ジョセフ ◆.VUCb/gSgo
NGNG言語仕様自体に入出力は無く、関数呼び出しで呼び出し側の変数を操作するにはなんとポインタしか手段が無いのである。
当然オブジェクト指向なんて考えて作られているわけがない。
文字列もポインタを使ってのアクセスだしmalloc/freeでのメモリリークの心配もある・・・これで高級言語?信じられるだろうか。
その上、標準ライブラリはとても貧弱でGUIやネットワークが普通に使われるこのご時世にはとても不適当である。
こんなんじゃまともなプログラムなんて作れるわけがない。
現在はJavaやC#、Delphiなど魅力的な言語は多数ある。
これからプログラミングを始めたいという方はそちらをお勧めする。
0153デフォルトの名無しさん
NGNGC#の方がもうじき廃止されるんでしょ?
0154デフォルトの名無しさん
NGNG2chはCを推奨しません。
0155デフォルトの名無しさん
NGNGVC++に戻ろうかと本気で考え中。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
0158デフォルトの名無しさん
NGNG>>148
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG次のハードを買わせるため?
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNGCがいいとかC++が最初に選ぶ言語うんぬんなどはどうでもいことではないか?
プログラムの力というのは、
「所定の動き」を「設計」して「コーディング」する能力であって、それは言語とは関係ない。
目的に応じて必要なものを使えばよい。
細かな文法は違うけど文法なんて問題の本質ではない。どんな言語でもプログラムの力は付けられるはずだ。
ただ、「言語そのもの」の使用方法(使い方ね)や「文法」ましてや「クラスの使用法」の学習は多くの方が指摘しているように、
プログラムの力とは別のものだと思われる。不必要とまでは言わないが。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG最初に学ぶならFortran66よりCの方が楽だと思うが。
0167デフォルトの名無しさん
NGNG他の言語でも同じコトだけどな
たまたまC言語で覚えられないことが今は重要だってだけだ
0168デフォルトの名無しさん
NGNG言語が嫌いなのはわかったから
偉そうなことは自分ができるようになったら言え。
0169デフォルトの名無しさん
NGNGパパ感激しちゃった(TДT)
0170デフォルトの名無しさん
NGNG「そんなことよりもっと重要なことがあるだろ」
と言い出すヤツがいる。
0171デフォルトの名無しさん
NGNGマジレスなら是非とも匿名掲示板でない場所で書いてホスィ。
0172デフォルトの名無しさん
NGNGそれをいったら、Javaの遅さと重さは、
より高速なCPUとメモリを買わせるためか?
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG> たまたまC言語で覚えられないことが今は重要
それって具体的に何の事を指してるの?
0175デフォルトの名無しさん
NGNGさっさと出て来い!マジレスなんじゃなかったのか?
0176デフォルトの名無しさん
NGNG学習でいうなら1ヶ月でいいのでアセンブラ(机上でかまわない)をお勧め
プログラムがメモリにどのように配置され動作するのか理解でき、アドレス、ポインタの概念も理解できる。
>>164
5種類以上の言語でプログラム組んでるけどなにか?
0178デフォルトの名無しさん
NGNGそんな概念99%のプログラマには不要ですが?
0179デフォルトの名無しさん
NGNGうざいからもう来なくていいよ。
0180164
NGNG本気でいってるかい?
それでは聞くが、クラス継承型言語を扱う上でそれがどのように配置されて動作しているか
想像できる? それが想像できるとその後の理解も早いんだよ。
99%にいらないとはまたずいぶんな数字だな。
百歩譲って仕事ではそうかもしれないけど学習には必要だよ。
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGそう思ってるだけだろ (・∀・)
0183デフォルトの名無しさん
NGNG某大学生?
0186デフォルトの名無しさん
NGNGアドレスとかレジスタとかの低水準な機械要素を意識することは
抽象度の高いプログラミングを身につける上で有害だ。
0188デフォルトの名無しさん
NGNGおいおい、C++のvirtual関数とかメンバへのポインタとか
メモリ配置を理解しないといけないなら、ほとんど誰も
学習できないって(w
0189デフォルトの名無しさん
NGNGMSX-BASICでアセンブラを書こうとあがいてた時期が
ポインタの理解に役立ったことは認めるよ。
でもアセンブラを学習目的に使うなら、1ヶ月も要らないと思う。
高校生以上なら、せいぜい6時間あれば概念は理解できる。
それに学習目的なら、アセンブラである必要はないよね。
Cの本に載ってる、単に箱が並んだ図でもいいんじゃないかな。
でも99%とか言ってる奴ははアホだな(w
分野によってはインラインアセンブラくらい書くだろうに。
0190デフォルトの名無しさん
NGNGだから、5 以降はネタだろ。気にするな。
0191デフォルトの名無しさん
NGNG石の気持ちをわかってあげられない人はム板にはいりません。
0192デフォルトの名無しさん
NGNG「抽象」という言葉の意味を考えれば明らかと思われ
0193デフォルトの名無しさん
NGNG丸投げ君や孫受けコーダをやるのでなければ、
抽象から具体まで理解してないといけないね。
0194デフォルトの名無しさん
NGNG0195174
NGNG0196デフォルトの名無しさん
NGNGほんとにアセンブラが必要なやつなんか1%もいるもんか。
0197デフォルトの名無しさん
NGNGたしかにアセンブラを知ってれば
ポインタでつまずく人は一人もいない。
ただ、x86とかじゃなくて
必要最小限の命令セットを持ったバーチャルなCPUで
学習しないと、やる気はでないかも。
で、メモリ上で何が行われているのか知ってれば、
スタック、ヒープの違いもわかるだろうから、
ローカル変数のアドレスを保持しておいて、
スコープを抜けてからアクセスしてドッカーンって事になる
事もないだろうし、
オブジェクト指向ならポリモーフィズムがどのように
実現されているかもなんとなく想像がつくだろう。
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNGclass A{
a(){
b();
}
b(){
print("a");
}
}
class B{
override b(){
print("b");
}
}
main(){
A a=new B();
a.a();
}
とやった時何が起きるかも容易に想像できる。
まあ、言語使用依存である事は確かだけどw
0200デフォルトの名無しさん
NGNG抽象的な概念と、ハード寄りの概念は衝突しない。
衝突するのは、単に片方だけを学習しつづけてしまうから。
両方やればいいってこった。
0201デフォルトの名無しさん
NGNGしってるのかよ(w
0202デフォルトの名無しさん
NGNGわかってますか?
0203デフォルトの名無しさん
NGNGそんなん無理に決まってるだろ!
0204デフォルトの名無しさん
NGNGCのポインタと整数がごっちゃになった演算なんて
たいていのプログラマには有害なだけだもん。
素直に配列使ったほうが速いし。
0205デフォルトの名無しさん
NGNG全てを知ろうとするのは素人だと思う。
0206デフォルトの名無しさん
NGNGだからアセンブラだけやらずにCやPascalやJavaもやれと
何度言ったら。。。。
0207197=199
NGNGアセンブラでプログラムを書くケースはないと思う。
だから、必要最低限の命令セットを持った
バーチャルCPUでのアセンブラができる環境があれば
3時間程度いじってればいい。
要するにアセンブラから学べる事がそれほど多くない事も事実。
ただし、俺はその少ないエッセンスが重要だと思ってるけど。
プログラミングってのは
プログラミング言語に詳しいだけじゃダメで
(コーダーならいいけど)
アルゴリズムの知識とか、数学なんかも必要になる。
嘘だと思ったら
http://pc3.2ch.net/test/read.cgi/tech/1020161792/l50
これに参加して優秀な成績を残す努力をしてみればいい。
プログラミング言語に関しては
論理プログラミングのprologを除けば
だいたい似たような物だと思う。
まあ、それぞれの言語には独自の言語機能が実装されていて
C++やJAVAだとオブジェクト指向に関する機能。
Perlなんかでは正規表現の機能。
それぞれ目的にあわせて使えばいいと思う。
オブジェクト指向は、初めてC言語を勉強するのと同じくらい
難しい事だけどね。
0208デフォルトの名無しさん
NGNG数学的美しさと低次元のキタナラシサを
初学者にいっぺんに詰め込むのか?
0209197=199
NGNGこれは誰が推奨してるの?
今時そんな事やってる人はいないでしょ。
0210164
NGNG昔、専門学校でアセンブラ教えていまして、その時の経験上1ヶ月というわけでして
理解が早い人は6時間でOK<でも1週間1日時間だと1ヶ月なんですよね。
実際(机上・架空)のCPUでの勉強でOK
チューリングや、ノイマンのお話も交えてやると効果高し(藁
で抽象的なプラグラムの話は私はいまだに理解できないですよ。
申し訳ない。
0211デフォルトの名無しさん
NGNG負け惜しみにもなってないぞ(禿藁
0212デフォルトの名無しさん
NGNG低次元から入るとそうなる。
0213デフォルトの名無しさん
NGNG0214197=199
NGNG俺はどっちも必要だと思うんだよね。
(同時に学習するかは別として)
例えば、いいゲームのアイディアが浮かんでも
実装に関する技術がなきゃ作れないし、
実装できても、コーダーじゃ意味ないでしょ。
どっちかが欠けてるとプログラミングの面白さがわからない。
で、どっちから勉強してもいいんだから
それは個人の問題という事で、どうだろ?
0215デフォルトの名無しさん
NGNGメモリ上で配列がどう配置されてるかとか教えるんだろ?
「ポインタ+整数」を教えずに教えようが無いじゃないか。
0216デフォルトの名無しさん
NGNG全てを知ろうとするのは素人だが、内容が想像できないようでは無能だ。
0217デフォルトの名無しさん
NGNGゲームのレンダリングみたいに性能要求がシビアなものは
例外として、ふつうにアプリを書く上の実装技術に
「メモリ上の配置がどうなってるか」なんて不要だし
かえって邪魔になる。
0218デフォルトの名無しさん
NGNGあんた本当にポインタを理解してる?
もしそうなら間違ってもそんなセリフは吐けないはずだけど。
単に自分が痛い目にあったから敬遠してるだけじゃないの?
0219197=199
NGNG言ってる事がよくわからないんだけど、
ポインタに整数を足すと何が起こるかは
C言語の言語仕様の特徴がすごく出てると思うんだけど。
で、
>メモリ上で配列がどう配置されてるかとか教えるんだろ?
そんな具体的なことじゃなくてもいいのでは?
というか、どこをどう解釈したの?
0220デフォルトの名無しさん
NGNGなら教えてくれ。
その辺を理解していない人が一概にクソコードを書くのは何故だ?
単に漏れに高確率で DQN が回ってきただけか?
0221デフォルトの名無しさん
NGNGじゃあ「メンバへのポインタ」想像してみてくれよ。
で、それが見当外れだったらどうするの?
想像できて何が嬉しいの?
0223デフォルトの名無しさん
NGNG必死だな、おい!
中身を理解しないまま使ってると謎のバグに悩ませられる事ぐらいわかってて言ってんだろうな。当然
0224デフォルトの名無しさん
NGNG0225197=199
NGNGえーと、>>197と>>199は読んでくれた?
俺は言語機能を理解するために
メモリ上の配置を学ぶ価値があるって言ってるんだよね。
だって、そうじゃなきゃポリモーフィズムなんて
理解できないでしょ?
>>199に書いたコードはわかる?
0226デフォルトの名無しさん
NGNG少なくともメンバ変数やvtblの実装は知ってますが何か?
0227デフォルトの名無しさん
NGNG「メンバへのポインタ」 だけだと何を指すのか曖昧だ。
もう少し具体的に指定してくれ。
0228デフォルトの名無しさん
NGNGポリモルフィズムのような高水準の概念を教えるのに
「メモリ上では…」なんてやったら台無し
0229デフォルトの名無しさん
NGNG多くの初心者にとってJavaがイイってこった。
0230デフォルトの名無しさん
NGNG0231197=199
NGNGちょっと注意。
メモリ配置ってのは
すごく抽象的な意味で
関数の呼び出しがどう行われるのか?
とか、構造体がどういう風にメモリ上に作られるのか?
とか、クラスのインスタンスがどういう風にメモリ上に作られるのか?
とか、mallocで作った変数と、ローカル変数の違いとか?
そんな意味でよろしく。
補足があればよろしく。
そろそろ時間なので落ちます。
0232デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
それと
> 215
> 「ポインタ+整数」を教えずに教えようが無いじゃないか。
は何の関係があるの?
0233デフォルトの名無しさん
NGNGmallocで作った変数とautoの違いは良いとして
他は本当に抽象的なのか?
「アドレス」なんて言葉が出て来たらそりゃ抽象的とは
とても言えんぞ。
0234デフォルトの名無しさん
NGNGしないといけない場合があるので、禿げしく鬱。
0235197=199
NGNGあれは言語機能なだけで、使用する際においては
高水準の概念じゃない。
でも、設計する時にポリモーフィズムを用いる事は
高度な抽象化である事は間違いないと思う。
今度は、言語の知識、アルゴリズムの他にも
デザインっていう要素があったね。
忘れてた。
主軸はこの3つだよね?
0236デフォルトの名無しさん
NGNG多くの初心者にとってJavaがイイってこった。
アドレスなんて全く知らずに学べるからな。
0237デフォルトの名無しさん
NGNG言語の重要性がわかってない奴はプログラマにあらず
ってこった。
0238197=199
NGNG抽象的って、俺なんか言ったっけ?
やべ、時間が・・・
0239164
NGNGスタックポインタレジスタを移動して
そのアドレスを記録していくだけなんだけどね。
ローカル変数はスタック上につまれた値(最適化でレジスタの場合もあり)
構造体は静的に作られた場合、最初からメモリに置かれるし、動的配置なら
スタックフレームに作られます。
間違ってたら補足してください
0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG突っ込みどころ満載だが、
ネタにしてもつまらなさすぎ。
0242デフォルトの名無しさん
NGNG高水準と低水準の概念を同時に教えようとする君は能無し
0243197=199
NGNG>すごく抽象的な意味で
ここか。
抽象的っていうよりは、広義な・・・ってとこかも。
メモリアドレス***にどういうデータがあって、
その上に***で・・・みたいな事じゃない。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247197=199
NGNG>そのアドレスを記録していくだけなんだけどね。
アセンブラで再帰やるとわかるね。
スタックがどんなもんなのかってのが。
再帰をwhileでやるにはどうすればいいかとか。
アセンブラじゃなくてもわかる人はわかるけど、
わかり易さのはなしね。
では、落ちます。
夜に現れるかも。
0248デフォルトの名無しさん
NGNGそういう意見はいらないよ。
0249246 号線
NGNG0250デフォルトの名無しさん
NGNGじゃ、何してるの?
0251デフォルトの名無しさん
NGNGプログラムが実際どう動いてるのかわからないと、
C O B O L e r と 呼 ば れ る ぞ ! !
0252名無し篭り
NGNG俺ならわかる、任せろ!
まずローダがexcutableファイルを弄くって調べて
txtセクションのエントリとかその他色々でヘッダを調べて
そんで未定義シンボルを探しDLLを持ってきてリロケーティオンして
バインドするんだ!
あとは機械語コードの実行で特権レベル0の命令はOSが独り占めマンセーしてやがるから
CALL Gateとかセグメント間jmpしてどうにかするんだな!
LGDTでディスクリプタテーブルレジスタにロードするんだよ!
この時点では32bit protected modeには移行してるからリアルモード死ねんんだな!
んで、86の場合は4KB境界にページをマップするんだ!
ふう。
色々あるからこれくらいにしとく。
■ このスレッドは過去ログ倉庫に格納されています