Gauche > Archives > 2010/06/28

2010/06/28 00:18:12 UTCshiro
#
つうか、お客さんにとってはその機能が「プログラムによって実現されているか」どうかさえ本質的には関係ないんだよな。実はネットワークの向こう側では人間が処理してた、というのであっても、所定のコストで機能と性能が満たされてればいいわけで。
#
単に「品質が上がるので××言語を使います」というのは空虚なステートメント。所与の具体的な条件を満たすには我々が××言語を使うことが最適だ、という判断が案件ごとにあってしかるべき。
2010/06/28 00:24:51 UTCcutsea@twitter
#
同意
2010/06/28 05:25:19 UTCayato
#
自分の陥った経験なんですが、手段が目的化されて、ほげ言語がどうだとかエディタがどうだとか言ってる時って大体は形になってませんよね。冷静に考えると真相は実に単純で、実現したい事があって"たまたま"計算機(or その言語だったり)を使う、じゃないでしょうか。計算機は道具。自分がもしプログラムとか書いてないお客さんだったら、はっきり言って何を使ってどう作られたかなんてどうでもいい。家買うのにいちいちトンカチまで勘定に入れませんよ。そして適切にお金払ってる以上、目的において"品質が良い"なんてのは当たり前の事でしょう。
2010/06/28 05:36:24 UTCshiro
#
プログラマ同士で話してるときに、言語がどうのエディタがどうのってダベるのはいいと思うんですよ。ミュージシャン同士だって自分の楽器のこだわりどころについて語るでしょう。それが内輪での話だって分かってればいい。
#
でもステージでお客に楽器の薀蓄を語り始めるミュージシャンはいない、ってことですよね。
2010/06/28 06:07:48 UTCayato
#
お客さんは自分じゃ実現出来ない(or やりたくない)から"商品"という抽象(ブラックボックス)を選択するわけですからね。もしトミーエマニュエルが楽器の薀蓄を語り始めたら「そんなこといいから早く弾いてくれよ...」とか思っちゃいそう。気になるとしたら、なんでギターの表面剥げてんの?くらいですよ。
2010/06/28 06:12:24 UTC(び)
#
そこいら辺は、プログラマの側に自分が作っているのが「商品」あるいは「ソリューション」だという認識が薄かったりするせいかな、と思ったり。
#
どことなく「芸術品」を作ってると勘違いしているきらいがある。
#
品質に対する気概としてなら別にいいんですが、そこで自分のこだわりをお客に押しつけるようになるとちょっと違うな、と
#
まぁ、過去の自分を振り返ると鼻白むようなこともあるんですが(笑)
2010/06/28 06:14:36 UTCoskimura
#
でも、まぁ薀蓄をかたったり、押し付けるラーメン屋さんなら存在します。そういうマーケティングなんでしょうけど。
2010/06/28 06:16:26 UTC(び)
#
いますね。ラーメン屋に限らず、ですが。お客を萎縮させてどうするんだろう、と思うんだけど、お客の側も喜んじゃったりするから不思議ですね。
2010/06/28 06:18:04 UTCshiro
#
ああ、まあ、そういうひとつの体験を売るっていうニッチはあるかもしれない。
2010/06/28 06:20:05 UTCeyasuyuki@twitter
#
コンサルタントは成果物を収めて客に使わせるわけじゃないから偏屈ラーメン屋商法が使えるかも知れない。いや、ラーメンを客に作らせる商法か。
2010/06/28 06:20:43 UTCayato
#
おそらく投影の一種だと思います。>売り物としての蘊蓄。「ああグールドみたいにピアノが弾けたらどんなに気持ち良いことか...」
2010/06/28 06:22:28 UTCoskimura
#
うる側と顧客がある種の文化を共有している場合には、そういう方法は通るんだと思います。
#
ソフトウェアだとUNIX
#
とかは、そんな感じはあるんじゃないかと。
2010/06/28 06:26:00 UTCshiro
#
そうか! 目指せ偏屈コンサルタント。
#
ああでもなあ、ラーメン屋はまずくても客の損失はたかが知れてるけど、コンサルタントはまずいと客の経営が傾く。
2010/06/28 06:28:18 UTC(び)
#
そういえば、廃業コンサルタントって存在するんですかね。ニーズはありそうな気がするけど。ダークサイドの仕事になっちゃうか。
#
それはさておき、現実のコンサルタントでも、極論を提示して客にインパクトを与えてそれ以降の主導権を握るみたいな手法を使ってる輩はけっこういそうな気がする。一種の偏屈戦略ですよね。
2010/06/28 06:31:43 UTCayato
#
なぜか、ねずみ講と新興宗教の商法が頭をよぎった。
2010/06/28 06:31:59 UTCshiro
#
それで成功率が高ければ誰も文句言わないんじゃないかな。
2010/06/28 06:32:31 UTC(び)
#
まさにそれです >ayato
2010/06/28 06:33:58 UTCayato
#
不合理の上では成り立ちますけど...0to1から演繹される合理の上では結局いつか
#
ha
2010/06/28 06:34:08 UTCshiro
#
インパクトのある極論:
#
「開発言語をLispにします。全員Franzのセミナーを受けてください」
2010/06/28 06:34:46 UTC(び)
#
え、それって極論?
#
単なる正論じゃないかと
2010/06/28 06:35:09 UTCshiro
#
(び)さんはこっち側の人だから…
2010/06/28 06:35:22 UTC(び)
#
ああなるほど
#
いやでも、前段がすでに決定事項なら、後段は正論ですよね。
#
前段が決定事項なのが極論なのか...
#
マズい。素でわからなかったぞ...
2010/06/28 06:39:15 UTCayato
#
普く陰陽
#
を見なくなって僕らは信じるしか無いのだ。
2010/06/28 06:45:30 UTCayato
#
ところでAllegroGraphってどんな感じなんだろう。誰か使ったことある人居ないかな。
2010/06/28 06:46:11 UTCshiro
#
何が聞きたいですか?
2010/06/28 06:49:54 UTCayato
#
RDBとおさらばしたくて、GaucheつかってMySQLの上にトリプルのストアを書いてるんで興味があるんです。RDBの代わりになるかな?と。自分の頭の中では代わりになるんですが。実際にやった人は居るかなと。
2010/06/28 06:52:13 UTCshiro
#
「代わりに」というのが機能的な話ならもちろん可能なわけですが、現実のアプリでどうかってことですよね。クエリのパターンによるでしょうねぇ。
#
私が言えるのは、insertと単一キーでのquery (range query含む) はすさまじく速いってことで、リアルタイムでばんばんinsertとquery乱れ撃ちするようなアプリは強いみたいです。
#
複雑なjoinが必要になった場合にどこまで賢いqueryが走るかって点に関してはよくわかりません。
2010/06/28 06:57:23 UTCeyasuyuki@twitter
#
Gauche on Railsはどうだったんだろう?>OR mapping
2010/06/28 06:58:52 UTCshiro
#
(よくわからないってのは、比較したことがないから文字通りわからないってことです。)
2010/06/28 07:01:19 UTCayato
#
なるほど>shiroさん。やっぱり自分で形にしてみないと何とも言えませんね。質問が抽象的すぎた(笑。
2010/06/28 10:41:58 UTCshiro
#
@athos0220: svn trunkでは定数伝搬が強化されてて、(if #t (begin) (foo)) は条件が#tであることがコンパイル時にわかってるので(begin)と同じになります。 http://twitter.com/athos0220/status/17239165393
#
もう少し踏み込んだ最適化もやっていて、例えば(define-constant *x* '(1)) としていれば(if (pair? *x*) then else) は条件判断がコンパイル時に計算されて then のみになります。
2010/06/28 10:50:40 UTCshiro
#
@dico_leque: svn trunkでは関数呼び出し時に引数の数がval0レジスタに入るようになってるんで、そのせいかと。http://twitter.com/dico_leque/status/17240314412
#
これは、optional/keyword引数をリストにパックせずにcallee側で処理するための布石です。
2010/06/28 11:31:55 UTCathos0220@twitter
#
ほぉ、なるほど。ありがとうございます。ちなみに、(define (a) (if #t (begin))) として、(a) で a 自身が返ってきていた理由って何なんでしょうか?
2010/06/28 11:33:20 UTCshiro
#
@athos0220: defineは評価後に定義されたシンボルをval0に残すので、それがそのまま引き継がれたんじゃないかと思います。
2010/06/28 12:21:54 UTCkoguro
#
上の品質云々の話を見ていてふと思ったのですが、メカニカルなものって、仕組みを詳しく知らなくても、見ていてなんとなく「かっこいい」と思うことがあるじゃないですか。
#
あんな感じで、あまり詳しくない人が見ても「かっこいい」と思うプログラムってあるんでしょうか?
#
物理的実体がないと厳しいのかな。
#
difference engine で動くプログラムだと、歯車の動きから「プログラムのかっこよさ」が分かったりして。
2010/06/28 12:27:33 UTCshiro
#
Form follows functionみたいな? 何らかの方法でプログラムの構造 (静的or動的) がうまく可視化できるなら、良いプログラムはかっこよく見えるってことはあり得るかも。
#
ソースコードというのはプログラムの本質的な構造からはちょっと離れてる感じなので (本質的ってなんだ、っていうとよくわからないけど)、ソースを見てどうの、ってのは厳しいでしょうね。
2010/06/28 12:32:42 UTCkoguro
#
うーん、それはちょっと悲しいなぁ。
2010/06/28 12:32:48 UTCayato
#
マンデルブロ集合のかっこよさと美しさに抱く思いと同じメタファ。
2010/06/28 12:34:09 UTCkoguro
#
機械みたいに機能を追求した先に機能美が生まれてくるといいな、と思ったり。
2010/06/28 12:34:09 UTCshiro
#
ソースコードが、プログラムを表現する手段として最適ではない、という可能性もある?
#
むー、たとえば楽譜は、読めなくてもパッと見の印象ってのは色々ある。けれども、たとえば脚本は、見た目はどれもほとんど同じ。
#
とすると必ずしも記述法の最適解において見た目に構造が滲み出るとは限らないのかな。
2010/06/28 12:36:41 UTCkoguro
#
ソースコードって脚本よりも楽譜に近いんじゃないかな、とよく知らず思ったり。ソースコードでも構造はにじみ出ているんじゃないかな。
#
マンデルブロ集合の美しさだとすると、機能美とはまた別の美しさになりますね。
2010/06/28 12:38:08 UTCshiro
#
LispやPythonだと見た目綺麗なソースってのはありますね。
2010/06/28 12:38:51 UTCkoguro
#
そうですね。COBOLとかだと自然言語に近すぎるので、あんまり目立たなくなるのかな。
2010/06/28 12:38:58 UTCayato
#
独立時計師が作る機械式時計とか。
2010/06/28 12:39:04 UTCkoguro
#
だとするとAPLが一番美しい言語になったり。
2010/06/28 12:39:44 UTCshiro
#
数行以上のAPLコードを見たことがないから判断できない
#
あーでも、楽譜の美しさっていうのは、「美しい楽譜にする表記法」みたいなものが連綿と研究されてきたっていうのもあると思うな。もちろん見やすさの追求ってのもあったろうから、その意味ではform follows functionなんだろうけど。
2010/06/28 12:41:57 UTCkoguro
#
300行以上あるAPLのコード見つけたけど、フォントがなくてよく分からん。(あってもよくわからないけど)
2010/06/28 12:42:34 UTCshiro
#
ということは、見やすさを追求したソースの表記法というのが発展してもいいわけか。Fortressの試みなんかはその1ステップと考えることも出来なくはないかな。
2010/06/28 12:46:48 UTCkoguro
#
そう、最初に機械式時計を思ったのですが、「機能と性能」っていってしまうと機械式時計ってクォーツに比べていいとこないと思うんですよね。
#
高いし、壊れやすいし。でも、機械式時計って、なんか使っていて楽しい、見ていて楽しい、といった側面があるのです。
#
そんな感じで、一応機能は満たした上で、何となく見ていて楽しい、といったプログラムってないのかなって思いました。
2010/06/28 12:48:49 UTCshiro
#
確かにそうだなあ。以前から「道具としてのソフトウェア」と「作品としてのソフトウェア」について考えてることはある。
2010/06/28 12:49:30 UTCayato
#
arcのソースなんかは見ていてそう思う。全体的に美しいというかなんというか。
2010/06/28 12:50:03 UTCkoguro
#
その美しさって、プログラマ以外でも共有できないかなって思います。
2010/06/28 12:52:18 UTCayato
#
自分がプログラムに対して無知だと仮定して、arcとperl見たらarcを選ぶと思います。多分。
2010/06/28 12:53:34 UTCshiro
#
Smalltalkな人たちってそういう感覚持ってそうな印象が。「ソース」じゃないんだけど。プログラムの部品をわりとフィジカルなイメージでとらえられるような仕組みを作ってるかのような。
2010/06/28 12:56:54 UTCkoguro
#
「フィジカル」というのとはちょっと違いますが、多分 Lisp も同じ感覚は持っているんじゃないかな。
#
Emacs Lispとかは「テキスト版Smalltalk」という感じがする。汚いけど。
2010/06/28 12:58:24 UTCshiro
#
SqueakとかEtoysのイメージが強いからかなあ。わりとあっちはヴィジュアルなインタラクションに強い気がするけど、Lisperは抽象的なシンボル操作に走ってしまうような印象が
2010/06/28 13:00:09 UTCkoguro
#
うーん、SmalltalkってGUIを最初から装備しているので、そう見えるんじゃないでしょうか。GUIフレームワーク込みのLispだと同じような感覚で使えるような気がする。
2010/06/28 13:00:26 UTCeyasuyuki@twitter
#
.FPGAでLispマシン作るようなもの? http://bit.ly/9lQq0k 組み込み向け「軽量Ruby」と「Rubyチップ」、福岡県が経産省の事業で開発へ - ニュース:ITpro
2010/06/28 13:01:20 UTCoskimura
#
スタックマシンなんだろうか?
#
Javaチップの失敗を繰り返しそうな気がするんですが。大丈夫なのでしょうか?
2010/06/28 13:06:36 UTCshiro
#
ゴールをどこに設定するかによるんじゃないでしょうか。本気で量産して汎用のコントローラチップと競うのは非常にきついと思うけれど、たとえば特有の言語のVM記述からさくっとチップが起こせるような話が確立されたらニッチで需要があったりしない?
#
んー、でもRubyならわざわざ専用チップにしないでも普通の汎用アーキテクチャ上に素直にコンパイルすればいいって話になるか。普通のアーキテクチャにうまく乗らない実行モデルを持ってる言語の方が、チップを起こす動機としては良さそうだよね。
2010/06/28 13:09:54 UTCkoguro
#
組み込み系はあまりよく知らないけど、MIPSなりARMなりの既存のCPU上でVM動かした方が、作るのは楽だし、性能や消費電力も改善されていくので、自前で作るのは大変じゃないのかな。というか体力が続かないと思う。
2010/06/28 13:10:48 UTCshiro
#
はい、量産してる汎用チップともろに競合するのはまず勝ち目が無いと思います。
2010/06/28 13:13:18 UTCayato
#
Rubyの役目は流行を作ることなので、これを機にCPU実験キットが一般に安く手に入るようになることに期待。
2010/06/28 13:13:38 UTCkoguro
#
なんとなく「家電製品などの開発生産性云々」というところで競合しちゃいそうな気がする。
2010/06/28 13:13:56 UTCeyasuyuki@twitter
#
.私もARMでいいじゃん、と思います。Javaも動くし。
2010/06/28 13:14:27 UTCkoguro
#
CPU実験キットというか、FPGAのキットなら今でも手に入れやすいですよ。
#
でもちょっと高いか。
2010/06/28 13:17:58 UTCshiro
#
安いCPU実験キットといえば最近TIから送料と開発環境(お試し版)込みで$4.50というのを見たな。マイクロコントローラだけど。 http://hackaday.com/2010/06/22/ti-makes-a-big-bid-for-the-hobby-market/
#
RAMがほとんど無いのでインタプリタとか載せるのは多分無理だけど。
2010/06/28 13:20:35 UTCkoguro
#
16bitCPUなんだ。
2010/06/28 13:21:05 UTCshiro
#
あ、でもLispマシンみたいにハードウェアでGCのサポートとかあると、動的言語で素早くイテレーションを回したいってニッチにははまるかも? ロボットのコントローラとか。
2010/06/28 13:22:58 UTCayato
#
ルンバとかどうなってるんだろう。
2010/06/28 13:24:35 UTCkoguro
#
うーん、ハードウェアGCって、コプロセッサみたいに既存のCPUに専用ハードを追加する形で、作れないのかしらん。
2010/06/28 13:28:07 UTCshiro
#
リードバリアとかライトバリアをハードでサポートしてもらうにはバスを監視して割り込みをかける必要があるんで、キャッシュの内側を覗けた方が嬉しいんじゃない?
2010/06/28 13:28:46 UTCkoguro
#
あー、確かにキャッシュがあると面倒ですね。
2010/06/28 13:31:08 UTCshiro
#
Roombaは汎用CPUでしょう。特にリアルタイム性が要求されるわけでもなさそうだし。
2010/06/28 13:41:15 UTCkoguro
#
Roombaの場合、たまにGCで固まった方が「考えてる」って感じがしていいかも。
2010/06/28 13:44:17 UTCshiro
#
部屋のマッピングをやってるわけじゃないので、GCで固まるほどメモリ使ってないとは思いますが。不完全な方が愛着が湧くというのはあるかもしれない。
2010/06/28 21:44:40 UTCshiro
#
単に方法を知らないだけです RT: @ikegami__: shiro さんの宣戦布告? :「Haskellでどうやって性能を出したらいいのかわからない」via http://bit.ly/93TotQ
2010/06/28 22:15:23 UTCとおる。
#
お客さんにとって新しい言語を導入することは、お客さんが持っている既存の環境に、その言語の処理系を入れることになるから(ネイティブコードにコンパイルする場合は別ですが)、そのコストも馬鹿にならないですよね。
#
たとえば、.NET Framework 3.5 が必要とかいわれたら、めんどくさい。
#
http://amasci.com/amateur/holo1.html この手書きホログラム、立方体みたいな連続的な奥行きの変化があるようなものはどうやって書いてるんでしょうかね。CD-ROM の表面にエッチングみたいな感じでラベルをプリントするプリンタありますけど、あれでかけないかな?
2010/06/28 22:19:54 UTCeyasuyuki@twitter
#
クラウド最強ってことか。
2010/06/28 22:25:41 UTCshiro
#
>とおる。 奥行き方向はコンパスの開きを変えると変化します。なので半径が自由に変えられないとプリントは難しそう。
2010/06/28 22:35:28 UTCshiro
#
@eyasuyuki: クラウドはデータを外に預けないとならないのがネック (単なるストレージなら暗号化しとけるけど、外で計算させるなら基本的に生じゃないとだめ)。ただ、暗号化したまま計算するって技術もある。まだごく基本的なことしかできないけど。そんでもって計算量は跳ね上がる。ほら、やっぱり性能は重要だ。
2010/06/28 22:41:19 UTCshiro
#
あ、基本的なことしかできないってのは勘違いだった。暗号化したまま(理論的には)任意の計算ができる方法ってのが見つかったんだった。 http://blogs.teamb.com/craigstuntz/2010/03/18/38566/
#
理論的には、っていうのは性能の話を抜きにしてってこと。
2010/06/28 23:42:31 UTCとおる。
#
ええ、コンパスの開きが奥行きに対応しているのは分かるんですが、それを手で正確にやってるのがすごいなぁと思って。少し開いて、針を少しずらして、弧を描いて、また少し開いて、っていうのを繰り返すわけですよね。
2010/06/28 23:47:32 UTCshiro
#
ああ、手でやってるのはすごいですね。幅が固定できるコンパスを使えとは書いてあるので、同一深度の部分はまとめてやっちゃうんでしょうけれど。奥行き方向にも直線にするのは技術が要りそうだなあ。