コンピュータの仕組み③

前回

http://abcyosou.hatenablog.com/entry/2018/10/03/221029

今回も、プログラムがどのようにして、実行されるかの解説をしていきたいと思います。

演算サイクル

ALUを使って演算したいのですが、

ALUだけでは、例えば、2+3=5と計算した場合

演算結果5を次の演算の入力として、使うことができません。

以下のようなc言語のプログラムを実行するすることができません。

int a=2+3;//a←2+3

a=a+3;//a←a+3

アセンブラ(arm64)だったら、以下のようなプログラムが実行できません。

mov r2,#2 //r2←2

add r1 ,r2 ,#3 //r1←r2+3

add r1,r1,#3 //r1←r1+3

そこで、ALUとレジスタファイルを接続したいと思います。

f:id:abcyosou:20181005133643p:image

この図のALUが算術論理演算ユニットで演算をするところで、RFというのは、レジスタファイルの略で、演算する値の読み出しと演算結果の書き込みをする場所です。

演算サイクルとは、

①.レジスタファイルから演算の入力を読み出す

②.レジスタファイルから読み出された値をALUで演算する

③.ALUで演算された結果をレジスタファイルに格納する。

以下、1から3を繰り返す。

f:id:abcyosou:20181005141354p:image

これがコンピュータの基本です。

しかし、ALUとレジスタファイルだけでは不十分です。以下の三つの問題があります。

1.記憶容量が足りない

2.制御信号がない

3.条件分岐や繰り返しも実現したい

まとめ

・演算サイクル

・ALUとレジスタだけでは不十分

今回は演算サイクルについて、解説しました。

次回は、メモリと命令実行サイクルの話をします。

コンピュータの仕組み②

前回

http://abcyosou.hatenablog.com/entry/2018/10/01/183459

今回はプログラムがコンピュータの中で、どのようにして、実行されるかを解説していきたいと思います。

前回解説しましたが、以下メモリと言うと、メインメモリとします。

ノイマン型コンピュータ

・現在のコンピュータのほぼ全てがノイマン型コンピュータ

ノイマン型コンピュータとは、プログラム内蔵方式(プログラムがメモリに保存される)

・抽象機械であるチューリングマシンを可能な範囲で具現化した

特徴としては、

1.命令とデータの同一視

2.逐次的な実行

3.線形記憶

命令とは何か

・ハードウェアとソフトウェアのインターフェース

制御信号を生成し、コンピュータの動作を決める。

・命令はデータとして表現される

機械語のプログラムは、命令の集合で、

逐次的に実行される。

・命令は、メモリ上にある。(ノイマン型コンピュータは、プログラム内蔵方式なので、考えるまでもない)

命令の表現と動作を決めたものを命令セットアーキテクチャと呼ぶ。

基本素子

情報理論論理回路を知ってる前提で解説します。

・マルチプレクサ

複数の入力信号から、1つ選んで出力する回路

デコーダ

二進符号をワンホット符号に変換する回路

・ALU

算術論理演算ユニットのことで、

加算や引き算や、論理積や、論理和の演算を行う回路

レジスタ

データを蓄える記憶素子。nビットのレジスタと言うと、n個のDフリップフロップで構成される。

レジスタファイル

レジスタの集合。

・シフトレジスタ

シフト演算機能を持つレジスタ

・カウンタ

数を数える機能を持つレジスタ

 

 

今回はここまでにします。次回もプログラムがコンピュータの中でどのように実行されるかの続きの解説をやっていきたいと思います。

次回http://abcyosou.hatenablog.com/entry/2018/10/05/175607

 

ニュートン力学入門①

今回は、物理学の分野の一つのニュートン力学について、解説したい思います。

高校の物理でやったけど、忘れたという人にもおさらいとして見てほしいと思います。

力学では、物体は質量を持った点すなわち質点として、抽象化されます。つまり、物体の大きさや形、硬さといったものは捨象されるということです。

 

※は読み飛ばしても構いません。

※抽象化とは、詳細を捨て、本質を抽出することです。人文社会科学でも、このような抽象化は、行われます。『リヴァイアサン』で知られるイギリスの政治哲学者のトマス・ホッブズは社会契約説を説明するために、抽象的な人間像をつくりました。いわゆる自然状態の人間です。そこでは、社会的諸要素(政府、職業、階級、、etc)は、捨象されます。自然状態の人間は、自己保存の本能のみを持つ存在とされ、現在のみならず、将来もまた生存し続けること欲します。自然界の物質は有限であるから、限られた資源をめぐり他者との闘争が起こります。これがすなわち、万人の万人に対する闘争です。

また、自然科学や人文社会科学だけでなく、計算機科学でも抽象化は行われます。プログラミングの現在最も主流のパラダイム(世界観)であるオブジェクト指向のクラスとインスタンスの概念にも見られます。

このように、対象を単純化することで、議論しやすくする抽象化は、あらゆる学問で有用な手段として用いられます。

ちなみに、質点に大きさなどを考慮すると、連続体となります。現実の物体は、連続した空間的な広がりを持った質点の集まり、つまり連続体としてモデル化することができます。連続体は、剛体(石のように、力を加えても変形ない固体),弾性体(ゴムのように変形に対してもとに戻ろうとする固体),そして流体(水や空気のように、変形に対してもとに戻ろうとしない液体や気体)の三種類に分けることができます。

※人文社会科学の抽象化の例は、

小室直樹『論理の方法』を参考にさせていただきました。

 

 

話をもとに戻します。

力学では、

以下の3つの法則を前提として、運動について、考えていきます。

1.慣性の法則

全ての質点は、外部から力を加えられない限り、静止している物体は静止し続け、運動している物体は、等速直線運動し続けます。

例:電車やエレベータで止まったときや動いたときに体感できる現象

2.ニュートン運動方程式

dP/dt=F

P=mv

mdv/dt=F

dv/dt=aとおくと、

ma=F

P:運動量、m:質量、v:速さ、F:力、a:加速度

これの意味は、質量mの質点に、力Fを加えると、質点は加速度aで運動するということです。

運動量については、また別の記事で扱いたいと思います。

3.作用反作用の法則

質点a,bがあり、aがbに力(作用)を及ぼすと

逆にbは必ずaに力(反作用)を及ぼして、作用と反作用の力の大きさは等しく、逆向きで、aとbを結ぶ直線の方向に働く法則です。

 

今回はここまでにします。次回は、ベクトルとスカラー微積などの数学的な諸準備とこの三法則を前提として、運動量保存の法則を導きたいと思います。

コンピュータの仕組み①

近年、我々の周りには、様々な形のコンピュータがあふれています。f:id:abcyosou:20181001173955j:image

代表的なものを言えば、スマホタブレット、デスクトップPC、ノートパソコンそして、スーパーコンピュータなど。

ゲーム、情報検索、事務処理、科学技術計算など様々な用途で使われているコンピュータですが、どのような仕組みで動いてるかはあまり意識しないでしょう。

ここでは、コンピュータの仕組みについて、何回かに分けて、説明していこうと思います。

 

コンピュータの構成方式

まず、コンピュータは、大きく分けて、5つの構成要素に分けられます。

f:id:abcyosou:20181001182802j:image

この図の記憶装置は、メインメモリの事です。

1.入力装置

コンピュータに情報を入力する装置です。

例:キーボード、マウス、タッチパネル

2.出力装置

コンピュータで計算し、処理された情報を出力する装置です。

例:ディスプレイ、スピーカ

3.主記憶装置(メインメモリ)

プロセッサが扱うデータやプログラムを記憶する装置です。半導体DRAMで作られています。

通常、メモリと言うと、メインメモリの事を指します。

4.補助記憶装置(ストレージ、非主記憶装置)

ストレージは、保管庫という意味です。

後、外部記憶装置、二次記憶装置とも呼ばれます。

主記憶装置に入りきらないあるいは永続的に保存したいデータやプログラムを記憶する装置です。

後、日本においては、なぜか、携帯でメモリというと、補助記憶装置の事を指します。

例:HDD、SDD、CD、フラッシュメモリなど。

5.CPU(プロセッサ)

コンピュータの中で、制御と演算を行ってる装置です。古典な分類では制御装置と演算装置の二つに分かれます。このプロセッサがどれだけ速いかがコンピュータの性能を決めると言われています。

 

今回は、ここまでにして、次回は、プログラムがどのように実行されるかについて、説明したい思います。

続き

http://abcyosou.hatenablog.com/entry/2018/10/03/221029

 

数学ガール【書評】

最近、高校時代に読んでいた本で、数学を愛する高校生を主人公にした小説「数学ガール」を読み返してみました。扱ってる内容は、テイラー展開、母関数、微積など多岐にわたり、最後は、バーゼル問題を主人公達が解いて終わるという感じでした。他には、ラノベの主人公みたいな感じでヒロインに言い寄られてたりする描写もあるので、そういうのが好きな人にもおすすめだと思います。

この小説で印象的だったのは、

「数学は時を超える」という言葉です。

例えば、二進法の研究で知られる17世紀の数学者・哲学者のライプニッツは、21世紀のコンピュータのことを知らず、この世を去ってしまいましたが、ライプニッツが研究した数学は時を超えて現代に伝わっています。

数学の中でも解析学いわゆる微積分学は、ライプニッツニュートンが確立した数学の分野です。ニュートンは、微積分を用いて自然現象を数学的に解析する物理学を確立しました。その物理学と数学は共に様々な分野で応用され近代科学の礎となりました。その成果として蒸気機関などが生まれ、その蒸気機関を利用して、様々な製品が大量生産することが可能になりました。いわゆる産業革命です。

このように、数学というのは、定理を発見したもしくは証明した人が亡くなっても時を超えて、私たちの生活・文明さえも変えてしまうほどの大きな力を持つ凄まじいものであり、現代でも研究され続けてる魅力的な学問であります。

数学が好きな人や数学をこれから好きになりたいと思う人には、おすすめの本です。ぜひ、読んでみることをおすすめします。

 

http://hitsusya.com/self-enlightment-dangerous

後、あまりこの件と関係ないですが、どういう本を読むべきかは、この人の考え方に一致してる訳ではないですが、結構近いと思います。数学を通して、物事を疑って考えてみたり、筋道を立てて考えるということも学ぶことができるとぼくは考えています。

最近、バイト先や大学の友達が意識高い系ばかりで辛いという人にもおすすすめです(笑)

『=』の数学とプログラミングにおける違い

今回は、かなり初歩的な話題です。

『=』という記号は小学生でも知ってると思いますが、一般的には、同じであるという関係を表す記号で、イコールと呼ばれてます。

まずは、数学における『=』の意味を考えてみましょう。

突然ですが、

  1. A+1=0
  2. B+1=1+B

この1,2の式の違いは、わかりますか?

例えば、1番目の式を見てみると、

A+1=0

3+1=0                A=3を代入

4=0       

つまり、A=3の場合は、A+1=0は、成立しないとわかるでしょう。

A+1=0

(-1)+1=0           A=-1を代入

0=0

A=-1の場合に、A+1=0は、成立つことがわかるでしょう。

このように、1番目の式のようにある値の時のみ、左辺と右辺が等しい式のことを方程式と言います。

次に、2番の式を見てみると、明らかに、Bがどんな値を取っても、左と右が同じであるという関係になることがわかるでしょう。このような2番目の式のことを恒に等しいという意味で恒等式と言います。

方程式と恒等式を合わせて等式と言います。

つまり、数学では、『=』は、等式を表すのに用いる記号です。

 

一方、プログラミングでは、言語によっては、『=』を数学と同じように使う場合もありますが、Java、C、Pythonなどの主要な言語では、

『=』は、代入の意味で使われることが多いです。例えば、

int c=1;   ①

c=c+1;    //右辺=c+1=1+1 ②

このプログラムを実行すると、c=2になります。①では、整数型の変数cの初期値として1を代入してます。②は、不思議に思う人がいるかもしれませんが、ここでの『=』は、右辺の値を先に計算して、結果を、左辺のcに代入とする意味です。

 

このように、『=』は、数学では、等式を表す記号として、CやJavaなどの主要な言語では、

右辺の値を左辺に代入するという意味で用いられるので、違いをよく覚えておきましょう。

 

 

 

実は部下を自殺に追い込んだことがある社会人は多いんじゃないか説

※以前、この記事で、この件について、考えるのをやめると言いましたが、1940年体制の制度疲労や雇用の流動性の低さについてなどか背景にあるんじゃないか、それがバブル崩壊や日本企業の組織の体質として、現れてるんじゃないかという仮説を考えるに至り、もしかしたら、

新しく記事を書くかもしれないです。

 

 

日本は、自殺率の高さで世界上位の国の一つです。自殺する原因は、職場のパワハラによって、主に鬱病などの精神病にかかってしまいそのまま自殺する人が多いそうです。

私が思うに、表に出てないだけで、部下を自殺に追い込んだ社会人ってわりと身近にも多いんじゃないでしょうか。家庭は優しいパパだけど職場では、部下を自殺に追い込んだことがあるという人結構多いんじゃないかって最近疑問に思い始めました。パワハラで病んでしまった社員がいたら、社員の間に自殺してしまった、もしくは、社員から告発されたら困るでしょう。そこで、さらに追い込んで、自主退職させて、死ぬように仕向けて、あとは自殺しようがしまいが知らんぷり。そんなところでしょう。退職後に、精神病で自殺した人を含めれば、結構、パワハラによる自殺って多いんじゃないんでしょうか?恐らく、罪悪感を感じてる人は少ないでしょうね。

まあ、人間、ちょっとした一言で、傷つくことがありますし、心が繊細すぎる人だったら、自殺しちゃうなんてこともあるかもしれません。とか考えてるうちにこんなこと言ってもキリがないし、調べようがないと思ったので、ここでこの件について考えるのをやめたいと思います。