アカウント名:
パスワード:
>私の同僚は非常に頭がよく、ソフトウェアの知識も豊富だという情報が真ならば、以下のように考える。
>すべてのプログラムは1つの関数に詰め込まれ、際限ない繰り返しのせいで無駄に引き伸ばされている→関数呼び出しのオーバーヘッドが無視できないくらい大きいプロジェクトであるということを同僚は把握している。
>変数名やクラス名から得られる情報は泣きたくなるほど少ない→変数名やクラス名を冗長にすることのデメリットが、そうでない場合のメリットを上回って大きいことを同僚は把握している。
>コードを短く、読みやすくするための基本的な言語機能は無視されて
そういう記述が必要な場面もある、ということはわかりますが、いまどきのコンパイラはしかるべきコンパイルオプションを指定すれば関数呼び出しのインライン展開やループ展開くらいしてくれます。(最適なオプションを見つけるのに多少の試行錯誤は必要ですが、手で展開するよりは楽でしょう)
初期のガラケーのJavaアプリなんかはメモリ制限やJavaランタイムの最適化機能の関係でOOP言語らしからぬ記述が必要でしたが、そのうちバイトコードレベルの最適化変換機が出現し、さらに機器やJavaランタイムの性能も向上して、いまどきはそういう記述の必要も薄れています。
「ソフトウェアの知識も豊富」というのが真ならば
コンパイラがどの程度最適化しているのかは把握しているし把握しようとしているはずでしょう。;
だったら、コンパイラが最適化できない環境であるということなのではないでしょうか?
>コンパイラの最適化がしょぼくて手で最適化せざるを得なかった時代の記述スタイルのままの可能性があります。そうならば、「ソフトウェアの知識も豊富」では決してないわけです。
質問者がソフトウェア開発に不向きであるということが質問文から読み取れるわけでそればらな、その質問者がとやかく言える立場でないことは明らかでしょう。
>いまどきのコンパイラはしかるべきコンパイルオプションを指定すれば関数呼び出しのインライン展開やループ展開くらいしてくれます。>(最適なオプションを見つけるのに多少の試行錯誤は必要ですが、手で展開するよりは楽でしょう)
それでは不十分な系はいくらでもありますよ。プロセッサが特殊であれば、コンパイラはチューニングされていないことはしばしばありますし、だからといって単一のミッションのためにコストを度外視してコンパイラをチューニングすることは深刻なバグの原因になりえます。そもそもC/C++のコンパイラの場合、インライン指示したからといってインライン展開されるとは限りません。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stay hungry, Stay foolish. -- Steven Paul Jobs
えっと (スコア:0)
>私の同僚は非常に頭がよく、ソフトウェアの知識も豊富だ
という情報が真ならば、以下のように考える。
>すべてのプログラムは1つの関数に詰め込まれ、際限ない繰り返しのせいで無駄に引き伸ばされている
→関数呼び出しのオーバーヘッドが無視できないくらい大きいプロジェクトであるということを同僚は把握している。
>変数名やクラス名から得られる情報は泣きたくなるほど少ない
→変数名やクラス名を冗長にすることのデメリットが、そうでない場合のメリットを上回って大きいことを同僚は把握している。
>コードを短く、読みやすくするための基本的な言語機能は無視されて
Re: (スコア:1)
そういう記述が必要な場面もある、ということはわかりますが、
いまどきのコンパイラはしかるべきコンパイルオプションを指定すれば関数呼び出しのインライン展開やループ展開くらいしてくれます。
(最適なオプションを見つけるのに多少の試行錯誤は必要ですが、手で展開するよりは楽でしょう)
初期のガラケーのJavaアプリなんかはメモリ制限やJavaランタイムの最適化機能の関係でOOP言語らしからぬ記述が必要でしたが、そのうちバイトコードレベルの最適化変換機が出現し、さらに機器やJavaランタイムの性能も向上して、いまどきはそういう記述の必要も薄れています。
Re:えっと (スコア:0)
「ソフトウェアの知識も豊富」というのが真ならば
コンパイラがどの程度最適化しているのかは把握しているし把握しようとしているはずでしょう。;
だったら、コンパイラが最適化できない環境であるということなのではないでしょうか?
>コンパイラの最適化がしょぼくて手で最適化せざるを得なかった時代の記述スタイルのままの可能性があります。
そうならば、「ソフトウェアの知識も豊富」では決してないわけです。
質問者がソフトウェア開発に不向きであるということが質問文から読み取れるわけで
そればらな、その質問者がとやかく言える立場でないことは明らかでしょう。
>いまどきのコンパイラはしかるべきコンパイルオプションを指定すれば関数呼び出しのインライン展開やループ展開くらいしてくれます。
>(最適なオプションを見つけるのに多少の試行錯誤は必要ですが、手で展開するよりは楽でしょう)
それでは不十分な系はいくらでもありますよ。プロセッサが特殊であれば、コンパイラはチューニングされていないことは
しばしばありますし、だからといって単一のミッションのためにコストを度外視してコンパイラをチューニングすることは深刻
なバグの原因になりえます。そもそもC/C++のコンパイラの場合、インライン指示したからといってインライン展開される
とは限りません。