タグ

ブックマーク / shinh.hatenablog.com (13)

  • 転職について - 兼雑記

    6月14日がグーグル最終日でした。8月からPFNに混ぜてもらう予定です。退職や入社も重要イベントなんでしょうけど、転職活動それ自体が大変に楽しい体験だったので、入社したからって突然次の会社についての知見にあふれているわけでもなし、このタイミングでなんか書こうと思いました。どうせ暇だし。 前回との差分 http://shinh.hatenablog.com/entry/2016/03/11/142748 が前回までのあらすじ。このちょっと後で、「ニューラルトランスレートすげー」とか思って Google Translate のチームに入れてもらって、自然言語/機械学習研究入門+プロダクショナイズ+TensorFlowまわりのあれこれおもしれーとか、その他いろいろをやってた、というのが現在との差分です。 機械翻訳というのは、他の機械学習応用分野と同じく、ニューラルさんによってすさまじく簡略化され

    転職について - 兼雑記
    UDONCHAN
    UDONCHAN 2018/06/18
  • ELVM Compiler Infrastructure - 兼雑記

    最近作ってたオモチャがだいたいまとまってきました。 https://github.com/shinh/elvm 第12回 kernel/vm 勉強会で発表した時のスライド: http://shinh.skr.jp/slide/elvm/000.html これは何かというと、前作った bflisp を改良したり整理したりしたもので、 C 言語をシンプルな中間言語 (EIR) に変換する改造 8cc と、その中間言語を Brainfuck をはじめとした他言語に変換するバックエンドから成り立っています。 bflisp との差分は、 Brainfuck 以外のバックエンドを追加しやすくしたり、バックエンドを C で書いて、完全に Brainfuck だけで 8cc.bf を再現することができるようにしたり、という感じです。 特に興味深いであろうバックエンドとしては、 Brainfuck, Unl

    ELVM Compiler Infrastructure - 兼雑記
    UDONCHAN
    UDONCHAN 2016/10/21
    なるほでぃうす
  • Unix v6 の C コンパイラが面白かった話 - 兼雑記

    Unix v6 の C コンパイラをいじってみようと見てたのですが、これがなかなかすごい物体でした。 読んでて、「いやいくらなんでもこんな作りなわけが…」と思って説明文を探して、 http://plan9.bell-labs.com/7thEdMan/v7vol2b.pdf の「A Tour through the UNIX C Compiler」に説明あるよと教えてもらって読んでみたら、当にそんな作りだった、みたいな。 コンパイラの1段目はプリプロセスして構文木的なものをファイルに吐いて終わりです。2段目は構文木を読みつつコード生成していく。 構文木のノードの種類に対して switch してやること決める…的なものが、データドリブンな方法で書かれてます。データを保存するフォーマットは、 JSON とかではなく、時代が時代ですのでアセンブリです。こういうやつ https://github

    Unix v6 の C コンパイラが面白かった話 - 兼雑記
    UDONCHAN
    UDONCHAN 2015/06/05
  • 2014-06-27 2D Lisp - 兼雑記

    beflisp.bef が 1次元 Lisp しかサポートしてないのはけしからん、と言われてその通りだなぁと思ったので、 lisp2d.c てのを書いて beflisp2d.bef を生成してみました。 bc2bef.cc は全くいじる必要がありませんでした。 Befunge コードが C 書くだけで作れるってのはラクチンですね… で、こんなコードが動きます。2次元であることに面白い意味を持たせるアイデアが無かったので、単に 2D レイアウトできるようになっただけです。 Befunge 同様コードが交差できるのは少しオシャレ。気をつけないと括弧のつもりで使った v が文字列の一部になったりするので、書くのはかなり大変 (defun fizzbuzz ^ (fizzbuzz 1) @ ^ zzuB ( 0 (5 n dom) i ^ f v ^ q ( eq ^ ^ fi) ^ v m e

    2014-06-27 2D Lisp - 兼雑記
    UDONCHAN
    UDONCHAN 2014/07/05
    かっこ良すぎる
  • hello, world * 6 - 兼雑記

    https://codeiq.jp/ace/nabetani_takenori/q766 を見て、おおこれは面白い問題だーと思ってチャレンジしました。とはいえ 3 言語で重複無しとか、文字種制限経験者には楽勝なんで、 6 言語になりました。第一感では 5 言語くらいはいけるだろーと思って、後で Forth が追加できたんで 6 になったっていう。 Groovy 953B 文字種6 "$-o{} "${--"${--"${--"${--"${--"${--"${--"${--"${--"${--"${--"{"}"}"}"}"}"}"}"}"}"}"}${--"${--"${--"${--"${--"${--"${--"${--"${--"{"}"}"}"}"}"}"}"}"}${--"${--"${--"${--"${--"${--"o"}"}"}"}"}"}${--"o"}${--"${

    hello, world * 6 - 兼雑記
    UDONCHAN
    UDONCHAN 2014/03/20
    すげー
  • NaCl について - 2013-12-18 - 兼雑記

    カーネル/VM Advent Calendar 2013 にさっき登録しました。需要の無さそうな NaCl について語ります。 https://qiita.com/advent-calendar/2013/kernelvm NaCl はグーグルが作ったものの中で一番好きくらいに好きなものです。理由は低レイヤコンポーネント集だから。概要としては安全に実行できる(ここでいう安全はブラウザが動いてる OS 上での任意コード実行ができない、という意味) Active X というか、 C/C++ でコードが書ける Java Applet というか、まぁそういう感じの。 NaCl はおおざっぱに言って、 検証可能なバイナリを出力するコンパイラツールチェイン (gcc, binutils, etc.) ユーザプログラムを検証して起動する service runtime service runtime と

    NaCl について - 2013-12-18 - 兼雑記
    UDONCHAN
    UDONCHAN 2013/12/18
  • 2013-06-02 - TRICK 2013 - 兼雑記

    https://github.com/tric/trick2013 https://sites.google.com/site/trickcontest2013/home/ja 大変楽しく審査員をやらせてもらいました。いろいろ思ったことがあるので、いろいろ適当に書いていこうかと思います。 作品評 ざっくり僕が良いと思ったやつから順に書いていこうかと思います。 https://github.com/tric/trick2013/blob/master/usak/entry.rb $ruby.is_a?(Object){|oriented| language} これだけ短いコードに色々言えることがあってすごく良かったです。 is_a? Object と identifier じゃない ruby の構成要素が 2/5 という割合で入ってるのも良いし、ブロックを取らないメソッドにブロックを渡して良

    2013-06-02 - TRICK 2013 - 兼雑記
    UDONCHAN
    UDONCHAN 2013/06/03
  • 2012-12-10 ■ Hello golf in Malbolge - 兼雑記

    Esolang Advent Calendar 2012 用のエントリです。 Esolang 的な自己紹介としては、今年は ICFP のコンテストのために巨大な befunge プログラムを書きました。 Malbolge 概要 ご存じの人が多いかと思いますが、 Malbolge という超難解言語があります。この言語の難解さは brainfuck などがかわいく見える、というか、私の感覚では ruby と brainfuck くらいの差が brainfuck と malbolge の間には存在しています。いや、もっと広いかもしれず。 Malbolge について一言で紹介すると、「抜群のバランス感覚で適当に設計された神クソゲー」という感じ。ざっくりとした説明としては、 A,C,D の3進10ケタ(つまり0-59048の値を持てる)レジスタと、 59049 個の 0-59048 の値が持てるメモ

    2012-12-10 ■ Hello golf in Malbolge - 兼雑記
    UDONCHAN
    UDONCHAN 2012/12/11
  • 2012-09-15 Hello broken keyboard - 兼雑記

    http://golf.shinh.org/p.rb?Hello+broken+keyboard ゴルフなんだけど、文字数じゃなくて文字種を減らす、という問題。 Hello, world! だとあまり面白くもないかな…と予想してたんだけど、予想に反してかなり楽しい問題になったようだった。 C のこの解答が謎だと言われたりしてるようなので適当に説明。 http://golf.shinh.org/reveal.rb?Hello+broken+keyboard/shinh_1346768972&c putchar とか printf とか puts 文字種増えすぎるので使ったら負けと思ってて、というわけで putchar のアドレスをそのまま使って、 ( ( int ) ( * ) ( int ) ) にキャストして使ってやればいいだろう、ってのが基的なアイデア。ただし、 putchar のア

    2012-09-15 Hello broken keyboard - 兼雑記
    UDONCHAN
    UDONCHAN 2012/09/15
  • プログラムコンテストと逆言葉の壁仮説 - 兼雑記

    ゴルフやるアメリカ人が全くいない、という話のあと考えてた謎仮説。 考えてみると topcoder や ICPCロシアやら中国やらが強いという印象。 ICFP programming contest もたとえば Google Japan はたぶん他の全 Google をあわせたより多い人数が参加している気がする。そういうのが好き、って国民性もあるのかもだけど、ふと、英語が得意でないからじゃないだろーか、ということを考えた、ってのがこの仮説。 プログラムを覚えて、特に学生とかは、イマイチ客観的な評価が得られにくいので、試したくなると思う。自分のプログラム力ってどのくらいなんでしょか、通じるんでしょうか、っていう。あるいは、能力に自信がないから、なんか修行したいな、とか。 そういう時に、英語ネイティブなら、単にどっかのオープンソースプロジェクトに参加してみたり、よくわかってないけど十分優秀な

    プログラムコンテストと逆言葉の壁仮説 - 兼雑記
    UDONCHAN
    UDONCHAN 2012/08/14
  • 20th IOCCC 入賞 - 兼雑記

    結果が公開されました。 http://ioccc.org/years.html#2011 私のコードは、こういうピクロスソルバでした。 #include<stdint.h>// 4 #include<stdio.h>/* 76. 1 ..2321 1 57 3 21.... . .. .11 1 2 1 88..1321 2 33 5512 1 277 14 1 099..12.... . .. .... 1 4 11111...111 122 5.1 . 11...221.821112411123455676489 51.176543232666 902 .27 1 10111...1.....................11.417...........1...21..11. ..2239921176566156225563322299887...65332332331824691

    20th IOCCC 入賞 - 兼雑記
    UDONCHAN
    UDONCHAN 2012/04/19
    IOCCC
  • ゴルフ場のなかみ - 兼雑記 (2009-09-29)

    最近ゴルフ場を新しいマシンに引越そうとしていて、ついでなのでシステムをもうちょっと丁寧にパッケージ化しようとしてます。そのついでとして、現在のゴルフ場について内部がどうなってるか、ということを少しまとめてみようと思いました。 結構似たようなことをするサービスもあるんですが(codepadとかllevalとか)、そのへんのコードとかは全く参考にしてないので、そういうのを見た方がいいかもしれませんし、あとゴルフ場固有の事情も色々あったりするかもしれません。まぁでも日語でそのへん書いてるのはあんまり見たことがないので、多少参考になる部分もあるかもしれません。 今作業中のコードは github に入れていっています。 apt で入らないパッケージの処理以外はだいたい入ってるはずですが、まだ足りないものとかあるかもしれません。 http://github.com/shinh/ags システム自体は

    ゴルフ場のなかみ - 兼雑記 (2009-09-29)
    UDONCHAN
    UDONCHAN 2011/01/03
  • 更新履歴兼雑記 - Perl記号ゴルフとAcme::EyeDrops

    ここからが題です。 Perl は頭がおかしいです。すごすぎる。この感動を伝えたいと思います。まず Perl の基からです。 Hello world! を書きましょう。 ''=~('(?{'.('[[).[|`%,,/`[/[@$'^'+)@@/^(@@@@@,@),@').'! "})')えーと。このくらいわかりますよね。これは Hello world という一番簡単なプログラムなのでわからない人はちょっとプログラムの才能が無いです。嘘ですが。 Perl では記号だけでは出力もできないかな、というような話をしていたところ、 Acme::EyeDrops の出力は記号だけで出力してるぞ、ということでした。これは見たことがあったのですが、確かに今見ると記号だけです。で、これの出力の意味を理解してたんですが、なんともすごいものでした。書いてから後で Perl ヤロウどものことだから既に常識だ

    更新履歴兼雑記 - Perl記号ゴルフとAcme::EyeDrops
  • 1