【Java】JVMとは?
JVMを使うことでどんなことができるか?
OSに依存せずにプログラムを実行できます。
これは、Javaの有名な標語である「Write Once, Run Anywhere」のことです。
「一度書けば、どこでも実行できる」というやつです。
プログラムを実行するには、Javaをコンピュータが理解できる機械語に変換してあげる必要があります。
この機械語への変換作業は、OSが異なれば結果が異なります。
同じソースコードから作られた機械語でも、WindowsとMacで、この変換作業(コンパイル)の結果は異なります。
機械語は、そのコンピュータの環境に適したものじゃないと正常に動作しません。
しかし、JVMがJavaで書かれたソースコードをプログラムの実行時にコンパイルすることで、
OSに依存せずに済むようになります。
つまり、理論上、OSごとにJVMをを用意すれば、
一度Javaでプログラムを組むだけで、
様々な環境(OS)で処理を実行できるようになります。
この実行時にソースコードを機械語にコンパイルする方式をインタプリンタ方式といいます。
Javaはこのインタプリンタ方式の1種である、実行時コンパイル方式をとっています。
実行時コンパイル方式とは、ソースコードを中間コード(2進数のもの)で書かれたクラスファイルにコンパイルした後、
実行時に機械語に変換する方式のことです。
ちなみに、JVMはJava Virtual Machineの略です。
【IT総合】ネイティブコードとは?
【Ruby】ミックスインとは?
ミックスインとは?
includeやextendを使って、モジュールに定義した機能をクラスに追加すること。
1つのクラスに複数のモジュールをミックスインすることもできる。
つまり、ミックスインすることで、多重継承のような状態をつくることができる。
【IT総合】コンパイラ方式・インタプリンタ方式とは?
以下、プログラムの実行方式であるコンパイラ方式とインタプリンタ方式について解説します。
コンパイラ方式とは?
プログラムに書かれた命令を機械語に変換してから処理を実行する方式のこと。
人間が書いたプログラム(ソースコード)を機械語に変換することをコンパイルといい、
コンパイルをするソフトウェアをコンパイラといいます。
コンパイラ方式のデメリットは?
実行するまで手間がかかること。
コンパイルをする際にプログラムにエラーがあるかを判定します。
そのため、エラーが解消されるまでプログラムの動きを確かめられないため、プログラムを実行するまでに手間がかかります。
インタプリンタ方式とは?
プログラムに書かれた命令を1行ずつ機械語に変換しながら実行していく方式です。
【統計学】分散とは?
分散とは?
偏差を2乗した値を全部足して、「データの総数ー1」で割ったもので、
平均からの散らばり具合を示す値のこと。
偏差とは?
平均との差のこと
例えば、
数学の点数が60で、クラスの平均が50の場合・・・
60 - 50 で 偏差は10となります。
分散の式で、なぜ偏差を2乗しているのか?
プラスとマイナスを同等に扱えるようにするため。
マイナスを2乗するとプラスになるから
ようするに分散とは何か?
ようするに分散とは、
平均値からどれくらい値が散らばっているかを示す指標のこと
分散が大きいとはつまり、平均からの各値の散らばり具合が大きいということです。
テストの点数において考えると、ある科目の分散が大きいことは、生徒の間でその科目の得意と不得意の差が激しいといえる(平均点からの散らばり具合が大きいということだから)。
・分散が大きい → 得意な人は得意、苦手な人は苦手
・分散が小さい → みんな似たような点数
【Ruby】ancestorsとは?
ancestorsとは?
呼び出し元のクラスオブジェクトがミックスインしているモジュールや、継承しているクラスを配列として取得するメソッド
ancestorsメソッドで取得した配列の先頭要素から、メソッドを探しに行く順番となる。
補足:ミックスインとは、includeやextendを使って、モジュールに定義した機能をクラスに追加すること。
サンプルコード
Car.ancestors # => [Car, Object, Kernel, BasicObject]
上記のコードは、Carクラスがミックスインしているモジュールや継承しているクラスを配列として取得している。
先頭要素からメソッドなどを探しにいく。
例えば、以下のコードの場合、runメソッドを呼び出そうとする際は、
「Car→Object→Kernel→BasicObject」
の順番でrunメソッドを探しに行く
car = Car.new
car.run
参照
・Module#ancestors (Ruby 2.7.0 リファレンスマニュアル)
・プロになるためのRuby入門