<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Go towards a Word-Progress &#187; JavaScript</title>
	<atom:link href="http://wordprogress.org/archives/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://wordprogress.org</link>
	<description>　～言霊とプログラム言語の共進化!?</description>
	<lastBuildDate>Fri, 22 Jan 2010 03:37:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>GoとJavaScript　①golangのコンパイルがきわめて高速って、実はブラウザ・・・</title>
		<link>http://wordprogress.org/archives/492</link>
		<comments>http://wordprogress.org/archives/492#comments</comments>
		<pubDate>Sun, 15 Nov 2009 02:01:19 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=492</guid>
		<description><![CDATA[プログラミング言語Go(以下、golang)のコンパイルはきわめて速い。
return文が残念とかgenericsないのー・・・とか言われているgolangであるが、コンパイルが遅いとこぼしている人はたぶんいない。
(というか、さすがにコンパイルの遅さが問題になるレベルのコードを書いているのは、現時点ではGoogleの中の人だけだろう)
で、これは何百万行とかになるソースコードをGoogleの中の人たちは書くことがあって、そうした場合に生産性を確保するため・・・とか言われて、そりゃGoogle様だし・・・とかみんなそこは突っ込んでない感じなんだけれど、ほんとだろうか？？
落ち着いて考えてみるに、
まだまだ小学生レベルの完成度のgolangが、Googleの中 で近い将来に広く使われるとは、ちょっと自分には思えない。
・・・となると、結果的に相当の話題となったgolangは、まずはGoogleの「外」で使われるようになるのではGoogleの「外」、そう、クライアントPC内のブラウザである。
これまた新参のグーグルclosureをはじめ、肥大化するJavaScriptを事前に圧縮して・・・といったソリューションはいくつも出ている。webkitとV8で・・・とか、JavaScriptを高速化する話もいろいろある。
ある程度以上のことをしようと思うとJavaScriptがスクリプト言語であることはちょっと・・・となる。
もしかすると、golangには、そのうちJQueryみたいなライブラリが登場して、ブラウザ上でさくさくHTML5のDOMをいじくれるようになって・・・本気の人は、みんなけっこうgolang使ってるよー、みたいな世界の方が、Googleの本気サーバーでgolangが使われるより先にくるのでは、と、今朝夢うつつに思った。夢の中で、かのたわしくんがそうつぶやいていた(中上健次『夢の力』(違))・・・わけじゃないけれども。
golangのコンパイル速度が速い件、実はクライアント側のマルチコアx86やマルチコアARMなんかで動いてるブラウザで、でがんがんコンパイルされるためにあるのではないだろうか。
もちろん、Googleの中の人たちも既に「JavaScriptと比べたら、Goは少なくとも1桁は良い」(CNET記事・・・あおり、うまいなぁ:) )とか言ってるので、 今さら声を大にして言うことでないんだけれども。ただ、みな、golangを、C/C++やluaやPythonや、Java1.4やScala(=&#62; これはこのサイトだけ)なんかと比較しているんだけれど、ブラウザでリアルタイムにコンパイルされるようになることを見越して、JavaScriptとの比較っていうのをやってみてもいいのではと思っている。
ということで、今後、ちょっとgolangとJavaScriptの比較をやってみよーかなと。
&#8212;-
昨晩、gomemcachedのgolangソースコードを、
var port *int = flag.Int("port", 11212, "Port on which to listen")

func main() {
   flag.Parse();
   ls, e := net.Listen("tcp", fmt.Sprintf(":%d", *port));
・・・以下略
もちろん、Cからの移し変えという目で見ていたんだけれど、
function init() {
   var port =11212;
　・・・適当・・・
}
とかいった、javaScriptのコードをけっこう意識しているように見えてきた。
JavaScript代替だったら、golangに継承ベースのオブジェクト指向はいらないわけだしね。
ほんとか、これ？ =&#62; 続く。。
]]></description>
			<content:encoded><![CDATA[<h3>プログラミング言語Go(以下、golang)のコンパイルはきわめて速い。</h3>
<p>return文が残念とかgenericsないのー・・・とか言われているgolangであるが、コンパイルが遅いとこぼしている人はたぶんいない。<br />
(というか、さすがにコンパイルの遅さが問題になるレベルのコードを書いているのは、現時点ではGoogleの中の人だけだろう)</p>
<p>で、これは何百万行とかになるソースコードをGoogleの中の人たちは書くことがあって、そうした場合に生産性を確保するため・・・とか言われて、そりゃGoogle様だし・・・とかみんなそこは突っ込んでない感じなんだけれど、ほんとだろうか？？</p>
<h3>落ち着いて考えてみるに、</h3>
<p>まだまだ小学生レベルの完成度のgolangが、Googleの中 で近い将来に広く使われるとは、ちょっと自分には思えない。</p>
<p>・・・となると、結果的に相当の話題となったgolangは、まずはGoogleの「外」で使われるようになるのではGoogleの「外」、そう、クライアントPC内のブラウザである。</p>
<p>これまた新参のグーグルclosureをはじめ、肥大化するJavaScriptを事前に圧縮して・・・といったソリューションはいくつも出ている。webkitとV8で・・・とか、JavaScriptを高速化する話もいろいろある。<br />
ある程度以上のことをしようと思うとJavaScriptがスクリプト言語であることはちょっと・・・となる。</p>
<p>もしかすると、golangには、そのうちJQueryみたいなライブラリが登場して、ブラウザ上でさくさくHTML5のDOMをいじくれるようになって・・・本気の人は、みんなけっこうgolang使ってるよー、みたいな世界の方が、Googleの本気サーバーでgolangが使われるより先にくるのでは、と、今朝夢うつつに思った。夢の中で、かの<a href="http://d.hatena.ne.jp/ranha/20091115/1258220699">たわしくん</a>がそうつぶやいていた(中上健次『夢の力』(違))・・・わけじゃないけれども。</p>
<p>golangのコンパイル速度が速い件、実はクライアント側のマルチコアx86やマルチコアARMなんかで動いてるブラウザで、でがんがんコンパイルされるためにあるのではないだろうか。</p>
<p>もちろん、Googleの中の人たちも既に<a href="http://japan.cnet.com/special/story/0,2000056049,20403390-3,00.htm">「JavaScriptと比べたら、Goは少なくとも1桁は良い</a>」(CNET記事・・・あおり、うまいなぁ:) )とか言ってるので、 今さら声を大にして言うことでないんだけれども。ただ、みな、golangを、C/C++やluaやPythonや、Java1.4やScala(=&gt; これはこのサイトだけ)なんかと比較しているんだけれど、ブラウザでリアルタイムにコンパイルされるようになることを見越して、JavaScriptとの比較っていうのをやってみてもいいのではと思っている。</p>
<h3>ということで、今後、ちょっとgolangとJavaScriptの比較をやってみよーかなと。</h3>
<p>&#8212;-<br />
昨晩、<a href="http://github.com/dustin/gomemcached/">gomemcached</a>のgolangソースコードを、</p>
<pre class="brush:c">var port *int = flag.Int("port", 11212, "Port on which to listen")

func main() {
   flag.Parse();
   ls, e := net.Listen("tcp", fmt.Sprintf(":%d", *port));
・・・以下略</pre>
<p>もちろん、Cからの移し変えという目で見ていたんだけれど、</p>
<pre class="brush:javascript">function init() {
   var port =11212;
　・・・適当・・・
}</pre>
<p>とかいった、javaScriptのコードをけっこう意識しているように見えてきた。</p>
<h3>JavaScript代替だったら、golangに継承ベースのオブジェクト指向はいらないわけだしね。</h3>
<p>ほんとか、これ？ =&gt; 続く。。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/492/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ScalaとJavaScript　その3手続き型言語としてのScala(KMP編)</title>
		<link>http://wordprogress.org/archives/483</link>
		<comments>http://wordprogress.org/archives/483#comments</comments>
		<pubDate>Sat, 14 Nov 2009 06:25:53 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[Scala]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=483</guid>
		<description><![CDATA[Scalaって、なんだか中途半端な関節技使い関数型言語じゃね、と思ってるおまいらに
Scalaの打撃系手続き型言語の実力を見せてやんよ(~&#62;　つり)。。
@ITにて、JavaScriptでストイックにアルゴリズムとデータ構造している連載を見つけた。すばらしい。ということで、KMP法というやつをScalaで書いて見る。
いや、Scalaブログ的には関数型っぽく書くとかっこいいとされているし、実際、関数脳は大事なのだが、better Javaとしてふつうに使えてるよ、という例までに。
//文字列探索のアルゴリズムに KMP (Knuth-Morris-Pratt) 法
// REPL環境での試し方 :、
 //KMP.find("キーワード","検索対象の文字列"で実行
class State(keyword: String) {
    val EOS = keyword.length - 1
    var loc = 0 //文字の位置
    def done = (loc == EOS) // 最後の位置までたどりついたか

    def next(c: Char) =
        if (c [...]]]></description>
			<content:encoded><![CDATA[<p>Scalaって、なんだか中途半端な<span style="text-decoration: line-through;">関節技使い</span>関数型言語じゃね、と思ってるおまいらに<br />
Scalaの<span style="text-decoration: line-through;">打撃系</span>手続き型言語の実力を見せてやんよ(~&gt;　つり)。。</p>
<p>@ITにて、J<a href="http://www.atmarkit.co.jp/fcoding/articles/algorithm/01/algorithm01a.html">avaScriptでストイックにアルゴリズムとデータ構造している連載</a>を見つけた。すばらしい。ということで、<a href="http://www.atmarkit.co.jp/fcoding/articles/algorithm/07/algorithm07b.html">KMP法というやつ</a>をScalaで書いて見る。</p>
<p>いや、Scalaブログ的には関数型っぽく書くとかっこいいとされているし、実際、関数脳は大事なのだが、better Javaとしてふつうに使えてるよ、という例までに。</p>
<pre class="brush:scala">//文字列探索のアルゴリズムに KMP (Knuth-Morris-Pratt) 法
// REPL環境での試し方 :、
 //KMP.find("キーワード","検索対象の文字列"で実行</pre>
<pre class="brush:scala">class State(keyword: String) {
    val EOS = keyword.length - 1
    var loc = 0 //文字の位置
    def done = (loc == EOS) // 最後の位置までたどりついたか

    def next(c: Char) =
        if (c == keyword(loc)) {
            println(" =&gt; find : [ " + c.toString+ " ]")
            loc += 1
        } else loc = 0
}

object KMP {
    def find(keyword: String, text: String): Boolean = {
        val EOS = text.length - 1
        val state = new State(keyword)
        def next(loc : Int): Boolean =
            if (loc == EOS) {
                false
            } else {
                if (state.done) true else {
                    state.next(text(loc))
                    next(loc + 1)
                }
            }
        next(0)
    }
}</pre>
<p>再帰しか使ってないからほぼそのままGoとかにも移植できるだろう・・・書いて見れば、基礎体力を比べるベンチマークにいい、かな？？</p>
<p>関数型言語らしいKMPは、ether氏の<a href="http://rainyday.blog.so-net.ne.jp/search/?keyword=(Knuth-Morris-Pratt">こちら</a>(Haskell版からの移植)。</p>
<p>さて、入門者向けにこのJavaScriptのコードを解説するならば・・・はっ、JavaScriptのコード、見るの忘れてた。</p>
<p>－－－</p>
<p>[追記]夕飯を食べて、なんとなく見直してみたところ、一箇所間違っていることに気が付いた。まぁ、さらした後書き換えるのも既にかっこ悪いので、修正は皆様にお任せすることにする(いずれ、ScalaTestとかSpecsとかのテストツールネタで使うということにしておこう。)こうしたロジックのミスは、もちろんコンパイラが見つけてくれることはない。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/483/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScriptをWikibookで学ぶ　その１</title>
		<link>http://wordprogress.org/archives/348</link>
		<comments>http://wordprogress.org/archives/348#comments</comments>
		<pubDate>Tue, 10 Nov 2009 05:35:52 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[啓蒙]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WikiBook]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=348</guid>
		<description><![CDATA[JavaScriptのWikibook(日本語版)があるのを知った。どなたが書かれたのか知らないが、きちんと書かれている感じなので、JavaScriptそのものとその教え方を学ばせていただく。
※その他、Schemeの日本語版WikiBookもしっかり書かれているようなので、後で読んでみる予定。
以下、入門書を書くという視点からのメモ

JavaScriptは何かとの記述の後、入門はやはり、Hello,Worldから。HTMLも必要となるJavaScriptのHello,Worldは、はじめて見る人には複雑に思えるかもしれない。
[感想] 小飼氏「アマグラマ本」と異なり、プログラムを学ぶ意欲を持っていることは、当然の前提になっている
変数と代入演算子
ECMAScriptが標準として用意しているデータ型は、おおよそ以下の6つですべてである。
文字列(String)型、数値(Number)型、真偽値(Boolean)型、オブジェクト(Object)型、Null型、Undefined型。・・・


[感想]プログラミングそのものの入門者には、データ型が少ないのはありがたいだろう。
「配列」は、少し難しく感じるかもしれない。
演算子 はじめての人は、「算術演算、代入演算子、演算子の前置と後置の区別、文字列の連結」といったタイトルだけでノックアウトされてしまうかもしれない。
・・・
おおむね、
何らかのプログラムを書いたことがある人(少なくともアマグラマであるひと)向け、だなぁ。
おまけ
[引用] ※良く間違える人がいるのですが、引数(いんすう)と読んではいけない。 いいですか！ 「ひきすう」ですよ「ひ・き・す・う！」

黙読する際は、明らかにいんすうと読んでいるなぁ。口に出すときも「いんすう」になってるかも。

]]></description>
			<content:encoded><![CDATA[<p><a href="http://ja.wikibooks.org/wiki/JavaScript">JavaScriptのWikiboo</a>k(日本語版)があるのを知った。どなたが書かれたのか知らないが、きちんと書かれている感じなので、JavaScriptそのものとその教え方を学ばせていただく。<br />
※その他、<a href="http://ja.wikibooks.org/wiki/Scheme">Schemeの日本語版WikiBook</a>もしっかり書かれているようなので、後で読んでみる予定。</p>
<p><span style="text-decoration: underline;">以下、入門書を書くという視点からのメモ</span></p>
<ul>
<li>JavaScriptは何かとの記述の後、入門はやはり、Hello,Worldから。HTMLも必要となるJavaScriptのHello,Worldは、はじめて見る人には複雑に思えるかもしれない。<br />
[感想] 小飼氏「アマグラマ本」と異なり、プログラムを学ぶ意欲を持っていることは、当然の前提になっている</li>
<li><a href="http://ja.wikibooks.org/wiki/JavaScript_%E5%85%A5%E9%96%80_%E5%A4%89%E6%95%B0%E3%81%A8%E4%BB%A3%E5%85%A5%E6%BC%94%E7%AE%97%E5%AD%90">変数と代入演算子<br />
</a><em>ECMAScriptが標準として用意しているデータ型は、おおよそ以下の6つですべてである。<br />
文字列(String)型、数値(Number)型、真偽値(Boolean)型、オブジェクト(Object)型、Null型、Undefined型。・・・</em></li>
</ul>
<blockquote>
<p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em;">[感想]プログラミングそのものの入門者には、データ型が少ないのはありがたいだろう。<br />
「配列」は、少し難しく感じるかもしれない。</p></blockquote>
<li><a href="http://ja.wikibooks.org/wiki/JavaScript_%E5%85%A5%E9%96%80_%E6%BC%94%E7%AE%97%E5%AD%90">演算子</a> はじめての人は、「算術演算、代入演算子、演算子の前置と後置の区別、文字列の連結」といったタイトルだけでノックアウトされてしまうかもしれない。</li>
<p>・・・</p>
<p>おおむね、<br />
何らかのプログラムを書いたことがある人(少なくともアマグラマであるひと)向け、だなぁ。</p>
<p>おまけ</p>
<p><em>[引用] ※良く間違える人がいるのですが、引数(いんすう)と読んではいけない。 いいですか！ 「ひきすう」ですよ「ひ・き・す・う！」</em></p>
<ul>
<li>黙読する際は、明らかにいんすうと読んでいるなぁ。口に出すときも「いんすう」になってるかも。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/348/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ScalaとJavaScript　その2dankogai氏の「フィボナッチ数列にO()を学ぶ」</title>
		<link>http://wordprogress.org/archives/278</link>
		<comments>http://wordprogress.org/archives/278#comments</comments>
		<pubDate>Fri, 06 Nov 2009 14:39:26 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[Scala]]></category>
		<category><![CDATA[啓蒙]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=278</guid>
		<description><![CDATA[前エントリのクロージャ導入ネタついでの発展的例題として、フィボナッチ数列あたりがいいかなと考えて探していたのだが、またしてもdankogai氏に行き着いた。「フィボナッチ数列にO()を学ぶ」、これが実に分かりやすい。いや、この人はほんとに頭がいいのかも、と初めて(?)思った。
[その他、長門clojure版のフィボナッチ駆け足解説も見つかったので、これはこれで別エントリで]
なので、例によって、Scalaにて写経:  ※JavaScriptのコードは元サイト側で、例題をちょこちょこ書き換えevalして即実行できるようになっているので、省略。・・この面、たしかにJavaScriptは教育向き。
◇再帰を用いたナイーブな実装　:　「計算量」O(2n)
実装(ちょっとだけScala風にさせてもらった)　※(たとえ、Scalaであっても)計算効率が悪いアルゴリズムなので遅い
def fibo (n :Int) : Int =
	if (n &#60; 2) n else {fibo(n-2) + fibo(n-1)}

val fiboList = {for (i &#60;-1 to 10) yield fibo(i)}.toList

実行例

scala&#62; fiboList foreach println _
1
1
2
3
5
8
13
21
34
55
◇クロージャを活用した実装　:　「計算量」O(n)
うん、良い例題。しかし、JavaScriptも結構簡潔だなぁ。やはり、動的言語の方が教育向きか。
def fib(n:Int) = {
  def f(a:Int, b:Int, c:Int) :Int=
    if (c &#60;= 2)  a else f(a+b, a, c-1)
  f(1, 1, [...]]]></description>
			<content:encoded><![CDATA[<p>前エントリの<a href="http://wordprogress.org/archives/257">クロージャ導入ネタ</a>ついでの発展的例題として、フィボナッチ数列あたりがいいかなと考えて探していたのだが、またしてもdankogai氏に行き着いた。「<a href="http://blog.livedoor.jp/dankogai/archives/50958771.html">フィボナッチ数列にO()を学ぶ</a>」、これが実に分かりやすい。いや、この人はほんとに頭がいいのかも、と初めて(?)思った。<br />
[<span style="color: #800000;">その他、</span><span style="text-decoration: line-through;"><span style="color: #800000;">長門</span></span><span style="color: #800000;">clojure版のフィボナッチ駆け足解説も見つかったので、これはこれで別エントリで</span>]</p>
<p>なので、例によって、Scalaにて写経: <em> ※JavaScriptのコードは元サイト側で、例題をちょこちょこ書き換えevalして即実行できるようになっているので、省略。・・この面、たしかにJavaScriptは教育向き。</em></p>
<h4>◇再帰を用いたナイーブな実装　:　「計算量」O(2<sup>n</sup>)</h4>
<p>実装(ちょっとだけScala風にさせてもらった)　※(たとえ、Scalaであっても)計算効率が悪いアルゴリズムなので遅い</p>
<pre class="brush:scala">def fibo (n :Int) : Int =
	if (n &lt; 2) n else {fibo(n-2) + fibo(n-1)}

val fiboList = {for (i &lt;-1 to 10) yield fibo(i)}.toList</pre>
<ul>
<li>実行例</li>
</ul>
<pre style="margin-top: 0px; margin-right: 1em; margin-bottom: 0px; margin-left: 1em; background-color: #f8f8f8; white-space: pre-wrap; word-wrap: break-word; padding: 1ex; border: 1px solid #707b8d;">scala&gt; fiboList foreach println _
1
1
2
3
5
8
13
21
34
55</pre>
<h4>◇クロージャを活用した実装　:　「計算量」O(n)</h4>
<p>うん、良い例題。しかし、JavaScriptも結構簡潔だなぁ。やはり、動的言語の方が教育向きか。</p>
<pre class="brush:scala">def fib(n:Int) = {
  def f(a:Int, b:Int, c:Int) :Int=
    if (c &lt;= 2)  a else f(a+b, a, c-1)
  f(1, 1, n)
}</pre>
<ul>
<li>実行例</li>
</ul>
<pre style="margin-top: 0px; margin-right: 1em; margin-bottom: 0px; margin-left: 1em; background-color: #f8f8f8; white-space: pre-wrap; word-wrap: break-word; padding: 1ex; border: 1px solid #707b8d;">scala&gt; for (n &lt;- 1 to 20) print (fib(n)+"\t")
1       1       2       3       5       8       13      21      34      55      89      144     233     377     610
987     1597    2584    4181    6765</pre>
<h4>◇メモ化(memoization)　:　「計算量」O(1)?</h4>
<p>あれれ、そのままでScalaにもっていくと、Scalaの方はちょっとくどいぞ・・・ArrayでなくてListを使おうかと思ったが、簡潔になる方法が簡単に思いつかない。パターンマッチを使ってもきれいに書けないなぁ。</p>
<pre class="brush:scala">val num = 30 //num番目までの結果を得る

var fibs =new Array[Int](num+1)

def fib(n:Int) :Int = {
	if (fibs(n) &gt; 0) return fibs(n)
	if (n &lt;=  2) return 1
	val f = {fib(n-1) + fib(n-2)}
	fibs(n) = f
	return f
}</pre>
<ul>
<li>実行例</li>
</ul>
<pre style="margin-top: 0px; margin-right: 1em; margin-bottom: 0px; margin-left: 1em; background-color: #f8f8f8; white-space: pre-wrap; word-wrap: break-word; padding: 1ex; border: 1px solid #707b8d;">scala&gt; for (n &lt;- 1 to num)  println("" + n + "\t" + fib(n))
1       1
2       1
3       2
4       3
5       5
6       8
7       13
8       21
9       34
10      55
11      89
12      144
13      233
14      377
15      610
16      987
17      1597
18      2584
19      4181
20      6765
21      10946
22      17711
23      28657
24      46368
25      75025
26      121393
27      196418
28      317811
29      514229
30      832040</pre>
<p>うん、さすがにメモ化は速い。Scalaでもう少しきれいに、と考えたのだが、眠くなってきたので、<a href="http://d.hatena.ne.jp/syttru/20081028/1225215533">簡潔な実装をしている方のコード</a>を一部改させてもらう。ほんとは元コードのBigIntの方が良い。</p>
<pre class="brush:scala">var nums = Map(1-&gt;1, 2-&gt;1)
def calc(i:Int): Int={
    if(!nums.contains(i)){
      nums += (i -&gt; (calc(i-1) + calc(i-2)))
    }
    nums(i)
  }
  for(i&lt;-1 to 30)
    println("" + i + "\t" + calc(i))</pre>
<p>まぁ、要するにArrayの代わりにMapを使う。実行速度面ではMapの方が多少遅いだろうが、プログラムは簡潔。<br />
Actorを使った実装とか、さらにScalaで工夫している人もいたが省略・・・眠る前に今日の振り返り　:　JavaScript、教育用にやっぱり使えそう<em> (いざ、JavaScriptで書けと言われるとF#の#lightモードみたいなのが欲しくなるのだが・・JQueryは・・・以下略 Zzzz&#8230;)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/278/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ScalaとJavaScript　その１　クロージャ</title>
		<link>http://wordprogress.org/archives/257</link>
		<comments>http://wordprogress.org/archives/257#comments</comments>
		<pubDate>Fri, 06 Nov 2009 03:50:39 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[Scala]]></category>
		<category><![CDATA[啓蒙]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[中学生]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=257</guid>
		<description><![CDATA[
		<script type="text/javascript"><!--
			show_rakuten('#rakuteneagles10001402', 'NotFound');
		// -->
		</script>
		教育用言語としてのJavaScriptに注目している。
正直、JavaScriptは苦手なので、Scalaと比較しながら、まずは自分で要点を把握する。
まずは、力作の[JavaScript]　猿でもわかるクロージャ超入門を勉強させていただく。
[JavaScript]　猿でもわかるクロージャ超入門から、以下、抜粋
「クロージャーって何？」って誰かに聞かれたら、
「ああ、関数の中に書く関数のことでしょ」って答えとけば、３０％ぐらい正解ということになります。(w
・・・
関数の中の関数
Javascriptで、関数の中に関数を書く・・・innerを実行するには、outer内でinner( )を実行
function outer(){
    function inner(){
        alert("hello");
    }
    inner();  //←コレ
}

outer(); // "hello"と表示された！
Scalaではこんな感じ
scala&#62; def outer {
     &#124;     def inner =   print("hello");
     &#124;     [...]]]></description>
			<content:encoded><![CDATA[
		<script type="text/javascript"><!--
			show_rakuten('#rakuteneagles10001402', 'NotFound');
		// -->
		</script>
		<p>教育用言語としてのJavaScriptに注目している。<br />
正直、JavaScriptは苦手なので、Scalaと比較しながら、まずは自分で要点を把握する。</p>
<p>まずは、力作の<a href="http://dqn.sakusakutto.jp/2009/01/javascript_1.html">[JavaScript]　猿でもわかるクロージャ超入門</a>を勉強させていただく。</p>
<h3><span style="text-decoration: underline;"><a href="http://dqn.sakusakutto.jp/2009/01/javascript_1.html">[JavaScript]　猿でもわかるクロージャ超入門</a>から、以下、抜粋</span></h3>
<p>「クロージャーって何？」って誰かに聞かれたら、<br />
「ああ、関数の中に書く関数のことでしょ」って答えとけば、３０％ぐらい正解ということになります。(w</p>
<p>・・・</p>
<h4 style="margin-top: 1.5em; margin-right: 1em; margin-bottom: 1em; margin-left: 0.1em; padding-top: 0.4em; padding-right: 0.4em; padding-bottom: 0.3em; padding-left: 1.1em; font-size: 16px; font-weight: bold; border-left-style: solid; border-left-width: 0.4em; border-left-color: #9999ff;">関数の中の関数</h4>
<p>Javascriptで、関数の中に関数を書く・・・innerを実行するには、outer内でinner( )を実行</p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeff; overflow-x: auto; overflow-y: auto; font-family: 'Courier New', Courier, mono; line-height: 1; background-position: initial initial; padding: 0.5em; border: 1px dotted #999999;"><code style="padding: 0px; margin: 0px;">function outer(){
    function inner(){
        alert("hello");
    }
    inner();  //←コレ
}

outer(); // "hello"と表示された！</code></pre>
<h5 style="font-size: 0.83em; ">Scalaではこんな感じ</h5>
<pre style="margin-top: 0px; margin-right: 1em; margin-bottom: 0px; margin-left: 1em; background-color: #f8f8f8; white-space: pre-wrap; word-wrap: break-word; padding: 1ex; border: 1px solid #707b8d;">scala&gt; def outer {
     |     def inner =   print("hello");
     |     inner  //呼び出し
     | }
outer: Unit
scala&gt; outer
hello</pre>
<h4 style="margin-top: 1.5em; margin-right: 1em; margin-bottom: 1em; margin-left: 0.1em; padding-top: 0.4em; padding-right: 0.4em; padding-bottom: 0.3em; padding-left: 1.1em; font-size: 16px; font-weight: bold; border-left-style: solid; border-left-width: 0.4em; border-left-color: #9999ff;">無名関数</h4>
<h5 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; font-size: 14px; font-weight: bold; padding: 0px;">関数を定義する方法その２　(無名関数を使う)</h5>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeff; overflow-x: auto; overflow-y: auto; font-family: 'Courier New', Courier, mono; line-height: 1; background-position: initial initial; padding: 0.5em; border: 1px dotted #999999;"><code style="padding: 0px; margin: 0px;">var <strong>speak =</strong> function <strong>()</strong>{ alert("hello"); }

speak(); // "hello"と出力</code></pre>
<p>無名関数を定義してすぐさま実行したいときは<br />
( function( ){..} )( );</p>
<h5>感想</h5>
<p>おおっ・・・もし学校でJavaScriptを教えてたら、なんで、最後の<span style="color: #800000;"><strong>();</strong></span>は省略できないのって、質問が出そう。Scalaでの無名関数は簡単すぎるので、省略(RUbyのブロックあたりと並べて説明するべきかな)。関係ないが、valとlazy valの違いの説明には使えるかも。</p>
<h4><span style="color: #800000;">◇ちょっと休憩。</span></h4>
<p><span style="color: #800000;">「モナドは像だ」ならば、「クロージャは鷲だ」 [　=&gt;　大鷲(元の関数)の中に別の鳥(例えば、ハヤブサ・・返り値としての関数)があるイメージ]<br />
・・・ということで、東北楽天ゴールデンイーグルス。あぁ、札幌の第一戦を勝っていれば、今頃、仙台で日本シ(以下略)・・いや、仙台といえば、これからは<a href="http://sites.google.com/site/scalatohoku/">Scala東北</a>だ(勝手推薦)。<br />
</span> <div id="rakuteneagles10001402" class="rakuten_details">Now Loading...</div></p>
<h3><span style="text-decoration: underline;"><a href="http://dqn.sakusakutto.jp/2009/01/javascript_4.html">[JavaScript]　猿でもわかるクロージャ超入門　最終回</a>から、以下、抜粋</span></h3>
<p>こんなコードを実行してみてください。</p>
<pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.75em; margin-left: 0px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #eeeeff; overflow-x: auto; overflow-y: auto; font-family: 'Courier New', Courier, mono; line-height: 1; background-position: initial initial; padding: 0.5em; border: 1px dotted #999999;"><code style="padding: 0px; margin: 0px;">//サンプル5-2

function outer(){
    var x = 1;

    return　function (){
        alert(x);
	<strong>x = x + 1</strong>;
    };

}

var f =  outer();
f();  // 1
f();  // 2
f();  // 3

</code></pre>
<p>&#8230;クロージャを使うと、このように「状態を保持する関数」を作ることができます。&#8230;「クロージャはオブジェクトに似ている」</p>
<h5 style="font-size: 0.83em; ">Scalaでクローじゃ</h5>
<ul>
<li>まずは、クロージャの定義 　※　<span style="color: #800000;"><strong><span style="color: #800000;">() =&gt; { }</span></strong></span>という無名関数のScala流表記は、JavaScriptよりも、直感的でないかも・・　これは高階関数(以下略)</li>
</ul>
<pre class="brush:scala">def outer = {
    var x =0
    //これが無名関数として返される。
    () =&gt; { x += 1;print("x : "+x); ; x}
}</pre>
<ul>
<li>クロージャが遅延評価される様子、実行する環境ごと(ここでは、変数f、変数g)に内部状態カあることを見ておこう :</li>
</ul>
<pre style="margin-top: 0px; margin-right: 1em; margin-bottom: 0px; margin-left: 1em; background-color: #f8f8f8; white-space: pre-wrap; word-wrap: break-word; padding: 1ex; border: 1px solid #707b8d;">scala&gt; println {" f : "+f()}
x : 1 f : 1
scala&gt; println {" f : "+f()}
x : 2 f : 2
scala&gt; println {" f : "+f()}
x : 3 f : 3
 ※余計なこと[fって何と聞く]をしてみる
scala&gt; f
res43: () =&gt; Int =
 ※そんなの関係ねぇ、な様子
scala&gt; println {" f : "+f()}
x : 4 f : 4
println {" g : "+g()}
x : 1 g : 1</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1270px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<pre class="brush:scala" style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace; ">//これが無名関数として返される。</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/257/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今更『トランスクリティーク』　その1　過剰生産の病理と啓蒙</title>
		<link>http://wordprogress.org/archives/230</link>
		<comments>http://wordprogress.org/archives/230#comments</comments>
		<pubDate>Thu, 05 Nov 2009 22:35:31 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[啓蒙]]></category>
		<category><![CDATA[文藝]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Capitalism]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[LISP]]></category>
		<category><![CDATA[Marx]]></category>
		<category><![CDATA[TransCritique]]></category>
		<category><![CDATA[柄谷行人]]></category>
		<category><![CDATA[貨幣]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=230</guid>
		<description><![CDATA[
		<script type="text/javascript"><!--
			show_rakuten('#book11233776', 'NotFound');
		// -->
		</script>
		
		<script type="text/javascript"><!--
			show_rakuten('#book13091956', '<!-- cache --><div class="rakuten_image"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5920699%2F" target="_blank"><img src="http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4780/47800790.jpg?_ex=128x128"><br /><p class="rakuten_logo"><!-- Rakuten Web Services Attribution Snippet FROM HERE --><a href="http://webservice.rakuten.co.jp/" target="_blank"><img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_4936.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="49" height="36"/></a><!-- Rakuten Web Services Attribution Snippet TO HERE --></p><font class="rakuten_warn"><a href="#" class="tooltip">[ご利用にあたって]<span>このサイトで掲載されている情報は、「Go towards a Word-Progress」の作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格が、その商品の販売に適用されます。</span></a></font></div><div class="rakuten_info"><p class="rakuten_itemname"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5920699%2F" target="_blank">2009年資本主義大崩壊！</a></p><p class="rakuten_caption">商品副データいよいよ断末魔の最終章が始まった船井幸雄ダイヤモンド社この著者の新着メールを登録する発行年月：2008年12月登録情報サイズ：単行本ページ数：273pISBN:9784478007907エゴ優先の資本主義が、いよいよ断末魔の苦しみにあえぎ始める！　予測の名人・船井幸雄が経済の先行きを明らかにし、日本人の生き方に確固たる指針を与える。株価暴落、超円高、失業増、企業倒産、食糧危機…「エゴ」優先の資本主義が2009年にいよいよ断末魔の苦しみにあえぎ始め、未曾有の窮地がやって来る！これから経済はどうな……</p><p><em>販売価格：</em> 1575 円 <font class="rakuten_time">(10/07/30 13:58 更新)</font></p><p><em>販売店舗：</em> <a href="http://www.rakuten.co.jp/book/" target="_blank">楽天ブックス</a></p></div><!-- cache -->');
		// -->
		</script>
		
		<script type="text/javascript"><!--
			show_rakuten('#book13106672', '<!-- cache --><div class="rakuten_image"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5945456%2F" target="_blank"><img src="http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9013/90131880.jpg?_ex=128x128"><br /><p class="rakuten_logo"><!-- Rakuten Web Services Attribution Snippet FROM HERE --><a href="http://webservice.rakuten.co.jp/" target="_blank"><img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_4936.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="49" height="36"/></a><!-- Rakuten Web Services Attribution Snippet TO HERE --></p><font class="rakuten_warn"><a href="#" class="tooltip">[ご利用にあたって]<span>このサイトで掲載されている情報は、「Go towards a Word-Progress」の作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格が、その商品の販売に適用されます。</span></a></font></div><div class="rakuten_info"><p class="rakuten_itemname"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5945456%2F" target="_blank">2009年断末魔の資本主義</a></p><p class="rakuten_caption">商品副データ崩壊から黎明へ光は極東の日本からラヴィ・バトラ／ペマ・ギャルポあ・うんこの著者の新着メールを登録する発行年月：2009年01月登録情報サイズ：単行本ページ数：240pISBN:9784901318808【内容情報】（「BOOK」データベースより）「共産主義の崩壊」の次に来るものは、「資本主義の崩壊」であり、「資本主義社会の終焉」なのだ。2009年5つの予測。【目次】（「BOOK」データベースより）プロローグ&amp;nbsp;的中した予測とこれからの世界／第1章&amp;nbsp;アメリカ金融……</p><p><em>販売価格：</em> 1470 円 <font class="rakuten_time">(10/07/30 13:58 更新)</font></p><p><em>販売店舗：</em> <a href="http://www.rakuten.co.jp/book/" target="_blank">楽天ブックス</a></p></div><!-- cache -->');
		// -->
		</script>
		理想の教育・啓蒙用プログラミング言語とは?　ひょっとしたらJavaScript、と私も思い始めた。思い始めた理由を非啓蒙的・大上段から書いて見る。
&#8212;
「理念・理想」は実現しない限り、常に新しい。
というわけで、柄谷行人『トランスクリティーク』(大澤真幸氏のプチ書評)を思いおこして書く。
今回の不況で、世界一を目指してきたトヨタが車を作りすぎて、コケてしまったことが示すように、資本主義には過剰生産の病理(あかん。作りすぎてしまうから、売れへんのや。)がつきもの。
で、どうするのか。20世紀末の柄谷氏は、「アソシエーション」というものに希望を託したわけだが、このアソシエーションは、19世紀のKarl Marxの頃にも、21世紀の今にもないもの(Nowhere)。
「association」は、「連合, 合同, 結合; 提携; 関連; 組合, 協会; 連想; 交際, 親密;」などに訳されるらしいのだが、柄谷氏は、相互啓蒙的なものを「アソシエーション」に込めていたのだと思う。同時に、『トランスクリティーク』では、「貨幣」についても考察がなされている(「事後的」にみると珍説の「LETS (&#8216;ω&#8217;)」はここから誕生)。
今回はただひとつ、「啓蒙」という観点からだけ述べておこう。
「アイデアの時代・知財の時代」などなど、いわゆる人的資本が脚光をあびる昨今では、 たぶん、「世渡り」と結びついた「啓蒙」が資本主義のドライブとして 不可欠になっているのではないかと。「世渡り上手になるよう啓蒙」された人々には、稼ぐ力とともに「商品」への欲望が内在されるようになる。　#単に、「稼げるようになった当初は、あれもこれも欲しくなる」ということ
「時代に即した啓蒙」は、資本主義だろうが民主党政権だろうがアソシエーションの時代だろうが求められるというわけ。ただ、広い意味の啓蒙とは、単に教科書を教え込むことではない。「差異が利潤を生む」のであり、「何らかの意味で新しい」ものを含むことが啓蒙にあっても必要条件であるためだ。
&#8212;-
さて、ここで、理想のプログラミング言語教育の話に入る。
若いプログラマは、最終的には稼がなければならない(稼ぐ手段はプログラミングでなくとも良いが)。資本主義や日本の国際競争力といった大上段から見ると、日本のプログラマが総体として稼がなければならない[チームプレイのプログラミングはそこそこdomesticな産業]。では、生産性が高く今後の世につながるプログラマを、いかに教育・啓蒙すべきか。
現時点での、私の結論は、dankogai氏とほぼ同じで、「JavaScript + Lisp系言語から入る入門コースを作るべき」。小飼氏・岸田氏の議論を見ていてそう思った。
古い人間である私は、BASICを経て、C+アセンブラから入ったので、入門はCからという思いも捨てきれないのだけれども。
(読者想定　中学生～大学教養課程の学生くらい)
 ただ、小飼氏と違うところは、たとえ「よっこらセックス」であるとしても、バーチャルマシン環境は早いうちに教育したほうがいいと思っているので、中学生はJavaScript、高校生になったらclojureみたいな啓蒙書を書きたいなと思う今日この頃。もちろん職業人はHaskellScalaで。
けっこうまじめに考えているので、続く。


※「資本主義がもうだめ」とかの本は、啓蒙のことをどう述べているのだろうか・・・指令 : 資本主義の精神棒を少佐に注入せよ。
Now Loading...
Now Loading...
Now Loading...




]]></description>
			<content:encoded><![CDATA[
		<script type="text/javascript"><!--
			show_rakuten('#book11233776', 'NotFound');
		// -->
		</script>
		
		<script type="text/javascript"><!--
			show_rakuten('#book13091956', '<!-- cache --><div class="rakuten_image"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5920699%2F" target="_blank"><img src="http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4780/47800790.jpg?_ex=128x128"><br /><p class="rakuten_logo"><!-- Rakuten Web Services Attribution Snippet FROM HERE --><a href="http://webservice.rakuten.co.jp/" target="_blank"><img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_4936.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="49" height="36"/></a><!-- Rakuten Web Services Attribution Snippet TO HERE --></p><font class="rakuten_warn"><a href="#" class="tooltip">[ご利用にあたって]<span>このサイトで掲載されている情報は、「Go towards a Word-Progress」の作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格が、その商品の販売に適用されます。</span></a></font></div><div class="rakuten_info"><p class="rakuten_itemname"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5920699%2F" target="_blank">2009年資本主義大崩壊！</a></p><p class="rakuten_caption">商品副データいよいよ断末魔の最終章が始まった船井幸雄ダイヤモンド社この著者の新着メールを登録する発行年月：2008年12月登録情報サイズ：単行本ページ数：273pISBN:9784478007907エゴ優先の資本主義が、いよいよ断末魔の苦しみにあえぎ始める！　予測の名人・船井幸雄が経済の先行きを明らかにし、日本人の生き方に確固たる指針を与える。株価暴落、超円高、失業増、企業倒産、食糧危機…「エゴ」優先の資本主義が2009年にいよいよ断末魔の苦しみにあえぎ始め、未曾有の窮地がやって来る！これから経済はどうな……</p><p><em>販売価格：</em> 1575 円 <font class="rakuten_time">(10/07/30 13:58 更新)</font></p><p><em>販売店舗：</em> <a href="http://www.rakuten.co.jp/book/" target="_blank">楽天ブックス</a></p></div><!-- cache -->');
		// -->
		</script>
		
		<script type="text/javascript"><!--
			show_rakuten('#book13106672', '<!-- cache --><div class="rakuten_image"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5945456%2F" target="_blank"><img src="http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9013/90131880.jpg?_ex=128x128"><br /><p class="rakuten_logo"><!-- Rakuten Web Services Attribution Snippet FROM HERE --><a href="http://webservice.rakuten.co.jp/" target="_blank"><img src="http://webservice.rakuten.co.jp/img/credit/200709/credit_4936.gif" border="0" alt="楽天ウェブサービスセンター" title="楽天ウェブサービスセンター" width="49" height="36"/></a><!-- Rakuten Web Services Attribution Snippet TO HERE --></p><font class="rakuten_warn"><a href="#" class="tooltip">[ご利用にあたって]<span>このサイトで掲載されている情報は、「Go towards a Word-Progress」の作成者により運営されています。価格、販売可能情報は、変更される場合があります。購入時に楽天市場店舗（www.rakuten.co.jp）に表示されている価格が、その商品の販売に適用されます。</span></a></font></div><div class="rakuten_info"><p class="rakuten_itemname"><a href="http://hb.afl.rakuten.co.jp/hgc/0b16999f.c5b9c54b.0b1699a0.49a76732/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F5945456%2F" target="_blank">2009年断末魔の資本主義</a></p><p class="rakuten_caption">商品副データ崩壊から黎明へ光は極東の日本からラヴィ・バトラ／ペマ・ギャルポあ・うんこの著者の新着メールを登録する発行年月：2009年01月登録情報サイズ：単行本ページ数：240pISBN:9784901318808【内容情報】（「BOOK」データベースより）「共産主義の崩壊」の次に来るものは、「資本主義の崩壊」であり、「資本主義社会の終焉」なのだ。2009年5つの予測。【目次】（「BOOK」データベースより）プロローグ&amp;nbsp;的中した予測とこれからの世界／第1章&amp;nbsp;アメリカ金融……</p><p><em>販売価格：</em> 1470 円 <font class="rakuten_time">(10/07/30 13:58 更新)</font></p><p><em>販売店舗：</em> <a href="http://www.rakuten.co.jp/book/" target="_blank">楽天ブックス</a></p></div><!-- cache -->');
		// -->
		</script>
		<p>理想の教育・啓蒙用プログラミング言語とは?　ひょっとしたらJavaScript、と私も思い始めた。思い始めた理由を非啓蒙的・大上段から書いて見る。</p>
<p>&#8212;</p>
<h4>「理念・理想」は実現しない限り、常に新しい。</h4>
<p>というわけで、柄谷行人『トランスクリティーク』(<a href="http://www.kojinkaratani.com/criticalspace/old/special/osawa/np_011012.html">大澤真幸氏のプチ書評</a>)を思いおこして書く。</p>
<p>今回の不況で、世界一を目指してきたトヨタが車を作りすぎて、コケてしまったことが示すように、資本主義には過剰生産の病理(<span style="color: #ff0000;">あかん。</span><span style="color: #ff0000;">作りすぎてしまうから、売れへんのや。</span>)がつきもの。</p>
<p>で、どうするのか。20世紀末の柄谷氏は、「アソシエーション」というものに希望を託したわけだが、このアソシエーションは、19世紀のKarl Marxの頃にも、21世紀の今にもないもの(Nowhere)。</p>
<p>「association」は、<span style="font-weight: normal; font-size: 13px;">「連合, 合同, 結合; 提携; 関連; 組合, 協会; 連想; 交際, 親密;」などに訳されるらしいのだが、柄谷氏は、相互啓蒙的なものを「アソシエーション」に込めていたのだと思う。同時に、『トランスクリティーク』では、「貨幣」についても考察がなされている(「事後的」にみると珍説の「LETS (&#8216;ω&#8217;)」はここから誕生)。</span></p>
<p><span style="font-weight: normal; font-size: 13px;">今回はただひとつ、「啓蒙」という観点からだけ述べておこう。</span></p>
<p><span style="font-weight: normal; font-size: 13px;">「アイデアの時代・知財の時代」などなど、いわゆる人的資本が脚光をあびる昨今では、 たぶん、「世渡り」と結びついた「啓蒙」が資本主義のドライブとして 不可欠になっているのではないかと。「世渡り上手になるよう啓蒙」された人々には、稼ぐ力とともに「商品」への欲望が内在されるようになる。　<em>#単に、「稼げるようになった当初は、あれもこれも欲しくなる」ということ</em></span></p>
<p><span style="font-weight: normal; font-size: 13px;"><em>「時代に即した啓蒙」は、資本主義だろうが民主党政権だろうがアソシエーションの時代だろうが求められるというわけ。ただ、広い意味の啓蒙とは、単に教科書を教え込むことではない。「<span style="color: #ff0000;">差異が利潤を生む</span></em><em>」のであり、「何らかの意味で新しい」ものを含むことが啓蒙にあっても必要条件であるためだ。</em></span></p>
<p><span style="font-weight: normal; font-size: 13px;"><em>&#8212;-</em></span></p>
<h4>さて、ここで、理想のプログラミング言語教育の話に入る。</h4>
<p><span style="font-weight: normal; font-size: 13px;">若いプログラマは、最終的には稼がなければならない(稼ぐ手段はプログラミングでなくとも良いが)。資本主義や日本の国際競争力といった大上段から見ると、日本のプログラマが総体として稼がなければならない[チームプレイのプログラミングはそこそこdomesticな産業]。では、生産性が高く今後の世につながるプログラマを、いかに教育・啓蒙すべきか。</span></p>
<p><em><span style="font-style: normal;">現時点での、私の結論は、<a href="http://trackback.blogsys.jp/livedoor/dankogai/51005691">dankogai氏とほぼ同じ</a>で、「<span style="color: #ff0000;"><strong>Ja</strong></span><span style="color: #ff0000;"><strong>vaScript + Lisp系言語から入る入門コースを作るべき</strong></span>」。小飼氏・<a href="http://d.hatena.ne.jp/nowokay/20080220#1203457379">岸田氏</a>の議論を見ていてそう思った。<br />
古い人間である私は、BASICを経て、C+アセンブラから入ったので、<a href="http://pfrb.blog114.fc2.com/blog-entry-7.html">入門はCからという思いも捨てきれない</a>のだけれども。<br />
(読者想定　中学生～大学教養課程の学生くらい)</span></em></p>
<p><em><span style="font-style: normal;"> ただ、小飼氏と違うところは、たとえ「よっこらセックス」であるとしても、バーチャルマシン環境は早いうちに教育したほうがいいと思っているので、<span style="color: #ff0000;">中学生はJavaScript、高校生になったらclojure</span>みたいな啓蒙書を書きたいなと思う今日この頃。<span style="color: #800000;">もちろん職業人は</span><span style="text-decoration: line-through;"><span style="color: #800000;">Haskell</span></span><span style="color: #800000;">Scalaで</span>。</span></em></p>
<p><em><span style="font-style: normal;">けっこうまじめに考えているので、続く。</span></em></p>
<p><em><span style="font-style: normal;"><br />
</span></em></p>
<p><em><span style="font-style: normal;">※「資本主義がもうだめ」とかの本は、啓蒙のことをどう述べているのだろうか・・・指令 : 資本主義の精神棒を少佐に注入せよ。<br />
<em><div id="book11233776" class="rakuten_details">Now Loading...</div></em></span></em></p>
<p><em><span style="font-style: normal;"><div id="book13091956" class="rakuten_details">Now Loading...</div></span></em></p>
<p><em><span style="font-style: normal;"><div id="book13106672" class="rakuten_details">Now Loading...</div></span></em></p>
<p><em><br />
</em></p>
<p><span style="font-weight: normal; font-size: 13px;"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/230/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
