TAG | JavaScript
チームWordProgressの新着記事一覧です :
(※各記事の内容を閲覧するためには、各記事のタイトルをクリックしてください。)
記事概要の
プレビュー
プログラミング言語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(=> これはこのサイトだけ)なんかと比較しているんだけれど、ブラウザでリアルタイムにコンパイルされるようになることを見越して、JavaScriptとの比較っていうのをやってみてもいいのではと思っている。
ということで、今後、ちょっとgolangとJavaScriptの比較をやってみよーかなと。
—-
昨晩、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に継承ベースのオブジェクト指向はいらないわけだしね。
ほんとか、これ? => 続く。。
Go, JavaScript
Hide
|
Posted by アルケー in Scala
Scalaって、なんだか中途半端な関節技使い関数型言語じゃね、と思ってるおまいらに
Scalaの打撃系手続き型言語の実力を見せてやんよ(~> つり)。。
@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 [...]
JavaScript, Scala
Hide
JavaScriptのWikibook(日本語版)があるのを知った。どなたが書かれたのか知らないが、きちんと書かれている感じなので、JavaScriptそのものとその教え方を学ばせていただく。
※その他、Schemeの日本語版WikiBookもしっかり書かれているようなので、後で読んでみる予定。
以下、入門書を書くという視点からのメモ
JavaScriptは何かとの記述の後、入門はやはり、Hello,Worldから。HTMLも必要となるJavaScriptのHello,Worldは、はじめて見る人には複雑に思えるかもしれない。
[感想] 小飼氏「アマグラマ本」と異なり、プログラムを学ぶ意欲を持っていることは、当然の前提になっている
変数と代入演算子
ECMAScriptが標準として用意しているデータ型は、おおよそ以下の6つですべてである。
文字列(String)型、数値(Number)型、真偽値(Boolean)型、オブジェクト(Object)型、Null型、Undefined型。・・・
[感想]プログラミングそのものの入門者には、データ型が少ないのはありがたいだろう。
「配列」は、少し難しく感じるかもしれない。
演算子 はじめての人は、「算術演算、代入演算子、演算子の前置と後置の区別、文字列の連結」といったタイトルだけでノックアウトされてしまうかもしれない。
・・・
おおむね、
何らかのプログラムを書いたことがある人(少なくともアマグラマであるひと)向け、だなぁ。
おまけ
[引用] ※良く間違える人がいるのですが、引数(いんすう)と読んではいけない。 いいですか! 「ひきすう」ですよ「ひ・き・す・う!」
黙読する際は、明らかにいんすうと読んでいるなぁ。口に出すときも「いんすう」になってるかも。
JavaScript, WikiBook
Hide
前エントリのクロージャ導入ネタついでの発展的例題として、フィボナッチ数列あたりがいいかなと考えて探していたのだが、またしてもdankogai氏に行き着いた。「フィボナッチ数列にO()を学ぶ」、これが実に分かりやすい。いや、この人はほんとに頭がいいのかも、と初めて(?)思った。
[その他、長門clojure版のフィボナッチ駆け足解説も見つかったので、これはこれで別エントリで]
なので、例によって、Scalaにて写経: ※JavaScriptのコードは元サイト側で、例題をちょこちょこ書き換えevalして即実行できるようになっているので、省略。・・この面、たしかにJavaScriptは教育向き。
◇再帰を用いたナイーブな実装 : 「計算量」O(2n)
実装(ちょっとだけScala風にさせてもらった) ※(たとえ、Scalaであっても)計算効率が悪いアルゴリズムなので遅い
def fibo (n :Int) : Int =
if (n < 2) n else {fibo(n-2) + fibo(n-1)}
val fiboList = {for (i <-1 to 10) yield fibo(i)}.toList
実行例
scala> 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 <= 2) a else f(a+b, a, c-1)
f(1, 1, [...]
JavaScript, Scala
Hide
教育用言語としてのJavaScriptに注目している。
正直、JavaScriptは苦手なので、Scalaと比較しながら、まずは自分で要点を把握する。
まずは、力作の[JavaScript] 猿でもわかるクロージャ超入門を勉強させていただく。
[JavaScript] 猿でもわかるクロージャ超入門から、以下、抜粋
「クロージャーって何?」って誰かに聞かれたら、
「ああ、関数の中に書く関数のことでしょ」って答えとけば、30%ぐらい正解ということになります。(w
・・・
関数の中の関数
Javascriptで、関数の中に関数を書く・・・innerを実行するには、outer内でinner( )を実行
function outer(){
function inner(){
alert(“hello”);
}
inner(); //←コレ
}
outer(); // “hello”と表示された!
Scalaではこんな感じ
scala> def outer {
| def inner = print(“hello”);
| [...]
JavaScript, Scala, 中学生
Hide
|
Posted by アルケー in 啓蒙, 文藝
理想の教育・啓蒙用プログラミング言語とは? ひょっとしたらJavaScript、と私も思い始めた。思い始めた理由を非啓蒙的・大上段から書いて見る。
—
「理念・理想」は実現しない限り、常に新しい。
というわけで、柄谷行人『トランスクリティーク』(大澤真幸氏のプチ書評)を思いおこして書く。
今回の不況で、世界一を目指してきたトヨタが車を作りすぎて、コケてしまったことが示すように、資本主義には過剰生産の病理(あかん。作りすぎてしまうから、売れへんのや。)がつきもの。
で、どうするのか。20世紀末の柄谷氏は、「アソシエーション」というものに希望を託したわけだが、このアソシエーションは、19世紀のKarl Marxの頃にも、21世紀の今にもないもの(Nowhere)。
「association」は、「連合, 合同, 結合; 提携; 関連; 組合, 協会; 連想; 交際, 親密;」などに訳されるらしいのだが、柄谷氏は、相互啓蒙的なものを「アソシエーション」に込めていたのだと思う。同時に、『トランスクリティーク』では、「貨幣」についても考察がなされている(「事後的」にみると珍説の「LETS (‘ω’)」はここから誕生)。
今回はただひとつ、「啓蒙」という観点からだけ述べておこう。
「アイデアの時代・知財の時代」などなど、いわゆる人的資本が脚光をあびる昨今では、 たぶん、「世渡り」と結びついた「啓蒙」が資本主義のドライブとして 不可欠になっているのではないかと。「世渡り上手になるよう啓蒙」された人々には、稼ぐ力とともに「商品」への欲望が内在されるようになる。 #単に、「稼げるようになった当初は、あれもこれも欲しくなる」ということ
「時代に即した啓蒙」は、資本主義だろうが民主党政権だろうがアソシエーションの時代だろうが求められるというわけ。ただ、広い意味の啓蒙とは、単に教科書を教え込むことではない。「差異が利潤を生む」のであり、「何らかの意味で新しい」ものを含むことが啓蒙にあっても必要条件であるためだ。
—-
さて、ここで、理想のプログラミング言語教育の話に入る。
若いプログラマは、最終的には稼がなければならない(稼ぐ手段はプログラミングでなくとも良いが)。資本主義や日本の国際競争力といった大上段から見ると、日本のプログラマが総体として稼がなければならない[チームプレイのプログラミングはそこそこdomesticな産業]。では、生産性が高く今後の世につながるプログラマを、いかに教育・啓蒙すべきか。
現時点での、私の結論は、dankogai氏とほぼ同じで、「JavaScript + Lisp系言語から入る入門コースを作るべき」。小飼氏・岸田氏の議論を見ていてそう思った。
古い人間である私は、BASICを経て、C+アセンブラから入ったので、入門はCからという思いも捨てきれないのだけれども。
(読者想定 中学生~大学教養課程の学生くらい)
ただ、小飼氏と違うところは、たとえ「よっこらセックス」であるとしても、バーチャルマシン環境は早いうちに教育したほうがいいと思っているので、中学生はJavaScript、高校生になったらclojureみたいな啓蒙書を書きたいなと思う今日この頃。もちろん職業人はHaskellScalaで。
けっこうまじめに考えているので、続く。
※「資本主義がもうだめ」とかの本は、啓蒙のことをどう述べているのだろうか・・・指令 : 資本主義の精神棒を少佐に注入せよ。
Now Loading…
Now Loading…
Now Loading…
C, Capitalism, clojure, JavaScript, LISP, Marx, TransCritique, 啓蒙, 柄谷行人, 貨幣
Hide