Event : Visual Studio Users Community Japan #1
Date : 2019/09/14
ソフトウェア/サービス開発において最も後回しにされるものの代表が「パフォーマンスの向上」です。C#/.NET の最大の武器は開発生産性ですが、C# 7.0 以降はパフォーマンス向上のための機能追加が多数行われています。いくつかのポイントを押さえることで実装時からより高速なコードを書くことができるようになります。
このドキュメントでは、そんなポイントとなる箇所をふんだんにお届けします。
Event : Visual Studio Users Community Japan #1
Date : 2019/09/14
ソフトウェア/サービス開発において最も後回しにされるものの代表が「パフォーマンスの向上」です。C#/.NET の最大の武器は開発生産性ですが、C# 7.0 以降はパフォーマンス向上のための機能追加が多数行われています。いくつかのポイントを押さえることで実装時からより高速なコードを書くことができるようになります。
このドキュメントでは、そんなポイントとなる箇所をふんだんにお届けします。
In this slide, I described how I love prolog, very very cute language. I'm very wonder why many people loves functional programing languages (lisp, haskell and ocaml), but no one knows about logical programming language, so I tried to introduce the charm points of Prolog.
The document discusses Rust, a systems programming language developed by Mozilla. It provides an agenda, introduction to the speaker and company, why Rust was chosen, basic Rust concepts, and examples of Rust code. Memory safety is emphasized as Rust avoids vulnerabilities like memory leaks and use-after-free by using a borrow checker to validate references. Examples demonstrate immutable and mutable references, structs, functions, and memory management using Box to move values.
21. 再帰によるループ処理
● forやwhileによるループには副作用がある
→カウンタ変数や、計算結果を格納する変数
var count = 0
var result = 0
while (i < 10) {
result += i
i += 1
}
21/40
22. 再帰によるループ処理
● forやwhileによるループには副作用がある
→カウンタ変数や、計算結果を格納する変数
var count = 0
var result = 0
while (i < 10) {
result += i
i += 1
}
● 再帰によるループで副作用を取り除く
def sum(i: Int): Int =
if (i <= 0) i else i + sum(i - 1)
22/40
23. 再帰によるループ処理
● 再帰の階層が深くなるとスタックオーバーフ
ローが発生する
● 末尾再帰に書き直すことで、最適化が行われて
スタックオーバーフローが発生しなくなる
● 末尾再帰:関数の一番最後で自分自身を再帰呼
び出しする関数
def sum(i: Int): Int = {
def s(i: Int, acc: Int) =
if (i <= 0) i else i + s(i – 1, acc + i)
s(i, 0)
}
23/40