を見ながらScalaに入門したときの学習メモ
オブジェクト指向プログラミングと関数型指向プログラミングの統合
- Scalaの特徴はJavaをベースとしたオブジェクト指向言語をもとに関数型の概念をとりこんでいること。
- Scalaの世界では関数は実際にはオブジェクトであり、メソッドに引数を渡しているように見えても関数オブジェクトが生成されている。
- 関数をオブジェクトとして統合することによって言語仕様を肥大化させることなく、オブジェクト型と関数型の統合を実現している。
Javaとの互換性
- ScalaはJavaとの互換性を考えて作られているので、JavaのライブラリはScalaから呼び出すことができる。大量にある既存のJavaライブラリを使うことができるのが利点
- Scalaのプログラムは基本的にJavaと同じようにバイトコードに変換され実行されるので高速で性能予測が容易。
- 運用においてJVM系の大量なノウハウを使うことができる
バイトコードとは
バイトコード (bytecode) は、仮想マシンによる実行のために設計された、実行可能なプログラムのバイナリ表現である。ソフトウェアによって処理されるため、大抵は実機の機械語より抽象度の高い中間コードになっている。プログラミング言語の実装において、特定のハードウェアへの依存度を下げ、またインタプリタの実装を容易にするために用いられる。コンパイラの中間コードとして用いられることもある。
引用:wikipedia
JVMとは
- Javaを動かすための仮想マシン
参考文献: https://wa3.i-3-i.info/word12706.html
非同期プログラミング、並行・分散プログラミング
- 非同期の処理を実現するための標準ライブラリがFuture
非同期プログラミングとはAとBの処理があった時にAが完璧に終了してからBをやるのではなくAの実行中の待機時間にBのタスクも並行して行うこと
内部に大量のシステムがあり、外部からも大量のリクエストが飛んでくる時に力を発揮する。
並行・分散プログラミングとは
プロセッサの高速化に限界が見えて、処理の高速化が漸近してきた。
さらに高速化するためにはプログラムを複数のプロセッサで動かすしかないというもの
具体的な内容とかは難しくてよくわからない