Cからの移行
Re:Cからの移行
>Cを極めるといっても自分で考えてもっと実用的なことをしたいのですが
入門書を読了した段階でしたら、読むより書くことを重視した方がいいでしょう。
言語の基本を正しく理解する為にもある程度本格的にたくさん書いたいた方が
より理解が深まると思います。
何か実際に作ってみてはどうですか?
自分が欲しいと思っている(でも世の中に存在しない)ツールとか。
或いは適当に課題・目標を設定してそれに挑戦するのもいいかと思います。
とにかく手を動かして1行でも多くのコードを書いてみて下さい。
>アルゴリズムを学ぶ上での本やその他のおすすめの本
アルゴリズムならこのあたりでしょうか。
新版 C言語によるアルゴリズムとデータ構造
http://www.amazon.co.jp/dp/4797331631
C言語による最新アルゴリズム事典: 本: 奥村 晴彦
http://www.amazon.co.jp/dp/4874084141
後者は
http://oku.edu.mie-u.ac.jp/~okumura/algo/
からソースがDLできます。
あとお勧め書籍はformz.cgi?action=res&resno=6623&page=&l ... 72&vino=52に書いてあります。
入門書を読了した段階でしたら、読むより書くことを重視した方がいいでしょう。
言語の基本を正しく理解する為にもある程度本格的にたくさん書いたいた方が
より理解が深まると思います。
何か実際に作ってみてはどうですか?
自分が欲しいと思っている(でも世の中に存在しない)ツールとか。
或いは適当に課題・目標を設定してそれに挑戦するのもいいかと思います。
とにかく手を動かして1行でも多くのコードを書いてみて下さい。
>アルゴリズムを学ぶ上での本やその他のおすすめの本
アルゴリズムならこのあたりでしょうか。
新版 C言語によるアルゴリズムとデータ構造
http://www.amazon.co.jp/dp/4797331631
C言語による最新アルゴリズム事典: 本: 奥村 晴彦
http://www.amazon.co.jp/dp/4874084141
後者は
http://oku.edu.mie-u.ac.jp/~okumura/algo/
からソースがDLできます。
あとお勧め書籍はformz.cgi?action=res&resno=6623&page=&l ... 72&vino=52に書いてあります。
Re:Cからの移行
私は基礎も出来ていない頃から(今もそうですが・・)プログラムコードを書いてばかりいました。
参考書を読んでちまちまやっていくより、自分の興味あるものを作りながら勉強していくスタイルが私にはあっていました。
私はゲームを作るのが好きなので、ゲームを作りながら、「ここはもうちょっと効率よくかけるのでは?」という疑問が出てきたり、
「敵の弾幕はどうしたらきれいにかけるのかな?」という疑問からベジェの書き方を勉強したり、
作っている中で色々勉強していきました。
「勉強」と思ってやっているものと「趣味」と思ってやっているものは天と地ほどの開きが出来ると思います。
何に興味がおありかわかりませんが、ウィンドウズプログラミングを勉強してツールを作ってみたり、ゲームプログラムを勉強してゲームを作ってみたり、自分の興味あるものを一つ作ってみることも大きな勉強になると思いますよ。
柴田氏の本はいいものが多いですよね。私は明解C言語には何度も助けられました。
入門編と実践編があるので、よければ参考にしてください。
参考書を読んでちまちまやっていくより、自分の興味あるものを作りながら勉強していくスタイルが私にはあっていました。
私はゲームを作るのが好きなので、ゲームを作りながら、「ここはもうちょっと効率よくかけるのでは?」という疑問が出てきたり、
「敵の弾幕はどうしたらきれいにかけるのかな?」という疑問からベジェの書き方を勉強したり、
作っている中で色々勉強していきました。
「勉強」と思ってやっているものと「趣味」と思ってやっているものは天と地ほどの開きが出来ると思います。
何に興味がおありかわかりませんが、ウィンドウズプログラミングを勉強してツールを作ってみたり、ゲームプログラムを勉強してゲームを作ってみたり、自分の興味あるものを一つ作ってみることも大きな勉強になると思いますよ。
柴田氏の本はいいものが多いですよね。私は明解C言語には何度も助けられました。
入門編と実践編があるので、よければ参考にしてください。
Re:Cからの移行
>あるところではJavaのほうがC++よりもいいといわれ、ここではCのほうがいいという
C/C++がいいのか、 Javaがいいのかは人に勧める場合、非常に悩むところです。
人によって意見はまさに真っ二つに分かれるでしょう。
どちらも利点と欠点を含んでいるので個人的には両方やりましょうと言いたいところですが、
どちらか?と訊かれるとどっちでもいいと思います。
先にも書きましたが、1言語を覚えれば後の言語の習得は非常に短期間で済みますから。
それにまだ就職されるまでにまだ何年もありますよね?
移り変わりの激しいこの業界、ひろゆきさんが就職された会社で(6年後くらいでしょうか?)、
どんな言語が使われているかなんてわからないわけですし、ひょっとしたら現在の主流言語の
主な仕事が過去の資産のメンテナンスだけしかなくなっている、なんてことがあり得るわけで。
であれば焦らないでとりあえず1つの言語をきっちり覚えるという意味で、
既に C/C++に着手しているのであればそれをある程度追求してみるのが手だと思います。
で、C/C++で覚えることはもうない、と思ったら次に(Javaとか)に移ればいいんです。
本題からは若干外れますが
>結局はどうすればよいでしょうか???
結局は、プログラミングの本質を覚えましょう、ということです。
重要なのは「言語」ではないんですよ。
ざっくり言ってしまえば、Rubyだろうが、C#だろうが、Haskellだろうが何だっていいんですよ。
重要なのはひろゆきさんがその言語を使って、何を作れるのか、どう作っていくのか・・・
一言で言えば「プログラミングセンス」なんですよ。
それを磨かないことにはどの言語をやっても一緒です。
あと、SEは直接プログラムを組むことなく、主に資金・人的リソースの管理だったり
システムの仕様・仕組みを考えるのが主な仕事となります。
プログラミングをしながらどういう仕様にすれば、より便利になるか、コスト(時間・人)が
安くできるかを考えながらアプリ・システムを考え作っていくと勉強になるかと思います。
C/C++がいいのか、 Javaがいいのかは人に勧める場合、非常に悩むところです。
人によって意見はまさに真っ二つに分かれるでしょう。
どちらも利点と欠点を含んでいるので個人的には両方やりましょうと言いたいところですが、
どちらか?と訊かれるとどっちでもいいと思います。
先にも書きましたが、1言語を覚えれば後の言語の習得は非常に短期間で済みますから。
それにまだ就職されるまでにまだ何年もありますよね?
移り変わりの激しいこの業界、ひろゆきさんが就職された会社で(6年後くらいでしょうか?)、
どんな言語が使われているかなんてわからないわけですし、ひょっとしたら現在の主流言語の
主な仕事が過去の資産のメンテナンスだけしかなくなっている、なんてことがあり得るわけで。
であれば焦らないでとりあえず1つの言語をきっちり覚えるという意味で、
既に C/C++に着手しているのであればそれをある程度追求してみるのが手だと思います。
で、C/C++で覚えることはもうない、と思ったら次に(Javaとか)に移ればいいんです。
本題からは若干外れますが
>結局はどうすればよいでしょうか???
結局は、プログラミングの本質を覚えましょう、ということです。
重要なのは「言語」ではないんですよ。
ざっくり言ってしまえば、Rubyだろうが、C#だろうが、Haskellだろうが何だっていいんですよ。
重要なのはひろゆきさんがその言語を使って、何を作れるのか、どう作っていくのか・・・
一言で言えば「プログラミングセンス」なんですよ。
それを磨かないことにはどの言語をやっても一緒です。
あと、SEは直接プログラムを組むことなく、主に資金・人的リソースの管理だったり
システムの仕様・仕組みを考えるのが主な仕事となります。
プログラミングをしながらどういう仕様にすれば、より便利になるか、コスト(時間・人)が
安くできるかを考えながらアプリ・システムを考え作っていくと勉強になるかと思います。
Re:Cからの移行
本当に“高度なソフト”を開発するためには、
1)ベンダー系 ニーズを予想してソフトを作る
2)コンサル系 クライアントに合わせたソフトを作る
のいずれかの上級職に就くことなります。通常は、2)のコンサル系の方が大規模です。
例えば、システムがダウンして大問題になった東京証券取引所の基幹システムがそうです。
そうなると、プログラミング言語うんぬんよりも、
ソフトウェア工学の中でも特に要求工学と呼ばれる分野を勉強する必要があります。
私は、学歴が全てだとは思いたくありませんが、
日本で大規模開発の上級職に就いている人たちは、旧帝大や有名私立出身の人が多いです。
小さな会社に入るか、日曜プログラマとしてVectorなどに出品したいのならば別ですが、
本当に上級職を目指すのなら、今は学校の勉強に専念することをお勧めします。
実際にプログラミング言語を使ってプログラムを書くのは、プログラマの仕事です。
プログラマは仕様書に基づいてプログラムを組むだけで、
それまで開発をしたことが無い文系出身者が多いのも事実です。
加えて、新しい技術や言語を覚える必要があるため、35歳定年説があったぐらいです。
(もちろん、スーパークリエータと呼ばれる人たちもいますが。)
それでも、勉強の息抜きにプログラミングをしたいということであれば、
個人的にはJavaを推薦しておきます。オブジェクト指向という観点では
C#の方が好きですが、JavaもTigerあたりから頑張っているので。
1)ベンダー系 ニーズを予想してソフトを作る
2)コンサル系 クライアントに合わせたソフトを作る
のいずれかの上級職に就くことなります。通常は、2)のコンサル系の方が大規模です。
例えば、システムがダウンして大問題になった東京証券取引所の基幹システムがそうです。
そうなると、プログラミング言語うんぬんよりも、
ソフトウェア工学の中でも特に要求工学と呼ばれる分野を勉強する必要があります。
私は、学歴が全てだとは思いたくありませんが、
日本で大規模開発の上級職に就いている人たちは、旧帝大や有名私立出身の人が多いです。
小さな会社に入るか、日曜プログラマとしてVectorなどに出品したいのならば別ですが、
本当に上級職を目指すのなら、今は学校の勉強に専念することをお勧めします。
実際にプログラミング言語を使ってプログラムを書くのは、プログラマの仕事です。
プログラマは仕様書に基づいてプログラムを組むだけで、
それまで開発をしたことが無い文系出身者が多いのも事実です。
加えて、新しい技術や言語を覚える必要があるため、35歳定年説があったぐらいです。
(もちろん、スーパークリエータと呼ばれる人たちもいますが。)
それでも、勉強の息抜きにプログラミングをしたいということであれば、
個人的にはJavaを推薦しておきます。オブジェクト指向という観点では
C#の方が好きですが、JavaもTigerあたりから頑張っているので。
Re:Cからの移行
個人のフリープログラマーとかじゃなく、
大規模になってくると、ソフトウェアを作るという作業は
「設計」なのか「実装」なのかで変わってきます。
「ソフトウェアの設計図を作る人」
「渡された設計図通りに実際に作る人」
ということですね。
前者においても、様々な役割があります。
まず、ソフトウェア開発の一番最初に位置する部分を「上流工程」といいますが、
最上流工程は、「人々はどんなソフトを求めているのだろうか?」という事を性格に判断する作業になります。
これは要求定義という工程です。
つまり、上流工程になればなるほど、実際のプラットフォームには依存せず、
どんな言語だろうと関係ない、
「○○というソフトを作ろう」
という意見を出すような役割になります。
よくわからなければもう少しお話いたしますが、どちらの方面に進まれる予定でしょうか?
大規模になってくると、ソフトウェアを作るという作業は
「設計」なのか「実装」なのかで変わってきます。
「ソフトウェアの設計図を作る人」
「渡された設計図通りに実際に作る人」
ということですね。
前者においても、様々な役割があります。
まず、ソフトウェア開発の一番最初に位置する部分を「上流工程」といいますが、
最上流工程は、「人々はどんなソフトを求めているのだろうか?」という事を性格に判断する作業になります。
これは要求定義という工程です。
つまり、上流工程になればなるほど、実際のプラットフォームには依存せず、
どんな言語だろうと関係ない、
「○○というソフトを作ろう」
という意見を出すような役割になります。
よくわからなければもう少しお話いたしますが、どちらの方面に進まれる予定でしょうか?
Re:Cからの移行
ありがとうございます。僕はいずれにしろ趣味でのプログラミング言語や仕事でのプログラミング言語を考えてませんでした。僕はプログラミングが趣味で使う言語はなにか?というのを聞きたかったのです。で、結局Javaを極めることにしました。Cはこれから進化していく仕事のベース(もちろんJavaのベースでもあります)の上での勉強、つまり通過点で習得したわけです。もちろん、Javaの勉強もCの影響を受けているのでCの復習はかかせないと自分でも感じております。つまり、仕事ではもちろんこれから普及していくPerlなどの言語ではまた改めて習得が必要であることはわかっております。まずは、Javaを勉強して趣味でのプログラムを作ってみます。矛盾する点がありましたら、ご容赦ください。