2010年9月26日

全てにおいて文字列頼りのプログラミングってどうなの? 他に方法は無いの?

@PG_kura さんの「クラスを階層構造の付いた文字列で管理するのは無理があるんじゃない?」という話から色々発展していった一連の会話です. 途中から @pokarim さんと @naka_aki_spl さんも加わっています. 「誰でも編集可」にしてあるので好きにいじってください. えー, 途中から話題がプログラミングそのものに発散してるのでタイトルを修正しました. 続きを読む
10
くっくっkura 🇯🇵🦀 @PG_kura

java の import って、コード書くときに名前を短くするためだけに使うのかな?

2010-09-25 23:00:33
トウミィ @Seacolor

@PG_kura どちらかというと、そのクラスで使用しているモジュールの宣言の為に

2010-09-25 23:02:54
くっくっkura 🇯🇵🦀 @PG_kura

@Seacolor では、その目的は可読性でしょうか?それともコンパイラに何らかの助けを与える効果があるのでしょうか?

2010-09-25 23:04:12
tomo🐧@learning @cocoatomo

@PG_kura 基本的にそれだけですね. > import 何か他に機能を期待しました?

2010-09-25 23:11:09
くっくっkura 🇯🇵🦀 @PG_kura

@cocoatomo 可読性だけなら、import 構文いらんのとちゃうか、と。エディタで java.io. の部分を不可視にしてくれればいいだけなので。

2010-09-25 23:13:09
tomo🐧@learning @cocoatomo

@PG_kura 「エディタがあれば」という話ですよね? java を Eclipse などの専用エディタ無しで使うというのは拷問に近いですwww 魔法使いでもない限り. なので「エディタがあれば」という前提は考えづらいかなぁ? と思います.

2010-09-25 23:15:25
tomo🐧@learning @cocoatomo

@PG_kura C++ の namespace も似たような機能ですが, あっちはどうなんでしょ?

2010-09-25 23:15:47
くっくっkura 🇯🇵🦀 @PG_kura

@cocoatomo あー、そうです。エディタ側の頑張りで java ですら言語仕様削れるなーと。

2010-09-25 23:16:22
くっくっkura 🇯🇵🦀 @PG_kura

@cocoatomo namespace も似たようなものですが、 C++ の場合はマクロと Generics の組み合わせで小手先のテクニックがよくあるので、import よりも用途が広いきがします。

2010-09-25 23:17:26
tomo🐧@learning @cocoatomo

@PG_kura あ, なんか酔ってて変な文章になったので再度. 現在 Eclipse では Ctrl + Shift + o で import の自動追加ができます. 複数のパッケージが見付かった場合はダイアログで選びます.

2010-09-25 23:20:01
tomo🐧@learning @cocoatomo

@PG_kura んで, import 文の塊はデフォルトでは折り畳まれて 1 行しか見えない状態になってます. つまり @PG_kura さんの望んだ状態は実現されてますよ〜.

2010-09-25 23:20:27
くっくっkura 🇯🇵🦀 @PG_kura

@cocoatomo はい。でも List クラスの重複とかって、片方を明示的にするとか、何かテクニックが要りましたよね。あれって、エディタが色を変えれば人間が識別できるわけですからやっぱり import に絡む言語仕様はプログラマからもっと隠せるかなーと思ったとですよ。

2010-09-25 23:25:20
くっくっkura 🇯🇵🦀 @PG_kura

@cocoatomo 名前ってすごく大事だと思うんですよ。人が意味を与えてそれを利用してアプリを紡ぎだすわけですから。なので名前の解決が階層構造でしか解決できないのはどうももったいない気がするんです。何か代案となる体系は無いかなーと考えてたらimportの意義が気になりますた。

2010-09-25 23:28:25
tomo🐧@learning @cocoatomo

@PG_kura 重複した場合は import java.util; した上で List と java.awt.List とかしないといけないですね. 色変えるとかもありますが, もういい加減「文字列」で識別するのが嫌です. かと言って有力な代替案が無いので黙ってますが……

2010-09-25 23:29:58
くっくっkura 🇯🇵🦀 @PG_kura

@cocoatomo データ構造は map とか set とか list とか・・・いろいろあるのに・・・。使いやすいものを作る(プログラミング)ための道具(プログラミング言語)を構成する要素(名前)がそもそも使いにくいってのが何とも不満なのです。

2010-09-25 23:33:12
pokarim @pokarim

@cocoatomo 今は名前=IDになってしまっていますが、クラスや関数などの定義に対して名前とは別にIDを持たせて、そのIDと名前のひも付けを別途管理するべきだと思っています。

2010-09-25 23:50:06
tomo🐧@learning @cocoatomo

@pokarim ほう, なるほど. ID ってどんなふうに使うんですか? 別名を付けやすくするとかでしょうか?

2010-09-25 23:51:12
pokarim @pokarim

@cocoatomo IDはプログラマは直接意識しないです。例えばPythonの実行時だとクラスオブジェクトにidと__name__、さらに名前空間上の名前が別々にありますよね。そんなイメージです。ソースとしてコード(文字列)ではなく抽象構文木を保存することになります。

2010-09-25 23:56:34
tomo🐧@learning @cocoatomo

@pokarim そうするとプログラマはコード (文字列) を書かない場合も想定していますか?

2010-09-25 23:59:58
pokarim @pokarim

@cocoatomo コード(文字列)で入力するのが多くの場合で効率が良いと思います。それを一度パース、名前解決した結果の抽象構文木のような状態で保存しておくイメージです。再編集するときは、名前を使ってシリアライズしてコードにしてから書き換えてまたパース、保存という流れです。

2010-09-26 00:05:34
非実在naka aki @naka_aki_spl

@pokarim DBにデータをおくときの人工キー方式(俺がよく使う言い方だとID方式)に通じるかんじがしますね。

2010-09-26 00:07:25
非実在naka aki @naka_aki_spl

そういや「関数名は通し番号にしろ」というITゼネコン的お仕事のとき、いったん普通に書いて、そのあと自作の変換プログラムで置き換えをしたんだったな。んでそのときORMの自作も練習してて(ww)、置き換えデータはOracleにおいたんだっけ。特に意味はないけど。Rubyだったな。

2010-09-26 00:08:46
非実在naka aki @naka_aki_spl

ORMじゃねえな。もうひとつ下の層だ。…そのせつは皆様に大変なご迷惑を…m(__)m

2010-09-26 00:09:10
pokarim @pokarim

@naka_aki_spl まさにそれをイメージしてました。自然キーを使うが故の問題とプログラミングの名前の問題は共通する点が多いと思っています。

2010-09-26 00:09:29
残りを読む(59)

コメント

tomo🐧@learning @cocoatomo 2010年9月26日
えー, だんだんとごった煮状態になってきました.
0
tomo🐧@learning @cocoatomo 2010年9月26日
俺のタイムラインから見える範囲の発言を追加しました. 後, 内容と合ってなかったのでタイトルをガラッと変えました.
0
シャミノ @syamino 2010年9月26日
関係ありそうな記事を置いておきます. 「Martin Fowler's Bliki in Japanese - 言語ワークベンチ」 http://capsctrl.que.jp/kdmsnr/wiki/bliki/?LanguageWorkbench
0
tomo🐧@learning @cocoatomo 2010年9月28日
なんか今日も IDE という言葉が出てきたので追加. 取り留めが無くなってきた...
0