カテゴリー
App Free

コンピュータの仕組み14

XOR
XOR

  NANDのみで構成した排他的論理和です。排他的論理和は二つの入力の状態が同じであればLow、異なればHighを出力します。早速、追ってみましう。

入力A、Bが共に0の時、
NandA=1
NandBa=0
NandBb=1
NandB=1
NandCa=1
NandCb=0
NandC=1
NandDの入力が共に1になるので
Q=0

入力A、Bが共に1の時、
NandA=0
NandBa=1
NandBb=0
NandB=1
NandCa=0
NandCb=1
NandC=1
NandDの入力が共に1になるので
Q=0

入力A=0、B=1の時、
NandA=1
NandBa=0
NandBb=1
NandB=1
NandCa=1
NandCb=1
NandC=0
NandDの入力が1と0なので
Q=1

入力A=1、B=0の時、
NandA=1
NandBa=1
NandBb=1
NandB=0
NandCa=1
NandCb=0
NandC=1
NandDの入力が0と1なので
Q=1

 排他的論理和は論理演算の勉強をしていると必ず出てきますが具体的に何に使うかわかっていません。この機会に明らかにしようと思います。

カテゴリー
App Free

コンピュータの仕組み0D

スイッチング素子
スイッチング素子

 電気を使って計算をするために必要な部品は電気で操作できるスイッチです。スイッチを組み合わせて回路を作り、最初のスイッチをONにすると電気が次のスイッチに流れます。次のスイッチは前のスイッチがONになった時に更にその次のスイッチに対してONにしたりOFFにしたりします。スイッチのONとOFFを組み合わせて複雑な計算を行います。

 どの計算をする時にどのようにスイッチを組み合わせ行くか設計をしていくわけですが、その時に必要になる理論がブール代数です。

 リレーはコイルに電気が流れると芯が磁石となりCからNOに電気が流れます。電磁石を利用した電気機械です。

 真空管はGからKに電圧をかけるとPからKに電気が流れます。Hに電気を流して内部を加熱しなければならないため制御に使う電力よりも加熱に必要な電力が大きくなってしまいます。

 トランジスタはBからEに電気を流すとCからEに電気が流れます。ここから電子回路の集積化が始まりました。

 FETはGに電圧をかけるとDからSに電気が流れます。Gに電圧をかけるだけで制御できるのでトランジスタよりも電力効率が良く殆どの集積回路はこのFETの原理を利用しています。

カテゴリー
App Free

コンピュータの仕組み0A

 真空管で電子の流れを制御してON、OFFを繰り返し論理演算ができるようになったのですが大きな問題がありました。真空管自体が大きく発熱を要するので、出来上がったコンピュータが巨大且つ大電力を必要としたのです。

 あらゆる電子装置がそうだったのですが大きく電気をたくさん使うのであれば用途が限られてしまいます。そこで真空管の次に発明されたのがトランジスタという素子です。

 トランジスタも端子が3本ありその内2本に電気を流すために残りの1本が助けるという真空管と同じ働きがあります。真空管は真空の中を熱電子が飛ぶのですがトランジスタは個体の中の電子の流れるを制御するする仕組みです。熱電子ではないのでヒーターで熱くしなくてもいいのです。

トランジスタの動き
トランジスタの動き

 トランジスタはBからEに電気が流れるとCからEにも電気が流れます。その性質を利用してスイッチを作ります。スイッチができてしまえばAND回路やOR回路などの論理回路が作れるようになります。

 1950年代後半から続々とトランジスタを使った計算機が開発されていきます。この頃はリレー式電気計算機、真空管式電子計算機とトランジスタ式電子計算機という世代が異なるテクノロジーが乱立した稀有な時代だったのでしょう。

カテゴリー
App

Multiplatform2

2 評価

 どのプラットフォームを採用すれば良いかはその時々で様々な見解に分かれますが常に念頭に置いておかなければならない観点をまとめます。

2.1 ネイティブ機能へのアクセス方法

 それぞれのプラットフォームはアプリを開発出来ると謳っていますが、どこまでネイティブ固有の機能を利用できるか承知した上で利用します。開発していく中で要件を実現できないことになっては大変です。無理してできたとしても予定外のコストが掛かってしまってはそのプロジェクトを成功には導けません。

C\C++

 OS自体がC/C++でできているのでネイティブ機能は全て利用できるはずですがそのアクセス方法が利用し易い形でまとまって公開されているわけでもないので難易度が高くまた、直接OSにアクセスするのでメンテナンスが大変です。高速処理が必要なOSに依存しないビジネスロジックをSDKなどの共通ライブラリとして利用するならば良いでしょう。

Flutter

Binding to native code using dart:ffi にあるようにネイティブ機能を呼び出せます。

KMM

 Connect to platform-specific APIs にあるようにネイティブ機能を呼び出せます。

Haxe

 アプリ開発の具体的な手順があまり載っていませんのでよくわかりません。OpenFL等の高機能なライブラリを利用して実装しC++に変換してからXcodeやAndroidStudioに取り込むのでしょうか?どの程度実用性があるかは試してみないと何とも言えないです。

カテゴリー
App

Haxe

 昔のことですが随分とActionScriptにお世話になりました。だいぶ廃れてきましたがHaxeとOpenFLという形になって生き続けていると思います。実務に活かせるかどうかわかりませんが追い続けていきます。