作者: Yukihiro Matsumoto
日時: 2003/2/04(23:53)
まつもと ゆきひろです

In message "[TSpython:308] モザイクで巨大壁画を・・・"
    on 03/02/04, "機械伯爵" <kikwai@...> writes:

| 例えば極端な例で、AWKとPythonを比較してみましょう。
|
| AWKをプログラミング言語とするかどうかは難しいとこ
|ろですが、とりあえずCSVのような2次元テキストデータ
|を処理するのには、絶大な威力を発揮します。
|
| PythonでもAWKと似たようなことはできないわけではな
|いですが、AWKの専門分野のような処理を行おうとすると、
|どうしても記述に無駄が多くなりますし、AWKに比べて見
|やすいコードが書けるかといえば、必ずしもそうではあ
|りません(処理速度たるや、比較にならないでしょうし)

同じ問題を解決するプログラムをAWKとPythonで記述した場合、AWK
の方が分かりやすいケースがある、という主張だと理解しましたが、
よろしいでしょうか。

別に反対はしません。そういうこともあるでしょう(そうでないこ
ともあるでしょう)。しかし、その差はさほど大きくないとは思い
ますし、たとえばPythonとAWKを比較してAWKの方が圧倒的に短いと
か、圧倒的に読みやすいとかってことはないと思いますし, AWKの
方がPythonより速い局面というのもかなり限定されると思います。
AWKだとちょっと複雑なことをしようにもライブラリがないし。

Pythonがあるのに今さらAWKなんてというのがニュータイプの正直
な印象でしょう。

| AWKよりもうちょっと詳しい記述をしたいならIconのほ
|うが使いやすいでしょうし、計算をせずにフィルタリン
|グのみに専念するのなら、sedのほうが使いやすいかもし
|れません。
|
| Iconでパワー不足ならPerl、Perlのモジュールが一定
|以上大きくなりそうならRubyやPython。

まったく客観的でない個人的な意見ですが、適用分野ごとに言語を
切り替えるというアプローチはだんだん時代遅れになっていくので
はないかと思います。昔はsh, AWK, sedなどツールを使い分け、そ
れらの能力を駆使したプログラミングが行われていたわけですが、
正直なところ、Perl以後の現代ではひとつの言語がカバーする領域
はどんどん広くなっていると思います。以前はshで書いていたもの、
あるいはCで書いていたものまで「スクリプト言語」の守備範囲に
なってきているという。

| 今回は出発地点がAWKでしたから、こんな感じになりま
|したが、処理内容の規模といった非常に単純なベクトル
|であっても、それぞれ「これくらいならコレがベスト」
|と思う言語があると思うのですが、いかがでしょう?
|
| 汎用言語になればなるほど、特化した文法を組み込む
|ことが困難となり、ライブラリやモジュールを使用する
|ことになるわけですが、ライブラリやモジュールを使う
|ことは、それだけ「素早さ(記述の少なさ・・・さらに
|は見易さ)」を犠牲にしていることを考えざるをえませ
|ん。

言語の切り替えにはコストがかかりますから「これくらいならコレ
がベスト」を追求するより前に「そこそこデキるヤツで、ほとんど
全部カバー」というアプローチの方が総合的なコストは低くなると
いうのが現実のような。そして、そういうアプローチが許容される
言語がすでに登場してきていると思うのです(Pythonとか)。

                                まつもと ゆきひろ /:|)