サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
www.shiro.dreamhost.com
原文:Lisp for Web-Based Applications 普通のやつらの上を行けへのリンクがslashdotにアップされた後で、何人かの読者は、私たちがViawebでLispを使ったことで得た技術的な利点について、さらに詳しいことを聞きたがった。 興味を持つ人のために、私が2001年4月にケンブリッジ(MA)のBBN研究室でした話のうち抜粋をここに示す。 ウェブベースアプリケーションのためのLisp ポール・グレアム (このエッセイは2001年4月にケンブリッジ(MA)のBBN研究室でした話の要約である) お望みのどんな言語でも ウェブベースのアプリケーションを書く際にLispを使う理由の1つは、Lispを使えるってことだ。 自分のサーバだけで動くソフトウェアを書いているなら、どんな言語を使うことだってできる。 長い間、アプリケーションを書くのにどんな言語を使用したらよいか、そ
使いたい人のための継続入門継続渡し形式call/ccは普通の関数call-with系関数call-with-procedurecall-with-continuation-procedurecall-with-current-continuation評価順序と継続call/ccパズルお手元マルチスレッド部分継続reset/pcとcall/pc環境破壊と部分継続部分継続の使用法PRINT-AND-NEXT-REPL議論質問お手元マルチスレッドのサンプルプログラムについて 使いたい人のための継続入門 とりあえず殴り書き。 くどかったり冗長な文章になってたり、重複してたり、間違ってたり、 おおいなる勘違いをしてたり、恥をカいてたりするかもしれないけどご愛敬。 藁をもつかみたい気持ちで継続を使えるようになりたい人は読んでみてください。 ただし所詮は藁です。(w 継続渡し形式 例によって階乗fa
2008-03-08開催の第2回の情報はgauche.nightへ 2007-05-09開催の第1回の情報はGaucheNight:2007へ
S式は人に優しいか Shiro: Lispの不人気の理由として筆頭に上げられるのが、括弧だらけの 独特の見た目。とっつきにくい、一般的な表記法と違っていてわかりにくい、 等々、様々なことが言われてきました。しかし、 S式を捨てたLispも開発されましたが 流行ったとはいい難く、Lispな人々はいまだに括弧に固執しているかのようです。 S式のメリットをLisperに尋ねれば、エディタがどうの、マクロがどうの、といった 回答が真っ先に返って来ると思うんですが、そういう理屈をいくら理解しても S式がダメな人がS式を好きになったりはしません。どうも、もっと根本的な 感覚に大きな隔たりがあるような気がします。非Lisperから理解しがたい、 Lisperの持つ感覚とはどんなものなんでしょうか。Lisp脳から見た世界は どんなものなのでしょうか。 構文木を人間が書く? S式は言ってみれば言語の構文木そ
元の質問は YukiWiki:プログラマーへ64の質問 にあります。 突っ込み歓迎。突っ込みはハイフン三つ(---)で書いてくことにしましょう。 0.プログラマは何事も0からスタートするべきだと思いますか? 内部表現はそれでいいですが、外部表現は相手に合わせましょう。 入力には寛容を。出力には厳格を。nobsun なるほど。いい言葉だ。Shiro でも、0 vs 1 みたいな排他的なものに、どうやって寛容を導入するのやら 戯 1.プログラマの定義は何でしょうか? 人に使ってもらえるプログラムを書く人。 2.あなたがいつもやることとは? C-x C-s (作業途中のセーブ) あるある。そして、 mew を使ってると、無意識に i を連発。yari 今使おうとするツールのSave手段をまず「身に付けて」から作業開始。命綱は最初に確認するっしょ。 戯 3.あなたが絶対やらないことは? ログを書
Lispについての正しい認識と、それでもLisperがLispを使う理由 yoriyukiさんのエントリがなかなか 真実を突いていたので、ネタにさせていただきます。 原因のほとんどは経路依存性とかネットワーク効果によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、 Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。 Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。 動的型付け:利点でもあるけど、特有のバグを引き起こす。 識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美
Lispについてのよくある誤解と、その中にあるちょっとした真実 はてなの質問: プログラミング言語で最強(スケーラブル)なのは、 Lispだと思われます。 http://jp.franz.com/index.html しかし、 世間ではマイナー言語のようです。 なぜでしょうか。 についた回答のいくつかには、「Lispを少しだけかじった人がしがちな誤解」が 含まれてるようなので、それをネタに少し解説してみます。 ただ、誤解が生じるのは、やっぱりそれなりの理由があって、従ってその 誤解の中にも(条件つきの)真実が含まれていることがあります。 そのへんまでをも含めて考えてみましょう。以降、引用は回答からです。 Lispはスクリプト言語? 一昔前まで、これらのスクリプト系の言語は「とてつもなく遅い」のが嫌われる最大の要因でしたが、最近のコンピューターの性能向上でようやくRuby,Python,Li
Gaucheで書いたプログラムがメモリをリークしているのですが、これの原因調査は、やっぱりコードの怪しい部分を見ていく以外ないでしょうか?特別なテクニックはありますか? skimu: なぜメモリリークしているという結論に至ったかの過程を具体的に、できたら他の人が再現可能な形でGauche:Bugs なり、gauche-devel なりに報告しましょう。 ちょっとしたデーモンを書いたのですが、それを動かしていると数日でメモリを使い果たして死んでしまうので、メモリリークと判断しました(というか確かにリークしている)。疑っているのはGaucheではなく自分のプログラムで、なにかのポインタが残ってしまっているのだと思うのですが、それを調べるのが大変で。これをデバッグするときに、たとえば現在の時点でアロケートされているオブジェクトの個数がクラスごとにわかったりすれば、どこらへんがおかしいのかあたりが
Paul Graham Copyright 2006 by Paul Graham. これは、Paul Graham:A Student's Guide to Startups を、原著者の許可を得て翻訳・公開するものです。 <版権表示> 本和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。 (「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。 Copyright 2006 by Paul Graham 原文: http://www.paulgraham.com/mit.html 日本語訳:Shiro Kawai (shiro @ acm.org) <版権表示終り> Paul Graham氏のエッセイをまとめた『ハッカーと画家』の 邦訳版が出版されました。 出版社の案内ページ Amazon.co.jp サ
普通のやつらの上を行けでLispにおけるマクロの効用が述べられているが, 「じゃあ具体的にマクロを使って『こりゃ便利だ』っていう例を見せてよ」 と言われてもなかなかすぐに出て来ない。 そこで、なんかいいマクロの使用例を思い付いたら書いてってみるコーナー。 通りすがりのマクロ初心者です。便利なマクロの具体例はすごく知りたいので、この項、期待してます。 Paul Graham「On Lisp」を読書中でなかなか良いけど、日本語の解説があった方が理解が早まるので。 もくじ マクロを使う局面定型パターンの簡略化関数呼び出しのインライン展開の代用新しい構文による抽象化ミニ言語の埋め込み宣言的なコードに見せるコンパイル時の処理具体例クラス定義でのリーダーの生成リストの内包表記 (List comprehension)リストの構築他の処理系の移植 関連:Scheme:マクロの危険 マクロを使う局面 なん
(これは、オープンソースマガジン2006年6月号の「ハッカー養成塾!」という コーナーに寄稿した記事の、編集前の原稿です。) パワーハッカーへの道ハッカーは書いて理解するハッカーは道具をつくるハッカーは頭の中を掃除するハッカーにも書けない時があるおわりに次回注釈ハッカー養成塾! 他の方の原稿 パワーハッカーへの道 川合 史朗 そこそこ、プログラムは書けると思う。 エリック・レイモンド(*eric)の言うとおり言語もいくつか かじってみたし、有名なソフトのソースコードも読んでみた。 でも、もっと良いコードを、ばりばり書けるようになりたいな。 本稿では、ハッカーの世界の入口を通り抜けたそんな人が、 次を目指すにはどうすれば良いかを考えてみたい。 ハッカーは書いて理解する フルタイムのプログラマとして働き出して間もない頃、 ある有名なハッカーと話していて、 少し前に発表された論文の技法はどう思う
ポール・グレアムのエッセイと和訳一覧 (originally maintained by naoya_t) Paul Grahamのエッセイ(原文)と、公開されている日本語訳のリストです。 見つけたらor 訳したら、自由に追加して下さい。複数の訳が存在する場合は全て追加してください。 A Fundraising Survival Guide 資金調達サバイバル・ガイド (lionfan) The Pooled-Risk Company Management Company リスク共有型の企業管理会社 (lionfan) Cities and Ambition 都市と野心 (lionfan) Disconnecting Distraction 気晴らしを断ち切る (lionfan) Lies We Tell Kids 子供につく嘘 (lionfan) Be Good 良くあれ (sirocc
VMのスタック操作 (未完) GaucheのVMはごく単純なスタックマシンである。 だが、Schemeの場合、first class continuationを実現するために、 スタックフレームがヒープにセーブされたり、逆にヒープからスタックに復元されたりという 操作が入って来るので、うっかりすると自分でも混乱してバグを持ち込むことがある。 後で思い出せるように、ここに整理しておこう。 基本レジスタ スタック操作に深くかかわるのは次のレジスタ群。 ScmEnvFrame *env 現在の環境のトップ。いわゆるstatic link。直接には、 最も内側の静的スコープで見えている環境を指している。 upポインタをたぐってゆけば上の環境に行ける。upポインタはNULLで終端される。 ScmContFrame *cont 現在のコンティニュエーションフレームのトップ。 いわゆるactivatio
pitecan.comへの移転のためか、増井さんちのWiki掲示板は以前のコンテンツがなくなっているようなので、Google cacheから転載します。-- SHIMADA (2003/07/26 05:41:15 PDT) 転載ここから ---- 「普通の奴らの上を行け」の追記文に出てくる、WebBasedアプリケーションと継続について。 継続と聞くとSchemeのcall/ccを連想するかもしれませんが、むしろここで重要なのは、「継続渡しスタイル(Continuation Passing Style, CPS)」です。CPSそのものは、 PerlでもRubyでもJavaでも書けます。どっちかというと、普通の手続き指向から考え方を変えるのがポイントなんで。 CPSのポイント。手続きは呼び出したら戻ってきません。行ったっきりです。ですから、その手続きの後で何か別のことをやりたいなら、「その
Lisp プログラマが Perl を学ぶときの要点 Perl は Lisp ほど関数的でない。map, grep などの便利な構文、無名関数はある。 Perl のオブジェクトは「リファレンス変数を bless したもの」。 bless とはパッケージ名をリファレンス変数に結びつけるもの。 Perl には構文上はクラスがない代わりに、 bless された package(名前空間)を使ってメソッドディスパッチをする。 便宜上、パッケージ名をクラスということは多い。 Perl のオブジェクトはデータ型についての情報は持たない。(メソッドだけ。) Perl のクロージャーは sub で作る。Perl 6 ではより簡潔に作れる。 # 加算関数 #!/usr/bin/perl use strict; use warnings; sub make_adder { my $n = shift; retu
->English 10/5/2001 初出 5/30/2002 追記 6/10/2002 英語版へのリンク追加 「プログラミング言語は満載した機能を特色の第一とするものではない。 あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。」 (アルゴリズム言語Schemeに関する第五改訂報告書、犬飼 大訳 [1])。 言語の機能とライブラリ ポピュラーな言語に親しんできたプログラマの多くは、 Schemeに触れた時、こう感じるんじゃないか。 「一体こんなに機能の少ない言語で、どんなプログラムが書けるっていうんだ。」 Schemeの規格書はほんの50ページしか無い。 Schemeプログラマはそれを言語の簡潔さの証とかなんとか言ってるけど、 入出力は最低限のものしかないし、作ったファイルを消すことさえ出来ない。 文字列処理もC言語の標準ライブラリ以下じゃな
Scheme Cross Reference Directory This site is a directory of Scheme syntax, procedures, and variables found in Scheme implementations. See WhatIsSchemeCrossReference for further explanations of this site. The entire directory is on a Wiki - anybody can edit any pages. If you find errors, want to add entries, or want to add descriptions, please feel free to click Edit button above and fix things. S
This document was generated by Shiro Kawai on February, 13 2008 using texi2html 1.78.
Greenspun's Tenth Rule of Programming "Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified bug-ridden slow implementation of half of Common Lisp." Philip Greenspun: MITの教授かつアントレプルナー。今までもっと年上だと思ってたんだが、 さっき調べたら2002年現在まだ40前なのね… すごすぎ。 なお"Tenth Rule"について、本人は 「どこで書いたか覚えてない」そうだ。 ここではC/Fortran vs Lispが述べられているが、おそらく時代を反映しているので、 現在ならどちらのカテゴリにももっと多くの言語が入ることだろう。 どの言語を
これはあくまで実装の一例であって、詳細は言語処理系のデザインに任されています。 また、以降の例ではスタックは下方(アドレスの低い方)に伸びるものとします。 まず、C等の手続き型言語におけるスタックフレームの使い方を復習しておきましょう。 次のように、関数Aが関数Bと関数Cを呼び出しているものとします。 int A(int a, ...) { int b, c; B(b); C(c); } int B(int b) { int b1; /* other calculation */ } int C(int c) { int c1; /* other calculation */ } 関数Aが呼ばれた直後のスタックには、保存された呼び出し元のレジスタ、戻りアドレス、 そしてAの引数 (a等) とローカル変数 (b, c) 等が積まれます。スタックポインタ(SP)はスタックの再下端を指し、またフ
Welcome to WiLiKi This is WiLiKi, yet another Wiki clone written in Scheme. (Wiliki is engineer'' in Hawaiian). If you see garbage characters, you may be using a browser that can't display Japanese characters. Just leave them alone. To test WiLiKi features, try SandBox. Development of WiLiKi is supported by SourceForge . [RDF Site Summary] WiLiKiへようこそ WiLiKiはSchemeで書かれたWikiエンジンです。 一応、多言語環境のイントラネット
Scheme:RoadToScheme 最初にSchemeを使ったのはいつ頃でしたか、またその処理系は? 「Lisp系言語」というくくりなら、確か1991年頃。古本屋で手に取ったこの本を読んで ちくちくコードをMS-DOSマシンに打ち込んだのがはじまり: 小西弘一・清水剛 : 「Cプログラムブック III -- Lisp処理系の作成 --」 株式会社アスキー, 1986 この本のはWiil'o Lispという独自処理系。一応Lisp-2 (変数と関数は別名前空間) だったと思う。 その後処理系に興味を持って、自分で簡単な組み込みLisp処理系を作ったり してた。で、手持ちのDOSマシンでも動かせるLispは無いかしらんと 探して見つけたのがSCM。 だったと思う。それがSchemeとのファーストコンタクト。 どうしてSchemeを使ってみようと思ったのでしょう 上に書いた通り、最初はDOS
(長くなってきたので、上に足してゆくことにしましょう) The History of Scheme Guy Steele Jr.氏による、誕生秘(?)話。 初めての人のためのLISP 読み物とはちょっと違いますが 復刊.comでリクエストしています。 Common Lisp FAQ http://www.lispniks.com/faq/faq.html Tutorial on Good Lisp Programming Style http://www.norvig.com/luv-slides.ps Beyond Java? Shiro: http://www.hyuki.com/tf/ より。JavaとDylanを比較している。 ここでDylanのメリットとして挙げられているのはそのままLispに当てはまる (Dylanは「S式を捨てたLisp」だから当然だが。 ちなみにDylanの
Gauche ユーザリファレンス 本書は、R5RS準拠のScheme処理系、Gaucheのリファレンスマニュアルです。 Gaucheのバージョン0.8.14に対応します。
次のページ
このページを最初にブックマークしてみませんか?
『www.shiro.dreamhost.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く