はじめに
こんにちは。キノコードです。
この動画では、タイトルにある通り、プログラミングで「1億個の計算問題」を解くといういうことをやってみます。
今、人工知能が実社会でも活用されていますよね。
その人工知能が発展した理由の1つとして、パソコンなどのコンピューターの計算スピードがアップしたことがあげられます。
そして、プログラミングを動かしているのは、パソコンなどのコンピュターです。
その高速で計算することができるコンピュータのプログラミングですが、一体どのぐらい速いんでしょうか?
私が3年前に買って、ちょっと古びてきたMacbookProを使って実験をしていきましょう。
パソコン画面に切り替えて進めていきましょう。
レッスンで使ったファイルはこちら
キノクエストでアカウントの新規登録に進み、メール認証を完了します。
ログインした状態(プラン選択画面が表示されます)で下記のボタンをクリックしてください。
計算
動画の後半には、プログラミング言語ごとのスピード対決もやりますのでお見逃しなく。
プログラミングに解いてもらう計算問題は、足し算、引き算、掛け算、割り算を順番に解いてもらいます。
具体的には、(計算する方、計算される方だとすると)
1-1=0
1*2=2
1/3=0
1+4=5
1-5=-4
1*6=6
1/7=0
1+8=9
1-9=-8
1*10=10
1/11=0
・
/9991=0
1+9992=9993
1-9993=-9992
1*9994=9994
1/9995=0
1+9996=9997
1-9997=-9996
1*9998=9998
1/9999=0
・
9999/9991=1
9999+9992=19991
9999-9993=6
9999*9994=99930006
9999/9995=1
9999+9996=19995
9999-9997=2
9999*9998=99970002
試しに、人間の男性、40代のおじさんが1分間でどれだけ解けるかやってみます。
実際プログラミングが解く問題と同じですが、おじちゃんなので1桁ずつの計算だけで全力で解いていく!
問題を解く。
さぁ、結果です。
1分間に33問でした。非常に大量に解くことができました。
ちなみに、この高速スピードであっても、1億問解くのに、303万分かかります。
1日8時間解き続けると、17年かかります。
4桁同士だと何倍もかかりますね。
僕は41歳なので計算問題を解き切る前に老衰しているかもしれないです。
さて、それではプログラミング言語は、私より高速に解くことができるのでしょうか?
パソコン画面に切り替えてやっていきましょう。
一言にプログラミング言語と言っても、プログラミング言語には種類があります。
人工知能が作れる今や人気No1言語と言ってもいいPythonでやってみましょう。
ソースコードはこんな感じです。
このソースコードはキノコードのウェブサイトに置いてありますので、触ってみたいという方はいじってみてください。
ソースコードを簡単に説明をすると、数字を4で割って、割り切れれば足し算、余りが1なら引き算、余りが2なら掛け算、余りが3なら割り算をするといったことをやっています。
こういったプログラミングのレッスンは、Python超入門コースという初心者の方でもプログラミングを学べる動画も作っていますので、ご興味ある方はご覧ください。
今、右側にカードが出ています。また、概要欄にもURLを貼っておきます。
さて話を戻して、Pythonだと、1億問の計算がどのぐらいで終わるか?
それでは実行してみましょう。スタート!
結果は、16.168秒でした。
私が17年かかる計算を16秒で終わらせてしまいました。
私の1100万倍の速さです。
調べてみると、私がカタツムリだとすると、パソコンのスピードは東海道新幹線よりも旅客機よりも速い計算になります。想像ができないスピードですね。
ただし、こんなに計算が速いPythonですが、実はプログラミング言語の中ではスピードは遅い方なのです。
そこでこの動画の後半では、6つのプログラミング言語のスピード対決をやってみたいと思います。
先ほど実行をしたPythonのソースコードを若干変更をして、1万回に1回、現在の計算回数を表示されるようにします。
つまり、1と表示される時は1万回計算が終わっており、2と表示されるなら2万回。100と表示で100万回。10000と表示されると1億回計算が終わったことになります。
また、計算回数を表示させるプログラムを追加するので、10000回、数字を表示させる処理を走るので、Pythonの計算結果は、先ほどの16.168秒より遅くなるはずです。
それでは、Pythonとスピード対決をする対抗馬のプログラミング言語を紹介します。
1枠は、Pythonです。人工知能、ビッグデータ分析、Webアプリケーション開発など今やひっぱりだこの人気言語。ただし、このキノコードダービーの本命ではありません。
続いて2枠は、Javaです。求人数が多い言語ダービーで何度も1位も獲得、銀行や官公庁のシステム開発に使われるお堅いやつでございます。オブジェクト指向言語の申し子は、どこまでトップ争いに食い込めるか。
3枠はJavaScriptです。ブラウザ上で動く紅一点の牝馬です。最近ではnode.jsというサーバーサイドでも動く心の広い牝馬でもあります。
4枠は、島根県で生まれた唯一の日本馬です。生みの親のまつもとひろゆきさんも、馬主席からキノコードダービーを見守っています。
5枠目はGo言語です。Google生まれのサラブレッドです。平均給料が一番高いというサラブレッドの名を欲しいがままにしています。スピードにも定評があります。
最後の6枠にC言語です。「プログラムの世界はC言語できている」とも言われた1972年生まれのベテラン馬です。このベテラン馬は、新しい言語たちにどこまで対抗できるのでしょうか?
それでは、出走の準備が整ったようです。それでは、キノコードダービースタートです。各馬一斉にスタート。
開始早々、C言語が圧倒的なスピードでゴールです。1972年生まれのベテラン馬。スピードではまだまだ若いもんには負けんという表情のウィニングランです。
続いてGoogleから産まれたサラブレッド、Go言語のゴールです。
3着はJavaです。弟のKotlinもヒヒーンと喜んでいます。
残るはPython、JavaScript、Rubyです。
4着はRubyです。純国産馬、検討いたしました。ここからは少し早送りをします。
5着はPythonです。Pythonは人気はありますが、やはり鈍足のようです。
6着が唯一の牝馬JavaScript。遅くても希少な牝馬。ビリでも余裕の表情。
さぁ着順が確定しました。1着、C言語、2着、Go言語、3着Java。4着Ruby、5着Python、6着JavaScriptという結果となりました。
キノコードダービー、1着がC言語ということで幕を閉じました。第二回キノコードダービーは言語を増やして開催される予定です。
最後に宣伝です。
キノコードでは、Python超入門コースの他に、Java超入門コース、JavaScript超入門コース、Ruby超入門コース、PHP超入門コースなど、初心者の方でもわかるプログラミング講座を用意しています。
他にも、業務を効率化するためのExcel関数の動画や、プログラミングを使ってExcelを自動化する動画、他にも業務自動化する動画なども用意しています
気になる方は、キノコードのチャンネルがどこにいったかわからなくならないようチャンネル登録をお願いします。
計測方法は、プログラミングで時間を計測する方法がありますが、それは使わずに単純にVSCodeの実行がおわった「Done」の秒数でみていきましょう。
それでは、まず、人気急上昇中のPythonからやってみます。ソースコードをざっくり説明すると、
二重ループでやります。
その側のループを1万回まわしている間に、内側のループを1万回まわします。
そして、4つの場合分けをして処理をしています。それではやってみましょう!!!