プログラマの方に質問です。


あなたはプログラム言語あるいはアーキテクチャの「深遠な世界」まで見えていますか?もし見えているのだとすれば、その世界を少しだけ説明してもらえませんか?(私はnonプログラマなのでアーキテクチャ等の言葉の使い方が間違っていたらすみません)

ある質問内の言葉に感銘を受けてこのような質問させてもらいました。みなさんよろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2007/04/21 08:25:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:studioes No.1

回答回数523ベストアンサー獲得回数61

ポイント27pt

 見えている、の意味を量りかねるけど、わかっている・考えている、みたいな意味だとすると・・・

 HPCをやっていた頃は、CPUを考えて開発していましたね。

 例えば、論理的に同じ処理を実装するときに、1行で書ける命令を使うとCPU内部では28クロックかかるけど、命令を分割すると8+10+4クロックで処理できるであるとか、パイプラインの都合で命令順序を入れ替えて実行すると数クロック早く終了するなどありますね。

 あとは、条件判断でTRUEに書くよりもFALSEに書いた方が高速なことがあって、条件を反転するなど。

 コンパイラレベルの話でも、深い呼び出しをすると、オプティマイザが効きにくくなるので、浅い構造にするなどはパフォーマンスチューンでやりましたね(関数にまとめれば保守などは楽ですが、呼び出しコストがかかるので、速度重視では毎回コピペしたりします)

id:sibazyun No.2

回答回数1824ベストアンサー獲得回数246

ポイント27pt

「深遠」かどうかはわからないけれど、アセンブラでやってると、#1の方と同じように、機械語のビット構成まで考えますね。たとえば、1命令中、8ビットで自分のアドレスから127まで先には直接飛べるとき、そっちに飛んでから分岐した方がよいか、直接ダブルワードで分岐先アドレスをとったほうがよいか、など。

(すみません、nonプログラマの方にはわかりにくいかもしれませんが。。。)

id:ksh No.3

回答回数315ベストアンサー獲得回数9

ポイント26pt

胸を張って「深遠な世界」まで見えています、という自信があるわけではないですが、nonプログラマな人に体験できないことを体験できたと思っています。

プログラム言語:

それなりに使われているプログラム言語は「その言語での世界観」というものがあると感じます。それは時に言語の設計者が意図していないものであったりすると感じています。

プログラムを実装する方法は1つではないため、プログラマはなんらかの観点でもっとも良いと思われる実装方法を選択する必要があるわけですが、そこで「自分の選択」と「言語の世界観」が「溶け合っている」と感じたとき、生産性も品質も良く、メンテナンス性も高いという「すばらしいプログラム」ができたりします。そんなときには、自分がコードを書いたという感覚ではなく、ディスプレイの向こうから「こう書いてくれ」という声が聞こえるような気がします。

アーキテクチャ:

プログラム単体でなく、システム全体を通してミドルウェアとアプリケーションがどのように切り分かれ、またそれぞれの内部でも、どのような構造で各処理がなされるのがもっとも妥当であるかを検討し決定するのがソフトウェアアーキテクトの役割だと思っています。

システム全体についてそのような役割を担ったことはありませんが、システムの一部について、そのようなポジションで仕事をした経験があります。うまくいったシステムで、発生する様々なイベントがあたかも「ピタゴラスイッチ」の仕掛けのように、時にはさらりと、時にはゆったりと、しかし全て意図したとおりにフローを流れてゆき、あるべき処理を行ってゆくのを見るときの感動はなんともいえないものがあります。

まあ、プログラミング等に限らずとも、そういうことはある程度あるとは思いますが、とりあえず私感を書かせていただきました。

id:tokyosmash

みなさん回答ありがとうございます。

一つ一つの回答にコメントを付けられるほど皆さんの書いている内容がわかりません・・。

そのうち少しでもわかるようになればと思います。


思ったより回答がつかないのは「深遠な世界」などと抽象的な表現をしたからでしょうか。そんなに堅苦しく考えずに、気軽に回答頂ければありがたいです。

2007/04/17 18:31:08
  • id:taknt
    >あとは、条件判断でTRUEに書くよりもFALSEに書いた方が高速なことがあって、条件を反転するなど。

    へーそんなことがあるんですね。

    いったいどういう状態で そうなるのかな?
  • id:studioes
    大体の場合に答えがfalseとなる場合に

    実際に機械語になると・・・
    判定
    成立したら成立した場合の処理にジャンプ
    ~成立しない場合の処理~
    ~プログラムの続き~

    ~成立た場合の処理~
    プログラムの続きにジャンプ
     こんな構造になったりします。
     この場合、成立したら往復する分クロック数が増えます。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません