見出し画像

椛さん、Juliaやります! №2

10/07/22

< Prev

はおはお。

ゆっくりじっくりJuliaを学んでいきたいと思います。っとGitHubで発見しちゃったよ! マニュアル! しかも日本語じゃん~

ってことで、今回はマニュアルの順番を無視して「」を習ってみようと思います。知りたいの

●型の種類と宣言

一般的には~

  • 静的型システム
    コンパイル時には型が決定されてるものを指します。指定した型でないとエラーが出ちゃったりするので困りますが、特定の型だけを受け付けたい場合やアサーションするときには必須ですね
     参考:int, float, string, &c.

  • 動的型システム
    コンパイル時には何の型かは不明です。実行して初めて型が決定されます。値から推論して型が決定するパターンです。あまり型に意識せず長すぎて書きたくもない宣言も省略できるので勝手がいいです
     参考:auto, var, let, &c.

で、Juliaはというと基本的には動的型システムのようです。型宣言はいらにゃい。しかも動的宣言も必要ないっぽいですね。いきなり使えちゃう

x = 100
y = 100
(x + y)
 
> 200

もちろん静的型宣言もできます。値のあとに「::」を付けて型を定義するようだ

x::Int32 = 100
y::Int32 = 200
(x + y)
 
> 200

こんな感じ。ここでは型を定義しているので「200.0」とかにしたらエラーになるってことだね

よし! 宣言の仕方はわかったぞっと。ちなみにやっぱり代入先が型宣言されていた場合は暗黙の変換がされるようです。リッチw

●抽象型

おっと、これはあまり見たことないのがでてきた。素直に書くと別の型同士の演算はできないようで、そんなときにこの「抽象型」が登場するみたい。マニュアルには

最大公約数を求めるアルゴリズムは、すべての整数に対して動作しますが、浮動小数点数では、動作しません。

と書かれています。で、

抽象型を使うと、型の階層を形成して、具象型の適合する文脈を作ることができます

難しい書き方してるなぁ‥
つまりはこうらしい。抽象型のいくつかは最初から宣言されているけど、自分で勝手に型の階層を作れるよ、みたいな?

abstract type Number end
abstract type Real     <: Number end
abstract type AbstractFloat <: Real end
abstract type Integer  <: Real end
abstract type Signed   <: Integer end
abstract type Unsigned <: Integer end

今は abstract type とか <: とか end は無視しておきましょ。これを階層をたどるようにしていくと Number が基底となり、その上に Real、さらにその上に AbstractFloat(小数)、または Integer(整数) という階層になってますね。Realってのはでっかい浮動小数の数字かな

●プリミティブ型

なんだろなんだろ?

プリミティブ型の定番の例は、整数と浮動小数点数です。 ほとんどの言語とは異なり、Juliaでは組込みの決まったプリミティブ型が利用可能なだけではなく、 独自のプリミティブ型を宣言することができます。

おおっ。組み込み型のことね。言語で最初から使えるやつのこと。それをJuliaでは自前の組み込み型を宣言できるみたいです。パネェ!

実際こうなってるらしいよ

primitive type Float16 <: AbstractFloat 16 end
primitive type Float32 <: AbstractFloat 32 end
primitive type Float64 <: AbstractFloat 64 end

primitive type Bool <: Integer 8 end
primitive type Char <: AbstractChar 32 end

数字の部分はビット数になるようですね。えっ、Char(文字) 型は32ビットなのね。サロゲートペアのことを考えてか、UTF-32を扱ってるのか‥そのうちわかるかなw

●その他

ほかにもいっぱいあるん‥
でもまだいいかな

 複合型 → 値の変更できない struct的な、、、
 可変複合型 → mutableな struct的な!
 宣言型 → typeof的な、、、
 合併型 → union的な、、、
 パラメータ型
 パラメータ複合型

たくさんあるなぁ‥


#プログラミング #Julia #IT #リテラシー #型 #静的型システム #動的型システム

悉く書を信ずれば則ち書無きに如かず