花子's Blog

目次

書庫

Blog 利用状況

はじめてのC。。。ちょいエロ?

ネタ元:インクリメント演算子

R.田中さんのブログを見て、初めてプログラミングをした日々を思い出しました。

 

就職して最初の配属先は、小型汎用機のCTRON準拠OSをC言語で開発していました。

プログラミング初心者の私は、先輩から渡された「はじめてのC」という本を片手に四苦八苦という状態で、

「正しく動作する」ものを作ってテストしてが、いっぱいいっぱいでした。

# この頃、この本のタイトルを声に出して言うのがためらわれたっけ。。。

でも、正しく動作するだけぢゃだめで、「性能バグ」なるものがあり、作っては直し、直してはダメだしされ。。。

そのときの1つに、「インクリメント・デクリメントはどっちでも良ければ前置」というものがありました。

これが染み付いてしまっているので、意味のない後置は落ち着かないです。。。

# 先輩の怒鳴り声が今でも聞こえるようで。。。

 

他にも、「ifとelseのifやcaseの順は性能ルートから」とか、

「for文の条件式はできるだけ定数と(0との比較がBest)」とか、

「ローカル変数の定義順は性能ルートで使用回数の多いものから先に」などなど、

数えきれないくらいのダメだしでした。

「あと3ステップ(アセンブラレベルで)性能向上して」みたいな、お題を出されたりも。。。

今思うと、C言語なのに、めっちゃアセンブラに落ちたコードを意識したものでした。

 

今では、あんなにシビアな性能を要求されることはないのですが、

「三つ子の魂」で覚えてしまったので今でも抜け切れません。。。

 

投稿日時 : 2007年7月17日 16:02

Feedback

# re: はじめてのC。。。ちょいエロ? 2007/07/17 17:17 とっちゃん

いい先輩だw

ちなみに、意味のない前置・後置はどっちがいいかは、実際はコンパイラ依存だったりしますw

>「あと3ステップ(アセンブラレベルで)性能向上して」みたいな、お題を出されたりも。。。

コードが 65537バイトだから何とか汁!データが16385だから何とか汁!
なんてのもww

いまじゃ、なにそれ?な話ですが...w

# re: はじめてのC。。。ちょいエロ? 2007/07/17 17:44 ながせ

そういう話はいまだにやってるんですがw

プロセッサにも寄るんですが、
for( i = 0 ; i < n ; i++ ) { ; }

より、
for( i = n ; i > 0 ; i-- ) { ; }

のほうが、0判定が早いとか orz

# re: はじめてのC。。。ちょいエロ? 2007/07/17 17:45 花子

>いまじゃ、なにそれ?な話ですが...w

そうですね。。。
でも、ふと思い出して懐かしくなりました。

# re: はじめてのC。。。ちょいエロ? 2007/07/17 18:06 ぽぴ王子

花子さんにしても、ながせさんにしても、たぶん組み込み系だから
そういうのがあるのじゃないかと思いつつ。
# とっちゃんが言うように、PCの世界だと「なにそれ。塩味?とんこつ?」
# で終わっちゃうような世界ではありますね。

でもそういう基本的なことをてってーテキに叩き込んでくれた先輩は
やはり良い先輩なのではないかと私も思います。
とか言いつつ、インクリメントに関しては後置派ですが。

つーか、はじめてのCのネタ(ネタじゃねえ)って、今の人はわからない
かもしれませんな。
電車の中で「はじめてのC」を読んでいて女子高生に笑われた、とか。

PC-88版の現代大戦略のプログラマが「あと30バイトあれば敵のデータを
もっと強くできたのに」と、ある本で語っていたのを思い出しました。

# re: はじめてのC。。。ちょいエロ? 2007/07/17 19:55 とっちゃん

>for( i = n ; i > 0 ; i-- ) { ; }
i = n;
while( i-- != 0 ){ ; }

i = n+1;
while( --i != 0 ){ ; }
でねーの?

デクリメントの実装次第だけど、ほとんどのCPUはどっちかが最速に...w
#ま、ほかのコード次第だけどさwww
ま、ふつうは、ポインタをこれに絡ませて...(--;


え?コンパイラが面倒みてくれるって?
#時代が違うのか?ほんの10年ちょっと...orz


>あと30バイト
結構有名なネタ...だよね?そうだよね?そうだといってくれ~!<おい!

# re: はじめてのC。。。ちょいエロ? 2007/07/17 20:53 中博俊

JZとかJNZとかありますもんね。

# re: はじめてのC。。。ちょいエロ? 2007/07/17 20:55 えムナウ

>コードが 65537バイトだから何とか汁!
コードが62kBちょっとだから機能追加はやばいです。
そんな話を今リアルでしてます。

全然昔の話じゃないですよ。

# re: はじめてのC。。。ちょいエロ? 2007/07/18 10:30 花子

>ながせさん、えムナウさん

まだまだ現役な話なんですね。
また、そういう仕事してみたいな。。。


>ぽぴ王子

持ち歩くときは「はじめてのC」にカバーをかけてました。。。
でも、このネタは歳がばれちゃうのね。。。

# re: はじめてのC。。。ちょいエロ? 2007/07/18 11:12 ぽぴ王子

> あと30バイト
残念ながらネタではありません(ぉ
というか、かなり昔の話なので細部までは覚えていませんが、そんな感じのことを
言っていた気がします。20バイトとかだった気もしますが。
「強くできた」じゃなくて「○○を実装できた」だったかも。

ハイドライド3なんかだと、本体メモリにおさまりきらなくなっちゃって、FDDの
コントローラが持っている隠しメモリを活用したとかそういう話もありました。

以上、山下章の「チャレンジ!パソコンRPG&AVGシリーズ」より(ぉ

えムナウさんもおっしゃってますが、組み込みだとこの手の話はまだ現役なんですね。
さすがにアセンブラで全部開発とかは今はないと思うけど(笑)それでもコンパイラが
吐くコードを意識しつつ…っていうのは今でもあるんだなと。
いや、僕は組み込み系の仕事はしたことはありませんが。
# やらされそうになったことならある

# re: はじめてのC。。。ちょいエロ? 2007/07/18 11:55 Ƃ

FDDコントローラのメモリとかは、かなり早い時期から利用されてますよw
データエリアだったりするんで、いわばオンメモリキャッシュみたいなものですけどw

ちなみに当時の30バイトと言ったら、今のPCなら...
1Gくらいの価値はあるんじゃないかなぁwww
#それくらい貴重な存在だったんだもの

組み込み系は...現在進行形で手動最適化はやってるはず。
コンパイラの性能とかかなり上がってるらしいですがそれでも追いつかない部分もあるらしいし...

まぁ、おいらもDOSのころは、
static void near func(...);
なんてのは普通に書いてたしw

EMS/XMS なんかもガンガン使ってたし、BANK-RAM も対応してたなw

他にも、huge モデルは速度が稼げないので使わないとか...w
huge ポインタにしないで自作ポインタ演算とかあったりとか...w
フラットモデルになってすげー楽になったもんなぁw
#その分OSが頑張ってくれてるわけでwww

でも、この辺の概念知らないと、dword ptr [esp+4] とかわからんのやろうねw

#ここまで書いて爺ネタと思ったwww
#大阪の懇親会ネタなのに~w

# re: はじめてのC。。。ちょいエロ? 2007/07/18 12:09 花子

話が濃くなってきた。。。
みなさんの背中が遠くて、私には、もう手が届きません。

懇親会ネタ?
8/18の大阪勉強会に参加しようかな。

# re: はじめてのC。。。ちょいエロ? 2007/07/18 14:12 とっちゃん

手取り足取り...ん?違うな。
手ぐすね引いて...ん?それも違う気がするぞw

8月大阪は、トリセッションがそのまま懇親会のネタフリセッションという飛んでもねー企画で計画されています。

え?そんなことは聞いてない?
だってどこにも書いてないもの<おい!

ま、まだ煮詰めてないどころか青写真もできてないんですが...orz

とりあえず、濃いーネタになることだけは確実です。

なにせ元が DeepSession の候補だものw

# re: はじめてのC。。。ちょいエロ? 2007/07/18 14:25 花子

めっちゃ行きたくなってきた!
でも、8/4の東京勉強会に登録済みだし。。。
でもでも、夏休みラストイベントとして行っちゃおうかな。。。
でもでもでも。。。

もうちょっと悩もう。。。

# re: はじめてのC。。。ちょいエロ? 2007/07/18 15:52 R・田中一郎

># この頃、この本のタイトルを声に出して言うのがためらわれたっけ。。。

今は平気ということでしょうか。
次にお会いする日が楽しみですw

# re: はじめてのC。。。ちょいエロ? 2007/07/18 15:54 とっちゃん

ちなみに、履修科目は、6月と8月のかるぼさんのセッションだったりします<おい!

ま、.NET とは違ってもっとCPUよりな話ですけどwww
#アセンブラレベルまでは下りない予定...w

きっと8月の懇親会でちょびっとネタばれ...もとい
セッションネタ用に前ふりはあるかもしれませんw
#おいらの気分...ではなくその場の雰囲気次第ですがwww

# re: はじめてのC。。。ちょいエロ? 2007/07/18 16:16 花子

>今は平気ということでしょうか。
 うぅっ。もう戻れない。。。

>次にお会いする日が楽しみですw
 今週末ですよん!

>ちなみに、履修科目は、6月と8月のかるぼさんのセッションだったりします
 先生!履修済み&履修予定です!

# re: はじめてのC。。。ちょいエロ? 2007/07/18 20:18 とっちゃん

>履修済み&履修予定です!
ばっちりです。
8/18 大阪は、福島駅の近くでお待ちしておりますw<おい!

#ちなみに、履修は必修科目ではありませんww

# re: はじめてのC。。。ちょいエロ? 2007/07/19 1:46 RAPT

>はじめてのC
高校生の頃に読んだ記憶が。。
ま、初めて C 触ったのが高校生の頃なんですが。

VC++6 standard edition には、最適化機能は付いていないので、
アセンブラコードを見ながら手動最適化を行った時期もありました。
C++のクラスで同じメンバ変数を何度も参照する場合、
一度ローカル変数にコピーしてから参照した方が速い、とか。

最近はあんまり気にしていませんが。

ちなみにインクリメント/デクリメントは前置派です。

# re: はじめてのC。。。ちょいエロ? 2007/07/19 10:49 花子

>VC++6 standard edition には、最適化機能は付いていないので、
>アセンブラコードを見ながら手動最適化を行った時期もありました。

PCでも「あり」なんですね。
でも難しそう。。。すごいなぁ。
私の場合、自分で見つけたわけではなく、教えてもらっただけだから。
理由(アセンブラ)も教えてくれたから、それなりには分かるけど。。。

# C++の掲示板でよく見かけるPARTさんに書き込んでもらえて、かんどーしてますぅ。

# re: はじめてのC。。。ちょいエロ? 2007/07/19 11:25 なかひろとし

8月18日大阪で会いたいなぁ~~~

# re: はじめてのC。。。ちょいエロ? 2007/07/19 12:04 花子

8/18に参加した場合、

7/21 オブジェクト指向分科会
8/4 東京勉強会
8/18 大阪勉強会

隔週で「わんくま」だ!

セッションを聞きたいというのもありますが、
職場に同業者がいない私は、みなさんに会って話ができるのも嬉しいんです。
登録しちゃおうかなぁ。。。

# re: はじめてのC。。。ちょいエロ? 2007/07/19 12:35 とっちゃん

おいらの、7~8の予定は...
7/6 -> 2次会(3時解散)->こっぴどく叱られた!
7/21 -> 2次会(ぎりぎり終電?) -> まぁなんとか...
8/4 -> 2次会(ぎりぎり終電?) -> まぁなんとか...
8/18 -> 2次会 -> 夜行?(早朝帰宅) -> かなり微妙...
8/21~24 -> 毎日遅い... -> 毎日怒られる!
9/21 -> いつまで~ -> やっぱり怒られるw

という予定ですw<おい!
ちなみに、21~24 のわんくまデーは、22/23 ですw
#BoF は 23 ですがw

# re: はじめてのC。。。ちょいエロ? 2007/07/19 13:02 花子

とっちゃんさんの、すんばらしいスケジュールを見て
8/18、ぽちっと登録しちゃいました!
もちろん懇親会も参加ですぅ。

# 明日からお弁当貯金しよっ!
# ちゃんと早起きしてお弁当作らなくっちゃ。

# re: はじめてのC。。。ちょいエロ? 2007/07/19 16:09 中博俊

まってるよ~~

# FIclkfeUMRe 2022/04/19 11:55 johnansaz

http://imrdsoacha.gov.co/silvitra-120mg-qrms

タイトル
名前
Url
コメント