タグ

lispに関するczblueのブックマーク (74)

  • Cより高速なCommon Lispコードを書く - 八発白中

    Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。 “If you can't outperform C in CL, you're too good at C.” — Eric Naggum 最近、Common Lispの非同期Webサーバ「Wookie」を高速化する過程で、ボトルネックになっていたHTTPリクエストのパース部分を高速に処理するライブラリを書きました。 fast-http - A fast HTTP request/response parser for Common Lisp 既存のライブラリ「http-parse」よりも約10倍速く、Cのライブラリ「http-parser」より5%ほど高速です。 追記 (2014/10/26): 最適化をやり直し、現在は「http-parse」よりも約27倍速く、Cの「h

    Cより高速なCommon Lispコードを書く - 八発白中
    czblue
    czblue 2014/10/23
  • Shibuya.lisp TT #8 で「Redesigning Common Lisp」という発表をしました - 八発白中

    czblue
    czblue 2014/09/01
  • Lisp (laraconeu)

    czblue
    czblue 2014/08/31
  • On Lispとか読んでRubyとLispの違いをちょっと考えた - yarbの日記

    全400ページのうち3/4がマクロの説明に当てられている、Paul Grahamの「On Lisp」を8割ほど読んだ。冒頭のCommon Lisp入門で紹介されている標準関数やユーティリティ関数のネーミングのひどさ(やたらと数字でサフィックス付けるとか、rplacaとかってどうよ?)や、破壊的操作をする関数の挙動の不統一感に、「これならRubyのほうがいいんじゃね?」とか思ったし、with系マクロも、「なんだRubyのブロックでいいじゃん」とか思ったりもしたけど、確かに読み進めると全然違う世界が垣間見えてきた気がする。 CLOSの説明の導入編に当たるところで、Paul Grahamは素のLispの上にオブジェクトシステムを作ってみせる。これが想像以上に簡単な話で、そうか、なるほど、ハッシュテーブルとクロージャがあれば、大抵のことはできるのだと、ちょっと驚いた。継承のモデルにしたって、メソッ

    On Lispとか読んでRubyとLispの違いをちょっと考えた - yarbの日記
  • JPL(ジェット推進研究所)におけるLispの顛末 | POSTD

    この記事はジェット推進研究所(JPL)におけるLispの盛衰について、私の(しかもかなり偏った)個人的見地から書きました。JPLの所員としての立場で書いているのではなく、JPLの公的な立場を代弁するものでもないことをお断りしておきます(これについては読み進めていただければ分かります)。 1988-1991 ロボット工学の時代 私は1988年にJPLに入所し、自律移動ロボットの人工知能AI)グループに配属されました。当時は今と違って政府の財源から資金が潤沢に流入していました。「AIの冬」が始まりかけていましたが、まだJPLには到達していませんでした。研究所の技術動向は最先端から数年遅れになる傾向があるようです。 当時のJPLはマーズ・ローバー・サンプル・リターン(MRSR)と呼ばれるマーズ・ローバー・ミッションの初期計画段階にありました。あの時代、宇宙ミッションはあらゆる意味で巨大でした。

    JPL(ジェット推進研究所)におけるLispの顛末 | POSTD
    czblue
    czblue 2014/08/12
  • 軽量なCommon LispのDBライブラリ「datafly」を作りました - 八発白中

    Common Lispのデータベースライブラリというか、O/Rマッパーとしては3ヶ月前に僕が作ったIntegralがあります。 IntegralはCLOSやMOPなどのCommon Lispの魔術を余すこと無く使い、拡張性や高度なマイグレーション機能もあるライブラリとして他の追随を許しません。 ただ、すべてのアプリケーションでO/Rマッパーのような機能が必要なわけではないでしょう。抽象化レイヤーを薄く保って、極力コントローラブルにしたいという要望もあります。 今回紹介する「datafly」はそういった要求を満たす軽量なDBライブラリです。 dataflyの思想 一般的なO/Rマッパーでは、データベースの「テーブル」と、プログラム言語の「クラス定義」が一対一対応しています。この大きな前提のおかげでデータベースを抽象化でき、まるでクラス定義が(半)永続化しているように錯覚させてくれます。 ただ

    軽量なCommon LispのDBライブラリ「datafly」を作りました - 八発白中
    czblue
    czblue 2014/04/17
  • Naughty Dog が PS2 時代に使っていた Lisp は命令型スタイルの機械語変換 - minahitoの鯉日記

    Naughty Dog の Lisp 好きは有名な話ですが、 Playstation 2 に用いられていた Lisp は、今日僕らが想像するような VM の組み込みなどとは多少事情が異なるようです。 Wikipedia に Game Oriented Assembly Lisp として情報がまとまっていました。 ゲーム指向アセンブリLisp(またはGOAL)は、Naughty Dog のアンディ・ギャビン*1とジャック&ダクスターの開発チームによって開発された ジャック&ダクスターシリーズ全般の開発に使用された GOAL の構文自体は Scheme にそっくり GOAL は副作用を許容し、イベントの系列を記述させるなど、命令型プログラミングスタイルを奨励していた GOAL はインタプリタを持たず直接 Playstation 2 のマシン語に変換していた 限定的ではあるがガベージコレクション

    Naughty Dog が PS2 時代に使っていた Lisp は命令型スタイルの機械語変換 - minahitoの鯉日記
  • 高機能なCommon LispのO/Rマッパー「Integral」を作りました - 八発白中

    「O/Rマッパー」や「ORM」と聞くだけで顔をしかめる人もいらっしゃいます。たぶん過去にひどい目にあったんでしょうね。その大きな理由の一つがパフォーマンスでしょう。 一昨年のYAPC::Asiaに参加したとき、ORMは使うなという話を4回くらい聞いたのが印象的でした。DBのデータはハッシュで返すか、DBIをそのまま使うほうが良いと。弊社でもパフォーマンス上の問題をわかりづらくしてしまうことから、ORMを使用しないプロジェクトがいくつかあります。 まあ、そりゃDBI使うほうが高速に動くとは思います。 しかし、僕が使っているのは実用的な言語であるCommon Lispです。実行効率と抽象化がとても得意な言語です。さらに優れたオブジェクトシステムであるCLOSも仕様に含まれています。 そこで、既存のO/RマッパーにCommon Lispらしさを加えてみるとどうだろう。 そう思って作ってみたのが、

    高機能なCommon LispのO/Rマッパー「Integral」を作りました - 八発白中
    czblue
    czblue 2014/01/20
  • Gauche:LandOfLisp

  • Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました - 八発白中

    Quicklispに登録されているCommon Lispライブラリの情報をWebで見られるサイト「Quickdocs.org」を作りました。 http://quickdocs.org/ さくらVPS 1Gで動いてます。この2日で突貫で作ったみたいな感じなのであまりいじめないでください。 機能 とてもシンプルなので、見ていただいたほうがわかりやすいかもしれません。 たとえばClackのプロジェクトページは以下です。 http://quickdocs.org/clack 右上にはWebサイトやリポジトリへのリンクを置きました*1。 文にはREADMEを表示しています。最近はGitHubホストされているライブラリが多いので見慣れていると思いますけどね。 下のほうには.asdに記述されている情報を表示しています。Author, Maintainer と License、および依存ライブラリです

    Lispライブラリのドキュメント集約サイト「Quickdocs.org」を作りました - 八発白中
  • FPGAでLispマシーン - ぱたへね

    小黒さんによる「Lispマシンを作ってみた」を見ました。なかなか遠くのイベントに参加できないので、録画で後から見れるようになっていると助かります。関係者の皆さんありがとうございました。 動画を見てもらえれば分かりますが、FPGAの上でLispコンパイラで作られたマイクロコードを実行するCPUを動かしています。CPUだけでなく、ペリフェラルやコンパイラも自作です。発表もわかりやすく、動画でも楽しさが伝わって来ました。その場で発表を聞いていたら、もっとテンション上がったと思います。 FPGAボードはスパルタン3Aのスタータキットです。スタータキットにSDカード、USBキーボードのI/Fが追加されています。DDRコントローラでは、私が昔書いたネタが役に立ったようで良かったです。速度に関しては、DDRのアクセスがボトルネックになっていそうですね。普通のDDRコントローラを作って、内蔵メモリでキャッ

    FPGAでLispマシーン - ぱたへね
    czblue
    czblue 2013/02/21
  • Island Life - Land of Lisp

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - Land of Lisp
  • Common Lispのお宅拝見: CMU Common Lisp篇 — #:g1

    czblue
    czblue 2012/12/02
  • nil と #f

    fukamachi @nitro_idiot Gaucheで「unbound variable: nil」と言われて一瞬何を言っているのかわからなかった。今でも意味がわからない 2010-10-26 13:10:23 Kiyoshi Mizumaru @kmizumar nilってシンボルコードの中で使ってない?で、Schemeではnilは束縛されてないんだけど、じゃなくて? RT @nitro_idiot: Gaucheで「unbound variable: nil」と言われて一瞬何を言っているのかわからなかった。今でも意味がわからない 2010-10-26 13:57:32

    nil と #f
  • LISPを学ぶサイトを作った - 西尾泰和のはてなダイアリー

    作りたいもの: プログラミング言語のコア概念を学ぶサイト、その2の続編。 ブラウザの上で対話的にLISPのコードを実行できるサイトを作りました。 http://nhiro.org/learn_language/LISP-on-browser.html 現状ではまだ説明が足りないから、LISPをまだまったく知らない人がこのサイトを見て理解できるようになるかというと、そうではない。 TODO サンプルコードを1歩ずつ学べる粒度で用意する ツリーのリアルタイム可視化のコードとくっつける see 構文木を可視化するサイトを作った コードリーディングのための解説を書く 関連記事 ブラウザ上で演算子の優先順位と結合性を学ぶ

    LISPを学ぶサイトを作った - 西尾泰和のはてなダイアリー
    czblue
    czblue 2012/07/07
  • QA@IT サービス終了のお知らせ - @IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    QA@IT サービス終了のお知らせ - @IT
  • はてなまとめ(仮)

    czblue
    czblue 2012/05/22
  • http://tips.lisp-users.org/common-lisp/index.cgi?Scheme%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%8CCommon%20Lisp%E3%81%A7%E3%83%8F%E3%83%9E%E3%82%8A%E3%81%9D%E3%81%86%E3%81%AA%E3%81%A8%E3%81%93%E3%82%8D

    czblue
    czblue 2012/05/11
  • マクロ内でevalするべきでない理由 - Random Notes

    答え:レキシカル環境が無視されるから。 実例で解説しよう。CL-Yaccというライブラリがある。名前の通りyaccをCommon Lispにポートしたものだ。実装は単純明快で、背景となる理論を知っていればすんなり読めるはずだ。 CL-Yaccはdefine-parserというマクロを提供しており、ユーザーはこれを用いてパーサーを定義する。以下に簡単な四則演算パーサーの例を示す。 1 2 3 4 5 6 7 8 9 10 (yacc:define-parser *parser* (:start-symbol expression) (:terminals (integer + - * /)) (expression (expression + expression (lambda (a _ b) (declare (ignore _)) (+ a b))) (expression - exp

    czblue
    czblue 2012/05/05
  • サービス終了のお知らせ - NAVER まとめ

    サービス終了のお知らせ NAVERまとめは2020年9月30日をもちましてサービス終了いたしました。 約11年間、NAVERまとめをご利用・ご愛顧いただき誠にありがとうございました。

    サービス終了のお知らせ - NAVER まとめ
    czblue
    czblue 2012/04/29