Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

誰がつくっても同じソースになる言語

特定言語のソースを生成するジェネレータ定義語が言語に含むか否かは見解が分かれますが、広義で言語になると思っています。
XMLが言語に分類されることもあるので、「言語」の規定も広いです。
多くの言語は「汎用言語」を標榜していて、適用範囲は大きいです。科学計算をコボルで記述することも不可能ではないくらいです。
どの分野のアプリにも対応できるために、構文、文法も広くなっています。
開発者は各人独自のスタイルをもっています。
開発標準が在り、同一の仕様書に基づいて、作成しても同一のソースが上がってくることはマズありません。
 こういう世界に住んでいると、違う発想の話は新鮮に聞こえます。
「スペリア」という言語製品の話を聞きました。
http://www.carrera.co.jp/speriatoha.html
 開発者の主張は
「C#,JAVA/VBなどは汎用すぎて、ソースに個性が出る。
 汎用言語はなんでもできる反面、開発者が去ってしまうと。保守できなくなる。それが欠点だ。
 顧客は、業務がしたいのであって、ソースの保守はしたくない。保守できないソースは負の資産だ。
 誰が作っても、同じソースが出来るのが、本来の業務向け言語て有るはず。
 何十年たっても、同じソースで動き、保守可能になれば、負の資産にはならない。
 当製品はそういう製品だ。使いたくなっただろう。買ってくれ。

うーん。私は、「スッキリしたソースが読みやすく、保守性が高い」と考える派で、開発者の能力・経験で同じソースに仕上がるのは不可能だし、それだから言語なのだと思う。
「日本人ならだれでも同じ文章を書く」なんて気持ち悪いですしね。否定的で反発したのですが、逆襲されました。

「確かに、WPF/LINQ/AJAX/正規表現/.....いろいろと新機能は次々と登場する。しかし、業務アプリの仕組みはコボル登場以前から変わっていない。
 データを入力して、蓄えて、定型書式で出力するだけだ。この流れは10個程度のパターンに分類できる。
 当製品の言語は、パラメータに近い文法で記述したソースだ。、それだけで業務パターンを実行できる優れものだ。
 新人もベテランも、誰が作っても同じソースを記述することになる。それだけ生産性が高まる。
 今後何十年たってもこの姿は残る。すなわち安定した製品である。
  買わないか。

 私と方向性が違うので、ゴメンナサイ。しました。
確かに、特定業務では、コボルでも十分対処できているので、何十年も同じスタイルなのが良い面もあるので、否定するものではありません。
でも、業務アプリがいつまで、その範囲で収まっているとは思えない。エントリー端末がキーポードからバーコード、OCRに変わったり、商品にICタブが付くようになれば、データエントリ系のアプリは変わるでしょう。
集計も「期間、部署、分類、集計方法..」を指示して集計する形式が続くとは思えません。一発指示一発集計が実現すれば、言語も大きく変わるでしょう。
新機能は、言語に加わる機能というより、開発設計を左右するものと私は思うのです。
Linqが使えるから、Linqを使う前提で設計できるし、SQLで集計ができるからSQLを前提に設計ができます。曖昧検索も正規表現を前提に設計できます。
作成者の個性差がソースに出るのは、マイナス面と見えますが、プラス面のが遙かに大きいです。(と信じたい。)
汎用性や新機能を否定し、同じソースを生み出す言語や開発標準は、短期間的にはメリットかも知れませんが、長期視点では納得できませんでした。

投稿日時 : 2009年6月22日 0:05

Feedback

# re: 誰がつくっても同じソースになる言語 2009/06/22 1:35 aetos

> 業務アプリの仕組みはコボル登場以前から変わっていない。

確かに、そうと言えば、そうかも。

> 業務アプリがいつまで、その範囲で収まっているとは思えない。

それは、やっぱりそうかも。
じゃあ、それが打ち破られるのはいつだろう。
それを劇的に変えるような技術ってなんだろう。

もし SQL がなかったら…と考えると、すごくインパクトが大きい。
今のところ、それに匹敵する技術は無いような気がする。

# re: 誰がつくっても同じソースになる言語 2009/06/22 1:35 Pasie.

 個人的には興味はありますね(笑
 ただ、SQLや正規表現ですら同じコードになんかならないのにどうやって?という根源的な疑問はとりあえず忘れることとして…

>業務アプリの仕組みはコボル登場以前から変わっていない
 仰ることごもっともでございます。というのは前提として、2つ疑問が。
 としたときに、なぜCOBOLが廃れた(少なくとも新規でCOBOLという意識が衰えた)のはなぜなんでしょう?という疑問が1つ。
 それと、そうであればCOBOLの実装をWindowsにもってきて普及させればいいのでは?という疑問が1つ。
 このあたりは、どうやって答えてもらえるのだろうか。


 ただ、現在のプログラミング言語が複雑だ、よって生産性を下げている、というのは誤解を恐れずに言えばある程度正解だと思っていて、Cが主流になるまでの言語は、ステートメントや関数の数が限られていたために、あることをしようとしたときに書かれるコード(手段)がほぼ固定できていたというのはあるんですよね。まあCでもファイルを操作するのは、fopen()だろとか。
 それに対して.netやjavaって?複数のパスがあるんですよね。ってところから複雑で、オブジェクト指向もまた複雑なので、まあ確かにそういうところでは仰るとおりかな。とか。
 ただ、なぜCが、オブジェクト指向が脚光を浴びたのかを無視されるとちょっとね。あと大きな欠点としては、その言語を覚えたところで、つぶしが利かないとか、"なによりもおもしろそうにない"というところをもう少し考えてもらえるともうすこし良いビジネスになるんじゃないかなあとか。

# re: 誰がつくっても同じソースになる言語 2009/06/22 1:39 aetos

> 開発者が去ってしまうと。保守できなくなる。それが欠点だ。

これは一概にそうとは言えない。
確かに保守に一定のスキルを必要とするのは確かだけれど、そこをケチるのはいいこととは思えない。

> 顧客は、業務がしたいのであって、ソースの保守はしたくない。

ソースの保守って顧客がするの?
開発したところと保守契約を結ぶことまで含めて「顧客がソースの保守をする」って言ってる?

本当にユーザーがソースをいじくる必要があるのであれば、汎用言語は確かに向かないと思う。
それで満足なアプリが作れるなら、だけど。

# re: 誰がつくっても同じソースになる言語 2009/06/22 12:57 choir

>汎用言語はなんでもできる反面、開発者が去ってしまうと。保守できなくなる。それが欠点だ。

そこでコーディング規約ですよ。
新機能全部使用禁止にすればオーケー。

再帰禁止delegate禁止Form以外のクラス作成禁止etc.

# re: 誰がつくっても同じソースになる言語 2009/06/22 15:58 れい

Ognacさん。
>> 今後何十年たってもこの姿は残る。すなわち安定した製品である。
>> 買わないか。

という話なのに

> 短期間的にはメリットかも知れませんが、長期視点では納得できませんでした。

と、利点を全否定しちゃってますね…
かわいそうに。


aetosさん。
> もし SQL がなかったら…と考えると、すごくインパクトが大きい。
> 今のところ、それに匹敵する技術は無いような気がする。

私はSQL要らない。RDB要らない。DBも要らない。
嫌いデス。

Pasie.さん。
>  ただ、現在のプログラミング言語が複雑だ、よって生産性を下げている、というのは誤解を恐れずに言えばある程度正解だと思っていて
Ognacさん。
> 特定言語のソースを生成するジェネレータ定義語が言語に含むか否かは見解が分かれますが、広義で言語になると思っています。

この辺みてて思ったんですが、
プログラマーって「コンピューターにできることはコンピューターにやらせる」=「自動化」するのが仕事ですよね。
なのでIDEによる補完とか自動生成が大好きですけど、
自動化して減らしてもプログラマーの仕事はその分増えるだけですよね。

同じように物を作る普通の「職人」なら「自動化反対」と運動したり、「匠の技」で価値をこめたりできますが…、プログラマーはプログラマーであるが故にそれができないような。

なのでこういう話題をみるといつも「ジレンマ」があるように感じられます。

「誰でもできます!簡単です!」->「じゃああなたも要らないね」
「私にしかできません!」->「そんなの使えない」
「誰でも使える簡単な言語です」->「ダメ」
「一部の人にしか使えない難しい言語」->「ダメ」

うーん。
難儀な商売ですね。

# re: 誰がつくっても同じソースになる言語 2009/06/22 21:29 Ognac

>このあたりは、どうやって答えてもらえるのだろうか。
事務集計分野ではCOBOLは健闘してますね。過去のソース資産の威力は大きい。
結果の数値だけで意思決定する役職者にとっては、それで充分なのではなかろうか。
 使い勝手や見た目はPCに面している人の問題であって、それ以外の人には"値" が大きい。
そういう面では、言語だ、SQLだ云々といっているのは、開発者の独りよがりなのかもしれない。
でもスッキリ・エレガントなソースを書くために努めるのは技術者の性。.......記事の言語開発者の視点ではそれは業務開発者ではないらしいです。

Frameworkの機能が増えるとそれを有効に使う言語が生まれるのは、ありがちな流れ。
「明日、楽するために、今日の苦労は厭わない」という意識も自己満足な意見なのかも知れません。
れいさんが仰るように、万能で簡単な言語を生み出す行為は自分の頸を絞めているのも事実でしょう。
結論のでない永遠のテーマですね。
何十年コードを書いても、昨日より今日の方がスッキリ書けたと思うのは、進歩したのか、していないのか......

# re: 誰がつくっても同じソースになる言語 2009/06/22 23:21 Pasie.

>昨日より今日の方がスッキリ書けたと思うのは
 うらやましいなあ。私は日に日に駄目になっていると感じていたり。20年前の非構造化のプログラムの方が余程洗練していたのではないかとおもったりする始末…

>自動化して減らしてもプログラマーの仕事はその分増えるだけですよね。
 いや、例えばIDEとか自動化しても次の欲求が出てくる。だから減らないだけ。と思う。
 欲しい物は誤解を恐れずに言えば「メイドロボ」なんだよね。あるいは猫型ロボット。生活言語で入力が出来て、的確に意図を掴んで行動してくれる。こういうものが欲しいわけだけど"できない"から仕方ないので、現在で出来るもっともそれに近い物を実装しているに過ぎない。自動化されると、それを前提として、メイドロボに向けて、さらなる自動化を行おうとする。それでもメイドロボはまだ影も形も見えてこないので、ひたすらそれを繰り返していく。
 というのがITの現状ではないのかなあと思う限り。人間の欲求が続く限り、COBOLerの仕事はなくなってもプログラマの仕事はなくならないんじゃないかと思う。

 またまとまらなかった…(汗

# re: 誰がつくっても同じソースになる言語 2009/06/22 23:27 Pasie.

> 私はSQL要らない。RDB要らない。DBも要らない。
> 嫌いデス。

 その辺、もうすこし詳しく。
 最近SQLを勉強し始めた私の立場は?って感じなので >_<;

 その意見とは違うかも知れないけど、関係モデルってプログラムの構造化(入れ子)データとものすごく相性が悪いんですよね。どうやって関係すればいいいんだろ、と毎度の様に思うけど、良い案は未だにないんですよね。

# re: 誰がつくっても同じソースになる言語 2009/06/23 0:10 シンチャン

Windows配下で実装され、SQLやJAVAアプリケーションとも
連携できるCOBOLもあるんですけど。まだまだ、金融系
等の大規模システムではメインフレームでなくとも健闘
してますよ。

# re: 誰がつくっても同じソースになる言語 2009/06/25 0:43 Pasie.

>COBOL(中略)健闘してますよ。

 ああ、COBOLが古い言語だから、って意味ではなく。
 「COBOLerの仕事」ってところを「C++er」とか「JAVAer」に置き換えてもらっても良いです。言語は移り変われど、プログラミングという行為はおそらくなくならないという意味で。

タイトル
名前
Url
コメント