タグ

ブックマーク / zehnpaard.hatenablog.com (6)

  • LispKit Lisp処理系の実装 序 - Arantium Maestum

    純粋関数型Lisp方言であるLispKit LispのインタプリタとSECD抽象機械の機械語へのコンパイラを作成する。 タネはHendersonの「Functional Programming - Application & Interpretation」で、このに載っているISWIMやPASCALのコードを大体なぞるようにPythonで書いていく。(最近出た「コンパイラー原理と構造ー」でもSECDマシンへのコンパイルの話題が出ているらしいがまだ届いていないので未確認・・・) 例によって長くなるので複数の記事に分ける。 流れとしては以下のようになる: LispKit Lispの紹介 (記事) パーサとAST インタプリタ 前編 後編 SECD抽象機械の実装 1 2 3 SECD機械語へのコンパイラ SECD抽象機械ガベージコレクション LispKit Lisp LispKit Lis

    LispKit Lisp処理系の実装 序 - Arantium Maestum
    sh19910711
    sh19910711 2024/04/11
    "LispKit Lisp: Hendersonが考案したSECD抽象機械にコンパイルできる(=非常に簡単にいろんなアーキテクチャにポートできる)正格評価な純粋関数型のLisp + LandinのISWIMの中間表現のような言語" 2021
  • 100 Days of Codeをやってみた - Arantium Maestum

    ツイッターで100 Days Of Codeというチャレンジがたまに流れていて、面白そうだったのでやってみた。今年も終わりに近づいているので今更ながら振り返ってみる。 100 Days Of Code概要 ルールは簡単: なるべく毎日1時間以上、業務外のコードを書く githubに載せる twitterで進捗をつぶやく 途中で風邪をひいて寝込んだりいわゆるライフイベントが発生したりして合計で5日ほど空いてしまったが、8月14日にはじめて11月26日に終わった。 積ん読していたをある程度消費したい、という欲求もあり、100日間基的にに載っているコードや演習問題、オンラインのチュートリアルなどをやって過ごした。自前のプロジェクトを立ち上げたりしなかったのですこし寂しい気もする。近いうちに自作言語に手を出したい。 やったこと(というか読んだ) Essentials of Programm

    100 Days of Codeをやってみた - Arantium Maestum
    sh19910711
    sh19910711 2024/01/18
    "『Essentials of Programming Languages』: プログラミング言語の基礎概念の多くを実際に自分の手で作っていく / 『500 Lines or Less』: いろんなオープンソースのプログラムの設計思想などをその開発者が解説" / 2018
  • Graydon HoareのCompiler講義資料が面白かった話 - Arantium Maestum

    Graydon Hoareが2019年にカナダのブリティッシュ・コロンビア大学でコンパイラ関連のゲスト講義した時の資料21 compilers and 3 orders of magnitude in 60 minutes - a wander through a weird landscape to the heart of compilationを読んだら大変面白かったのでメモ。 作者 Graydon HoareはMozillaでRustを開発したことで有名。その後Rustの開発もMozillaも離れて(というかRustの開発からは2013年に離れたようだ)、一時期AppleSwift開発チームに所属していたらしい。(ソース:Reddit: I wonder, why Graydon Hoare, the author of Rust, stopped contributing in

    Graydon HoareのCompiler講義資料が面白かった話 - Arantium Maestum
    sh19910711
    sh19910711 2022/11/24
    "Graydon Hoare: MozillaでRustを開発 + 一時期AppleでSwift開発チームに所属 / メタコンパイラ: DSLからコンパイラを出力 / インタプリタを書いて、それを部分評価して静的に解決し得る部分を解決してしまうとコンパイラになる"
  • Every language is a Perlis language - Arantium Maestum

    時々ツイッターで俎上に上がる言説として「プログラミング言語は一つ学んだら大体全部同じ」という話と「お前HaskellやLisp見ても同じことが言えるの?」、そして「いやHaskellやLispだってそこまで違うわけじゃない」という一連の流れがある。 これで思い出すのはAlan PerlisのEpigrams of Programmingである。ACM SIGPLAN Noticesの特別記事として出されたユーモアたっぷりの箴言集で、序文からしていい感じだ: The phenomena surrounding computers are diverse and yield a surprisingly rich base for launching metaphors at individual and group activities. Conversely, classical huma

    Every language is a Perlis language - Arantium Maestum
    sh19910711
    sh19910711 2022/10/26
    "言語の基本思想や歴史、使われるドメインやエコシステム、ユーザコミュニティなどとどう関連しているのか、など「プログラミングについての考えが豊かになる」点はいくらでもある / Alan PerlisのEpigrams of Programming"
  • プログラミング言語における再帰の初出はLISPではなかった - Arantium Maestum

    ポール・グレハムの記事の一つにWhat Makes Lisp Different?というものがある: www.paulgraham.com ポール・グレハムらしくよく書かれていて、C言語などと比較した場合のLispの特徴をうまく捉えているように思う。 その中の一つが Recursion. Recursion existed as a mathematical concept before Lisp of course, but Lisp was the first programming language to support it. (It's arguably implicit in making functions first class objects.) こうある通り、私も今まで深く考えたこともなく「プログラミングにおける再帰はLispが由来」と考えていたのだが、前回の記事を書く

    プログラミング言語における再帰の初出はLISPではなかった - Arantium Maestum
    sh19910711
    sh19910711 2022/07/13
    "IPL: 1950年代のAI研究の一環として、RAND CorpでLogic Theory Machineという定理証明系 + Logic Theory Machineを実装するための言語 / サブルーチンの戻り先をスタックとして保持するというアイデアはA.M. Turingのグループが1947年に"
  • C++のiostreamの<<を導入したのはストラウストラップ - Arantium Maestum

    最近@karino2さんのポッドキャスト「プログラム雑談」のバックナンバーをいろいろ聴いている: anchor.fm 二週間ほど前に書いた聴いてるポッドキャストの記事ではまだ「気になっている」という分類だったのだけど、聴き始めたらいい感じにゆるいのと技術的な内容が面白いのと(そして人の技術や生活に関する哲学が見えるのも)で、続けて聴いている。 2020年あたりの「ストラウストラップのエピソード」で: anchor.fm 「iostreamの<<構文を導入した人は何十年かに渡って『やっちまった』と思っているはず」という話があった。 ここら辺の: www.cplusplus.com のoperator<<メソッドをオーバーロードしてIO出力に使う構文の話だ。確かにあの構文はC++の見た目のユニークさの最たるもので、それはつまり後続言語にまったく模倣されなかったということだ。自作言語勢でも「

    C++のiostreamの<<を導入したのはストラウストラップ - Arantium Maestum
    sh19910711
    sh19910711 2022/05/16
    "operator<<メソッドをオーバーロードしてIO出力に使う構文の話 / C++の見た目のユニークさの最たるもので、それはつまり後続言語にまったく模倣されなかったということだ"
  • 1