パスタのゆで汁

掃き溜め 物理

Re;ゼロから始めるべき言語はPythonですか?

久しぶりと言うほど久しぶりではない気がしますがおはようございます。

今日はプログラミング言語のお話です。

どんなことでも、ある程度学んだ人間同士の間で盛んになるのが”何から学ぶのが一番いいか?”という話題です。

音楽なら”コード進行から学ぶべき”とか””とりあえず好きなように鳴らしてみるべき”とか、数学なら”解析から”とか将棋なら”定石から”とか”詰将棋から”とかいろいろありますが、プログラミング言語だと”どの言語から学ぶのが一番いいだろうか?”というのが盛んに話題になるような気がします(というか筆者はその程度の段階の人間です)。

んでもって、最近の流行りのpythonRubyやらAndroidの言語に使えるJavaやら定番のCやらいろいろお勧めされるかと思います。てか最近はpython推しが強いっすよね。

結論から言うと、僕は全部に少しずつ手を出した結果、Cが一番いいなと思いました。

というか、教育的な意味ではCで、慣らすならpythonかなって思います。

以下各言語をどうしてお勧めしたくて、お勧めしたくないのかを書きます。

自分にとってのまとめでもあります。

 

C/C++

ド定番中のド定番ですね。

我々の扱うような内容であれば大体なんでもかけるし速いし、比較的わかりやすいです。

そして、C言語の何が一番のおすすめかと言えば実装する変数やら引数の概念を順序立てて書くことになるので、後々ほかの言語を学ぶときに実装がたやすいことです。

これはint型とか何型の値を戻しているかを認識していないと、コンパイルエラーが何を示しているかもわからず唯々無駄に時間を過ごすことすらあるのでここら辺の概念を覚えておくべきです。

問題があるとすれば、後進の言語よりヒト語から遠いので初見難易度が高い点でしょうか(♯include<>をおまじないとか教える慣習が最大の問題かとは思いますが…)

あとまぁ、教材が過多でどれから学んだらいいかわからないという少し贅沢な難点も抱えてはいます。

 

Java

やってることも、やれることも超広い定番言語ですね。比較的ヒト語に近いので可読性は高いのですが、Class…とか他の言語だと大分後の方に覚える概念を先にやっておかないと何も出来ないことが難易度を引き上げている気がします。あとクラス宣言のせいでCよりも長い。初見じゃまず読めない。

初見でやるべき言語ではないです。

 

python/ruby

実を言うと僕はこいつらから入門しました。

これらの言語は読みやすさが段違いで、何だったら何となく書くだけで割と動くコードがかけてしまう恐ろしい子です。(Cだと打ち間違いとかちょいちょいあるけどほぼヒト語なのでまぁ間違えない)

しかも一つ一つのコードにかかる文字数がCの半分程度で済むので書く速度もこちらが早い。関数の定義も簡単、実行も問題なく早いし標準的な統合開発環境(Anacondaのパケ)でグラフとかすぐかけちゃうしすごい!至れりつくせりに見えます。

pythonは今人工知能の流行りとその実装のしやすさから入門書とかがあふれてる印象です。

しかし、こいつらは実数型とか文字型とかを気にする割に、それに対する定義を必要としません、突然その関数に文字を対応させたらそのままその文字がその関数(配列、数字、文字)の型を持ってしまいます。

なので、後半突然登場するfor文の繰り返す回数のiとか、お前らいつ出て来たねんってなって非常に混乱します。

標準入力から読み込む方法も簡単ですが、複数文字をスペースで区切ったような配列を指定された場合、半角スペースを区切りにした文字列の中にあるモノを整数型として読み込んで配列にし直すという事をする必要があります。これはCでも容易いですし、自分で何をしているのかすぐわかりますが、pythonしかやっていない人間はここで「は?」となります。というか、なりました。必死こいて調べて実装しても半角スペースによる区切りを認識してくれなくてキーボードに八つ当たりしたりもしました。

なので、Cを大学の授業程度のレベルまでやってから学ぶのが良いのかなぁと思いまっした。(python競技プログラミングとかやるなよ!絶対だぞ!教材が無くて詰むぞ!)

 

ここまでつらつら書いたわけですけど、なんかいいpythonの競プロの教材とかないっすかね。あったらコメントに残してくれると200億年ぶりくらいにプログラミングをする機運が高まります。

 

 

ちなみにこれを書いてるの、某所に模擬遠足行く準備してる途中なんですよね。行きたくない。面倒なことは全部pythonにやらせようみたいな本が話題になりましたけど、模擬遠足もpythonにやってもらえないものですかね。

 

 

Amazon CAPTCHA