湯桶読みと重箱読み
プログラミングではよく「引数」という単語が出てきます。
引数がどういった役割を持つかはさて置いて、「引数」は”いんすう”とも読めますが一般的には”ひきすう”と読みます。
「因数(いんすう)」と混同してしまう事態を避けるために、あえて”ひきすう”と読む事が慣用化した結果なのだそうです。
この「引数」のように音読みと訓読みが混じり合った単語の読み方は「湯桶読み(ゆとうよみ)」もしくは「重箱読み(じゅうばこよみ)」と言われます。
●湯桶読み = 訓読み + 音読み の組み合わせ
●重箱読み = 音読み + 訓読み の組み合わせ
その前に、訓読みと音読みの例
春:訓読み – はる | 音読み – シュン
夏:訓読み – なつ | 音読み – カ
秋:訓読み – あき | 音読み – シュウ
冬:音読み – ふゆ | 音読み – トウ
馴染み深い?浅い?
湯桶読み、重箱読みは時に違和感を覚えることがあります。
苗字だと例えば
佐藤 → 湯桶読み:すけトウ 重箱読み:サふじ
鈴木 → 湯桶読み:すずモク 重箱読み:リンき
高橋 → 湯桶読み:たかキョウ 重箱読み:コウはし
一瞬で聞き覚えのない苗字になってしまいました。
湯桶読みの例
- 合図(あいズ)
- 赤点(あかテン)
- 内税(うちゼイ)
- 株式(かぶシキ)
- 釣銭(つりセン)
- 豚肉(ぶたニク)
- 店番(みせバン)
重箱読みの例
- 駅前(エキまえ)
- 王様(オウさま)
- 客間(キャクま)
- 牛丼(ギュウどん)
- 毒茸(ドクきのこ)
- 曜日(ヨウび)
普段は意識しないけれども
普通に生活している分にも良く耳にする単語も多いです。
苗字の湯桶読み、重箱読みは違和感がありましたが、やはり聴き慣れているかいないかの違いもあるのかもしれません。
意外だったのが「肉」が音読みだった事です。
てっきり訓読みだと思い込んでいたのですが、音読みが「ニク」で訓読みだと「しし」と読むそうです。
漢字ってむずかしいですね〜!
海外のプログラミング教育はどうなってる?
2020年からプログラミング教育が必修化されるのはご存知ですか?
去年3月に発表された新学習要項では2020年からプログラミングが必修化されることが明示されました。
しかし、具体的にプログラミングの授業とは一体どんなことをするのでしょう?
そもそもプログラミング教育とは?
実はプログラミング教育とはC++やJavaなどのいわゆるプログラミング言語を学ばせて、プログラマーを育てることが目的ではありません。
無理やり小学生に英語で複雑なコードを書かせるような授業をしてはむしろ子供達にプログラミングは難しい、との先入観を持たせてしまうかもしれませんし、教師にだって負担が大きすぎます。
プログラミング教育とは何か?
ずばり、プログラミング的思考を身につかせる、身の回りのもののあらゆるものがプログラミングによって動いていることを実感することを目的とした教育です。
もう少し具体的にいうと「どうしてこういう動作をしているのか?」「どうして思った通りの動作をせずエラーが出てくるのか?」「この繰り返しの動きはプログラミングで自動化できるのではないか?」といったことを学ぶ、ということです。
海外のプログラミング教育は?
では現在行われているプログラミング教育はどういうものなのか海外を例にあげて見ていきましょう。
-
イギリス
- アルゴリズムとは何かを理解する。
- 簡単なプログラムを作成する。
- コンピューターネットワークを理解する。
-
アメリカ(カリフォルニア州)
- 学校の裁量によって決められている
- プログラミムの実行、デバッグ
- 基本アルゴリズム(データ構造、探索、ソート
-
韓国
- コンピューター思考を学ぶ
- 問題解決方法を学ぶ
- プログラミングの基礎を学ぶ
小学校のプログラミングの授業ではScratchやBee-bot(知育玩具)を使って授業がされています。
中学校になるとScratchだけでなく、※Pythonと呼ばれるプログラミング言語を用いて教えているところもあるようです。
イギリスではすでに2014年から「computing」が授業として組み込まれているようで内容もレベルが高いですね。
-
指導内容
など
※プログラミング入門にはコレがおすすめ!いろいろあるプログラミング言語
指導者不足や予算不足のため必修化はされていなく、学校によって授業は委ねられています。
授業を行なっているところだと初等教育ではScratch、中等教育ではJava,C/C++が使われているそうです。
-
指導内容
カリフォルニア州では必修化はされてないんですね。指導者不足の問題は日本も人ごとではないかもしれません。
現在は社会人向けの「プログラミングブートキャンプ」が盛んであったり、「Code.org」と呼ばれるNPO団体が無料でプログラミング教材を公開するなどプログラミング教育にかなり力を入れているようです。
Knocknoteでも忙しい社会人向けの短期プログラミングスクールを開催しています。プログラミングに興味があるけど時間が無い方、プログラミングをしっかり学びたい方はぜひご参加ください。
64時間で”なりたい”を叶えるプログラミングスクール「WISH」
韓国ではかなり早くからプログラミング教育に力を入れているようで2007年頃から本格的にプログラミング教育が始まっていて、
小学生では「情報リテラシー教育(注:情報を適切に扱う力を養う)」を中心に、中学校からは「Scratch」「Python」を使ったプログラミング教育が行われていて
幼い頃から学ぶことで問題解決法を身につけたり、産業界への人材供給も目標にされています。
-
指導内容
など
まとめ
いかがでしたでしょうか?
海外の初等教育ではスクラッチを使っているところも多く、プログラミング的思考を学んだり、プログラミング基礎を学ぶことが目標にされています。
スクラッチは視覚的にわかりやすく、難しい構文を書く必要がないため海外でも人気のようです。
日本も海外を参考にしたプログラミング教育を導入する可能性は大いにありえますね。
スクラッチについての記事→スクラッチがすごい
[PHP] isset、empty、is_null関数の挙動まとめ
phpで存在するか否かを調べる関数にisset, empty, is_nullがあります。
どれがどのように判定されるのか、迷うことが多いので一覧にしてみます。
isset | empty | is_null | |
---|---|---|---|
$var | FALSE | TRUE | TRUE |
$var = “” | TRUE | TRUE | FALSE |
$var = “hoge” | TRUE | FALSE | FALSE |
$var = 0 | TRUE | TRUE | FALSE |
$var = 1 | TRUE | FALSE | FALSE |
$var = 0.0 | TRUE | TRUE | FALSE |
$var = 0.1 | TRUE | FALSE | FALSE |
$var = “0” | TRUE | TRUE | FALSE |
$var = “1” | TRUE | FALSE | FALSE |
$var = “0.0” | TRUE | FALSE | FALSE |
$var = “0.1” | TRUE | FALSE | FALSE |
$var = TRUE | TRUE | FALSE | FALSE |
$var = FALSE | TRUE | TRUE | FALSE |
$var = NULL | FALSE | TRUE | TRUE |
$var = array() | TRUE | TRUE | FALSE |
$var = array(1,2) | TRUE | FALSE | FALSE |
で、論理演算子の否定「!」を付与すると当然ながら正反対の結果となります。
!isset | !empty | !is_null | |
---|---|---|---|
$var | TRUE | FALSE | FALSE |
$var = “” | FALSE | FALSE | TRUE |
$var = “hoge” | FALSE | TRUE | TRUE |
$var = 0 | FALSE | FALSE | TRUE |
$var = 1 | FALSE | TRUE | TRUE |
$var = 0.0 | FALSE | FALSE | TRUE |
$var = 0.1 | FALSE | TRUE | TRUE |
$var = “0” | FALSE | FALSE | TRUE |
$var = “1” | FALSE | TRUE | TRUE |
$var = “0.0” | FALSE | TRUE | TRUE |
$var = “0.1” | FALSE | TRUE | TRUE |
$var = TRUE | FALSE | TRUE | TRUE |
$var = FALSE | FALSE | FALSE | TRUE |
$var = NULL | TRUE | FALSE | FALSE |
$var = array() | FALSE | FALSE | TRUE |
$var = array(1,2) | FALSE | TRUE | TRUE |
なかなかややこしいですね!
非エンジニアでも知らないとヤバイSQL Part6 〜似て非なるTRUNCATEとDROP〜
非エンジニアでも知らないとヤバイSQL Part6 〜似て非なるTRUNCATEとDROP〜
前回はテーブルのデータの更新と削除を行うための「UPDATE」と「DELETE」について学びました。
今回、学んでいくのは削除を行うための「TRUNCATE」と「DROP」です。
Part1からの内容が気になる方は非エンジニアでも知らないとヤバイSQL Part1をご覧ください。
前回のおさらい
まずは前回学んだ「UPDATE」と「DELETE」についての軽いおさらいをしていきましょう。
UPDATE
[sql]UPDATE t_employee SET name=’鮎川’AND age=’20’ WHERE no=5;[/sql]
DELETE
[sql]DELETE FROM t_employee WHERE no=5;[/sql]
このようにして書くのが「UPDATE」と「DELETE」です。こちらから前回の復習ができます→前回の記事
今回の内容
今回学ぶのは「TRUNCATE」と「DROP」という削除に関する構文です。
「えっ?削除はDELETEを使うんじゃないの?何が違うの?」と思われる方もいるかもしれません。
削除をするという点では三つとも同じですが実はまったく違うものなんです。
しっかり把握せずに使って顧客のデータを全て消してしまった…なんてことにならないようここでしっかり押さえておきましょう。
「TRUNCATE」って?
TRUNCATEを使うとテーブルを削除することができます。
下のようにして使っていきます。
[sql]TRUNCATE TABLE (テーブル名);[/sql]
このように書くことでテーブルのデータを一括で消すことができます。また、テーブルの構造は消さずに残しておいてくれます。
DELETE文でもテーブルを一括で消すことができますが、TRUNCATEの方が高速で処理を行ってくれます。
テーブルの全部の行を一括で消すものの、WHERE句での指定はできないというところもDELETEとの違いになります。
※DBMSによって異なりますが、MySQLではロールバック(復元)が出来ません。
実際に試してみます。
これがもとの「t_employee」テーブルです
下のように書き込むと
[sql]TRUNCATE TABLE t_employee;[/sql]
構造だけ残して全部のデータが消えます。
データが空っぽです、と表示されます。
したがって、
・テーブルのデータを一括で早く消したい
・テーブルの構造は消さずに残しておきたい
という時に使えます。
DROPって?
DROPは同じくデータを一括で消してくれる文です。
下のように書きます。
[sql]DROP TABLE (テーブル名);[/sql]
TRUNCATEと同じくテーブルのデータを一挙に消してくれます。
TRUNCATEと違うところはテーブルの構造自体も残してくれないというところです。
※これもDBMSによって異なりますが、MySQLではロールバック(復元)が出来ません。
これも試してみます。
もう一度このテーブルを用います。
下のように書くと
[sql]DROP TABLE t_employee;[/sql]
構造ごとデータが消えます。
「t_employee」というテーブルそのものがありませんという風に表示されます。
したがって、
・テーブルの構造ごと一括で消したい
という時に使えます。
まとめ
いかがでしたでしょうか?
・TRUNCATEとDROPはテーブルのデータを一挙に消すことができる。
・違いは構造を残してくれるかどうか
・どちらもMySQLではロールバックができない
ということがわかりました。
次回はテーブルとテーブルを結合させる「JOIN」について学んでいきましょう。
非エンジニアでも知らないとヤバイSQL Part5 〜UPDATEとDELETEでデータを編集〜
非エンジニアでも知らないとヤバイSQL Part5 ~UPDATEとDELETEでデータを編集~
前回はテーブルにデータを追加するためのINSERT文について学びました。
SQLについてから気になる方は非エンジニアでも知らないとヤバイSQL Part1をご覧ください。
前回のおさらい
前回学んだINSERT文はテーブルにデータを追加するためのSQL文でしたね。
[sql]INSERT INTO t_employee VALUES(9,’山本’,23,’女’);[/sql]
こういうのです。忘れてしまった方はこちらから→非エンジニアでも知らないとヤバイSQL Part4 〜INSERT句でデータを追加〜
今回のテーマ
さて、今回勉強するのは「UPDATE」「DELETE」です。
「UPDATE」はデータを更新するためのSQL文で、
「DELETE」はテーブルからデータを一行ずつ削除していくSQL文です。
※「DELETE」以外に「TRUNCATE」と「DROP」という削除のSQL文がありますが、それぞれ別のものです。それについてはまた今度学んでいきましょう。
「UPDATE」文って?
では「UPDATE」からですね。「UPDATE」はデータを更新したい場合に使うSQL文で、このように書きます。
[sql]UPDATE (テーブル名) SET (列名)=(データ);[/sql]
例えば、このテーブルのデータを変えたいときは
こんな風に書き換えます。
[sql]UPDATE t_employee SET name=’鮎川’AND age=’20’ WHERE no=5;[/sql]
UPDATEの後にテーブルを選択肢、どこの列にどんなデータを入れなおしたいかをSETで指定すればいいんですね。
「DELETE」って?
「DELETE」文はデータを削除したいときに使う文です。
SQL文はこのように書きます。
[sql]DELETE FROM (テーブル名);[/sql]
これでテーブルからデータを削除できます。
実際にやってみますね。
[sql]DELETE FROM t_employee;[/sql]
はい、これで全部のデータを消すことができました。
しかし、DELETE文は全部のデータを消すだけではなく、WHERE句で場所を指定することもできます。
こんな風に書くことで
[sql]DELETE FROM t_employee WHERE no=5;[/sql]
データの一部を消すことができます。
まとめ
UPDATE文とDELETE文はデータを更新し、削除するものです。データベースを更新、削除することは頻繁にあります。この文の使い方を覚えておくと非常に便利になるでしょう。
次回は今回やったDELETE文と似ていてまぎらわしい「TRUNCATE」と「DROP」文について学びましょう。
非エンジニアでも知らないとヤバイSQL Part4 〜INSERT句でデータを追加〜
非エンジニアでも知らないとヤバイSQL Part4 〜INSERT句でデータを追加〜
前回はWHEREでテーブルから指定した条件のデータを抽出する方法を学びましたね。
今回はテーブルにデータを追加して拡張してくれるINSERT文について学んでいきましょう。
前回までの内容が気になる方はこちらから↓
データの追加
前回までの内容で、このテーブルの中からデータを抽出することはできるようになりました。
しかし、テーブルがこれだけだと寂しいですよね。
新入社員を追加したり、変更も加えたい時もあると思います。
そこで出てくるのがINSERT文です。
INSERTとは「~を差し込む」「挿入する」という意味で、データを追加するために使われます。
[sql]INSERT INTO テーブル名 VALUES(‘データ名’,’データ名’…);[/sql]
INSERT文には書き方があり、上のように書きます。例によって文末の;は忘れないようにしましょう。
実際にINSERTを用いて、上のテーブルに新入社員の山本さんを追加してみます。
[sql]INSERT INTO t_employee VALUES(9,’山本’,23,’女’);[/sql]
これでこのテーブルに山本さんを追加できます。
VALUESの中で指定しているのが加えたいデータです。
つまり、上のINSERT文にはt_employeeというテーブルに社員ID”9”番で”山本”さんという”23”歳の”女性”社員を追加します”という意味があるんですね。
わからないデータがある時
追加したいデータがあってもわからない値があるかもしれないですよね。
そういうときには上のINSERT文を少し変えて
[sql]INSERT INTO t_employee(‘id’,’name’) VALUES(10,’尾形’);[/sql]
とします。これで社員ナンバーに”10”を入れて氏名に”尾形”を入れることができます。
他のnameやageの部分は空白のままになっています。
※また別の時に話すと思いますが、テーブルがNULL値を拒否してる場合はこのやり方は使えません。
複数のデータをまとめて追加したいとき
以上の方法でINSERTで追加する方法は学びました。ですがこのままではデータを一つずつしか入れることができません。
[sql]INSERT INTO t_employee VALUES(10,’青木’,24,’男’);
INSERT INTO t_employee VALUES(11,’横山’,23,’男’);
INSERT INTO t_employee VALUES(12,’勝田’,30,’女’);
INSERT INTO t_employee VALUES(13,’小暮’,24,’女’);
INSERT INTO t_employee VALUES(14,’小宮山’,24,’女’);
[/sql]
この方法でやっても追加はされてますが、少し面倒ですよね。
そんな時にはこんな風にしてみてください。
[sql]INSERT INTO t_employee VALUES
(10,’青木’,24,’男’),
(11,’横山’,23,’男’),
(12,’勝田’,30,’女’),
(13,’小暮’,24,’女’),
(14,’小宮山’,24,’女’);
[/sql]
このようにコンマで繋げるだけで簡単にデータを複数追加することが出来るようになります。
まとめ
・INSERT INTOテーブル名 VALUES(データ,データ,…)でデータを追加できる。
・複数追加したいときは「,」で省略できる。
次回はデータの内容を変更したいときに使うUPDATEと、データの削除のときに使
うDELETEについて学んでいきましょう。
プログラミングを学んでみたい方、短期間でプログラミングを身につけたい方は64時間で”なりたい”を叶えるプログラミングスクール「WISH」にお気軽にお問い合わせください。現在無料カウンセリングや、入会金無料キャンペーン、さらに受講料20%オフのキャンペーンを開催しております。
非エンジニアでも知らないとヤバイSQL Part3 〜WHERE句で検索条件を指定〜
SELECT文について
前回は、SQLにてSELECTする際、全カラム抽出、カラム指定抽出、件数指定抽出、OFFSETを使った件数指定抽出についてでした。
DBの種類(「関係型」「NoSQL」「階層型」「ネットワーク型」)、その中でも現在主流になっている「ネットワーク型」(RDBMS)について、SQLについてから気なる方は非エンジニアでも知らないとヤバイSQL Part1をご覧ください。
検索条件を指定
おなじみの社員マスターテーブル、t_employeeです。
全件のデータを取得したり、件数やカラム(列)を指定し取得する方法は前回やりましたね!では、今回は検索条件を指定してデータを抽出していきましょう。
まず、①性別が男の社員 についての検索結果はもちろん以下のようになります。
WHERE句のあとにカラム名を指定することによって、検索条件を指定することが可能となります。
性別が男 ですので sex = ‘男’となります。文字列は、シングルクォーテーションで囲いましょう!
続いて、②年齢が30才未満の社員 の検索結果は以下のようになります。
30才未満ですので、30才の社員は条件にはあてはまりません。
次に、③年齢が30才ちょうどの社員 はこのように。
これはもう簡単ですね!
続いて④年齢が30才以上の社員 の検索結果です。
30才以上ですので30才も含みます。以上の時の演算子は “>=” となります。 “>” のみですと、30才は含まれません。同じように30才以下にしたい場合演算子は “<=” となります。大なり小なりとイコールを組み合わせるだけなのでとても簡単です。
あと少しです。年齢が30才以上かつ性別が女の社員 は検索結果はこちら。
論理演算子の登場です。条件を複数指定したい場合はANDを使います。
最後は、⑥年齢が30才以上または性別が男の社員 です。
また論理演算子です。どちらかの条件をみたしていればいい時は、ORを使います。
まとめ
今回はWHERE句を用いたMySQLでの条件指定の仕方、またその際の演算子、論理演算子の基本的な使い方をみてみました。実際の業務でもこのような基本的なクエリも使いますのでいろんなパターンを検証してみるのも面白いと思います。
MySQLでは他にもさまざまな条件指定の方法や演算子の種類があります。次回はもう少し掘り下げて見てみましょう!
非エンジニアでも知らないとヤバイSQL Part2 〜SELECT文でデータ抽出〜
DB、SQLについて
前回の非エンジニアでも知らないとヤバイSQL Part1では、DBの種類(「関係型」「NoSQL」「階層型」「ネットワーク型」)、その中でも現在主流になっている「ネットワーク型」(RDBMS)について、SQLについて触れました。
今回は具体的に、SQLのデータ抽出のクエリ、SELECTについてです。SQLをある程度知っているとデータの扱い方やマーケティング、ゲームの企画などでも活かせます。構文はシェア率の高いMySQLで進めていきます。
SELECTの基本
前回も登場した社員マスターテーブル、t_employeeです。
ではまず、社員全員のデータを抽出してみましょう。
結果は以下の通りです。
では上記SQLについて解説です。
SELECT * FROM t_employee;
SELECTの後の*は全てのカラム(列)を意味します。表の縦です。対して横はレコードといい行(row)を意味します。
FROMはどのテーブルから抽出するかです。
SELECT カラム名 FROM テーブル名;
ということになります。慣れないうちは文末の;(セミコロン)を忘れがちなので気をつけてください。
SELECTの基本2 カラムを指定
では今度は社員テーブルから氏名のみを抽出してみましょう。
結果はカラムを指定しているので以下のようになります。
とっても簡単ですね!
SELECTの基本3 抽出件数を指定
では今度は社員テーブルから件数を指定して抽出してみましょう。
MySQLの場合、LIMITの後の数字は何件取得するかを指定します。
SELECT カラム名 FROM テーブル名 LIMIT 抽出件数;
すると結果は以下のようになります。
期待通りの結果ですね!
では、3番目から4人のデータを抽出したい場合、MySQLではどのように書けばいいのでしょうか。
3番目にあたる抽出の開始位置をOFFSET(オフセット)といい、MySQLでは以下のように指定します。オプションですので必要な時のみ指定します。
SELECT カラム名 FROM テーブル名 LIMIT (オフセット,) 抽出件数;
結果は以下のようになります。
ここでもう一度クエリを確認してみてください。3番目からなのにOFFSETに2がはいっていることに気づきましたか?開始位置は0から始まるので、3番目を指定したい場合は2をOFFSETに指定する必要があります。
まとめ
今回はMySQLでSELECTする際、全カラム抽出、カラム指定抽出、件数指定抽出、OFFSETを使った件数指定抽出についてでした。データ抽出の仕組みや方法って、色々な場面で役にたちます。非エンジニアでも知っているだけで大違いなSQL。次回もSELECTの続きをやっていきます!
非エンジニアでも知らないとヤバイSQL Part1
非エンジニアでもエンジニアの知識が最低限必要
IT業界で働いていくには、非エンジニアでもエンジニアの知識がある程度必要です。営業マンやマーケッター、プランナーやデザイナーであっても、同じ業界で働くためには社外の打ち合わせなどはもちろん、社内のやりとりをスムーズにするためにも最低限押さえておくべき知識があります。今回はSQLについてです。この記事を読めば、これまでプログラマーたちの会話が呪文のように聞こえていた人や、プログラミング自体に小難しいイメージがあって苦手意識がある人が少しだけ救われるかもしれません。
そもそもSQLって?
SQL(Structured English Query Language)についての説明をするにはデータベースの説明が不可欠です。DBと略されるデータベースはIT業界でなくとも、聞いたことがある人も多いと思います。
DBにはおおきくわけて「関係型」「NoSQL」「階層型」「ネットワーク型」の4種類があり、現在主流となっているのが「階層型」です。リレーショナルデータベース管理システム(RDBMS)ともいいます。
エクセルをイメージするとわかりやすいです。のように列(column)と行(row)で構成されています。
例えばこの社員管理テーブルと下記有給管理テーブルがあるとします。
このふたつのテーブルは社員IDで紐づいてます。このように二つのテーブルが関係性をもっていることから、「関係型」やリレーショナルデータベース(RDB)と言われています。
ではSQLの役割は何でしょうか。リレーショナルデータベース管理システム(RDBMS)と対話するための言語をSQLと呼びます。上記例で言うと、社員の男女の数をカウントしたり、2018年2月7日に有給をとった人の氏名を取得したりといった具合です。また、2月10日に相沢さんが休んだ場合、そのデータを有給管理テーブルに挿入する必要があります。他には、社員が年をとった時には年齢を加算する必要があります。このようにデータベースに要求することをクエリ(問い合わせ)といいます。リレーショナルデータベース管理システムには「Oracle」「MySQL」や「Access」「PostgreSQL」などの様々な種類があります。中でも「MySQL」は、世界中で利用されているオープンソースのRDBMSの一つです。無償で高速である点が人気です。
次回はSQLのクエリについて学んでいきましょう。
非エンジニアでも知らないとヤバイCPU Part2
コア、クロック周波数
前回の非エンジニアでも知らないとヤバイCPU Part1
では、CPUの処理性能がわかるクロック周波数と、CPUの中心をになっているコアについて触れました。
今回は、処理を効率よく進めるためのキャッシュメモリとスレッドについて触れていきます。
処理全体のバランスをとるキャッシュメモリ
以前、CPUの処理速度がかなりのスピードで高速化していた。
しかし、データを記憶する記憶装置であるメモリの性能は大きく向上しなかった。
なので、両者の性能が大きく開いてしまった。
これによってどのような問題が起きるかというと、CPUが高速で処理をし、メモリからデータを要求した際に、メモリの反応が遅いので、CPUは処理を終えているが次の処理を行うことが出来ず、全体の処理速度が著しく下がってしまう。
この現象をメモリ遅延という。
この問題を緩和したのが、キャッシュメモリである。
CPUとメモリの間に高速なキャッシュメモリを設けて、速度差を緩衝している。
キャッシュメモリには、超高速の記憶素子であるSRAMを使用し、メインメモリには低速で安価なDRAMを使用する。
しかし、キャッシュ(1次)を設けても、CPUとメモリの差が大きすぎるので、なかなか処理速度の差が縮まらない。
そこで、1次キャッシュだけでなく、2次・3次キャッシュを設けることで、全体の速度バランスをとっている。
一般的にCPUから遠ざかるにつれて、キャッシュの速度を遅くなり、容量は大きくなる。
マルチタスク能力を上がるスレッド
スレッドとはCPUが同時に担当できる仕事の数。
1スレッドの場合、1つの仕事しかできないが、2、3スレッドを増えるにつれて同時にこなせる仕事が増える。
正確に言えば、同時に処理ができないわけではないが、1スレッドの場合に2つの仕事が来たときに余っているスペースで処理することはできるが、効率よく処理をこなすことができない。
スレッドが増えてもコア数が増えるわけではないので格段に処理能力が上がるわけではないが、複数の仕事を効率よく処理できるので、処理がスムーズになることを体感でき、マルチタスク能力が上がる。
まとめ
キャッシュメモリやスレッドなどの機能を駆使して、現在のコンピュータの処理速度は向上している。
次回もCPUの性能について触れていきます。
Warning: include(/var/www/html/tetraup.com/knocknote.jp/tmpl/aside.html): failed to open stream: No such file or directory in /var/www/html/tetraup.com/news_topics/wp-content/themes/news/archive.php on line 24
Warning: include(): Failed opening '/var/www/html/tetraup.com/knocknote.jp/tmpl/aside.html' for inclusion (include_path='.:/usr/share/pear7:/usr/share/php') in /var/www/html/tetraup.com/news_topics/wp-content/themes/news/archive.php on line 24