みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

言語の勉強についてアドバイスをお願いいたします

コンピューターのことを深く知りたくて、1年ほど前に一番興味のあったネットワークの勉強から始めました。
その結果、関心はネットワーク → セキュリティ → Webプログラミングに移りました。

言語の入門書としてC、Java、C++、Perl、JavaScriptを10冊ほど、HPではアセンブラも読んでみました。
プログラムの思想らしきものは解ったつもりですが、コードを読んでもそれが関数なのか、
作者の造語の変数なのか判断に迷う程度から抜け出せません。

これではいけないと思って、Pealに焦点を絞ろうと本屋(地方です)に行きましたが、
ラマやラクダどころかPealの本は1冊も置いてありませんでした。
PHPの本はたくさんありました。
ここのBBSを見ても、PerlよりもPHPの方がにぎわっています。
『日経ソフト』もPHPの連載が始まり、来月はRubyの特集です。

そこでPerlをやめて言語の勉強の順序を次のようにしようと思っています。
Ruby(併行してHTMLとJavaScript)
  ↓
 Java → C → PHP → Perl

まず『プログラミングRuby 第2版 言語編』とkeisukeさんのサイトで勉強するつもりです。

ネットワークの勉強をまったくの我流でやったので、ずいぶん遠回りをしてしまいました。
そこで言語の勉強について諸先輩方にアドバイスをいただけたらと思います。
方針、本、サイトなど何でも結構です。よろしくお願いいたします。

毎月読んでいる月刊誌は『日経ソフトウエア』『日経リナックス』『ネットワークマガジン』です。

投稿日時 - 2007-05-27 10:32:42

QNo.3034121

暇なときに回答ください

質問者が選んだベストアンサー

がると申します。Web系多々やっておりますプロのエンジニアです。
もしお仕事でなさるのであれば。
私は、まずマシン語とCを学ぶことを強くお勧めいたします。
マシン語は、CASL II程度でOKです。

マシン語によって「コンピュータがCPUとメモリでできあがっていること」「CPUの基本動作」などを理解出来、Cによって「メモリの使われ方」が理解できます。
しかる後に、いわゆるOOPL(オブジェクト指向プログラミング言語)である、C++ないしJavaに進まれるとよろしいかと思います。

時々「昨今のWebプログラムにはそんな原始的な言語の知識はいらない」とか言う方がいらっしゃいますが。
業務で実際に見ている限り、そういう人は、比較的早いタイミングであっというまに壁にぶつかってしまうので。
どうせなら、きちんと基礎から学ばれることをお勧めいたします。

…とはいえ。
もし「緊急に仕事で必要」なようであれば…PHPが、多分、現在業務では一番多く使われているような気がしますが。
Javaを「近々のお仕事で」学ばれる場合、フレームワーク(StrutsかSeasarが多いように感じます)を一緒に学んでおいてください。フレームワークを知らないと、Javaの現在の現場の大抵で困られてしまうので。

投稿日時 - 2007-05-27 15:27:16

お礼

ありがとうございます。

「これは約束事、マジナイ語」と言われても、そこが気になる質です。
アセンブラから学ぶのは性にも合っていそうです。

投稿日時 - 2007-05-27 17:16:44

ANo.7

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

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

回答(8)

ANo.8

他の方も書かれていますが、実際にプログラミングの練習を始められることをお薦めします。プログラミング言語は実際の自然言語(日本語とか英語とか普通の言語)とは異なりますが、自然言語でも、文法を理解して基本的な単語を覚えただけで、会話や読み書きの練習をしなければ、何も身につかないのと同じで、プログラミング言語も実際のプログラミングの練習なしでは身につきません。

挙げられたプログラミング言語の中ではPerlが一番簡単だと思いますが、プログラミング言語の基本をマスターされたいのであれば、C(あるいはC++)かJavaをまず勉強されるのがよいかと思います。プログラミング言語は、みんな似ていますので、一つマスターすれば、他のものも、マスターしているものからの類推で比較的簡単にマスターできるようになります。(もちろん、文法や関数は少し異なりますが。)

既にどれかの言語の入門書をお持ちなら、それで始められればよいでしょうし、お持ちでないなら、Amazonなどで評判のよい入門書をお求めになり、その中の練習問題を一つ一つ実際にコンピュータ上でプログラミングすることから始められるとよいと思います。実際に自分の頭と手を使ってプログラムを書き、動かしてみないと、畳の上の水練からは抜けられません。それに、自分で書いたプログラムが予想した通りに動くことがプログラミングの一番の楽しみだと思います。

参考URL:http://www.amazon.co.jp/

投稿日時 - 2007-05-27 16:50:49

補足

ありがとうございます。
決して本を読むだけでマスターしようなどとは考えておりません。
(できるとも思っておりません。^^;)

投稿日時 - 2007-05-27 17:14:38

ANo.6

>もう少し体系的なものを読む必要があると感じております。
いやだから読む必要より
やる必要の方が重要。
行儀よく本読んでプログラミングなんて覚えられない。
作らないと

投稿日時 - 2007-05-27 15:15:29

補足

ありがとうございます。
肝に銘じます。

投稿日時 - 2007-05-27 17:09:01

ANo.5

>言語の入門書としてC、Java、C++、Perl、JavaScriptを10冊ほど、HPではアセンブラも読んでみました。
>Pealの本は1冊も置いてありませんでした。
一冊Perlの入門書読んでいるんだよね?
だったらわざわざ新しく捜す必要あるの?
入門書一冊読んで理解できないようだと
はっきりいって質問者にはプログラミングは向かないと思いますね。
読むだけで覚える事なんてそもそも無理なんですけどね。

投稿日時 - 2007-05-27 14:02:58

補足

ありがとうございます。

『10日で使えるPerl/CGI』を読みましたが、
もう少し体系的なものを読む必要があると感じております。

投稿日時 - 2007-05-27 15:07:57

ANo.4

W_H

参考までに、一つ。
参考書は親切じゃないです。まぁ、本当の本当に初心者向けなら話は別ですが、そうじゃないものであっても、読んだだけでは理解できません。
参考書とは、あくまでソースを移し、その後改造して結果がどう変わるか変化を見定め、一体何が何をしているのかを理解するものだと考えましょう。(いわゆる辞書や文法書です。)
したがって、一つの言語もある程度マスターせずに、本読むだけ、コード読むだけでは、一向に技術も知識も向上しません。
ついでに、参考書は最初の一冊目以外は、辞書を買い足すのと、そう変わりはないです。

後、話を見る限り、何が関数か分からないようなので、ぼくはまずはperlを習得する事をオススメします。
なぜなら、perlは変数には必ず$が付き、自作関数には必ず&が付くという決まりがあります。なので、他人のコードを見ても理解しやすいでしょう。

学習方法は、ぼくの場合まず丸写し。次に解説を読み、新関数を単体で使って遊んでみる。という手順をふみます。
特に関数にいろんな値を入れて遊ぶという事は、非常に大切な事となります。とにかく遊んで、関数について理解すれば、プログラミングも非常に楽になりますし、自分にとって一番書きやすい書き方を知るきっかけになります。

投稿日時 - 2007-05-27 13:40:07

補足

ありがとうございます。
関数を自分で使ってみるというのは良い方法ですね。
どの他人のコードから真似ていけばよいのか、迷っております。

投稿日時 - 2007-05-27 15:04:48

ANo.3

全くの私見であり、独断と偏見なんですが、
私は、アセンブラからプログラミングを始めたもので
アセンブラーを知らずして、コンピュータを深く知ることはできないと考えています。
当時は、アセンブラーで書かねばならないアプリが多かったので、必要にせまられてということもあったんですが。

が、最近は、アセンブラで書くようなアプリはまずないでしょうから、
仕事には直接に役立たないようですね。

そのためか、アセンブラの良い入門書もありません。

アセンブラを習得するなら、これは「道楽」なんだと、割り切ってやって下さい。

ちなみに、x86アセンブラ関係を勉強するのに、適当な書籍というと

「プログラミングの力を生み出す本」橋本洋志他著、(オーム社)
「Linuxのブートプロセスをみる」白崎博生著、(ASCII)

ぐらいかな。

投稿日時 - 2007-05-27 13:17:19

補足

ありがとうございます。

確かにアセンブラでレジスタの構造を知ってから、Cが少し解ったような気がしています。
「プログラミングの力を生み出す本」は面白そうですね。
必ず読んでみます。

投稿日時 - 2007-05-27 15:03:00

ANo.2

じゃあ、私も私見で。

Webプログラミングをするのに C 言語は不要です。アセンブラも要りません。

最初に Ruby で行くなら、Ruby on Rails などで、まずは「実際に動くもの」ができるようになって下さい。
その際、JavaScript はやっぱり要りません。当分 Java も PHP も Perl も忘れて下さい。

「プログラミングRuby 第2版 言語編」も持ってますが、Webプログラミング向けではありません。他の Rails っぽい参考書にしましょう。

もちろん、Ruby でなくとも PHP から始めても、Perl から始めても構いません。要はプログラミングでは「動いてナンボ」ということです。

投稿日時 - 2007-05-27 12:19:52

補足

ありがとうございます。

>「プログラミングRuby 第2版 言語編」も持ってますが、Webプログラミング向けではありません。
>他の Rails っぽい参考書にしましょう。

『Ruby on Rails入門』を読みたいのですが、書評を見たらまず『プログラミングRuby 第2版 言語編』が先かと思っていました。
基礎文法はHPだけで理解できますでしょうか。

Perlは省略形が多く、素人が参考にするコードを選ぶのは難しいのではと思い止めました。

投稿日時 - 2007-05-27 14:01:56

ANo.1

あくまで私見ですが。

まず、言語の勉強ばかり多くしてもしょうがありません。プロとしてはどんな言語でも使える事は大事ですが、それよりも一つ二つの言語をマスターして、アプリケーションが自由に作れるようになった方が良いです。

Web プログラミングに興味を持っていらっしゃるようなので、Java、PHP、Ruby はなかなか良いと思います。C# や VB のような .NET 言語も良いでしょう。

ただ、最初に易しい言語(ガベージコレクションを備えている実装系、ポインタを隠蔽している言語など)を勉強してしまうと、真にコンピュータやプログラミングの事を理解するのが難しくなってしまいます。アセンブラからとは言いませんが、せめて C 言語をマスターしてから他の言語を勉強する方が逆に近道かと思います。

投稿日時 - 2007-05-27 11:54:32

補足

さっそくアドバイスをいただき、ありがとうございます。
私の書き方が悪かったです。まずはひとつの言語をみっちりとやるつもりでおります。

>最初に易しい言語(ガベージコレクションを備えている実装系、ポインタを隠蔽している言語など)を勉強してしまうと、
>真にコンピュータやプログラミングの事を理解するのが難しくなってしまいます。

実はこれが気になっておりました。(素人が偉そうですが^^;)
『HACKING:美しき策謀』のバッファオーバーフローは面白いと思ったのですが、
なにぶん基礎力不足で完全には理解できません。
『猫でもわかるネットワークプログラミング』も読んでみました。
ゲームプログラミングには、まったく興味がありません。

何かCで参考になる本を紹介してもらえませんでしょうか。

投稿日時 - 2007-05-27 14:00:32

あなたにオススメの質問