Perlには、本家Perlの他にも、Windowsで動作するActive PerlやStrawberry Perlなどの兄弟たちがいます。 Pythonにも、本家Pythonの他にも、Javaで書かれたJython、.NET Frameworkで動くIronPythonなどの兄弟たちがいます。 このような兄弟たちは、同じ言語仕様を元にして作られているため、その仕様書の範囲内ではほぼ同等の動作をするように設計されています。 このような仕様書はその言語を作成する上で、非常に大切な役割を持っていますが、このようなメジャーなスクリプト言語の仕様書は、他の言語を設計するにあたっても大変興味深いものですね。 PerlとPythonの仕様に関しては、以下のサイトでいろいろと見ることができます。 Perl Language reference - perldoc.perl.org Index of /do
ここで扱うCommon Lispのソフトウェアにはclispを使います。 目次に戻る
自分のサイトをAjaxで磨きをかけたり、はたまた、データベースを構築して多くの情報を貯めたり、自分のプログラミング技術をさらに一歩前進させたくはないでしょうか。 この都度Googleから、あなたのプログラミングの勉強を助ける「Google Code University」が公開されました。 Google Code University これは世界中で公開されている、コンピュータ・サイエンスの授業を無料で受講できるシステムなのです。 MITやスタンフォード大学など、誰でもインターネットを通じて、世界のコンピュータ・サイエンスを学ぶことができます。 Curriculum Search(カリキュラム・サーチ)を利用すれば、自分が学びたい勉強コースを検索することができます。 試しに、下の項目を検索してみてはいかがでしょうか。 AJAX Programming Database Web Securi
プログラミング言語の「Processing」をご存知でしょうか。 Processing 電子アートとビジュアルデザインをするために開発されたプログラミング言語で、とてもグラフィック面に優れています。 「Processing」のサイトにあるExhibitionのページには、この言語で開発された様々な絵を見ることができます。 Birds!やSimilar Diversityなど、目を見張る作品がたくさん並んでいます。 目でプログラミング結果を感じ取ることができるため、プログラミング初学者でも馴染みやすい特徴があるようです。 この言語は基本としてJavaで動いており、記述する言語の特徴としてもJavaと同じような感触で触ることができます。 ただ、Java上で動作しているためか、私のPCでは少しばかり動作が重くなることがあります。 なので、無理をして特大のウィンドウを表示したりすると、処理がおいつ
ガーベッジコレクションとは、プログラム中で動的確保したメモリが不要になったとき、それを自動で解放する仕組みのことを言います。 Lispでは、プログラマにメモリの確保・解放を依存させないように設計されているため、その代わりこのガーベッジコレクションが必要になります。 ただ、ガーベッジコレクションの仕組みによっては、不要なメモリを探索するために処理が重くなったり、どのタイミングでそれが起こるのかが難しかったりと、便利さの影には不便な側面もあります。 ガーベッジコレクションのアルゴリズムにも様々な種類があり、ここではそのいくつかをリストにしてみました。 Reference Counter Mark and Sweep Copying これらのアルゴリズムと新しい考えを混ぜ合わせて、ガーベッジコレクションを実装しているプログラムもあるようなので、実装方法は様々なようです。 兄弟の多いLispやSc
プログラミング言語、特にLispやSchemeを勉強していると、たまに「ファーストクラスのオブジェクト」や「第一級の関数」などを目にすることがあります。 しかし、「ファーストクラス」とか「第一級」というのは、いったい何なのでしょう。 その答えは、『Structure and Interpretation of Computer Programs(計算機プログラムの構造と解釈)』の1.3.4にある「Procedures as Returned Values」に記述がありました。 In general, programming languages impose restrictions on the ways in which computational elements can be manipulated. Elements with the fewest restrictions are
Joel Spolsky氏の「Can Your Programming language Do This?(君のプログラミング言語で、これ、できる?)」を読みました。 様々なプログラミング言語にはそれぞれ特徴があり、ある言語でできることが、他の言語では書けなかったり、もしくは非常に汚いソースコードになってしまうことがあります。 今使っているプログラミング言語が、もしももっとスマートに書けたとしたら、それは本当に素晴らしいことですよね。 これから書くスクリプトは、javascriptで表現されていたものですが、この言語を知らずとも理解できる問題ですので、話を続けてみたいと思います。 alert("get the lobster"); PutInPot("lobster"); PutInPot("water"); alert("get the chicken"); BoomBoom("chic
Lispを構成する最小の命令群は、以下のようなものらしいです。 car リストの最初の要素を返す cdr リストの2番目以降の要素を返す cons リストを作る quote ペア(dotted pair)をつくる eq 比較をして同じならtを返す atom 値がアトムならtを返す cond 条件の判断と処理を逐次行う defun 関数を定義する これらを用いることで、処理効率は悪いかもしれないですが、他のすべての関数を定義することができるようです。
プログラミング言語である「Scheme」を定義する上で、重要な仕様書があります。 その仕様書は、R5RSという仕様書です。 「Scheme」の仕様書 R5RS この仕様書R5RSは1998年に書かれたもので、2007年に策定したR6RSではR5RSの3倍の文章量になっています。 R6RSでは多くの機能を盛り込んだために、多くの方面から批判もあり、非公式にR5RSを拡張するERR5RSという新規格を検討するコミュニティもあるようです。 そのため、「Scheme」を理解しようと思ったら、R6RSを読む前に、まずはR5RSを読んでみても良いかもしれませんね。 これを読むことで、「Scheme」がどういう特徴を持っているのかがわかり、今後R6RSがどのように出来上がってきたのかがわかると思います。 「Scheme」を作るにしても、使うにしても、まずはR5RSありき、ということですね。
Scheme系のプログラミング言語で「Gauche」というものがあるようです。 Gauche - A Scheme Interpreter この言語は、R5RSというSchemeの仕様書に準拠したもので、「日常業務の中でのちょっとした処理を行うスクリプトを気軽にSchemeで書きたい」というコンセプトで開発をしているそうです。 このスクリプト言語は、川合史朗さんという方が開発しているそうです。 川合史朗さんのサイトはこちらのサイトです。 Practical Scheme 中を見てみたら、私も何度も来ていたサイトでした。 川合史朗さんは『ハッカーと画家』などで知られるPaul Graham氏の文章を、たくさん翻訳している方なのです。 英語も堪能で、独自のスクリプト言語も作っているなんて、素晴らしいですよね。 自分も世界に認められるようなディベロッパーになりたいものです。
先日、『Structure and Interpretation of Computer Programs(邦題:計算機プログラムの構造と解釈)』、略して『SICP』の記事を自分のブログCtrlShift.netに投稿したのですけれども、どうやらSICP関連で他にも良い情報があるようなので、追記したいと思います。 実はSICPを扱ったwikiがあるようでして、そちらを読んでもらうと、また理解が深まりそうな予感です。 そのwikiはこちらのSICP Wikiになります。 また、日本にもSICP Reading's Wikiという読書会のサイトがあるようなので、そちらも覗いてみるのも良いかもしれません。
これからソースコードを使いながら、ネットで遊ぶために、いくつかの技術や知識を学ぼうと思います。 かなり考え中ではありますが、思いついたところからここで公開してしまったほうが、自分を追い込むことができるので、いくつか挙げていってしまおうと思います。 ちなみに、思いついたらさらに追加していくので、このページはたまに更新するかもしれないです。 Webクローラーの技術 コンパイラなどの構文解析技術 アルファブロガーが持っていそうな技術 人工無能、chatbotの技術 Webマーケティングの知識 現在流行のソーシャルメディアに関する知識 javascriptの知識 目標を作るための準備、ってところですね。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く