listen to my digital heartbeat.

  would you feel my analog heartbeat, too?

 

カレンダー

2019年
← December →
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

カウンター

  • 本日のアクセス  
  • 昨日のアクセス  
  • 総アクセス数      

web log parts #1

断酒継続 日!




Flag Counter

拍手ランキング

過去1週間の間に拍手はありません。

過去ログ

web log parts #2




QRコード

ブログサービス

Powered by

teacup.ブログ
RSS
投稿者
メール

 
コメント
URL
コメントは新しいものから表示されます。
コメント本文中とURL欄にURLを記入すると、自動的にリンクされます。
投稿者:bmb
いや、違います。C++が生まれて初めての言語。ただ完全に、Lispか何かと同じように多重入れ子構造の関数プログラムをC++で書いてました。
投稿者:sterai
 ところで、
>頭の中が手続き型言語でなく、関数型言語で出来ているらしい

 こういう人って面白いですね。コンピュータサイエンスの授業でLispなんかを学んだ経験があるんでしょうか。『計算機プログラムの構造と解釈』(原著"Structure and Interpretation of Computer Programs")という本が名著らしいんですが、プログラム例は全てLisp系のSchemeで書かれているそうです。
投稿者:大彦
> 一人だけで短期間に書き上げるプログラムだったら、配列を引数で渡すより、グルーバル変数を使ってしまった方がラクだと思いますが。特に関数の数が少ない場合。

僕もそう思います。なので数百行の短いやつの場合はグローバル変数を使います。でも、ちょっと長くなると、恐いですね。僕もわりとメイン関数は短く、たくさん関数を使うのが好きなタイプです。
投稿者:bmb
>個人で書いているようなプログラムにおいてすら、マズい使い方をしてしまったときの悪影響が非常に大きいシロモノだとは思います。

うーん。この影響の大きさなは、プログラムに依存すると思うんですよね。ローカル変数だって、思ってもいない場所で値を変えてしまうことがあるのだから甚大な被害を及ぼすこともある。グローバル変数は、『個人が変数名とその役割を追えている限り』は、間違いもなく便利だと思うんですよ。

つまり、何が良いか悪いかは、究極的にはcontext dependentだと思う...という話です。
投稿者:sterai
 「グローバル変数は絶対に使ってはいけない」と教条的に信じてるってことはないですよ。たぶん、大彦さんもそうだと思います。

 ただ、グローバル変数にせよGotoにせよ、個人で書いているようなプログラムにおいてすら、マズい使い方をしてしまったときの悪影響が非常に大きいシロモノだとは思います。誰もが道具を適切に使えるわけではないので、「一切使うべきではない」というヒューリスティック(?)がそれなりに広まってしまうのも仕方ないかなぁとも思います。
投稿者:bmb
さすが、お手軽に行きたい場合には、配列はいくらでも使います。どの道を通っても辿り着く場所が同じなら、コンテナを学ぶ時間と実際に書く時間のトレードオフで決まるでしょう。

ところで、なぜグローバル変数を忌避するのでしょう?一人だけで短期間に書き上げるプログラムだったら、配列を引数で渡すより、グルーバル変数を使ってしまった方がラクだと思いますが。特に関数の数が少ない場合。

一人、「main関数の中は数行しかなく、代わりに関数が数十個あるプログラムの方が書きやすい」という人物を知っていますが、彼女の場合、頭の中が手続き型言語でなく、関数型言語で出来ているらしいのですが、この場合は、引数で渡す方が確実なのは間違いありません。

「〜はやってはいけない」というプログラム上のルールは、プログラムの規模と携わる人数や時間に応じて変わってくるように思います。
投稿者:大彦
しばらくずっとポインタなんて使わなくても問題ない、と強がっていましたが、ポインタをちゃんと学ぶよりグローバル変数を使うことの方がずっと「恐い」ということが分かって以来使うようになりました。エージェントベースのシミュレーションで、個体を配列で表現 (というようなことをやっているとbmbさんあたりから「いまだにそんなことやってるのか!」と叱られそうですが) すると、その配列の値を異なる関数間でやりとりするためにポインタを使わざるを得なくなってしまいます。でも、「すぐプログラムを作っちゃいたい!」ってときはどうしてもグローバル変数に頼ったプログラムをいまだに作ってしまいます。

Cの文字列処理は本当に面倒ですね。僕もCで文字列を扱うのは大嫌いです。
teacup.ブログ “AutoPage”
AutoPage最新お知らせ