タグ

ブックマーク / kmizu.hatenablog.com (5)

  • 書籍のサンプルコードと違う言語で写経することの意義 - kmizuの日記

    こんばんは、みずしまです。最近は主に強化学習の勉強をしているのですが、読み進めていく過程で少し悩みの種がありました。それは、サンプルコードの扱いです。サンプルコードはPythonで書かれていて、実際に書き写すことが私にとって理解の助けになるのは確かなように思えましたが、一方で過去の経験から、そのまま写経すると「スルスルと動いてしまってフィードバックとして不十分そうだな」と感じたので、Scalaで書いてみることにしました。 別にScalaでなくて、JavaでもRubyでもあるいはJuliaでも良かったのですがそれはともかくとして、元のサンプルコードと違う言語で書くことで得られる利点も結構あるものだなというのが正直に感じた点です。たとえば、np.mean(...)というコードが書籍では出て来るわけですが、「そういえばScalaでmeanと同じことをするにはどうしたらいいんだっけ?」と考えること

    書籍のサンプルコードと違う言語で写経することの意義 - kmizuの日記
    theatrical
    theatrical 2022/03/03
    思考が入る分理解の向上に繋がると言うのは、賛成だしやったりもするのだけど、特定のライブラリ前提とかだとできないから、あんまりできるタイミングない気もする。
  • Javaのジェネリクスは「まがい物」ではない - kmizuの日記

    先日、自分が書いた kmizu.hatenablog.com に対する反応として、「Javaのようなまがい物のジェネリクスと比較するのは適切でない」「Javaのジェネリクスと比較するのは適切でない」(おそらくC#や(C++等(2017/09/24追記))の言語と比較して)といった コメントをいくつか見かけました(はてなブックマークコメントやツイッターなどで)。しかし、ここでは、そのような言説こそが適切でない、ということを言いたいです。なお、methane氏との 対話については既に終わったものなので、それとは関係ありません。 そもそも、Javaジェネリクスは、静的型付き関数型言語で既に一般的であったパラメータ多相をJavaに追加する目的で導入されました(C++テンプレートのようなものをJavaに追加するためだと思っている人がいるかもしれませんが、それは実態にあっていません)。実際、Java

    Javaのジェネリクスは「まがい物」ではない - kmizuの日記
    theatrical
    theatrical 2017/09/24
    わざわざわこんな記事書くなんて真面目だなぁと感心する。スルーしても良さそうなものなのに
  • Klassic言語の現状のステータス - kmizuの日記

    Klassic は自分が新たに去年くらいから開発し始めたプログラミング言語です。 まだ確固たる設計思想があるわけではなく、色々な構文や機能について試しに導入してみて、テストを書いて…みたいなのを繰り返してる 段階です。現状のKlassic言語の大雑把な特徴としては ML多相に類似した型システム(ちゃんとした、というか、普通の型推論があります) 静的スコープ(現在では当たり前過ぎますが) 第一級関数(今では当たり前過ぎますが、組み込みの関数型があって、というあたりは、より、いわゆる「関数型言語」風味に寄せています ヒアドキュメント Rubyとかのあれですね。これは、ヒアドキュメントの構文をきちんと理解するための実験過程で入りました スペースセンシティブなあれこれ 色々なものをスペースセンシティブな、つまり、空白に意味を持たせてみると便利になるのではないか、という実験 スペースセンシティブかつ

    Klassic言語の現状のステータス - kmizuの日記
    theatrical
    theatrical 2017/05/27
    リストリテラルがLispっぽい
  • sbt + sbt-idea + Intellij Scala Pluginを使ったScala開発 (in Mac OS X) - kmizuの日記

    注意:この記事の内容は、2013年7月2日現在、やや古くなっています。現在は「Use external build」のチェックはONにしたままで、「Use project FSC」をチェックしない方が安定して動作します。これは、最近のアップデート(ここ1〜2ヶ月くらいの話ですが)「Use external build」を使ったときに、IDEAが内部でzincというsbtベースのスタンドアロンなコンパイラを内部で使うようになった事に起因しています。コンパイラの設定以外は現在でもそのまま通用しますが、このエントリを読んでIntelliJ IDEA + ScalaプラグインによるScala開発を行おうとしている人は注意してください。 これは、Scala入門をIntelliJ IDEAでやろうとしている人向けのエントリではありません。このエントリでは、IntelliJ IDEAのScalaプラグイ

    sbt + sbt-idea + Intellij Scala Pluginを使ったScala開発 (in Mac OS X) - kmizuの日記
  • PEG基礎文法最速マスター - kmizuの日記

    Scala基礎文法最速マスターを書こうか迷っていたら、既にyuroyoroさんに書かれてしまったので、ちょっと違う方向で。BNFを既に知っている人は、これを読めばPEGの基礎をマスターしてPEGを書くことができるようになるでしょう(ほんとか?)。 基 Parsing Expression Grammar(PEG)はBNFに似ているけど、ちょっと(かなり?)違う文法の表記法です。BNFはその文法がどのような言語を表現しているかを定めるのに対して、PEGは入力がどのように解析されるかを定めます。PEGとBNFの一番大きな違いは、PEGには曖昧さが無いことです。たとえば、プログラミング言語のif文を表現する次の擬似BNFには曖昧さがあります。 statement ::= if_statement | ...; if_statement ::= IF LPAREN expr RPAREN sta

    PEG基礎文法最速マスター - kmizuの日記
    theatrical
    theatrical 2012/10/25
    まとまってるぅぅぅ
  • 1