【Perl】フラグを立てるお話

Viewed: 03:50:43 in December 9, 2019

Posted: August 7, 2016
WordPressの記事をアーカイブ化したものです。

この記事を書いた人
「牧岡ふうふ堂」オーナー。博士(工学)。
酒都圏在住。
某地方の国立系工業大学でアシスタントをしていました。 専門は有機反応・金属錯体(主に希土類)・π共役系。
twitterアカウントは@makiokafufudo(お仕事用)、@ymakioka(個人用)です。

 

これも忘れないうちに。

私が習得したプログラミング言語、最初はN-BASICで、その次がZ80A機械語(ハンドアセンブリング)でした。

BASICはPerlと似た分岐処理をしますが、機械語の場合は分岐(Perlで言えばifとかwhileみたいなやつ)処理を行うには、フラグを取り扱う必要があります。

フラグ処理を前提とした機械語プログラミングをやってたので、ついついPerlでもフラグを使った分岐処理をやりがちなのですが、これが案外便利なんです。

例えば通常

my ($a, $b);

my $c;

if (($a eq “”) and ($b eq “”)) {

$c = “1”;

}

と書くところを、

my ($a, $b);

my $c;

my $flag = “false”;

if (($a eq “”) and ($b eq “”)) {

$flag = “true”;

}

if ($flag eq “true”) {

$c = “1”;

}

こんなふうにですね。

後者の方が複雑ではないか、とツッコミを受けそうですが、はい、仰る通りです。分岐条件が単純ですからね。実際、これくらいの分岐条件で固定するのでしたら、私も前者を使いますし、そもそも”if () { 〜 }” を使いません。

使うなら、”〜 if ();”ですね 。

でもですね、最初は単純な分岐条件であっても、スクリプトの機能がどんどん高まり、当該の分岐条件が複雑になることが想定されるならば、迷わず後者ですね。

あるいは、早い段階で前者から後者に切り替えてます。

最大のメリットは、デバッグのしやすさ。他、前者では煩雑になりがちな条件設定が後者ではより単純にできる等ありますね。

Z80A機械語をマスターしててよかった。ビット単位で扱ってましたよ、フラグ。1バイトで8つのフラグを扱わなければならないほどに、メモリの制約がシビアだった。

 

あわせてどうぞ

アーカイブ化したWordPress記事
よく読まれている記事をアーカイブ化しました。

[読みたい論文] Ir触媒でギ酸分解: ♪余計なものなど…あったね。
これも息の長い研究です。

[読みたい論文] 1価アルミニウムが炭素−窒素二重結合をぶった切る
多分カルシウム金属でもぶった切れます。

[読みたい論文] ホウ素系強力スーパールイス酸
とにかくフッ素をつけまくればいい気もします。

[読みたい論文] ヒドロシリル化&脱水素ヒドロシリル化
これ、環状にはならないのかなぁ

[読みたい論文] ポリマー側鎖をエステル交換
19F NMRは測定していないのでしょうか。

2019年7月12日のコンテンツから
まとめました。CHCl3の怪。

2019年9月26日のコンテンツから
まとめました。塊魂的不斉反応。

2019年9月10日のコンテンツから
まとめました。C1化学。

2019年9月12日のコンテンツから
まとめたした。ホスフィン酸のTsuji-Trost型不斉反応。

2019年3月13日のコンテンツから
まとめました。