本ブログの更新について
本ブログの更新は2016年3月31日をもって終了しました.ありがとうございました.
posted by みっちぃ (管理人)
2007年02月18日
自動生成されたソースコードはきもちぃ〜か?
先ほどまで友人と話していて,ふと思ったので少し考えてみることにします.論文書かなければいけないのですけど,ちょっと気合が抜けてしまったので.
ソースコードを読んだり修正するとき,ストレスが少ないのはたぶん自分のソースだと思います.しかし,他人の書いた“きれいなソース”を体験すると価値観が変わることでしょう.きれいなソースは見た目にも綺麗ですし,読んでいても綺麗なのです.まさに職人のなせる技です.だから気持ちぃ.
一方,自動生成されたソースは気持ちぃ〜でしょうか?直感的に,答えはNOです.それはちょうど,手打ち蕎麦に例えてもよいかもしれません.職人の作った蕎麦は風味の豊かさだけでなく,見た目の美しさもあります.機械で作られた蕎麦にはとても真似できません.そこには職人の経験と勘が生かされています.ソースコードも同様だといえるでしょう.
大事なのは,ソースコードの自動生成は何を目的としているかということです.「工数の削減」が主な目的とだと思いますが,本当に効果を得ているでしょうか?自動生成されたソースが汚ければ,メンテナンス性が低下して,かえって工数が増えてしまうなんてことになりかねません.
気持ちぃ〜ソフトウェアの研究は,ソースコードの自動生成が目指すべき“綺麗なソース”を定義するために必要不可欠のような気がします.どのようなソースコードが気持ちぃ〜のか,まずはこのテーマから掘り下げていくべきかもしれません.
ソースコードを読んだり修正するとき,ストレスが少ないのはたぶん自分のソースだと思います.しかし,他人の書いた“きれいなソース”を体験すると価値観が変わることでしょう.きれいなソースは見た目にも綺麗ですし,読んでいても綺麗なのです.まさに職人のなせる技です.だから気持ちぃ.
一方,自動生成されたソースは気持ちぃ〜でしょうか?直感的に,答えはNOです.それはちょうど,手打ち蕎麦に例えてもよいかもしれません.職人の作った蕎麦は風味の豊かさだけでなく,見た目の美しさもあります.機械で作られた蕎麦にはとても真似できません.そこには職人の経験と勘が生かされています.ソースコードも同様だといえるでしょう.
大事なのは,ソースコードの自動生成は何を目的としているかということです.「工数の削減」が主な目的とだと思いますが,本当に効果を得ているでしょうか?自動生成されたソースが汚ければ,メンテナンス性が低下して,かえって工数が増えてしまうなんてことになりかねません.
気持ちぃ〜ソフトウェアの研究は,ソースコードの自動生成が目指すべき“綺麗なソース”を定義するために必要不可欠のような気がします.どのようなソースコードが気持ちぃ〜のか,まずはこのテーマから掘り下げていくべきかもしれません.
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/3369938
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/3369938
この記事へのトラックバック
なぜなら真に自動生成すべきはプログラムでありソースコードではないからです。
つまり本質的に自動で作れるソースは自動で作る必要が無く、
共通化できるロジックを、コピペして部分的に書き換える行為に等しいわけです。
ただ,「ソースコードの自動生成とはもっとも愚か」と言い切ってしまうと,ちょっと違うのではないかと感じるのです.利用者の要件をそのままプログラム化できたときに,ソースコードは本当に不要なのでしょうか.
たとえば,自動生成されたプログラムに不具合が見つかったときにどのように治しましょうか.まず,原因個所の特定のためにプログラムの振る舞を細かい粒度でわかりやすく表現する手段が必要であると考えます.いくつかの表現方法があると思いますが,技術者が扱いやすいと感じるのは,おそらく現状では「ソースコード」ではないでしょうか.
私が言いたいのは、自動生成されたソースコードを手直しする形になってしまうことが愚かという意味です。
自動生成されたプログラムに、手動でソースを追加することである程度自由に拡張でききる構造とするべきと言うことです。
「自動生成されたソースコードを手直しする形になってしまうことが愚か」というのはおっしゃる通りですね.ただ,“手直し”と「手動でソースを追加すること」の違いは考える必要がありそうです.
手動でソースを追加することの目的として,保守的な観点が含まれると思うのですが,ソフトウェア品質特性(ISO/IEC9126)で定義される品質の6特性のうちの一つに「保守性」があります.もし,自動生成されたソースコードが保守性の悪いものだったとしたら,それがソフトウェア要求を満たすものであったとしても品質は良いとは言えないことになります.しかしながら,その観点はソースコードの保守性に注目した場合であって,自動生成器に入力する段階で保守のための操作が可能なのであれば,自動生成器が出力するソースコードは保守性が悪くても良いといえるかもしれません.
自動生成器が出力するプログラムのソースコードを、保守の際に人が読むというプロセスが発生してしまう時点で、その自動生成は失敗していると言えます。