質問: プログラミングを勉強しているものです。 プログラミングを勉強しています。最近始めたばかりですけど、 まずjavascriptを習得しようと思ったのですが、 種類が多くて、記号も出てきて、圧倒されました。 プログラミングを仕事でやっているような人は、あんなのを全部すらすらとかいているように見えるのですが、英語や日本語のように言語として暗記してしまっているのでしょうか。 覚える必要があるのか、ないのか、よくわかりません。 後、プログラミング言語にも、pythonとか、c言語とか、色々ありますけど、あれは一体なんであんなに分かれているのでしょうか。 違う言語でも同じような事をできるのでしょうか。 後、私は今学生で、プログラミングの勉強をしたいと言ったら、親に反対されたので、隠れてやってます。なので有料のサイトとか、本とかを使ってるとバレるので、無料で解説だけ乗ってるサイトを使って学校でやってます。 こんな感じでも習得できるでしょうか。後、プログラミングスクールとかだと、プログラミングはどうやって習得していくのでしょうか。やっぱり何回も色々試していくうちに覚えるのでしょうか。 イマイチ分からないのでよろしくお願いいたします。
回答: > 結局、c言語は○○に使って、pythonは△△に使う、みたいな適材適所のようなものがあるという理解であっているでしょうか? はい、その理解で良いと思います。 その2つだと、より汎用なのはpythonの方ですね。と言うのもライブラリが多いから、です。やっつけでパッパと何かでっち上げるのに向いています。 > 何から始めたら良いのでしょうか? 他の質問でも言ってますが、まずはrubyが一番良い、と思っています。 と言うのも、質問で > 本とかを使ってるとバレるので、無料で解説だけ乗ってるサイトを使って学校でやってます。 にピッタシ合うとは思います。 一番入門者向きで、すぐ終わる「プログラミング入門」に次のサイトがあるから、です。 プログラミング入門 - rubyを使って -: https://ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/ 二週間もあれば終わる内容なんで、これを終えてから本格的にやるなり、別の言語に移るなりしても良いでしょう。 どっちにせよ、ハッカーを目指すのなら、「プログラミング言語を一つ習得して終了」たぁ、絶対行かないんで、プログラミング言語を移動する経験は無駄にはなりません。むしろあった方が良いです。 ただ、どの道、「プログラミングの基本的な考え方」は上記のサイトで学べます。これは共通基盤の考え方(※)なんで、別のプログラミング言語に移っても使える考え方です。 rubyは公式サイトから入手できます。 オブジェクト指向スクリプト言語ruby: https://www.ruby-lang.org/ja/ > javascriptを習得しようと思ったら、まずはhtmlとかから習得するのが良いのでしょうか? 多分その方がラクにはなりますよね。元々html上で動かすように設計された言語がjavascriptなので。 それと、あまり知られてないんですが、javascript言語はどっちかと言うと関数型プログラミング言語と言われる「かなり尖った」性質のプログラミング言語に影響を強く受けています。その辺の理解もrubyをやった後の方がわかり易いかも、とは思います(何故ならrubyもそうなんで)。 ※: プログラミング言語はどれも基本的には次の3つの「動作」に支配されています。 1. 逐次実行(書いた順番通りに実行する) 2. 条件分岐 3. 繰り返し この中で実は一番プログラミング素人が上手く扱えないのが、驚くなかれ、実は「一番カンタンに思える」1番の「逐次実行」です。「書いた通りに実行される」と言うのが一番感覚的には納得出来ないらしく、ここでミスが多発します。 次に難しいのは「繰り返し」で、これは慣れた人でも必ずミスを起こす部分で、しかも「繰り返しはメンド臭い」と言うのが共通認識です。ただ、慣れた人とプログラミング素人の何が違うのか、と言うと、慣れた人は 「プログラミングする事に慣れてるので、当然エラーを起こす事にも慣れているから慌てない」 と言う部分。エラーを起こす回数自体は実は両者あんま変わらないのです(ヘタすると「慣れてる人」の方が多いかも・笑)。 この「繰り返し」がメンド臭いので、比較的新しいプログラミング言語には「簡単に繰り返しが出来る」イテレータと言う機能が満載になってたりします(でも、「問題毎に適切なケース」が色々とあるので、今度は「数あるイテレータの中でどれを選択する?」と言う問題が出てくるので、それはそれでなかなか悩ましい部分です)。 この「基本動作を司る書き方」を「構文」と言って、どのプログラミング言語も備えてる機能となります。逆に言うと、「基本動作」が分かれば、どのプログラミング言語に移っても、敷居は低くなる、と言う事です。 また、ホント理論的な話なんですが、実はもっと言うと「まともなプログラミング言語」ではたった2つの機能に集約する事が出来ます。それは、 1. 逐次実行(書いた順番通りに実行する) 2. 条件分岐 の2つで、繰り返しは省かれます。いずれにせよ、たった2つないしは3つの「基本的な考え方」さえ学べばどのプログラミング言語に移っても大方大丈夫だ、と言う事です。 もう一つ重要なのは、データをどう作るか、と言う部分です。組み込みのデータ型から選ぶも良し、自分で新しくデータを設計しても良し、です。この部分で、比較的新しいプログラミング言語は有利になっていますね。組み込みのデータ型の数が豊富にある、と言う事です(c言語が厄介なのは、この「データ設計」に費やす時間がメチャクチャ多くなる、と言う辺りです)。 この「データ型の選び方」もしくは「新しいデータ型の設計」が結構難しい部分で、ここに「慣れ」が大きく関わってくるのです。