NANDだけで半加算回路を作る――5個のNANDによる構成と論理式
半加算回路はAND・OR・NOTだけで表現できた。 では、この3種類の回路をすべて用意しなければならないのだろうか。 実は、ANDとNOTを組み合わせたNAND回路だけでもAND・OR・NOTをすべて構成できる。 つまり、半加算回路も理論上はNANDだけで作れる。 ...
半加算回路はAND・OR・NOTだけで表現できた。 では、この3種類の回路をすべて用意しなければならないのだろうか。 実は、ANDとNOTを組み合わせたNAND回路だけでもAND・OR・NOTをすべて構成できる。 つまり、半加算回路も理論上はNANDだけで作れる。 ...
半加算回路では、2つの1桁の2進数を足し合わせて、和と繰り上がりを求めた。 しかし、これだけでは複数桁の足し算はできない。 下の桁で生じた繰り上がりも、次の桁で足さなければならないからだ。 そこで必要になるのが「全加算回路」である。 ...
コンピュータではデータを二進数で表現する。 では、その足し算はどのような回路で実現されているのだろうか。 本当は複数桁の2進数の足し算を考えたいところである。 しかし、まずは最小の、1桁同士の2進数の簡単な足し算について考えるべきだろう。 難しい問題は分割して、より簡単な小さい問題から考えるとよいからだ。 そして、これを実現する回路が「半加算回路」である。 ...
対象読者 安くNextCloudを構築したい方 ポート解放ができないけど自宅サーバーを公開したい方 NextCloudでの通話環境の構築に挫折した方 概要 自宅サーバーとVPSを用いてインターネット経由の通話ができる環境を格安で構築できた。 遠方に住むFPS仲間の友人とのゲーム通話にはDiscordを使用していたが、代わりに自前の通話を試してみた。 画面共有しても遅延にシビアなFPS出の通話として問題なかったので、良い環境が構築できたのだと思う。 ...
対象読者 オブジェクト指向は難しい、と感じている方 オブジェクト指向言語を使っても恩恵を感じられない方 結論 巷では、オブジェクト指向プログラミングを特徴づける要素として以下の3つが挙げられる。 ...
対象読者 オブジェクト指向の原理原則が取っ付きにくい方 ドメイン駆動設計(DDD)などのプラクティスを使用してもコード品質が良くならないと感じている方 結論 コーディングスタイルはプログラマの宗派・思想・趣味嗜好の数だけ存在する。 当然、みんな違ってみんない良い訳ではない。 良い方法はプログラミング原則または無数のテクニックとしてまとめられていたりいなかったりする。 ...
対象読者 プログラマの思考法を知りたい方 プログラミングに興味がある非プログラマの方 プログラミング初心者の方 結論 プログラムは実体がなく、イメージしづらい。しかも、横文字の用語も沢山あって、初心者の方にはかなり取っ付きにくい。 なおかつ、コードを綺麗に書くための工夫やら規則やらもある。 ...
対象読者 人工知能の歴史を数式なしで簡単に学びたい方 ディープラーニングは従来のAI技術と比べて何が凄いのか知りたい方 結論 人工知能は現在3回目のブームを迎えている。以下にそれぞれの技術的な主役を列挙する。 ...
対象読者 以下に飽き飽きした方 「猫クラス、犬クラス」等の説明 オブジェクト指向の抽象的で難しい用語 結論 クラスはオブジェクト指向の土台である。 しかし、クラスを使う動機やメリットを理解することは容易ではない。 抽象的で難しい用語が溢れていて、初心者は圧倒されてしまうからだ。 ...
対象読者 プログラミング初学者の方 色々ググってみたが、本タイトルについて理解できなかった方 結論 両者をググったものをまとめると、 ライブラリとは、再利用可能な部品をまとめたもの フレームワークとは、枠組みが予め決まっている部品をあつめたもの と出てくる。 ...
対象読者 オブジェクト指向がなぜ必要か分からない方 結論 手続き型プログラミングとオブジェクト指向の違いは以下である。 手続き型プログラミングは中央集権であり、 オブジェクト指向は地方分権である。 手続き型プログラミングでは、クライアント(main文などの関数の呼び出し側)が全てを管理しなければならず、 責任が重すぎる。 故に、柔軟性や可読性が下がってしまう。この問題を解決する手段の1つがオブジェクト指向だ。 ...
対象読者 理解しやすく保守しやすいコードを作りたい方 プログラミングの関数の「適切な」使い方を知りたい方 結論 関数(function)はプログラミング学習の初級で登場する基本中の基本である。 ...