こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

独学でプログラマーさんになった人にお聞きしたいです

プログラムを少しでも自分で組めるようになりたいです。
どうか助言ください。

JavaScriptはコピペで使い、cgiなどの設置も自分で1から書くことが出来ないので、フリーのものを使っています。

Flashのアクションスクリプトなど、見れば何を書いているかなんとなくわかるのですが(ただ英単語からの推測です)、頭の中でどのような時にそれを使うのかがわからず、自分で0から作ろうとするときにうまく組み立てができません。結局わかってないのだと思います。

プログラミングを始める前の脳の改革が必要なようなのです。
その場合、どのような本を読んだらいいでしょうか?例題を本の通りに解くことはできるのですがそれと同じものしか作れないという感じです。(たくさんのサンプル集にさわって体で覚えて行くのが良いでしょうか。)

こちらの教えてgoo!で「プログラミング言語の全ては、Cを覚えて、あとは他の言語に言い換える(方言のような)感覚」と読みました。
まずはCを語学をやるようにじっくり学ぶべきでしょうか・・・

いずれPHPやPerlを自分で組み立てられるようなとっかかりが欲しいです。
本を読んで学ぶのが好きなので、良書がありましたら、是非ご紹介ください。宜しくお願い致します。

投稿日時 - 2007-07-16 12:50:15

QNo.3172433

困ってます

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(11)

ANo.11

なんとなく再度書いてみる。

C 言語をやる必要は“まったくありません”
目の前の問題を解決できる言語を学習して下さい。もちろん、「C言語でも解決できる」と強弁することも可能ですが、無駄な手間がかかるだけです。

上等なプログラマになることと、学習するプログラミング言語に相関関係はありません。
# 逆に相関関係があるなら、根拠となる研究資料を見たいくらいだ。

投稿日時 - 2007-07-21 03:06:40

>こちらの教えてgoo!で「プログラミング言語の全ては、Cを覚えて、あとは他の言語に言い換える(方言のような)感覚」と読みました。
>まずはCを語学をやるようにじっくり学ぶべきでしょうか・・・

今から10年前で、かつ時間がたっぷりある人でしたらそれでもいいとは思いますが、あなたの場合はもう既にやりたいことが明確に決まっていますよね?それなら、Cにそれほどこだわる必要はないと思いますけど。

なぜCからなのかというと、それだけ歴史のある古い言語であると同時に、これからも汎用的に使われていくであろう言語だからです。ここのサイト内でもC&C++のカテは総質問数が10,000件を突破していますね。(Javaの方は、まだ7,000件も突破していません。)他の言語に比べて、Cの場合だと専門書数に教育者の数にと、いろいろと有利な点があるわけです。

ただ、国内においては今のところ、以下のような言語を推奨しているらしいです。

基本情報技術者試験
→C、COBOL、Java、アセンブラ言語(CASL II)

テクニカルエンジニア(情報セキュリティ)試験
→C++、Java、Perl

情報処理技術者試験センター
JITECトップ>試験実施案内>試験で使用する情報技術に関する用語・プログラム言語など
http://www.jitec.jp/1_02annai/annai_yogo_jis.html

初学者としても、上記のいずれかであればまず外れることはないと思います。あと、VBに関してですが、以前もこのサイト上でとある回答者さんが「Visual Basicは、厳密にはオブジェクト指向言語ではない。」というようなことをおっしゃっていました。(私の場合は、VBの方は全くの未経験なので詳細については差し控えときますが。)同じVB系でもVB.NETであれば、れっきとしたオブジェクト指向言語ですので、こちらの方だとそんなに悪くはないと思いますけども。

>プログラミングを始める前の脳の改革が必要なようなのです。
>その場合、どのような本を読んだらいいでしょうか?

平成19年度【春期】【秋期】 基本情報技術者合格教本
http://www.gihyo.co.jp/books/syoseki-contents.php/4-7741-2974-7

プログラミングに必要な基礎的知識として、以下の二つが挙げられます。

・データ構造(リストやツリーに、先入れ先出し法など。)
・アルゴリズム(繰り返しや条件分岐の処理を用いた探索や並べ替えなど。)

WEBプログラミングをする上では必ずしも基本情報技術者の資格を必要とはしませんが(営業利益と経常利益の違いなど、余計な事も勉強しないといけなくなってくるので。)、上記の2つだけでも部分的に勉強しておけばいいのではと思います。(必ずしも第1章から読み進めていく必要はありませんし、必要な所だけを掻い摘んで、といった感じです。)

>いずれPHPやPerlを自分で組み立てられるようなとっかかりが欲しいです。
>本を読んで学ぶのが好きなので、良書がありましたら、是非ご紹介ください。

ここはあまぞんでもジャングルでもないので、またいつものようにペタペタとリンクっていきます。

赤マンモス本
http://www.sbcr.jp/books/products/detail.asp?sku=4797329068
→定番中の定番です。PHPならこれで決まりですね。

ECHNICAL MASTER はじめてのPerl/CGIプログラミング 増補改訂版 Linux/Windows対応
http://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-1203-3
→WWWの仕組みやHTTPなど、Webに関する説明もあります。

やさしいシリーズ
やさしいJava 第3版
http://www.sbcr.jp/books/products/detail.asp?sku=4797331828
→これもまた、ベストセラーとなっているものです。実際には、JavaでWebアプリケーションを作成するにはこれ一冊では足りないのですが、高橋麻奈さんという女性の著者がやさしく、わかりやすい表現で解説されています。

投稿日時 - 2007-07-20 23:15:03

ANo.9

No.6です。
誤解があるといけないので補足します。
#議論をするつもりは全くありません。

Java、VB、Perlは、「初心者に取って敷居が低い言語」の例として挙げたまでで、
これらの言語を否定するつもりは毛頭ありません。
それぞれ長所があり、少なくとも現状はどれも無くてはならない言語です。
上級者がコーディングすれば、どの言語を使っても正しく美しいコードが書けます。

しかし私の経験上、プログラミングの基本が出来ていない状態でこれらの言語に
慣れることは弊害が大きく、注意が必要です。
特に初心者とVBの組み合わせは最悪で、何となく書けてしまうものだから、
全体像がイメージできないままコーディングに突入し、思いつくままダラダラと
コードを書くことになり、そのまま続けていると、どんなに醜いコードを書いても
「動いてるんだからいいじゃないか」と思うようになってしまいます。
(これが頭をよぎるようになると、自分のコーディングセンスが毒されてきたと
自戒する必要があるのですが、初心者にはそれが理解できません。)
必ずそうなる訳じゃないでしょうが、実際そういうプログラマーをこれまで何人も
見てきましたので。

C言語は上記の言語に比べると制約が大きい分、理想から大きく外れることが少なく、
初心者が手を出す言語として最適だ、というのが私の持論です。
これは何も、C言語が優れた言語であるとか、そういう意味ではなく、バランスの
問題です。
最近はどうだか知りませんが大学で好んで教えるPascalは、逆に制約が大き過ぎて
プログラミングが嫌いになってしまう危険性が大きいし、C++はCと比べると
オブジェクト指向の概念が入ってくる分、C言語より習得が難しく、初心者向き
ではありません。

結局、プログラミング上級者への道として私が薦めるのは、
1. C言語で構造化プログラミングをマスターする
2. C++でオブジェクト指向を覚える
3. 他の言語を覚える
というものです。
回り道のようですが、本道から外れる危険が少ない分、むしろ上達は早いと
私は考えます。

投稿日時 - 2007-07-18 05:21:35

ANo.8

・プログラミング言語を覚えてもプログラミングができない人がいるので
助言をしておくとその人は大抵アルゴリズムを理解できていない。
アルゴリズムさえ覚えておけばどの言語でも習得は容易になる。
・プログラミングは本だけをみて覚えるものではない。
実践あるのみ


>基本をマスターしないうちにJavaやVB、Perlなどでいい加減な感覚を
身に付けてしまった人は、ちょっとやそっとでは矯正が効きません。
Perlはまだしも
JavaとVBあたりをC言語と一緒にするのはどうかと思いますよ。
構造化言語とオブジェクト指向言語は切り離して考えたほうが良い。
下手に構造化言語に慣れるとオブジェクト指向言語に慣れるのに
苦労する。
(VB6までのVBは構造化言語とオブジェクト指向言語としての側面もあり
ちょっと中途半端さがある言語ですけどね。)
だからCをやるよりC++の方がいいでしょう。
もっとも学習としてはC++よりJavaの方がオブジェクト指向言語としての完成度は高いですけど

投稿日時 - 2007-07-17 15:06:14

ANo.7

zwi

ちっと参考意見を付け加えます。
C言語プログラマのすべての意見ではなく私個人の意見としてお聞きください。
#6さんのおしゃるとおりプロになるなら基礎をしっかりとやることに関しては異論はありません。ぜひ、そうしてほしいです。
VBやPerlは安易な書き方に流れがちで基礎があやふやな場合が多いのも事実だと思います。

ただ、WEB系のプロになる場合、C言語はまず利用されません。
HTML,XML,JavaScript,Perl,FLASH,PHP,javaなど客先の注文にあわせていろんな言語を使いこなせる技術が必要です。
その入り口がC言語である必要はないと思います。例えばC++言語の場合は、逆にC言語に固執している人がやるとオブジェクト指向とは程遠いコーディングになったりもします。C言語の良いプログラマがC++言語の良いプログラマである保障はありません。
そういう意味で、web系のプログラマはC言語の習得は必要ないと私は思っています。アルゴリズムは、そもそも言語を選ぶものではありませんから、どんな言語のプログラマでも学ぶことができます。
私独自の意見としては、web系で基礎からやるならjavaをお勧めしておきます。

投稿日時 - 2007-07-17 14:01:44

ANo.6

現場のSEです。
質問者やここを読んだ人が勘違いされると困るので、他の回答とは矛盾しますが私の考えを提示しておきます。

あなたがプログラマーとしてメシを食って行こうと思っていないなら、他の回答をそのまま受け入れて、
楽しいアマチュアプログラマー生活を満喫して下さい。
趣味のレベルなら、無理して固苦しい勉強をする必要は全くありません。
作りたいものが作れればそこがゴールです。
七面倒くさい理論やアルゴリズムなどは、プログラミングに対する興味を損なう代物でしかありません。
自分でゼロから組めなくても、他のコピペで済んでいるなら問題ないと思います。

そうじゃなくて、あなたがウチの業界でメシを食って行こうと志すなら、あるいは
プログラミングの本質を理解し、プログラミング上級者を志すなら、是非C言語で
基本をしっかり勉強して下さい。
はっきり言って、基本をマスターしないうちにJavaやVB、Perlなどでいい加減な感覚を
身に付けてしまった人は、ちょっとやそっとでは矯正が効きません。
そういった人を実際に何人も見て(つまり被害を被って)きましたので。
今では、3年間VBのプログラミングを自己流でやってきているのでプログラミングは
任せて下さいという新人と、プログラミングはこの間の新人研修で生まれて初めて
勉強しましたという新人の2人のうちのどちらかを自分の配下に置いて教育して
行かなければいけなくなったとすると、他の条件が同じなら私は迷わず未経験者を選びます。
知らないことはいくらでも教えられますが、一旦付いてしまった悪癖はそう簡単には
矯正できないからです。
敷居の低い言語は、基本がしっかりできてない人が手を出すと自己流のおかしなやり方に
凝り固まって、取り返しが付かなくなってしまう弊害を常に孕んでいるので注意が必要です。

C言語を系統立てて勉強しようという目的には、下記が最適です。
明解C言語 入門編   柴田望洋

投稿日時 - 2007-07-17 08:09:03

ANo.5

とりあえず「さわって」というか、「読んで」「自分で書いて」ください。
所詮「言語」なんで。

英語の勉強とかで言われるように、「言語を考えてる」時点で理解したとは言えず、
「言語で考えられるように」なって、初めてその先が見えてきます。
そういういみでは、他の方もおっしゃられているようにCに固執する意味はあまりありません。
# 「他のヨーロッパの言語を勉強する上で、英語は知ってるといいよ」とかそんなところ。

言語なんで、文法の本を読んで単語を覚えて…で初心者を脱却するのは難しいです。
とりあえず、実際に自分で書いて書いて書きまくって,その中で理解するのが近道です。
言語の細部を振り返って確認するのはその次です。

投稿日時 - 2007-07-16 14:35:46

ANo.4

zwi

独学だけで、C言語のプロのプログラマになった者です。
この場合の独学は、本を読むだけでは物になりません。沢山プログラムを書いてみることが独学です。
たぶん、作りたいもの(目的)が無く言語だけ覚えようとしてるんじゃないでしょうか?例題やサンプルをただ漠然と触っていても言語のルールを学習しているだけで、言語を使いこなせるようにはなりません。
言語はあくまで道具だということを理解してください。
そうですね例えばカナヅチやノコギリ(道具)は素人でも扱えますが、家を建てる(目的)には覚えることや考えることが沢山あるはずです。
今のあなたは自分で家を建てれるようになりたいと思っていて、カナヅチの使い方だけにこだわっているようなものです。サンプルは、床板の張り方や柱を立てるテクニックと言ったところでしょうか?

PHPやPerlのWEB系をやりたいのであれば、C言語は必要ありません。豊富なPHPやPerlの入門書から入ったほうが良いと思います。
実際に自分でPHPやPerlを使ったWEBサイトを作って、色々なサービスを自分で作ってみるのが一番良いと思います。
家も建てようと思ってみなければ、なにが分かっていないか見えてこないように、プログラムもまず作ろうとしてみないと見えてこないですよ。

投稿日時 - 2007-07-16 14:20:32

ANo.3

>cgiなどの設置も自分で1から書くことが出来ないので、フリー
>のものを使っています。
同じフリーの物を使うのであっても、ダウンロードしたファイル
をそのまま使うのと、一旦リスト印字したものを見ながら、自分
で入力するだけでも結構違います。
入力ミスがあって動かなければ、どこに入力ミスがあったか何度
も見直す事にもなりますし。

投稿日時 - 2007-07-16 13:27:35

ANo.2

独学でなれるのは、せいぜいアマグラマレベルに過ぎません。

書籍や雑誌に掲載されているものは、紙面の都合と読み易く
する為に、簡略化された物のみなので、それを全てマスター
したとしてもプロのレベルに到達する事は困難です。

スポーツや自動車の運転にしても、考えた後に体を動かした
のでは間に合いません。
「見ればなんとなく判る」ではなく「見た瞬間に体が動く
(頭の中におおまかなアルゴリズムが浮かぶ)」ぐらいには
ならないと最低限のハードルすら越えた事にはなりません。

スポーツや自動車の運転で「見た瞬間に体が動く」様になる
にはどうしたら良いかを考えれば、プログラムにおいても
どうすれば上達するかは想像できるのでは?

投稿日時 - 2007-07-16 13:18:18

ANo.1

大抵の人が独学でプログラマになるものだと思いますが。

>プログラミングを始める前の脳の改革が必要なようなのです。
不要です。プログラミングに必要なのは「とりあえず書いてみること」だけです。

>「プログラミング言語の全ては、Cを覚えて、
>あとは他の言語に言い換える(方言のような)感覚」
それは最初に C を覚えた人のセリフです。使わないのであれば C を勉強する必要はありません。

やりたいことがあって、それを実装する言語(例えば Perl )がわかっているのであれば、その言語( Perl )の入門書を適当に 1冊買って、あとは書いたいプログラムを書き始めればよろしい。

入門書としては文法とその使い方が一通り例と共に掲載されているものであれば何でもいいです。入門書の例題をやってみたりする必要もありません。

投稿日時 - 2007-07-16 12:56:30

あなたにオススメの質問