Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を
史上最初のプログラミング言語である1954年に考案された「Fortran」(フォートラン)から、今の各種最新言語に至るまで、いろいろなプログラミング言語が発展していく様子をまとめた巨大な系図を見ることができます。ちゃんと印刷できるようにPDFファイルなども置いてあります。自分の使っている言語がない場合には連絡して欲しいとのことです。 閲覧は以下から。 Computer Languages History (preview) 元のページはココ。A4用紙11枚に及ぶ印刷用PDFファイルなどをダウンロードできます。 Computer Languages History こうやって眺めてみると、いろいろな言語がお互いに少しずつ影響を与えているのがよくわかります。さすがにあまりにもマイナーな言語はサポートしていないようですが、作者に連絡すれば入れてもらえるかも。 一応全言語の一覧は以下から検索できま
Web2.0の提唱者でもあるTim O’Reillyさんがおもしろい分析をしていました。 技術書の売上げを図で可視化しています。前年度と比較して各テクノロジーが上り調子かどうかがわかります。業界内シェアの大きさもつかめますよ。 「これから何の言語を学ぼう?」など考えている人には参考になりそうです。 » O’Reilly Radar > State of the Computer Book Market, Q406, Part 2: Category Winners and Losers 面積と色でデータを表現するTreemapを使っていますね。面積がシェア、色が伸びをあらわしています。緑色のブロックが前年度と比べて伸びているところ、赤色のブロックが減ったところになります。 では、各業界を簡単に見てみましょう。イメージはクリックで拡大します。ではどうぞ! ■ プログラミング&システム管理 一
関数型言語とオブジェクト指向は相容れない,という説をよく聞く。たしかに「オブジェクトは状態を持つ」「関数型プログラミングでは,できるだけ破壊的代入を行わない」とすれば,二つの概念は矛盾しているようにも思われる。また,技術的観点以外にも,「とかくシンプルさを好む多くの関数型言語プログラマが,何かと物事を複雑にする(と思われている)オブジェクト指向を嫌っている」という面があるかもしれない。 しかし,個人の好き嫌いはさておき,実際問題として,関数型言語とオブジェクト指向は大いに関係がある。むしろ,基礎理論については,ほとんど同じコミュニティの人たちが取り組んでいる,と言ってもいい。例えば,以下のような研究が,1980年代から現在に至るまで行われている。 関数型言語のモデルであるλ計算という体系において,オブジェクトを表現する研究(参考リンクなど) λ計算にならい,(プロトタイプベースの)オブジェ
Programming 2.0 from O’Reilly Rader O’Reillyが、送られてきたメールに書かれていたプログラミング2.0の定義を紹介している。 Programming 2.0 1.0 2.0
はじめに 現存するプログラミング言語の中で2番目に古いのがLispです。生まれは古くても、いまだに使われ続け、また、Rubyなどの新しい言語にも影響を与えています。そのLispの派生であり、シンプルさが売りなのがSchemeです。 ここではSchemeの簡単なインタプリタをJavaScriptで作ってみます。対象読者 本稿はLispやSchemeは少し触ったことはあるけど、インタプリタは書いたことがないという方を読者対象としています。また、JavaScriptの文法や、簡単なデータ構造についての知識を前提とし、説明は省きます。必要な環境 テキストエディタと、JavaScriptが動くWebブラウザがあれば十分です。他に特に用意するものはありません。概要作成するインタプリタについて インタプリタのコードはJavaScriptで書き、HTMLのフォームを使って、Schemeのプログラムの入力お
この記事は,日経ソフトウエア 1999年10月号に掲載したものです。それ以降の情報が盛り込まれていませんので,現在とは異なる場合があります。 文字コード規格の基礎を手早く理解したい場合などにお役立てください。 文字コードは間違いなく情報を交換するための「決まりごと」なので,正確を期すため厳密な仕様が規定されている。だが,その仕様そのものを実装するプログラムを作る場合を除けば,プログラマが仕様の詳細を隅々まで理解している必要はない。六法全書を読んでいなくても問題なく普段の生活ができるようなものだ。 ここでは,通常のプログラミングをするうえで必要と思われる範囲のことを,なるべく簡潔に説明したい。「半角カナ」のような呼び名は正確さを欠くものだが,多くの人に伝わりやすいので説明の中でも使っていく。説明を簡略化するため「正確な仕様を知りたいときは規格書そのものを必ず参照してほしい」と書きたいところだ
楽にプログラミングでき,コンパイルなしで動かせるスクリプト言語。ここ数年,“軽い言語”という意味を持つ“Lightweight Language(LL)”として見直されている。本特集では,LLの良さとは何か,開発にどう適用すればよいかを解説する。さらに現場のエンジニアがどうLLを使いこなしているか,実例を紹介する。 近年,Javaに代表される“重厚な”Webシステム開発言語に対するアンチテーゼとして,より手軽な「Lightweight Language(LL)*1 」が注目を集めている。 LLの定義は明確ではないが, (1)やりたいことを少ないコード量で実装できるため,プログラミングにかける労力が少ない (2)インタプリタ型*2 であるため,アプリケーションを開発してから実行させるまでの時間がかからない (3)言語構造がシンプルであるため,言語の習得期間が短くて済む といったことが共通の特
先日、経済産業省向けの仕事をしとる知り合いと食事をしたのやけど、彼によると経済産業省の今の悩みは、「IT産業の階層化の弊害によっておこる下流のプログラマーの収入の低下」だそうである。「プライムベンダー」と呼ばれる「上流コンサルタント」たちがインドや中国にも仕事を発注できることを理由に、激しく値切り始めたために、今やわずか一人月30万円ちうケースもあるちうわ。 こないな話を聞くとホンマに悲しくなる。まず第一に「プログラムを書く」ちう仕事は簡単な仕事ではおまへん。数学的な頭を持っておらへんとかなり辛いし、基礎がしっかりと出来ておらへんとろくなソフトウェアは作れへん。物価の安いインドや中国なら許せるが、米国よりも生活費の高い日本で一人月30万円とはあまりにも低すぎる。 「彼らは下流のエンジニアで、詳細仕様書に従った通りのプログラムを書くだけの簡単な仕事をしておるから給料が安い」ちう説明を聞いたこ
ボーランドが伝統あるTurboブランドの復活として、Turbo Delphi for Win32、Turbo Delphi for .NET、Turbo C++、そしてTurbo C#のTurbo Explorer版の無料提供を本日から始めました。ちゃんと日本語版も用意されています。 ダウンロード手順は以下の通り。 ボーランド デベロッパーツールズグループ、伝統あるTurboブランドの復活を発表 Turbo Explorer Downloads:Download your free copy of Turbo Explorer today! まずはTurbo Downloadsのページにアクセス。 ダウンロードしたいソフトウェアのリンクをまずはクリック 「New User」をクリック 必要事項を入力していきます。大体このスクリーンショットの通りで大丈夫です。「Register」をクリック
はじめに 1970年代にヨーロッパを主な舞台として生まれ育ったプログラミング言語Prolog(programming in logic)は、事実とルールから一種の自動推論を行う点に特徴があります。その基本的な動作は200行ほどのRubyプログラムで実現できます。ここでは、筆者がRubyで作成したProlog処理系を解説します。 Prologによる簡単なプログラム例を下記に示します。 これは「ソクラテスは人間(human)である」「プラトンは人間である」という事実と、「人間ならばいつか死ぬ(mortal)」というルールを書いたものです。mortal(X) :- human(X)は、変数Xが実際には何であったとしても、もしもhuman(X)が成り立つならば(つまりXが人間ならば)、mortal(X)が成り立つ(つまり、Xはいつか死ぬ)という意味です。 簡略化のため、本処理系ではRubyの構文要
このようにして3!が計算されます。 このような定義の仕方を再帰的定義と言います。 この階乗関数を Basic プログラムとして実現してみると,(Tiny Basic には階乗関数 Factorial が内蔵されていますから,実際にこのようなプログラムを書く必要はありませんが。) Function Kaijyou(n) If n = 0 then Kaijyou = 1 Else Kaijyou = Kaijyou(n-1)*n End if End Function となります。しかし,実は階乗関数は,再帰を使わなくても,次のように実現することが出来ます。 Function Kaijyou(n) F = 1 For i = 1 to n F = F * i Next i Kaijyou = F End Function このように再帰的プログ
Generated by MagicPoint
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く