初投稿です。プログラミング初心者が最初に学ぶべき言語は何?って100人のプログラマーに聞いたら20以上の言語が返ってくると思います。そんな答えの無い論争に終止符を打ちます。
結論
processing
https://processing.org/
processing is 何
processing、聞きなれない言語だと思います。簡単に言うと、クリエイティブコーディングを掲げたAltJavaです。processingで書かれたコードはjavaに埋め込まれて動きます。
公式サイトからダウンロードしてインストールするだけで環境構築終わり。エディタとセットになっているのでエディタを起動したらもうコーディングできます。
クリエイティブコーディングとは
「楽に、楽しく書こう」という概念です。一行のコードでウィンドウを作ったり、図形を書いたりできます。コード例を挙げるのでクリエイティブコーディングがどんなものか感じ取ってください。これをそのままprocessingにコピペすれば動きます。
400×400のウィンドウを出す。
size(400,400);
画面の中心に半径50の円を描画する。
size(400,300);
ellipse(height/2,width/2,100,100);
右に移動する円を描画する。
void setup(){
//最初に一度だけ実行
size(400, 400);
}
void draw() {
//描画のたびに実行
background(0,0,0);//背景を塗りつぶす
ellipse(frameCount, width/2, 100, 100);
}
正直プログラミング既修者からしたらいろいろ突っ込みたくなるような仕様だと思います。それもこれもjavaのコードに埋め込んでいる="実質マクロ"だから起こることですが、書く量を極限まで減らしているのは事実です。
そもそも初心者向け言語に必要な条件とは
結論から話したので、今度は理由を話します。独断と偏見が多分に含まれているので異論は認めます。以下のような条件が、初心者が最初に学ぶべきプログラミング言語の条件だと思います。
環境構築が簡単
プログラミング初心者は9割パソコン初心者なので、パスを通すとかコマンドプロントを操作するとか、あるいは複数のソフトを正しくインストールするとか、そういうことはできません。そこが難しくて萎えてしまうと、どの言語が~とか以前の問題です。
楽しい
HelloWorldとコンソールに表示できても、殆どの人は「だから何?」っていう感じだと思います。初心者でパソコンが自分の命令の通りに動くことに快感を覚える人は異常です。
そこで、図形を表示したりアニメーションを作ったりすると、楽しいと感じてくれる可能性が高いのです。
おまじないが少ない
書く量が多いと、タイピング速度が遅いのでストレスが溜まるし、覚えることも多いので、萎える確率が上がる。出来るだけ書く量が少ない方がいい。
if式やfor inがあると、三項演算子やfor(;;)などを使わなくて済むのでそういうのも重要。
乗り換えやすい
そもそもプログラミング言語は何をしたいかによって選ぶものなので、乗換前提で考えるべき。Cベースの記法がベター。
情報量
ググって解決しないのは萎える原因になる。
エラーチェック
基本的にはコンパイラが全部エラーを教えてくれるのが理想。そう考えると静的型付け言語の方が良い。
これらを満たす言語とは
表にしました
情報量 | 言語仕様 | 環境構築 | 楽しさ | 総合点 | |
---|---|---|---|---|---|
Processing | 〇 | △ | 〇 | 〇 | 3.5 |
P5.js | 〇 | △ | 〇 | 〇 | 3.5 |
TypeScript | 〇 | 〇 | △ | △ | 3 |
JavaScript | 〇 | △ | 〇 | △ | 3 |
C++ | 〇 | 〇 | △ | △ | 3 |
Kotlin | △ | 〇 | × | 〇 | 2.5 |
C# | △ | △ | △ | △ | 2 |
Python | 〇 | × | × | △ | 1.5 |
Java | 〇 | × | × | △ | 1.5 |
Rust | × | 〇 | × | × | 1 |
言語仕様は、おまじない、直感的な記法、コンパイラチェック、乗り換えやすさを総合的に考慮して採点。
楽しさは、初心者が楽しく学習できる環境があるかどうかで採点。Kotlinが〇なのはOPENrndr、C++が△なのはDXlibraryというライブラリの存在を考慮してのこと。
P5.jsっていうのは聞きなれない言語かもしれないけど、JavaScript版Processingだと思ってくれれば良い。
というわけでProcessingかP5.jsが優勝候補なんだけど、どっちにも弱点がある。共通の弱点として、埋め込みで動いているので、外側がブラックボックスになっている。
Processingは中身がJavaなので直感的で便利な記法が全くと言って良いほど使えない。一方でP5.jsは中身がJSなので動的型付けである。
自分は動的型付けが大嫌いなので僅差でProcessingの優勝。
こんなクソみたいな言語使ってられるか!!!
その通り。あくまでも初心者が最初に学ぶべき言語としては良いけれど、ある程度プログラミングのことが分かっている人にとってはクソ言語である。
だからこそある程度プログラミングのことが分かってきたら他の言語に乗り換えてほしい。乗り換え先は何をしたいかによって選ぶことになるけれど、おすすめの言語を挙げておく。
Rust
+最速
+パソコンの低レイヤにも触れる
-情報量とライブラリが少ない
C#
+Unityが使える
+クロスプラットフォーム開発が超簡単
+CやC++のライブラリが使用可能
-欲しい情報が古い情報に埋もれてる
Kotlin
+最高に書きやすい
+Javaのライブラリが使用可能
+OPENrndr(Processingより高機能なクリエイティブコーディングライブラリ)
Typescript
+ブラウザで動く
Python
+最高の資産(機械学習など)
---最低最悪の言語仕様
終わり
初心者には乗換前提でProcessingをお勧めしてください。