Hamamatsu.rb #113

作成日:2020/07/08
最終更新日:2020/07/09

Hamamatsu.rb #113

作成日:2020/07/08
最終更新日:2020/07/09

概要

  • 日時
    • 2020/07/08(水) 19:00 - 21:00
  • 会場
    • オンライン

やったこと

Rubyで学ぶRuby

  • 読み合わせを行いました。
  • Rubyインタプリタに関数を実装について読み合わせました。

プログラミング初学者が学ぶべき言語

今回、話題になったのがプログラミング初学者が学ぶべき言語でした。正直、いろいろな答えがあると思います。 私自身としては、「何を目的にするか」によって選択肢は変わってくると考えています。

「プログラミング自体に触れてみる」であれば、「Scratch Jr」や「Scratch」が良さそうに思います。絵を組み合わせることで直感的にプログラミングが体験できます。「物を動かしてみる」ならば「LEGO Mindstorms」も絵を組み合わせることで直感的にプログラミングが体験できます。ゲームを作ってみるというのも「ツクールシリーズ」等のゲームエンジンを利用することでプログラミングの体験はできると思います。ただし、これらの言語はプログラミングの導入には良いかもしれませんが、できることが限られるので提供される範囲外のことをやろうとすると、途端にハードルが上がる認識です。

「Windows上で動くアプリケーションを作りたい」ということであれば、「Microsoft Visual Studio」に含まれる言語が良いでしょう。情報が多い意味では「C++」や「C#」が選択肢となるでしょうか。私自身の一番初期におけるプログラミングに対する憧れは「Windows上で動くアプリケーションを作りたい」だったと思います。「Visual Basic」を使えば作れるらしいと中学生時代に知ったのですが、ツールが高額で途方に暮れたのを記憶しています。現在は無償である程度開発できるのでいいなぁと思っています。

「MacOSやiPad、iPhoneで動くアプリケーションを作りたい」ということであれば2020年時点では「Swift」かと思います。とはいえ、Swiftについては全くノウハウがないので深く言及しません。

「Androidで動くアプリケーションを作りたい」ということであれば「Kotlin」でしょう。AndroidのアプリケーションはJavaが動作するVM上で動作する必要があり、KotlinはJavaの実行環境上で動作しますし、Javaよりも簡潔・安全に書けるようになっているので2020年時点では選択肢としてはありでしょう。

「科学技術計算をしたい」ということであれば「Python」でしょう。昔はFORTRANが強かった印象が強いですが、近年一気にライブラリが充実してきていますし特に機械学習分野を学びたい場合にはPythonは必須と考えます。また、Raspberry Piとの親和性も高いです。他には「Mathematica」や「MATLAB」も選択肢に挙がるでしょうか。

「古典的な人工知能を学びたい」ということであれば、いっそのこと「LISP」や「Prolog」を最初に学ぶのもありだと思います。他の言語と考え方が違うので逆に混乱しなくて良いかもしれません。

「Webアプリケーションを作りたい」ということであれば、ちょっと悩ましいです。フロントエンドと呼ばれる所謂画面表示に関わるプログラミングをしたいということであれば、「JavaScript」になりますし(あとHTML5やCSSも必須)、バックエンドと呼ばれるサーバ側でドサするプログラミングをしたいということであれば「Perl」や「PHP」、「Python」、「Ruby」、「Node.js」といった言語あたりが選択肢として挙がってくるでしょう。バックエンド側をローカル上で開発を試すのであれば正直どの言語を選んでも良いとは思います。デプロイ時にAWSやAzureといったクラウド環境やVPSを利用することが前提であればどの言語を選んでも大丈夫でしょう。しかしながら格安のレンタルサーバを利用する場合はPHP以外を動作させるのはなかなか茨の道だったりします。

「現実の物を動かしたい」ということであれば、「Arduino」や「MicroBit」をオススメします。各マイコンのアセンブラも良いですが環境整備を考えるとこれらの環境は非常に楽です。制御という観点から見るとOSレスの環境の方が望ましいです。物を動かす場合タイミングが非常に重要になってくるのですが、一般的なOSが搭載された環境だとOSによって動作が阻害される可能性があるので切り分けが大変になるので初学者におすすめできません。一方で画像の撮影や通信といった要素が絡んでくるとRaspberry Piも候補に挙がってきますし、一般的なRaspberry Piの環境はLinuxなのでPythonが良いでしょう。

もちろん、他にも選択肢は多数あります。なんだかんだで、私自身がちゃんと学んだ一番初めの言語は8080(Z80)や8085のアセンブラだったりしますし^^;目的がワンボードマイコンによる制御を学ぶことだったので選択肢としてはアリだったと思います。

一見遠回りになりますが、「Scratch Jr」や「Scratch」に触れてみて、プログラムの基本処理である順次、分岐、反復について理解を深めた上で自分のやりたいことに焦点を当てた学習をしたほうが案外近道かもしれません。

その他

終わった後はJAWS-UG浜松のミーティングに合流しました。 今後はちゃんと記事を書こうと思います。