モッドについて

モッド(mod)はプログラミングで重要な役割を果たしています。

モッド(mod)とは数学の概念であり、次のように定義します。モッドはモジュロ(moduro)ということもあります。

整数a、bの差a-bが整数nの倍数のとき、すなわち a-b=kn (kは整数)のとき、aとbは法nに関して合同であると言います。このことを、

a≡b(mod n)  (a-b=kn)

と書きます。 続きを読む モッドについて

ソフトウェア・アーキテクチャ

大きなプログラムを開発する際、現在の開発環境(使用する機械、OS、ネットワーク、ツール、市場、など)が将来変更されても、将来のプログラムの開発のコストを最小にする要素をプログラムの設計に織り込んでおく必要があります。

そのために何をすれば良いのでしょうか。この問題についてはITプロジェクト管理考の「ソフトウェア・アーキテクチャ」で扱っていますので、そちらを参照してください。

※ITプロジェクト管理考では「ソフトウェア」という用語を使っていますが、「プログラム」と同じです。

ライフサイクル

 プログラミングは通常「機能設計」→「構造設計」→「詳細設計」→「コード化」→「テスト」というプロセスを経ます。

 このプロセスのことをライフサイクル(Lifecycle)と呼んでいます。

 プログラムが大きくなると複数のモジュールに分けますが、モジュール間の結びつきの強さ(結合度)とプログラムの要求変化の速さの観点から開発方法を決めます。要求変化の速さとは、機能追加や変更が要求される速さのことです。 続きを読む ライフサイクル

変数について

「変数」について、プログラミング言語の中には、「メモリ上にデータを一時的に記憶しておくための領域」と定義しているものがあります。それは「変数」の重要な意味を言い表していません。

数学では、関数f(x)が定義域 a≦x≦b で定義されるとは、aとbの間のすべての値をもつ変数xの上で関数が定義されると考えます。プログラミング言語も同じように、「変数」は定められた範囲のすべての値、あるいは特定の値をもつと考えます。 続きを読む 変数について

チームでプログラミング

プログラムが小さければ1人で作成することができますが、少し大きなプログラムになると、1人では無理となります。だいたいどのくらいのプログラムまでなら1人でできるのでしょうか。能力や慣れなどにもよりますが、かなり優秀な人で1年間で10キロステップくらいまでなら可能かもしれません。プログラムがややこしいものなら、それより少なくなるでしょう。 続きを読む チームでプログラミング

レビュー|テスト|デバッグ

プログラムのコード化が終わると、嬉しくてすぐにもコンピュータ上で動かしたくなります。どうしてもやりたければやってみてはどうでしょう。(以下では数キロステップのプログラムを想定しています)

コンパイラ方式の言語を使っている場合、コンパイル時にエラー検出しますが、思いのほかエラーが多いことにガッカリします。

試しに動かしてみると、大抵の場合、数十ステップくらい走ったところで不具合に遭遇します。ここでまたガッカリします。 続きを読む レビュー|テスト|デバッグ

動かして実感、そして評価

プログラムのコード化までの作業では、本当にこのプログラムは動くのだろうかという不安が伴います。実際にコンピュータ上で動作し、思い通りの結果を得たとき、達成感を味わうことができます。

プログラミングでは、この達成感を味わうことが大切です。小さなプログラムでは「ウォー、動いた!」程度でしょうが、大きなプログラムで数ヵ月にも及ぶ苦労を味わっていると、曰く言い難い喜びが滲みでてきます。数日間この喜びに浸ることもできます。大抵の場合、次の苦労が待っていますが。 続きを読む 動かして実感、そして評価

排他的論理和

ビットから始めるプログラミング」では紹介しませんでしたが、論理演算には排他的論理和というものがあります。

排他的論理和の演算子をxor(exclusive-or)とし、論理値true(真)とfalse(偽)に対してxorを次のように定義します。

true  xor  true  → false
true  xor  false     → true
false  xor  true     → true
false  xor  false   → false

2つの論理値が同じならその演算xorの結果はfalseで、異なるなら演算xorの結果はtrueとなります。 続きを読む 排他的論理和

使えるツールを探す

半世紀ほど前まではプログラムをつくるためにアルゴリズムを一つひとつ検討することが多かったのですが、今では、プログラミングに必要なソフトウェア部品やツール(以降、これら2つを合わせてツールと呼ぶ)がたくさんありますので、それらの中からどれを選ぶかが重要になっています。欲しい機能が満たされているか調査するのは当然ですが、次の点は十分調査しておくべきでしょう。 続きを読む 使えるツールを探す

ソフトウェア部品

本稿ではプログラムという用語に代わってソフトウェアあるいはソフトという用語を使います。コンピュータ・プログラムとソフトウェアは同じであること(ITプロジェクト管理考の投稿「ソフトウェアとは何か?」参照)、ソフトウェア部品という言い方が通用しており、プログラム部品とは言わないことが理由です。

本稿のタイトルにある「部品」という用語はネジのようなハードウェア部品のアナロジーとして使われます。しかし、ハードウェアとは異なり、ソフトウェア部品は、同じ仕様のものを複数用意することはありません。同じものが何度でも使えます。 続きを読む ソフトウェア部品