タグ

langDesignに関するrmatsuokaのブックマーク (9)

  • Python 3.10から導入されたBetter error messagesの深掘り | gihyo.jp

    鈴木たかのりです。今月のPython Monthly Topicsでは、Python 3.10から導入されたBetter error messagesについて紹介します。Better error messagesがどういったものであるかの紹介と、どのようにこのエラーメッセージが出力されているか、Python内部の処理についても触れようと思います。 Better error messagesとは Python 3.10からBetter error messagesという機能が追加されました。この機能は名前のとおり「エラーメッセージを改善」するものです。「⁠エラーメッセージの改善」により以前よりもわかりやすいエラーメッセージが出力され、ユーザーがエラーの意味に気づきやすくなりました。 例として、以下のようなリストの閉じカッコ(])を忘れたコードを実行し、出力されるエラーメッセージを見比べてみま

    Python 3.10から導入されたBetter error messagesの深掘り | gihyo.jp
  • Less is exponentially more

    Here is the text of the talk I gave at the Go SF meeting in June, 2012. This is a personal talk. I do not speak for anyone else on the Go team here, although I want to acknowledge right up front that the team is what made and continues to make Go happen. I'd also like to thank the Go SF organizers for giving me the opportunity to talk to you. I was asked a few weeks ago, "What was the biggest surp

  • Lexical Scanning in Go - Rob Pike

    Lexical Scanning in Go, a talk by Rob Pike at Google Technology User Group given on Tuesday, 30 August 2011. The slides: http://rspace.googlecode.com/hg/slide/lex.html

    Lexical Scanning in Go - Rob Pike
  • Lispを実装したくなったら読んでほしい本6選 - Arantium Maestum

    言語実装 Advent Calendar 2022の1日目の記事として書いた。 Lisp Advent Calendar 2022でも枠が空いていたのでダブル投稿。 プログラミング言語を実装してみたい!と思ったらまずは簡単なLispインタプリタから始めるというのは一つの王道だと思う。 複雑な構文解析は要らず最低限の再帰下降法パーサで手に入る構文木を、そのまま再帰的な関数で実行していくtree walking評価器。メモリ確保もヒープにそのまま置いていって、メモリ解放は実装言語のGCに任せるなりプログラムの終了時までやらなかったり。そんなインタプリタを作る経験から得られるものは非常に大きく、どんなプログラマでも一回は試してみてもいいのではないか?と思っている。(個人的な感想です) そんな簡易Lispを実装してみて沼にハマってしまい、より精緻な言語処理系を作りたいと思ったとする。その時点で:

    Lispを実装したくなったら読んでほしい本6選 - Arantium Maestum
  • 既存言語のミニ版ぽいものまとめた

    東大CPU実験の記事を読んでいたらお馴染みの MinCaml の他にもいくつか既存言語のミニ版があり、探してみました。 他にもおすすめのミニ言語あれば Twitter: @kaito_tateyama 宛、もしくは discussionにコメント で教えてください。 概要 一般の言語処理系を意識した言語のミニ版っぽいものを挙げます。大学の講義で使用された/教育目的/自作目的など色々です。 ML: MinCaml C: chibicc Ruby: minruby Swift: MinSwift Go: babygo Scala: pscala 追記: mal, quickjs 詳細 ML: MinCaml リポジトリ: esumii/min-caml 東大CPU実験の記事でお馴染みのMinCaml。これをFPGAの上で動かしてレイトレーシングを行うらしい。 型周りも実装されている教育目的

    既存言語のミニ版ぽいものまとめた
  • Swiftのエラーハンドリングはなぜ最先端なのか - Qiita

    Swiftのエラーハンドリングは他のメジャーなプログラミング言語のどれとも異なる新しい仕様を持っています。特に、検査例外を持っているのですが、これはJavaで採用された以降はほとんどの言語で採用されていないため、現代では否定されている過去の間違いだったと広く認識されていると思います。そのため、Swiftユーザーで無い人は、検査例外という言葉をみた瞬間に興味を失ってしまうため、その詳細がなかなか世の中に伝わっていないと感じています。一方、私はこんなSwiftのエラーハンドリングをとても気に入っていて、様々な言語の進化の歴史を踏まえた産まれた最も優れた最先端の仕様だと思っています。この記事ではその考えを説明します。 Javaのエラーハンドリング Javaは検査例外を持っています。これにより、あるメソッドがエラーを送出するかどうかを関数のシグネチャとして静的に表明できます。 // 検査例外の例

    Swiftのエラーハンドリングはなぜ最先端なのか - Qiita
  • Rubyで学ぶRuby

    Rubyで始める、すこし気のプログラミング入門。「プログラミングってそもそもどういうこと?」からスタートして、最後には自分だけのRubyインタプリタをRubyで作ってみよう。Rubyを使ってゼロからプログラミングを学びながら、プログラムとは何か、プログラミング言語とは何かを味わうRuby入門の連載企画。 2017年01月18日 09時00分 プログラミング+ 第9回 インタプリタの完成、そしてブートストラップへ はじめてのプログラミングでRubyを学びながらRubyインタプリタを作っていく連載の最終回。 自分だけのRubyインタプリタを完成させていきましょう! 2016年12月21日 18時00分 プログラミング+ 第8回 関数を実装する(後編) 機能限定版のRubyインタプリタ(MinRubyインタプリタ)を作りながらRubyとプログラミングを学ぶ連載、今回は前回に引き続き「関数」の実

    Rubyで学ぶRuby
  • RubyでつくるRubyをゼロから学びなおすプログラミング言語入門を読んだので感想。 - niszetの日記

    初心者にも、プログラミング言語の実装に興味がある層にもおすすめ 読んでからすこし日が空いてしまいましたが、RubyでつくるRubyを読み終わったので感想を投下しておきます。このを読んで初心者向けのはどうするのが良いのか?を考えていたのでそれについての私の考えがダラダラ書かれていますが、ご容赦を…。 対象読者など 書のはじめににも結構書いてあるのですが、結論から言えば初心者に特におすすめだし、ある程度プログラムを書いたことがあってもプログラミング言語の実装について良く知らない、といった人におススメです。 私がPandocのことばかりやってるので特にそう思うのかもしれませんが、木構造がたくさん出てきて楽しかった?です。データ構造としての木の構造はそこらじゅうで出てくるので、このを通して慣れることが出来ると良いのではと思います。 このを読んで、初心者向けに良いな、と思ったもののうち、構

    RubyでつくるRubyをゼロから学びなおすプログラミング言語入門を読んだので感想。 - niszetの日記
  • あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して

    あなたは,下記のコードを理解できない。 p f /g+h/i これはRubyのコードである。「p」は,コンソールに出力する関数である。 問: だいたい,何をやっているコードですか? ※例えば,四則演算など。 構文をおおまかに説明して下さい。 どれが変数で,どれが関数で,どれが演算子か? ↓回答 回答: 一意に決定できない。 下記に, このコードの複数の解釈方法と, この件が引き起こす問題 について述べる。 ※なお,この問題が起きるのは動的言語に限らず,静的言語でも同様に発生しうることを前もって述べておく。 (1)分数の計算とみなすパターン 先行するコードを下記のように書いた場合: test1.rb # 変数に数値を代入 f = 2 g = 1 h = 2 i = 1 # 演算結果をpで出力する p f /g+h/i 実行結果: >ruby test1.rb 4 「分数の計算」とみなされる。

    あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して
  • 1