サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
nymphium.github.io
Guide to Profile-Guided Optimization: inlining, devirtualizing, and profiling
こんにちは、びしょ~じょです。 メモリアルなんでなんか書こうかなと思いました。 プログラミングをはじめて10年目になる プログラミングの旅は、大学に入ってから始まった。入学直前にDxRubyに触れ、forループを使って「hello」を出力しまくったのが、おそらく最初の経験であったと思う。大学時代、学部2年にはLinuxConに参加するなどしていたが、結局は言語系の道に進んだ。本格的にプログラミング言語自体に興味を持ち始めたのは、1年生と2年生の終わり頃にLuaでZコンビネータを書いたときだった。 それ以降、プログラミングとともに歩む日々が続いている。大学在籍中には、様々なプログラムを作成し、友人や先生からの評価も得ていた。また、自身のスキルアップのために、オンラインでの情報収集や書籍を読み漁ることも欠かさなかった。卒業後、初めて入った会社では、これまでの学びを活かし、新しいプロジェクトに取
あけましておめでとうございます、びしょ~じょです。 これは言語実装Advent Calendar2022 17日目の記事です。 諸事情ありましたが端的に申し上げると私の怠慢で大幅に投稿日が遅れました。 1. はじめに OCaml 5.0が去年末にリリースされた。 並列処理のプリミティブに加え、algebraic effectsを用いた並行処理も書けるようになり、これはとても素晴らしいことですよ。 本日はOCaml 5.0のベースとなるMulticore OCamlにおけるalgebraic effectsの実装論文『Retrofitting Effect Handlers onto OCaml』[1]について解説する。 該当論文ではeffect handlersの実装デザインにあたって以下の4つを考慮している: Backward compatibility 存のコード資産に(表層構文はもち
はじめに Algebraic Effectsは計算エフェクトを扱う言語機能である。エフェクトとハンドラから成り、エフェクトの発生をハンドラが捕捉し、なんらかの値を返してエフェクト発生部分からの計算を再開する。エフェクト自体は何もせず、ハンドラが具体的な計算をおこないという部分が重要である。例えばDependency Injectionにおいては、インターフェースで定義されたメソッドがエフェクトの定義、メソッドを呼び出すのがエフェクトの発生、インターフェースの具体的な実装がハンドラ、と対応づけることができる。 Eff言語で実際に例をみてみる。
こんにちは、びしょ~じょです。 これは TypeScript アドベントカレンダー 2020 の3日目の記事です。 ちなみに12月3日は冴草きいちゃんの誕生日です。大変めでたいですね。 1. はじめに 関数型プログラミングといえばなんですか? はい円楽さん早かった! はいはい、 パターンマッチング、いいですね。 パターンマッチングといえばプリミティブな数値や文字列のリテラルのみならず、ユーザが定義した型もその構造によってマッチできます。回りくどい言い方をしましたが代数的データ型(Algebraic Data Types, ADTs)です。 listing 1.1. 例えば OCamltype 'a option = | None | Some of 'a let to_default default o = match o with | None -> default | Some v -
こんにちは、びしょ〜じょです。 最近は脳を全く使っておらずなんたらかんたら。 Promise の話はなんかムリそうだったので、今度は勘ではなく文献等にあたって実装するかもしれません。 でもそれってオレやる必要ある? とにかく今回は別の話をします。 はじめに TypeScriptの利用を積極的に避けている人、賢い。 TypeScriptは漸進的型付けを採用しており、よくわからない型に any を付けることができます。 そしてTypeScriptは(gradural) subtypingを採用しており、さらに any があらゆる型のtop typeとなっております。 このことは、文献[1]を読んでいただくと分かるとおり(読むまでもなく直感的にも分かりますが)、型システムはunsoundになります。 const x: string = "hoge"; // string <: any const
ReactのHooksが実質algebraic effectsなんじゃないかということでalgebraic effectsに関する怪文書が流布して鼻白んでしまう、そんな未来を阻止するため、曲がりなりにもalgebraic effectsを研究している者としてalgebraic effectsについて書こうと思います。 当方React全く知らないしJSにも明るくない侍ですが、プログラム片にはJSっぽいシンタックスを使っていこうと思います。 イントロ Algebraic Effectsとは、Plotkinらによって提唱された、computational effectsを代数的に扱おうという試みである。それにeffect handlerが後付けされ、現在はalgebraic effects and handlers を略してalgebraic effectsと呼んでいることが多い。非常に直感的な
1. はじめに 最近のエフェクトシステム2大ホットトピックといえばAlgebraic EffectsとExtensible Effectsだろう [要出典]。 度々この2つの違いは何なのかという質問を見ます。 比較というわけでも無いんですが、今回はこの2つを並べて見比べてみましょう。 そいうえばだいぶ前の発表でこんなこと言ってましたけど 本当かしら 2. Algebraic Effects and Handlers PlotkinとPowerによりもたらされた、計算エフェクトを代数的に表現するという考え方[1]に、PlotkinとPretnarがハンドラを追加したもの[2]である。 詳細はカツアイしますんで、本ブログをご巡回ください。 簡単にまとめると、 新たな言語機能 エフェクト(仕様)とハンドラ(実装)が分離できるモジュラーな手法 エフェクトシステムによって計算中にどのようなエフェクト
lily, Aikatsu, Programming language, and more
こんにちは、びしょ〜じょです。 なんか最近時間なくないですか? モンスターをハントしてる場合ではないんですが…。 技術書典6 4月の話なんですが5月にやっていいですか。やります。 典5に続いてDragon Universityやっていきました。 首謀者の@rizaudo 、@ntsc_j や@xrekkusu とだいたい似た面子で行った。 前回同様ぼちぼち売れたので打ち上げで無事生肉を焼く儀式を開くことができました。 しかし前回と比べて売上はやや落ち込みました。 貴重なAI人材(AI人材ではない)rizaudo氏が今回はネットワークシミュレータの記事で挑んだためではないかと推察されます。 『Let's go Algebraic Effects and Handlers: from an introduction to advanced topics』というタイトルで書きましたが、3月はPP
こんにちは、びしょ〜じょです。 これは言語実装Advent Calendar 2018の9日目の記事です。 最初は "変数が全部箱の言語の設計と実装" と題して全部optionにくるまれてる参照とかそういう感じの何かを作ろうとしたけど多分面白くなくなって筆者の熱も醒めると思ったのでやめた。 またそうこうしてるうちに良い感じのものが作れたので、論理的背景を整理するためにも内容を再考して今回のような内容となりました。 ほならね早速いってみましょう。 1. はじめに Algebraic effects and handlers(以降 "algebraic effects" と省略)は、いわば限定継続を取れる例外である。 try節をdelimiterとし、例外発生位置から残りの計算を限定継続として受け取り、継続をもちいて例外から復帰したり、単に継続を捨てて例外として扱うこともできる。 最近各所で注
最近色々あって仕事でGo言語を使っています。 色々割り切っている言語なので、こんなこと言ってもしゃーないんですが、言語設計はミスってるんじゃなかなぁ、と思わざるを得ない点が多々あります。 使い始めて1か月くらいなので間違ったことを書いているかもしれませんので、何かあれば指摘していただけるとありがたいです。 本文ではネガ… どうやらGoは多値が使えたり使えなかったりするらしい。 個人的には使えるか使えない(tupleにするとか)かのどちらかのほうが良い言語デザインだと思うけど、ユーザが問題ないなら…。 本稿ではLua VMが使える代表的な言語Luaを例に、Goとの多値の違いに付いて見ていき、Lua VMおよびLuaの多値の扱いが良い感じなことを確認したい。 拙者Goは知らない侍につき、Goに関してはご容赦。 2. Luaで様子見 Lua VMのバイトコードを吐き出してくれるコンパイラの代表と
こんにちは、びしょ〜じょです。 ここしばらく20行/日くらいしかコード書いてません。 いやもっと少ないかも…。 いや研究してますんで! いや〜研究もそんなにしてないな…じゃあ何を… 1. はじめに Algebraic effectsとは、2001年くらいに提唱されてから、爆流行らずともにわかに盛り上がりを見せつつある言語機能である。 極めて雑に説明すると、継続を取ってこれる例外である。 Plotkin氏(またお前か)が代数学的アプローチによる基盤を作り、そこにハンドラが付いてプログラム言語の機能として考えられるようになった。 ボクの話のうち1〜10割間違っていることは確かなので、誤った情報を一切入れたくない人は[1]を読んでください。 1-1. algebraic effects実装の有名どころ Eff algebraic effectsを言語機能として初めて設計された言語。 MLスタイル
こんにちは、びしょ〜じょです。 年明けに買った対洗濯物用乾燥機のおかげで窓を開けたりカーテンレールにハンガーを吊るす日々が終わりました。 ところで2月分の電気代はすでに1月分を越えようとしています。 1. はじめに 今年は4年次なので卒業研究! ということでjoin pointを追加したコンパイラ中間言語の設計と、その上での最適化を定義してやっていきました。 実装はこちら 卒研発表をスライドを作るためにも、何をしたかを噛み砕いて文に起こしてみたいと思います。 2. 関連研究 PLDI 2017で『Compiling without Continuations』1という発表がありました。 継続の緑の本をもじったタイトルですが、CPSと直接戦っている感じではないです。 join pointと呼ばれるものを明示的に扱うことでコードサイズの爆発を抑えたり高速に動作するターゲット言語に変換しようとい
こんにちは、びしょ〜じょです。 昨日はやっとアイカツ2016年第4弾をやりました。 「馬鹿野郎お前俺は1万円は使うぞお前」という気持ちで行ったんですが、2hほど筐体前で気持ちよくなってたけど結局3、4000円程度しか使えませんでした。 実際文章をちゃんと読んで聞いてしてると1プレイが結構長いんですね、3ヶ月ぶりだったので忘れてました。 結局1000円札5枚を100円玉50枚にしたら、全部使うことなく閉店時間になり小銭入れがパンパンのまま帰る羽目になりました。 データカードダス アイカツスターズ! は5月19日から! ということでまたやりに行こうと思います。CPのスクールドレスは絶対にそろえたいなぁ、あときいちゃんが書いてあるやつ! 1. Q. Luaでは関数外でもreturnが書ける、これな〜んで? 実はLuaでは関数外でもretun書けるし構文的には何の問題もないんですねぇ…。 Luaの
このページを最初にブックマークしてみませんか?
『lilyum ensemble』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く