ねぇうしくんうしくん

今週のまとめ (一週間で自分が見た技術系サイトのログ)が今のところメインです。プログラミング言語、人工知能、セキュリティ 等

今週のまとめ (2017/4/21)

今週のまとめのリンクは iCloud のメモ帳で管理しています。iPhone からの保存が楽なので…

プログラミング言語

cmacro – Lisp macros for C

github.com

C言語で高機能な衛生的マクロを実現する(前)処理系。記法は sweet.js (JSにマクロを導入するもの) ( の以前のバージョン *1 ) のものに近い。

Why ML/OCaml are good for writing compilers?

Why ML/OCaml are good for writing compilers

なぜ ML や OCamlコンパイラが書かれているかの理由についての投稿。1998年の文章だが、2017年の今でもそれらコンパイラの実装言語としてよく使われており、その理由はここに書かれているものとほとんど変わらないと考える。

目次?: 1. ガベージコレクション 2. 末尾再帰の最適化 3. MLのデータ型はコンパイル処理において扱いやすい。 4. MLのデータコンストラクタは AST の扱いを楽にする。 5. 安全性 6. MLは再帰的構造が特徴である問題領域(定理証明等)に対して設計された 7. 例外 8. 型推論 9. 構文解析器ツールキットの存在 (yacc/lex/burg) *2 10. 実行速度 11. サポート *3 12. ライブラリ 13. モジュールシステム

Ruby 2.4 のハッシュテーブル高速化を理解する

Ruby 2.4 のハッシュテーブル高速化を理解する // Speaker Deck

題意の通り。ハードウェアでのデータの局所性に着目し高速化を行ったとのこと。

機械学習

Paperspace Machine Learning

www.paperspace.com

機械学習(主に深層学習)に特化したクラウド計算サービスで、GPUを提供している。時間毎課金。競合として AWS [pg]2.xlarge との比較表が載っている。*4

インフラ

aws-fpga

github.com

AWS には FPGA を提供する F1 インスタンス ( https://aws.amazon.com/jp/ec2/instance-types/f1/ ) がある。これはそのための HDK (Hardware Development Kit) と SDK。合成の部分は vivado を使っているのでライセンス?が必要。

AWS Codestar

New- Introducing AWS CodeStar – Quickly Develop, Build, and Deploy Applications on AWS | AWS Blog

AWS 上でのアプリケーションに対する統合された コード管理 & CI サービス。

  • EC2, Lambda などのいろいろなサービス・言語に対応
  • Django や Express (Node) などの blueprint からすぐにアプリケーションを作れる。
  • AWS上でのコード管理、テスト、デプロイの一元管理が可能。
  • Eclipse や VS、JIRA との連携。

が注目すべき点。

アルゴリズム

500 Data structures and Algorithms interview questions and their solutions

500 Data structures and algorithms interview qu... - Techie Delight - Quora

プログラマの採用面接で聞かれるような、アルゴリズムとデータ構造に関する一問一答集。それぞれの問いには、時間・空間計算量別に複数の回答(C/Java)が載っている。

Competitive Programmer’s Handbook

Competitive Programmer's Handbook

IOI や ICPC に出場する学生に向けた競技プログラミングの無料 e-book。グラフアルゴリズムが三章のうち一章まるごと割かれている。

類似した競技プログラミングの本(で無料に手に入るもの)としては、 Competitive Programming Book Companion Website がある。(一部有料)

その他

Nintaco - NES Emulator

Download Nintaco

NESエミュレータ。C, C#, Java, Lua, PythonAPI が提供され、メモリや入出力などが制御できる。例えば、ゲームのAIを作るなどの用途が考えられる。

Kakoune Code Editor

kakoune.org

VimにインスパイアされたTUIのエディタ。Sublime Text にあるような Multiple Selection や 複数人で編集する Collaborative edit などが主な機能となる。Vim のモードの概念や hjkl による移動等の一部のキーバインドなどが継承されている。今後少しずつ使ってみて慣れてきたら記事を上げたいと思う。

*1: 0.x 系列。現行の sweet js は AST を operational に変換するような設計になった

*2: よくわからなかった

*3: これは時代を反映していると思う(開発元の研究所からの手厚いサポートがあったと書かれている)。だが、今では OCaml の大きな(ユーザー|開発者|研究者)コミュニティが存在するのでサポートに関しては(別の観点ではあるが)今でも通用する。

*4: これインフラカテゴリでも良かった