質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.91%

新しいプログラミング言語を学ぶときはどのように学んでおりますか?

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 930

tone1192

score 15

複数言語を学んでいる方に質問です。

私はPHPをすでに学習しており、新たにRubyを学ぼうと思っています。
なるべく早く習得したいと思っているのですが、皆様は新しい言語を学ぶとき、どのような工夫をしているでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+6

がると申します。

単純に「学習をする場合」ですと、個人的にはまず「公式(ないしそれに一番近いところ)の、"その言語にとって典型的な"チュートリアルを一通りやる」から始める事が多いですね。
「出来る」と「適切である」には、特にプログラム言語の場合「そこそこ深い溝がある」事が多いので、一端はまず「その言語の典型」を学びます。
個人的には、学習の「守破離」の守の部分、だと思っています。

あとは「業務上覚えないといけない」ようなケースもあったのですが、その場合は「やらなきゃいけない事のリストアップ → それが出来る方法の調査」で、一端(半ば無理やり)覚えます。
この場合は、「後で」上述のようなチュートリアルを確認して、歪に組んでしまったところを直すようにしています。

いずれにしても。
・入出力の仕方
・その言語が持っているデータ型
・「その言語にとって適切な」制御構造の書き方
・関数とクラスの書き方
あたりが最低限必要になる事が多いので、そのあたりはまず優先的に調べたりしているように思います。

以上、何かの参考にでもなれば幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/06 15:59

    なるほど、たしかに「業務上覚えないといけない」場合とは覚え方は意識的に変えないといけないですね。参考になりました。ありがとうございます。

    キャンセル

+4

文法等をさらっと学んだ後に、既に知っている言語と異なる点を重点的に学びのがいいかと思います。

言語の違いは、単純な「書き方の違い」よりも「考え方の違い」の方が重要です。考え方が違うと設計指針から変えていく必要があります。なので、考え方の相違点を重視します。

例えば、PythonとRubyを例にとりましょう。

PythonとRubyはコードの書き方はかなり異なりますが(インデントとendだらけなど)、コードの考え方は割と近い方です。オブジェクト指向とダック・タイピングという考え方が中核の一つになっています。PythonからRubyへ、RubyからPythonへの変更は割と簡単にできることが多いです。クラスの文法とかは覚える必要はありますが、オブジェクト指向におけるクラスという考え方は、(多重継承・単一継承などいくつか差異はあるとしても)根本部分を改めて覚える必要はほとんどありません。

しかし、全く違う部分があります。例えば、リストに対する処理です。Rubyはリストのような物は基本的にEnumerableモジュールを使って、メソッドチェーンで繋ぎながら処理していきます。配列をmapしてselect(filter)してinjectするなんてものはよく使う手法です。対して、Pythonには強力なリスト内包表記があります。mapやfilterもありますが、リスト内包表記を使った方が簡単にわかりやすく書くことができます。ここら辺の考え方の違いは文化の違いとも言えるものです。Rubyをやっていてもリスト内包表記は絶対に覚えられません。なので、Rubyをやっている人がPythonを学ぶときは、リスト内包表記を新たに覚えなくてはいけません。

ただ、HaskellやCoffeeScriptでリスト内包表記を知っていればPythonのリスト内包表記をすぐに覚えることができるでしょう。つまり、今まで学んだ言語で無かった機能によって、考え方そのものを変える必要があるところがどこかを見て、それを学んでいくと良いのでは無いかと思います。

さて、PythonとRubyは似ているという話でしたが、まったく違う言語はどうでしょうか?たとえば、CとLISPです。どちらも古くからある言語ですが、考え方は全く異なります。配列(リスト)一つとっても、連続したメモリとして扱うか、cdrの連結として扱うかと全く違います。その場合は、一旦忘れるが大切だと思います。いや、本当に忘れては困るのですが、先入観を捨てると言えば良いでしょうか?

例えば、Haskellという純粋関数型言語は変数に再代入ができません。もし、C等の命令型言語をしていた人から見たら、この再代入禁止がとても使いいにくいと思います。しかし、それはC等の考え方をしているからです。逆にHaskellから学んだ人は再代入できる意味がわからないと言うことでしょう。なので、今までの知識は一旦脇に置いて、一から学ぶ気持ちで学んだ方が進めやすくなります。

このように、既に知っている言語との相違点を知っていれば、新たに学ぶ言語に対する心構えや重点的にすべき所が見えてきます。時には忘れて、時には結びつけて考えていくと、逆に、今まで知っていた言語の知らなかった面も見えてくるのではないでしょうか。


では、PHPとRubyとの相違点はどこかというと…。

  • PHPのarrayは普通の配列と連想配列が一緒になった物であり、また、値渡しになるなど、RubyのArrayやHashと全く異なります。
  • PHPのclassはC++/Javaに近いです。同じクラスベースオブジェクト指向とはいっても、RubyはSmalltalkの影響が強く、クラスを使っているぐらいしか共通点がありません。
  • 同じ動的型付けですが、Rubyはダック・タイピングが基本です。PHPはJavaのようにinterfaceできっちり型に嵌めて使うのが主流のようです。

うーん、違いが大きすぎて、新たに学ぶ気持ちで始めた方が良いかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

共通項を見つけますね。自分がやってるのは大体関数とか考え方が似てたりするので、まずそこから入っていきます。そうするとちょっと思考をずらすだけで知らないものがすぐわかったりします。結局同じなんだと思い込めば難しいという感覚も薄れます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/06 15:59

    なるほど、ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る