- ベストアンサー
次に何を学べば良いか?
標準関数は大体使えるようになり、ポインタ云々も理解しおり使えます。次のステップとしてどういうものに手を付けていけば良いかということなんですが、APIとかソケットなんかはおもしろそうですがどの程度の知識を必要としているのかいまいちよくわかりません(まだ早い?)。 そこで質問なんですがどういうステップでみなさんは学習を進めていったのか参考のため教えていただけますでしょうか?。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
/**** 個人的な体験談がメインです ****/ 自分がまだプログラミングを初めて間もないときはありとあらゆる関数を ごちゃ混ぜ使って「別の関数名にしたら結果は同じなのか?」などと試した 記憶があります。 何度もやっていくと標準関数では満足できなくて ・何でキー入力は[Enter]が押されるまで待たされるの? ・文字に色つけるにはどうしたらいいの? ・決まった場所に文字を表示したいのにどうしたらいいの? 等、色々問題点が出てきては関数を作ったりして試してみました。 処理依存とわかっていても、自分のマシンを使いこなすこと(自己満足思考) を最優先にとことん作っていきました。 そして、自分がプログラミングしていた当時は高速CPUが16bit時代 でしたから、「速い中にもさらに速く」するためのプログラムを考える ようになりました。 ・配列よりもポインタ変数を使った方がプログラムのしようではわずかに 速いらしい・・・。だからそうしてみよう。 ・関数コールだと特に引数が多ければオーバーヘッドで足引っ張るから マクロにしたらどうか・・・? ・switch文だと分岐判定が内部的に多くなりそうだし、ソースも長くなって 見づらい。なんかいい方法はないのか・・・? #ちなみに、配列関数ポインタの手法を今でもよく使います。 等、C言語のウラ技みたいな手法を、文献を読みながら小さなプログラムを ちまちま作っていきました。ただ、あまりに「高速化」にこだわりすぎて 特に長いプログラムがぐちゃぐちゃになって、修正も利きづらく、高校の時に 制作半ばで断念(卒業)した「デュアルプラットフォームスクリーンエディタ」が あったりします。(MSX/16B(ベータ)) そんな失敗もあって、専門学校/大学を経てプログラムを従事する仕事に 携わっています。最近のプロセッサはかなり高速になっていますから、先ほど あげた例だけだと「微々たる」程度でもなかなか感じないと思いますが、ちりも 積もれば山となるで今でも「やけくその高速手法」を所々使っていたりしてます。 今の時代とそぐわない私の体験談と思えるかもしれませんが、参考にして いただけたらと思います。APIを覚えるのも自分のスキルを上げるため、 今の時代の技術をいち早く覚えたい、それぞれの意味も含めて良い方法だと 思います。もちろん、ここに回答しています皆さんの方法も良い方法です。 一番大切なのは「目的意識を持って望む」ことです。がんばってください。
その他の回答 (3)
- sha-girl
- ベストアンサー率52% (430/816)
>APIとかソケットとか まだ早い?って事はないと思うのでバシバシ使ってみてください。 サンプルソースが載っている書籍を買うことをお勧めします。 簡単なチャットソフトをCで作ってみるとか どうでしょう? あと++の方はどうでしょうか。 もしクラス等についてあまり知らないのであれば そちらについて学習するのも良いと思います。 「C言語によるTCP/IP ネットワークプログラミング」とか ISBN: 4-89471-516-3
- uyama33
- ベストアンサー率30% (137/450)
1.アルゴリズムとデータ構造 2.構文解析 3.応用する分野の知識(デジタル信号処理など) となるのででょうが、 実際に、 構文解析の技術が必要になれば その本を探して読めばよいし他もそうだと思います。 最初の方の言うように おもしろそうなソフトを作ってみれば すぐに新しい技術が必要になります。 その時に、また質問すれば 文献を具体的に教えてもらえますよ。
- toysmith
- ベストアンサー率37% (570/1525)
人によってやり方が違うのでものすごく自信の無いアドバイスなんですけど… > 次に何を学べば良いか? 学ぶこと自体が目標になっているのは本末転倒していますよ。 プログラミング言語はプログラムを作るためのものなんですからソフトウェアを作りましょう。 ソフトウェアを作っていく中で教科書には書いていない実践テクニックや感をやしなうことができます。 ソフトウェア技術者にとって一番大切なものは『感』だと思ってます。 ・仕様を考えたときにアルゴリズムが思いつく ・アルゴリズムとデータの動きを平行して考えることができる ・ごく自然にモジュール分割を行うことができる ・BUGが発生したときに怪しいソースが修正方法と共に思い浮かぶ ・etc... これらは実践の中でしか身につきません。 ソフトウェアを作りましょう。 既存ソフトの真似から始めてもいいし、どこにも無いオリジナルソフトウェアの挑戦からでもかまいません。