D言語の入門記事などのまとめ-part2(2018/1/4)
インポートとモジュール
import文は、与えられた利用可能なモジュールからすべてのパブリックな関数や型を作ります。 Phobosと呼ばれている標準ライブラリがstdパッケージ下にあり、それらのモジュールは
import std.moduleName
で参照できる。 importは特定のシンボルを選択的にインポートすることができる。
import std.stdio: writeln, writefln;
選択的インポートは、シンボルがどこから来たのかわかりやすくさせて可読性を向上させたり、他のモジュールのシンボルとの衝突を防げる。 import文は、プログラムの一番上に来る必要はなく、関数や他のスコープで局所的に使用できる。
D言語の入門記事などのまとめ-part1(2018/1/4)
D言語とは?
D言語は、様々な言語を数十年の経験の集大成であり、独自の特徴があります。
- 強力な表現を可能にする高級な構文
- ハイパフォーマンスなコンパイル言語
- 静的型付け
- OSやAPT、ハードウェアへの直接的なインターフェース
- 早いコンパイル速度
- メモリセーフなサブセット
- 保守性が高く、理解しやすいコード
- C-likeな構文で緩やかな学習曲線
- C appとのバイナリインターフェース互換性
- C++ appとの制限付き、バイナリインターフェース互換性
- マルチパラダイム(手続き型、OO、ジェネリック、純粋関数型プログラミング、アセンブリも)
- ビルトインのエラー検知機能(契約、ユニットテスト)
dub
D言語の標準的なパッケージマネージャーでは、
dub init hello
で新しいプロジェクトがコマンドラインを使い、作れます。 helloディレクトリでdubと実行すると、すべての依存関係を取得しappをコンパイルして実行してくれます。
dub build
でプロジェクトがコンパイルされます。
Kotlin言語で素数判定
昨日(2017/12/26)から一日でDotinstallでkotlin言語の学習を始めました
早速ですが、素数判定プログラムを書いてみる
class Prime(private val n: Int) {
fun isPrime(): Boolean {
var i = 1
var divisor = 0
while (i <= this.n) {
if (this.n % i == 0) divisor++
i++
}
if (divisor == 2) return true
else return false
}
}
fun main(args: Array) {
val prime = Prime(1145141919)
println(prime.isPrime())
}
はい、誰でも思いつくようなアルゴリズムです
このプログラムは、素数を表すデータ型クラスPrimeを定義し、コンストラクタ引数に任意の数値n、nが素数か確認するメソッドisPrimeがあります。
property [n, isPrime(method)]
今の自分にはここまでしか書けません。
これから
これからOCaml言語の学習と関数型プログラミングの理解、プログラミングの基礎知識の理解、数学の学習を頑張っていこうと思います。 いままででコロコロ言語を変えてきたのですが、それでは駄目だと思い当たらなパラダイムに挑戦しようと思います。
まとめ
- OCaml言語の学習とRead World OCamlの完走(未定)
- 関数型プログラミングの利点などについて理解する
- プログラミングの基礎知識の復習(式、文、変数、関数etc...)
- 数学の学習を頑張る
Ruby処理系の実装 12/17 進捗
まずはじめに、 rubyをC言語(C11)で実装することに決めた。 それで、そのままだとコードを写すのみになってしまいそうなのでC11に沿った記法でC11の最新の機能をなるべくつかいformatterなども使おうと考えている。 また、 ビット演算などのコンピュータの基礎を勉強しようと思う。
今日までで、 Rubyのオブジェクトがrubyでは構造体で表現されており、VALUE型がunsigned long型のtypedefで、オブジェクトを扱う際は構造体のアドレスを任意の構造体オブジェクトへのポインタにキャストして使っていることがわかった。
そして、 基本的に大体の構造体オブジェクトはstruct RBasicをメンバーに入れており、 struct RBasicはunsigned long型の多目的フラグのflagsとそのオブジェクトのクラスを表すVALUE klassがメンバとなっている。
おそらく、klassはstruct RClassのアドレスを保持している。