PHPなどの言語の学習方法について
解決済
回答 6
投稿
- 評価
- クリップ 2
- VIEW 1,269
みなさんの勉強方法についておしえてください。
PHPやjavascript、rubyなど様々な言語があるかとおもいますが、どの言語とは言いませんが、ある言語を勉強しようと思ったとき、みなさんはどういったやり方で覚えていったのでしょうか?
学生時代のような参考書を買って、それをノートに書いて覚えてた人もおられるのでしょうか?
また、とにかく覚えようと思った言語でひたすら何かを作りまくったという人もおられるのでしょうか?
このサイトでこんなことを聞くのは場違いかもしれないですが、今自分がPHPやjavascriptなど学習するうえで、どのように進めたらいいか悩んでいるので教えてもらえるとうれしいです。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+6
人によると考えています。
などなど。
私の場合は1番目にあたり、寝る前や電車等の時間で、
WebやKindleを見て覚えます。
ただ、実行しないと結果がわからない事に関しては、
コードを書いて実行結果を見て、理解を深める場合もあります。
後はプログラミング言語のバージョンアップによって記法が大分変わりますので、
学ぶ際は古いバージョンを学んでも良いとは思いますが、
最新または最新から1つ前のメジャーバージョンを学ぶと良いと思います。
また、始めた頃は色々な本を買ったりしましたが、
よくある入門書籍は買わないほうが良いです。
(多方面から攻撃されそうですが)
理由としては、
大まかな知識しか書いていない所に問題が有ります。
例えば、
大体の言語で使用されているセミコロン(;)ですが、
殆どの入門書籍では「とりあえずルールと思って頂ければ良いです」的なことが書いています。
ルールと言えばルールですが、文末を表す記号であったり意味があります。
そういう所を省かれて、結局WEBで調べるので効率が悪いです。
結論としては、
入門時にしっかり知識をつけたい場合は、
- いいWEBサイトに出会うこと。
- 自分にあった学習方法を見つけること。
かなーと考えています。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+3
勉強方法も人それぞれなんですよね。というところはmukkunさんに同意です。
とりあえず自分は
「実行結果がハッキリしているコードも書き写して実行する」
「実行したコードの一行一行がどういう事をしたのか自分の言葉で脳内で説明する」
「インタプリタ系言語(Ruby,Python,PHP, etc...)なら、電卓代わりに気軽に使ってみる」
教材の良し悪しは確かにアリます。僕は幸い地雷みたいな参考書に出会わなかったかなと思ったりしてますが。それもこれも、一度専門学校通って、コンピューターの基本(PCパーツの構成とその役割やアルゴリズムとデータ構造の学習)もあったのかも……。
閑話休題。
あとはやっぱり人に教えてもらうのが一番の近道かもしれません。
近くに気軽に聞ける人が居るかどうかだけでも違うと思います。その上で自分の言葉で理解した内容をまとめる。
個人指導塾でPythonプログラミングを教えてる(と言うとおこがましいのですが)と、生徒の様子を見ていてそう思いますし、Smalltalkを学ぶ時もたまたま身近にSmalltalk界ではかなり強い方がいらっしゃったので、Smalltalkの面白さに目覚めました。
mukkunさんの
よくある入門書籍は買わないほうが良いです。
(多方面から攻撃されそうですが)
よくわかります。確かに「おまじないです。ルールです」
で片付けてもやもやさせたまま進める入門書は多いです。
かといって、プログラミングを始める人がいきなり「苦しんで覚えるC言語」に進むのは結構厳しい物がある気がするぞというのが僕の所感ではあるので、
「おまじない」「ルール」でぼやっとさせてる入門書があるのなら、
「このおまじないって、結局何なんだ?」
って興味を持ったらすぐ調べる。調べて分からなかったら時がそのうち解決する(いずれ理解できる)まで資料を読み返す。自分の言葉でまとめる。誰かにもう少しわかりやすく説明してもらう。という行動力も必要かと。
僕はプログラミング学習に関しては結構古臭い考えの人間です。なんせ、
「プログラミング勉強する前にPCパーツの内部構造と各パーツの役割くらい把握しておけ。あと一番の参考書は言語の仕様書」
という人間ですが、どこが具体的にわからないというのがはっきりしていれば、誰かに聞くのはやっぱり有力なのではないかなと思います。はっきりしていなくても、対話で紐解いていく力さえあればなんとかなるかと。
話があちこちに飛んでいってしまいましたが、分からなくなったら近くの詳しい人か、teratailに投稿しましょう!
ということを言いたかったです。
駄文、長文失礼いたしました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+3
同じような質問はたくさん見ました。特にこちらで聞いてもおかしなことではないようです。
ってことで、私の実践したのは
・初学者向けの入門書(体系的知識の整理)
・teratailで、初学者と思われる人の質問とその回答を読みまくる(トラブル箇所の勘所把握)
・何らかのアプリケーションを設計/構築してみる(動くスクリプトを書くことで、モチベーション維持)
・公開されているライブラリやSDKのコードを読み、きれいなコードを知る(きれいじゃないのもあるけどw)
・軽量フレームワークを参考に、お作法的なものを体感する(正直何やってるかわからない。遅々として進まない。でも読む。)
下2項目は現在進行系です。(余り進んでいないw)
私自身は実践できてませんが、途中でコードレビューをしてもらうと学習効率が上がると思います。
他者の指摘は非常に重要です。
ホントはどっかの会社に所属して、1年ぐらい揉まれるのが最速かもしれません。
あと、学習ではないですが、早めにIDEか高機能エディタを使ったほうが良いです。
つまらんことで、時間を取られることがなくなります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
学習方法って人それぞれですからね。
なので一例。
- 私はその言語の最低限の書式を覚える。
- 作りたいもの・あったらいいなと思うものをイメージ。
- 2を実際に作る。
という感じ。
二言語目以降 は
- 最低限の書式を覚える
- 自分が知っている言語と 新しく学習する言語 の対応表を作る
- 作りたいもの・あったらいいなと思うものをイメージ
- 3を実際に作る
という感じ。
たとえば、
C -> C++ -> Java ...
とやるとします。
Cの最低限の書式は
#include<stdio.h>
int main( void ){
// なんらかの処理
return 0;
}
ですね。
C++は
#include<iostream>
using namespace std;
int main( void ){
// なんらかの処理
return 0;
}
Javaは
// MainProg.java
class MainProg{
public static void main( String args[] ){
// なんらかの処理
}
}
ですね。
二言語目以降は、
C/C++ の クラスオブジェクト生成は
CTest* test = new CTest();
か
CTest test();
です。
Javaでこれに相当するのは
CTest test = new CTest();
ポインタマークの有無の違いってだけ。
じゃあ、for文は?
...
という風にXに相当するものは...という感じで覚える。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
みなさんありがとうございます。
みなさんの言葉を参考に頑張ろうと思います!
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
もう解決したようですが、私の学習方法を書かせてください。
私の場合は、「誰かに教えて」勉強しました。
具体的に言いますと、はてな人力検索のプログラミング系の質問に回答していきました。
誰かに教えるためには系統的に理解する必要があります。質問による課題があることによって、問題解決のための具体的なコードを書く機会も増え、初心者の「多少書けるようになったと思うが、次に何を書いたらいいか分からない」状態を回避できます。
また、誰かに教えることによってあいまいだった部分が明らかになったり、知らなかったことを調べることによって自力で解決をしていくコツが分かり、他人に頼らないクセがついたと思います。
QAサイトのプログラミング質問は、難易度的に「初心者がぱっと答えるには難しいが、時間をかけて調べれば何らかの回答に行きつく」という、初心者がゾーン状態に入りやすいものが多いと思います。
ですので「teratailで誰かの質問に答えていく」という学習方法をお勧め致します。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.13%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/01/06 07:40
入門書は大まかな知識を体系的にしいれるものですよ!
辞書じゃないし言語の仕様書でもない。
ってことで、使い方の問題かと。
入門書読まないと「UTF-8」がーとか「改行コード」がーとかつまらんとこで悩むことになります。逆に入門書にはそれ以外のことを期待してはいけないですけど。
2017/01/06 07:50
ですねー。
ただ曖昧な知識を言語仕様として認識、過信すると良くないかなとも思いますね。
(そこら辺もやっぱり人によりますね)
>> よくある入門書籍は買わないほうが良いです。
断定的な言い回しは良くなかったかもしれませんね。
2017/01/06 09:32
私の切り分けとしては
・新しい知識/情報の取得 → Webサイト
・疑問/問題の解決 → 仕様書等の一次情報源
って感じです。疑問の解決は曖昧な情報源だと更に悩みますよね。
オライリー本とかは、仕様書の類と読み替えて下さいw