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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1388閲覧

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

tone1192

総合スコア19

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

1クリップ

投稿2017/05/06 04:57

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

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

DrqYuto👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

がると申します。

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

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

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

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

投稿2017/05/06 05:37

gallu

総合スコア506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tone1192

2017/05/06 06:59

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

0

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

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

例えば、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できっちり型に嵌めて使うのが主流のようです。

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

投稿2017/05/06 06:59

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2017/05/06 05:08

toutou

総合スコア2050

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tone1192

2017/05/06 06:59

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問