タグ

ブックマーク / keens.github.io (9)

  • 「実践Rust入門」を書いたよ | κeenのHappy Hacκing Blog

    κeenです。実践Rust入門 言語仕様から開発手法まで(技術評論社)を書いた(3人で共著)のでどういうなのか解説します。 5/8発売です。電子版もありますよ。Gihyo Digital PublishingだとPDFが手に入るので人気らしいです。 See Also 書籍『実践Rust入門』の詳細な目次です 目指したもの Rustの入門書といえば公式ドキュメントのThe Book、TRPLなどと呼ばれるThe Rust Programming Languageやその有志による和訳が一番に挙がるでしょう。 それ以外にもオライリーよりProgramming Rustやその和訳版も出ています。 どちらもRustについてよく書かれており、書の購入を検討されている方は上記2冊との違いが気になるかと思います。 書の大きな特徴は以下の2点です。 Rust 2018 Editionに対応している 実

    「実践Rust入門」を書いたよ | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2019/04/25
    おー会社で買うか
  • Rustで強めに型をつけるPart 1: New Type Pattern | κeenのHappy Hacκing Blog

    このエントリはRustその2 Advent Calendar 2018 6日目の記事を時空を遡って書いています。 κeenです。頭痛い。寝れない。寝れないので空いてる日の分を埋めに行きます。 「Rustで強めに型をつける」シリーズではある程度有名なテクニックを紹介しようかと思います。 みんな当たり前のように書くと知らない人はいつまで経っても知る機会が無いですからね。まずはNew Type Patternから。 基 例えばcrates.ioを作るとしましょう。エンティティがいくつかありますね。クレートやユーザなど。 struct Crate { id: u64, authors: Vec<User>, // ... } struct Release { id: u64, crate_id: u64, } struct User { id: u64, // ... }

    Rustで強めに型をつけるPart 1: New Type Pattern | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2018/12/15
    ファントム型の使いどころや使い方が非常にわかりやすくて素晴らしい
  • JITあれこれ | κeenのHappy Hacκing Blog

    κeenです。遅刻してしまいましたがこのエントリーは 言語実装 Advent Calendar 2018 1日目の記事です。 最近私の観測範囲内でJITが流行っているのですが一口にJITと言っても色々あるよなーと思ったので私がJITについて知っていることをグダクダ話します。 このブログでも何度がJITや周辺技術について取り上げてますが話の流れがスムーズになるので最初から説明していきます。 2018-12-03: 加筆修正しました。差分はこちら JITって? Just in Time(コンパイル)のことで、日語にすると「間に合ってコンパイル」になりますかね。 インタプリタの高速化テクニックの1つです。 最初はインタプリタのようにコードをコンパイルせずプロセスが起動しますが、メソッドを実行するまでにはメソッドをコンパイルして、ネイティブコードで実行する方式です。 来ならJITはこのような意

    JITあれこれ | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2018/12/05
    C生成とかLLVMは貧者のツールではあるんだよね
  • 関数適用、関数から評価するか?引数から評価するか? | κeenのHappy Hacκing Blog

    κeenです。簡単にいうと「OCamlが関数の引数を右から評価する件について」。 これは他人から聞いた話なのですがよく目にするので文章として纏めておきます。 OCamlは仕様では評価順序は未定義とし(らしい)つつも現在の実装(4.06.0)は引数を右から評価します。 追記 丁度読んでいたので参考情報です。OCaml の関数適用の評価順序が not specified と名言しているのは、 https://t.co/0Zd6Cl7Qgy の Function application の項だと思います。(識者の方によると仕様はないそうですが…) — takl (@takl) 2018年2月24日 /追記 (* OCaml *) # let f x y = ();; # f (print_endline "1st") (print_endline "2nd");; 2nd 1st - : uni

    関数適用、関数から評価するか?引数から評価するか? | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2018/02/24
    左からのやつr2を再利用したら使用するレジスタは5じゃなくて4になりませんかね?
  • Rustに何が欲しいだろう | κeenのHappy Hacκing Blog

    κeenです。New Year’s Rust: A Call for Community Blogpostsの一環のつもりです。 恐らく英語の記事が望まれてるんだろうなと思いつつも試しに日から声を上げてみます。 私はRustは1.0前後の頃から触っていて、ドキュメントの翻訳をしたりここ1年くらいはIdein Inc.での業務でも使っています。 1年ほど使ってみて何が足りないか考えてみます。 言語 Associated HKT 当は一般のHKTがあると便利ですがひとまずはAssociatedなものが欲しいです。RFCでいうとこれです Generic associated types (associated type constructors) 。 欲しい状況は1つにはRFCと似たようなものなので割愛します。 GeneralなHigher Kinded Typesが欲しいのはtransac

    Rustに何が欲しいだろう | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2018/01/07
    TCOの保証とかREPLとかほしいですねえ,Haskell側から見てもLisp側から見ても,私はグローバルモジュールインストールがcargoに欲しい
  • 雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog

    κeenです。雰囲気でシェルを使ってる人が多いとのことだったので少しばかり込み入った知識を。 あと一応POSIX準拠かどうかも気にしながらやっていきます。 基礎知識編 シェルの種類 まず、POSIXにシェルが定義されています。 これに最低限の機能で準拠しているものをPOSIXシェルと呼ぶことにします。いわゆる/bin/shです。具体的な実装はbsh、ash、dashあたりでしょうか。 最低限の機能以上に色々拡張されているシェルを拡張POSIXシェルと呼ぶことにします。具体的な実装はbash、zsh、kshなどでしょうか。 ここでは触れませんがPOSIX準拠でないシェルも存在してcshやtcshなどのシェルがあります。あと確か最近話題のfishも違ったような。 さて、1つ問題になるのは普段使いのコマンドラインはおおむね拡張POSIXシェルでしょうが、サーバで使うシェルやデプロイスクリプトで呼

    雰囲気でシェルを使っている人のためのシェル入門 | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2017/10/30
    複雑性で頭おかしくなりそう
  • Rustで高速な標準出力 | κeenのHappy Hacκing Blog

    κeenです。Rustで何も考えずに標準出力に吐いてると遅いよねーって話です。 今回、標準出力に「yes」と1000万回出力するアプリケーションを書いてみたいと思います。 println! まあ、最初に思いつくのはこれでしょうか。

    Rustで高速な標準出力 | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2017/10/06
    writeln!はwrite!のマクロなのに遅くなるの謎だったけど改行を見てフラッシュしているのか
  • 新しいコンパイラバックエンドcretonne | κeenのHappy Hacκing Blog

    このエントリは言語実装 Advent Calendar 2016 - Qiita3日目の記事です。 κeenです。先日、Rustの開発者フォーラムに新しいバックエンドしてcretonneが提案されていました。 ちょっと気になったのでそれを紹介します。 概略 GitHub ドキュメント フォーラムによると、WebAssemblyをエンコードするために作られたコンパイラバックエンドで、FirefoxのJSエンジンであるSpiderMonkeyに載せる予定だそうです。JITが主な目的? LLVMのように最適化を頑張る方ではなくてコードを吐くまでのレイテンシを気にして作られているとのこと。なのでcretonne自身は最適化を行いません。 特徴はドキュメントのLLVMとの比較によくまとまってますが、 LLVMは複数種類の中間言語を持つのに対してcretonneは1種類 アセンブラもディスアセンブラも

    新しいコンパイラバックエンドcretonne | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2016/12/02
    開発時のコンパイル早くなったりするんかね
  • サイバーエージェントを退職しました | κeenのHappy Hacκing Blog

    このエントリはEx CyberAgent Developers Advent Calendar 2016 - Adventar1日目の記事です。 元サイバーエージェントの人がわいわいやります。 κeenです。二年弱勤めたサイバーエージェント退職したのでその旨について。 サイバーエージェントの思い出 サイバーエージェントに興味をもつきっかけになったのも入社することになったのも学生の頃からずっと参加し続けていたLispMeetUpでした。 LispMeetUpでは長らく会場としてCAのセミナールームを使わせてもらっていました。 そこでエンジニアに対して気軽に施設を提供するCAや社員の@potix2さんを知って、そのまま@potix2さんの手引でCAに入社する運びとなりました。 「面接でLispは口にしない方が良い。100%落ちる。」なんて言ってた割にはLisp繋りで入社しました。 Cyber

    サイバーエージェントを退職しました | κeenのHappy Hacκing Blog
    Haaaa_N
    Haaaa_N 2016/12/01
    デスクトップlinux使えないのか…サイバーエージェント受けるのはやめておこうかな
  • 1