• ベストアンサー

LISPを今から覚えたい

最近Lispを覚えようとパソコンで動作するLISPを探しているのですが、CommonLispに対応する学習に最適なフリーのインタープリタが見つかりませんでした。手に入れることは可能でしょうか? まずはじめにやりたいことは、数値と文字(Hellow world)を関数?に渡して、数値分文字を表示させるものが作りたいのですが、 そのようなサンプルがかける方、教えてください。 LISPを覚えるにはたくさんの関数?を覚えると習得が早いでしょうか? それとも、考え方を先に身につけた方が早いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.6

どういう条件を満たすと「学習に最適な」処理系なんでしょうか? とりあえず某所にある記述によれば ((お勧めの Common Lisp 処理系) (SBCL: http://sbcl.sourceforge.net/ :プラットフォーム UNIX, Linux, Mac, Windows(移植中) :開発 活発 :日本語 使える(UCS4, UTF8, EUC) :特徴 一番お勧めのコンパイラ。) (CLISP: http://clisp.cons.org/ :プラットフォーム UNIX, Linux, Mac, Windows :開発 そこそこ活発 :日本語 使える :特徴 バーチャルマシン。遅いがフットプリントが小さい。) (CMUCL: http://www.cons.org/cmucl/ :プラットフォーム UNIX, Linux, Mac :開発 そこそこ活発 :日本語 使えない(回避法有り) :特徴 高速コンパイラ。SBCL の元になった。) (OpenMCL: http://openmcl.clozure.com/index.html :プラットフォーム PPC-Linux, Mac, x86-Linux と FreeBSD に移植中 :開発 そこそこ活発 :日本語 使えない :特徴 元々商用のコンパイラ。ネイティブスレッドが使える。)) 6 デフォルトの名無しさん sage 2006/02/15(水) 23:39:51 ((その他) (ABCL: http://armedbear-j.sourceforge.net/ :特徴 JavaVM 上で動く。JavaVM のバイトコードを生成。) (ECL: http://ecls.sourceforge.net/ :特徴 Lisp->C コンパイラ。組み込み可能らしい。) (GCL: http://www.gnu.org/software/gcl/ :特徴 日本発 Kyoto Common Lisp の直系。)) なんてのがあるようですが。 (defun repeat-message-ntimes (msg n) __(dotimes (i n) ____(format t "~A~%" msg))) (defun repeat-message-ntimes2 (msg n) __(if (> n 0) ____(repeat-message-ntimes msg n)) __(format t "~A~%" msg)) 覚えるのはとりあえず基本的な関数にとどめておいて、Lisp流の 考え方になれた方がいいのじゃないかと。 Common Lispだと関数たくさんあるから、最初にそれ覚えようとしても頭に入りきらないでしょう。 英語覚えるのに単語を全部覚えてから。とかと同じ。

その他の回答 (6)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.7

訂正 (defun repeat-message-ntimes2 (msg n) __(if (> n 0) ____(repeat-message-ntimes msg n)) __(format t "~A~%" msg)) if の bodyにある呼び出し部分は ____(repeat-message-ntimes msg (- n 1))) こうしないと再帰がとまらない。

noname#97729
noname#97729
回答No.5

Googleで、”Lisp Hellow world”を検索しましょう。

  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.4

Linux のような UNIX 系 OS も考えてるなら Windows での emacs の実装の一個の Meadow. エディタですが,本体は Lisp の処理系みたいなもんです. Meadow が使えれば emacs も使えます. エディタじゃいやだという場合は http://clisp.cons.org/ を参照してください.Common Lips の処理系です. Windows用もありますし,ソースもあります. #Lisp じゃなくって関数型言語ということなら #Haskell も面白いです.

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

xyzzy とかどう? エディタだけど、おおよそ CommonLisp を喋れます。

参考URL:
http://xyzzy.s53.xrea.com/wiki/
noname#77845
noname#77845
回答No.2

#1です。 「LISP」はなかなか見つかりませんね…。 「Scheme」じゃだめでしょうか? http://ja.wikipedia.org/wiki/Scheme http://www.scheme.com/ http://www.plt-scheme.org/

noname#77845
noname#77845
回答No.1

OSは何をお使いですか? 「考え方を先に身につけた方が早い」 こっちが目標でしょうね。

Lusaka1
質問者

補足

ご回答ありがとうございます。 OSは最初WindowsXPで、その次にLinuxに移る予定です。

関連するQ&A

  • Linuxでforkやalarm,wait,waitpid,syscallなどを使ったサンプル

    今までWindowsのPerlを使っていました。 forkやalarm,wait,waitpid,syscallなど使ったことがなく、 LinuxのPerl5.8でそれらの関数を習得したいのですが、 何か良いサンプルはありますか? これに特化した書籍も探しています。 今作りたいものは、 forkで10個プロセスを作成して、ループし、 以下それぞれhello worldを表示させ終わったら、 1個目は終了しました。 2個目は終了しました。 ・・・ 10個目は終了しました。 終わり。 と表示させるプログラムが作りたいです。 fork,alarm,wait,waitpid,syscallなどプロセス操作、システムコール関数を全て使った良いサンプルも探しています。 ------------------------------------ それぞれのhellow word 1個目は 5秒後に hello worldを表示させる 2個目は10秒後に hello worldを表示させる ... 10個目は50秒後にhello worldを表示させる を使いますが、今まで

    • ベストアンサー
    • Perl
  • 64bitアセンブラ

    NASKなどのコンパイラで64bitのマシン語を扱うことは可能でしょうか? 64bitの命令も知らないので書籍も探しています。 もし64ビット命令?を使ったHellow Worldが書ける方、サンプル見てみたいです。 64bitならではの簡単な計算の仕方も知りたいです。

  • PCの基礎操作を身につけるには

    エクセル、ワード(簡単な関数がわかれば尚よいとの事)、メールソフト操作などを身につけるには本などで学習できますか?学校にいく必要ありますか?おすすめの本あれば教えて下さい。どのくらいで習得できますか

  • C#でPHPの可変関数のような事ができるでしょうか

    すみません、ご存じの方教えてください。 PHPでは次のような形で文字列で関数を呼び出せるようですが、C#でも同じ事ができますでしょうか? $str = "MyFunc1"; $str("Hellow"); function MyFunc1($abc){ echo "$abc"; }

  • 文字列の数字部分を取り出す関数・メソッド

    こんにちは。 ある文字列から、数値部分を取り出す関数やメソッドは存在するのでしょうか? たとえば、  引数:"abc123"→戻り値:123  引数:"a1b2c3"→戻り値:1 ※はじめに見つかった数値 という感じです。 無いのであれば、自作しようと考えているのですが…。

  • iアプリ、それともJava(?)における文字表示の挙動について

    iアプリ、それともJava(?)における文字表示の挙動について public void run(){  Graphics g = getGraphics();  while(true){   g.lock();   int i = 1;   g.drawString("hogehoge",0,15 + i); //下にずれて表示されていく。   g.unlock(true);   i++;  }//while() }//run() 【質問】 whileループで繰り返し、上記のような処理がなされる場合、 一度表示した文字は残らず、ループの繰り返し毎に、 何も表示されていない所に、1から表示しなおされる形で、 処理が行われています。 例えば、ループなしの簡単なHellow World!のような文字表示サンプルプログラムですと、 そのHellow World!という文字列を1度描画したら、そのまま描画されたままですが、 whileループの場合、 ループごとに、真っ白な状態に初期化され、その上に次の描画が行われ…ということを、 繰り返しているようです。 この時の、「毎回のループの初めに行われているであろう、真っ白な状態への初期化」は、 どういった仕組みで行われているのでしょうか? 別の言い方で言うと、 「whileループの描画処理が、蓄積されていかないのは何故?また、その蓄積がなされない理由(しくみ)はどこに?」 となります。 上記whileループの挙動に対し、 文字と文字が重なっていく、とか、 上段から下段へと文字がどんどん蓄積されながら描画されていく、 なんてことを想定していたわけですが、 実際には、そうはならないため、質問をさせて頂きました。、 このあたりのことについて、どなたか、お分かりになる方、ご教示下さい。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • ゲームプログラミングの学習について

    ゲームプログラミングの学習の進め方についての質問です。 最近ゲームプログラミングを始めたばかりで、現在サンプル付きのゲームプログラミングの本を見ながら、学習を進めています。 基本的な関数も覚え、サンプルとして付いていたミニゲームのコードを見ても、大体は理解できます。しかし、何も見ずにゼロからミニゲームをつくってみろと言われれば無理。という状態です。 そこで質問なのですが、 ・自力で全部作成できるまで繰り返し学習するべきでしょうか。 それとも ・こういう動作をさせたいときは、こういうコードがあるということだけ覚えておき 知識の幅を広げていくことを重視すべきでしょうか。 (大まかな仕組みだけを理解しておき、細かい内容の記憶はパソコンにまかせる。という感じです) その他、お薦めの学習方法がありましたら、是非をよろしくお願いします。

  • C言語で文字列操作を忘れてしまいました。

    長い間スクリプト言語ばかりやっておりまして、C言語に戻ると、文字列を返す 関数を作ろうとしましたが、お恥ずかしいながらできませんでした。 ローカル変数の値を戻り値に使おうとして、それがwarningになったり、動作が不安定になったりして、文字列を返す仕組みを完全に忘れてしまっていました。 例えば、"test"と言う文字列を返す関数を書きたいのですが、メモリ操作も考えた サンプルをだれか教えて欲しいです。 int main(void) { printf("%s", 「関数名」); }

  • 英語学習は母語を身につけるのと同じ手順で進めるのが効果的である

    こんにちは。NHK出版 大津由紀雄著の「 英語学習7つの誤解」という本の中で 次の7つの項目が挙げられていますが、今回は「英語学習は母語を身につけるのと同じ手順で進めるのが効果的である 」について考えてみようと思います。 1.英語学習に英文法は不要である 2.英語学習は早く始めるほどよい 3.留学すれば英語は確実に身につく 4.英語学習は母語を身につけるのと同じ手順で進めるのが効果的である 5.英語はネイティブから習うのが効果的である 6.英語は外国語の中でもとくに習得しやすい言語である 7.英語学習には理想的な、万人に通用する科学的方法がある 私も 英語学習は母語を身につけるのと同じ手順で進めるのが効果的であるとは思いません。しかし、私たちが英語を習ったように 音よりも文字を重視し 文法と訳読を中心とした学習では 得手不得手が極端に分かれてしまい、得意な生徒でさえ なかなか英語は使えるようになりません。そこで質問ですが、英語学習はどのような手順で進めるのが一番いいんでしょうか?

  • もし仮に5つの言語(Python, Java, C/C++, Perl

    もし仮に5つの言語(Python, Java, C/C++, Perl, LISP、アセンブラ)を学ぶとした場合の学習順序 こんばんは。 もしこの5つを何年かかけて学ぶとした場合、この学習順序をどうおもいますか? ちなみにこの5つの言語は、linuxなどのOSやオープンソースソフトウェアの開発に携わっている方たち(ハッカーの方たち) が、OSや言語開発をするなら学ぶべき言語として主張していました。(クラッカーではなくハッカーです) この方たちがいうには pythonをはじめに学習し、次にjava それからC/C++, Perl, LISP、アセンブラの順番が良いと言っていました。 特にpythonを一番に学び、javaを2番に学ぶべき理由としては↓ まず Python から始めることをおすすめします。設計がきれいだし、ドキュメントもしっかりしているし、初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん対応しています Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしいですが、できるコードは Python より高速です。二番目の言語としてはとてもすぐれていると思います。 本気でプログラミングをするなら、C を勉強するしかありません。これは Unix の中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に勉強しようとするのには向いた代物ではありません。 それ以外に Perl と LISP があります。Perl は実際的な意味からも勉強しておく価値があります。アクティブ Web ページやシステム管理にとても広く使われているからです。自分では Perl を使わなくても、読めるようにはなっておきましょう。LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際には LISP そのものをあまり使わなくても。 さらに、visualbasicやC#などはやめた方が良い。と主張しています。↓ ウィンドウズの下でハッキングを学ぶのを、拘束衣を着て踊りを学ぶのに例えたのは、あれは冗談じゃないんですよ。 Visual Basic や C# にはそれぞれ個別に問題があります。その大きなものは、移植性がないことです。マイクロソフトの独占言語だというだけで、もうすでに失格ですし、ほかの Basic と同じく言語としての設計もまずく、悪いプログラミングの習慣が身についてしまいます。 足りなかったのでこちらに。 みなさんはこの順序や考えについてどうおもいますか? 本当にpythonは最初に適した言語なのでしょうか? 長文になってしまい申し訳ありません。 できればひとりでも多くの技術者の意見が聞きたいです。なんでもかまいません。 もし良ければ回答お願いします。