【メモ】PHPerがRustとHaskellに同時入門してみる1

徒然草2.0

無理ゲーな感じがしますか?そうですか、そうですね。そうかも知れません。そうだと思います。ただわりと似ているらしいので一緒にそれとなく使っていった方がいい気がしています。

関数型プログラマからみたRust | κeenのHappy Hacκing Blog」「HaskellerがRustに入門してみた – Qiita」letがあるからOcamlみたいだなとか、letがあるからMLみたいだなとか、関数型言語からRustを使う人の印象がよく分かりません。ES6でletを知りましたが…これは再宣言不可であって再代入不可(イミュータブル)ではないですね。関数型言語を使う人からすると基本的にイミュータブルな変数宣言=再宣言不可という認識なんですかね。知らんかった。

参照透過性、遅延評価、型推論、については何となく分かった気でいるものの…だから何?頭のいい人しか使えないの?

関数の最後にreturnが無いのはRubyが端折ったんだと思っていましたが関数言語由来らしい。Rustでは関数の途中で早期返却できるが非推奨?へえ。

トレイト:共通の振る舞いを定義する – The Rust Programming Language 日本語版
> トレイトは、Rustコンパイラに、特定の型に存在し、他の型と共有できる機能について知らせます。 トレイトを使用すると、共通の振る舞いを抽象的に定義できます。トレイト境界を使用すると、 あるジェネリックが、特定の振る舞いをもつあらゆる型になり得ることを指定できます。注釈: 違いはあるものの、トレイトは他の言語でよくインターフェイスと呼ばれる機能に類似しています。

トレイトはphpでは多重継承用のインターフェース?「PHP: トレイト – Manual」なんだけど…似ているよ!とRustのMANUALに言われているけど何が似ているのか分からない。
てかジェネリックって何だろう。医薬品?(汗)「一般的な」という意味でC#だとテンプレートのことらしい。

が、この人によれば概念が違うと「Rustを業務で1年使ってみてわかったこと – Qiita」あと習得が難しい、と。Rustは習得が難しい。よく聞くフレーズ。やっぱりそうなんだ。パフォーマンスを落とさずに抽象化ができるのが利点だそうだけど、そういえば自分の仕事でその手の利点が活かせるのか謎だ。アプリ開発に使えればいいだけなので低レイヤーで使う意味が無い気がしてきた…がそこにはふれないでおこう。

Rustを業務で1年使ってみてわかったこと – Qiita
> オブジェクト指向言語ではあるのですが一般的なクラスのような考え方ではない
やっぱり関数型言語なんだなぁ。C++やCと置き換えるとのことだが、その手の手続き型言語の学習者にはキツいんだろうなあという印象。

ついでに言えばシステムプログラミングなどの低レイヤーの知識。例えば効率的かつ安全なメモリの領域の扱いなんかを知らない人がニワカでさわるものでもない気がしてくる。(否定的な見解ばっか)

コメント

タイトルとURLをコピーしました