柴田望洋や高橋麻奈の本を何度か読んでいて、ソフトウェアで何かを作るまで進まない感じがしていた。何年かごとに改訂される本を見ても書き方が大きく変わらなくて、言語の仕様をずっと追っかけている感じがする。授業の課題を理解するにはいいと思うけど。
Javaはテキストファイルを読み込んでコンソールに表示するだけで、10行ぐらい書かないといけないイメージがある。node.jsだとtry catchを使わないので3行ぐらいでも書けちゃうがエラー処理がないのでバグると怖い。Javaはtry catchを書かないといけないのでながくなるし、一行ずつ読み込むの方法のコードサンプルが多い。そういう意味で安全な言語なんだけどとりあえず試したい内容があって動かすのに時間がかかる。
この本でのJavaはJava17でJava8的な書き方からはだいぶ変わっている部分がある。jshellがあって対話型のプログラムが書けるpythonやブラウザのDevToolsの感覚で確認ができた。 varが使えるようになっていて、型の処理が減って書き方がJavaScriptに近くなった。Javaの本だと、StringやIntなどの記述が多かったが削られている。JavaScriptのほうがTypeScriptで型を宣言させる方向に進んでいたりする。この本では統合開発環境で入力補完があるので、言語を覚えるのには向いていない気がする。というのもテストの問題が紙ならば覚える必要がありそう。JavaのIDEはIntellijをベースに書かれていてインストールもそうなっている。ただオラクルJavaからダウンロードするように指示されている。
Intellijをインストールするのは、toolboxからインストールするほうがアップデートの通知やアンインストールも一元管理ができて楽。日本語のプラグインもあってeclipseのように日本語化すると起動に時間がかかるわけでもない。jshellでもswingを使ってGUIが書けるので、一行ずつ画面の変化で確認しやすかった。
ただ、ビルドツールがmavenに基づいて書かれているので、gradleをやるのかと思っていたが違った。
プログラミングで数値計算をはじめにやることが多い。型、変数、分岐などをやって、オブジェクト指向、GUI、APIのファイルの入出力、HTTPなどと進んでいく。
プログラミングを学ぶのにあまりJavaを進めることはない、というのも自分はオブジェクト指向で躓いてGUIのswingがあまり理解できなかった。そのご、html+jsでUIと処理が別になっているのでイベントリスナーやDOM操作に慣れるとやっとオブジェクト指向の理解が進んだ。ただ、JSが初めだったので、オブジェクト指向よりも、関数型のプログラムを書くほうが多い。オブジェクトはJSONをイメージしながら書いてしまい結局オブジェクト指向的な書き方はできていないのだろう。