人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

独学でPHPの勉強を始めましたが、思うようにうまくいきません。
大きな本を何冊も買ってがんばってはいるのですが、
難しいところは何度読み返しても、何冊読んでも理解できません。

はてなではPHPの話題はよく出ますし、簡単だとあるのですが、
はじめてプログラムを学習する私にとって、時間がかかるばかりで思うようにいきません。
大学とか専門学校に通わずプログラムを習得した人って本当にいるのでしょうか?

プログラミングを独学で学習するにあたり、
コツとか技術的なアドバイスとか経験談とか教えてください。
非常に漠然とした質問ですが、回答者さんの思いつくことであれば何でも結構です。

以上、よろしくお願いします。


●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:PHP とある はてな アドバイス プログラミング
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● ヨネちゃん
●18ポイント

私は独学でBASIC、CGI(Perl)、PHPを習得しました。

$から始まる変数に数値や文字列が代入されるという原理が分かれば、

それほど難しいことではないと思います。

簡単なプログラムから確実に理解していけば大丈夫だと思いますよ。

ダミーhttp://q.hatena.ne.jp/

◎質問者からの返答

ご回答ありがとうございます。

単純な変数とかくらいだいだとさすがに理解できるですが、

ユーザー定義関数とか可変関数など、ちょっと難しくなるとお手上げです。


あと自分が作りたいと思ったプログラムに必要な関数とか

どうやって探せばよいかアドバイスいただけるとうれしいです。

たとえばPHPに関して下記のような質問を他にもしているのですが、

たくさんある関数の中からどれを使えばよいかを探す方法を教えてもらえるとうれしいです。

http://q.hatena.ne.jp/1202569301

http://q.hatena.ne.jp/1202557525


2 ● tera-p
●20ポイント

私の知り合いには,大学とか専門学校でプログラミングを習得した人はほとんどいません.また,大部分の人は独習に近い形でプログラミングを習得したのだと思います(初めて触れたきっかけは大学の演習などだったとしても).

というわけで,「大学とか専門学校で正規の教育を受けずにプログラミングを習得するなんて茨の道なんじゃないだろうか…」というのは杞憂だと思います.がんばりましょう.

さて,プログラミングの独習の方法ですが,王道はサンプルの「写経」だと思います.適切な入門書のサンプルコードを,「手で入力して」実行してみます.エラーが出たらどこで間違えたか間違い探しをします(これにより,イコールの数を間違えるなど「単純な間違いだけど見つけにくいバグ」が起こりやすいところを体で憶えることができます).サンプルコードが何を意味しているのか理解できなければ,ちょっと書き換えてみて振る舞いがどう変わるか見てみます.エラーメッセージは英語をがんばって読んで理解しようと試みます(とても大事です).

なお,どの入門書が適切かは人の好みによるところも大きいので,手持ちもしくは本屋でみつけた入門書の中で,なんとなく肌に合いそうなものの中からネットの書評などを見て一冊選べばよいと思います.入門書が適切であれば,きっと「よく使う関数」もサンプルの中に出てきているでしょうから,以後自分でプログラムを作る際に似たようなことをしたくなったときに,「そういえばこんな関数がサンプルにあったな」と探しやすくなります.

ただ,初めてのプログラミング言語が PHP というのは,個人的にはちょっとハードルが高めだと思います.確かに「初心者に簡単」と言われることが多いですが,「HTMLに埋め込みやすい」ということ以外に「初心者に簡単」の(まともな)理由を思いつきません.初心者に「簡単でない」理由ならいくつも挙げられますが…(ここらへんについては,Ruby 作者のまつもとさんの日記が最近話題になってます Matzにっき(2008-01-26)).

できれば,PHPではなく,Python や Ruby などの「情報が豊富で敷居が低く,よく設計された言語」でまずはプログラミングを憶えたほうが,プログラミングを習得するには効率的ではないのかな,と思います.

◎質問者からの返答

経験談から来るご回答ありがとうございます。

ほとんどの人は独習なんですね。勘違いしてました。

そう聞くとだいぶ気分も休まりました。


エラーメッセージの英語は不慣れなこともあって、

びびってましたがなんとか理解できるようチャレンジしてみます。


やっぱりRubyの方が簡単なんですか?

実は勉強する前からどちらにしようか悩んでたんです。

でも今更変更できません。これでがんばってみようと思います。


3 ● fortune-teller
●20ポイント

私が初めて覚えたのはBASICでした(それまでにFORTRANを教わってたが)。

大学の研究室に新しいPCが納入されたとき、誰もいじらないから、おっかなびっくりで

マニュアルを見ながら最もわかりやすいコマンドを打ち込みました。

circle(100,100),100,2

CRT上に赤い円が描画されました。これが面白くて、その日徹夜で日章旗(後光のあるやつ)を作り、マニュアルにあるコマンドをあらかた試してみました。理解できなかったのはファイルの概念ぐらいでした。ファイルは理解するまで1ヶ月ほど掛かりました。どうも、バインダを思い出してしまい、イメージがつかめなかった。自分の心に思い描いているイメージとプログラムの概念というのは必ずしも一致しませんからね。

FORTRANを教わったときも、代入のイコール(=)の理解に時間がかかった。理系の私にとって、イコールは恒等式の成立を意味し、変数が別な変数と等しいと定義(a=bみたいなもの、実際は定義でなく、単なる値のだいにゅう)されると常に、値がシンクロしていそうなきがしていました(先の例で言うと、a=bとしてはじめはbが100で、この代入のあとでbに50を足すとaも150になっていそうで・・・、まあ、Cで言おうところの参照渡しみたいなことですね)。

時間がたてば自然に理解できるのでは。

私は、PHPポケットリファレンスを使っています。

http://gihyo.jp/book/2003/4-7741-1668-8

例を読めば大体分かりますよ。

◎質問者からの返答

経験談からくるご回答参考になりました。

私の場合は相談する相手がいないので、パニックになってたかもしれません。

そういえばPHPを勉強し始めたのは今年の1/2からですから、

やっぱり時間が必要と言うことなんですね。


4 ● pkb_wn
●20ポイント

私もyoneto164さんのように独学でPHPを憶えました。(以前PHPに似た、ColdFusionを少々かじったことがあります。こちらも独学で)


自分がずばり使いたい関数を探すために

とりあえず公式マニュアル首っ引きになることやネット上からサンプルや情報を得てPGするのはやむを得ないと思います。


書籍からは、PHP言語を俯瞰する程度の情報を得るにとどめて、

PGの都度都度で

ファイルI/Oなら、とりあえずファイルシステム関数にあるだろう、

文字列操作なら文字列関数にあるだろう、といった目星をつけることから、

やがてそれぞれ得意な関数を心得ていけば、いろいろなシーンで流用できるようになると思います。


PHPはMicrosoftの.NET Frameworkのように関数がてんこ盛りですから

(PHP4から5になって増えていますし。

たとえばファイルを全部読みだす処理で、PHP5でfile()という一発関数が用意されました。

PHP6で、さらに用意されていくことでしょう。)

端から端まで自分で憶えてからPGをすると、頭がパンクしてしまいそうに思います。

正規表現などの機能も持っていますし、スマートなコードはどこまでも追求できるでしょうが

とりあえず動かすことを目的にごりごり書くのもやむをえないと思います。


ご存知かもしれませんが...PHP自身にもデバッグ向けの関数を用意してあります。

PHPは、変数型が厳格でないために意図しない方法の演算をすることがあり、デバッグログなどは重要です。

配列の添え字の順序はややこしいですが、print_r()で変数の構造を捉えると便利です。

(配列変数のつもりが配列でなかったり、添え字の順序が逆であったりすることも分かります。)

あとは定番ですが、phpinfo()も有用です。

ブレイクポイントと変数ウォッチができるデバッガを用意できれば便利なのですけど。。


あとはこのようなWEBページから、機能の分野ごとに俯瞰してみるのもよいかもしれません。

SAK Streets - PHP 開発言語資料 (Y.SAKさん提供)

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sak3php.htm

配列:http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k08.htm

◎質問者からの返答

ご回答ありがとうございます。

ご指摘のデバッグなどのはまだ試してませんでした。

さっそく勉強してみることにします。

今やるべきことがわかってきたような気がしてきました。


5 ● hidering
●20ポイント

私はPHPに関してはあまり詳しくありませんが、プログラムに関して言うと

最初のうちは詳しい人に聞くのが一番早い上達法だと思います。

ただし、聞いただけでプログラムをブラックボックス的に使用するのではなく

どうしてそうすれば上手くいくのかを理解する必要があります。

慣れればリファレンスを見てある程度解決しますが、

プロでもネットで調べますし、掲示板で質問をします。

聞いても分からないことは食い下がってさらに聞いてみて良いと思います。

関数は膨大な量があり一つ一つの関数の仕様を暗記する必要はありません。

(よく利用するのはそのうちに覚えていきますし。。。)

上達するには教えてもらった方法の中で利用している関数がどういった使われ方を

しているかを考えたり、その関数に類似した関数にどういったものがあるかを調べることです。

そしてこんな関数があるということを頭のすみに入れておきます。

その積み重ねです

私はリファレンスを見て分からないことがあるとまずサーチエンジンで調べます。

最初はどんな単語で調べればよいか分からないと思いますが、

いろいろな文献や掲示板、リファレンスを見ていくうちに

どのような単語で検索していけばよいかが分かってきます。

分からないうちはそれらしい単語をいれて検索してみましょう。

検索結果に適切だと思われる単語がでてくるときもあります。

そのときはその単語に置き換えて検索してみるといいでしょう。

私の場合、その繰り返しでたどり着く場合が多いです。

私がPHPで利用している掲示板を紹介します。

http://www.phppro.jp/qa/

掲示板で他の方が質問している内容に興味をもったら閲覧してみるのも上達の近道です。

◎質問者からの返答

ご回答ありがとうございます。


>最初のうちは詳しい人に聞くのが一番早い上達法だと思います。

そういう人がまわりにいないんです。


やはり試行錯誤したり、調べたたりで時間がかかるのはみんな同じかもしれませんね。

ご紹介いただいた掲示板を活用させていただきます。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ