宇宙とコンピューターが大好きな塾長です。
学校の先生や塾の先生が知っておくべき3大プログラミング言語といえば、
- Scratch(スクラッチ)
- python(パイソン)
- JavaScript(ジャバスクリプト)
ですね!(塾長の偏見です)。
冗談を抜きにしても名前くらいは知っておくべきで、けっこう重要なキーワードだとは思います。
中でもpythonの人気はずっと上昇傾向ですね。
先日はプロコースの生徒たちを指導しましたが、python(パイソン)を使っています。プログラミング教室「マイクラミング」の話です。
そして先週、新規面談をした中学生も独学でpythonを学び始めたと言っていました。なぜかドヤ顔。最近は単に「プログラミングを勉強している」というより「pythonをやっている」という方がマウントをとれるのでしょうか。
また別の会議では、とあるプロバイダーのとある技術者さんが「python本格的にやりたいなー」とおっしゃってました。
そんな感じで私の身の回りでもpythonが盛り上がってきています。
ということで、今回は
- なぜ、python は人気上昇中なのか?
- なぜ、python がおすすめなのか?
について書きます。
ただし、どうしても塾長の感想を含んでしまうので、そこはごめんなさい。
Contents
pythonの対象年齢(対象レベル)とは
人気があるとはいえ、pythonは「テキストプログラム」のプログラミング言語です。そのため、どうしても次のハードルが出てきます。
- 英単語をたくさん使う
- 1文字でもタイプミスをしたら動かない
確かにpythonの文法はシンプルですが、それでも直ちに「小学生にもわかりやすい」とはなりません。少なくとも上の2つのハードルをクリアできる精神年齢が必要です。
もしも上の2点が心配ならば、スクラッチ(Scratch)から始めるのが無難だと思います。
例えば、1文字でもタイプミスをすれば動きません。カンマとピリオドを間違えただけでもエラーです。次の2つの例を見比べてみてください。
name = "太郎"
print( "私の名前は{}です。",format( name ) )
name = "太郎"
print( "私の名前は{}です。".format( name ) )
上のプログラムは間違っていて動きませんが、下のは正しいです。
たったの1文字の差です。
こうした1文字の間違えでも冷静かつ前向きに対処できる精神年齢(IQ的な能力)が必要です。
学年や年齢ではなく、次のような感覚で判断した方が無難だと思います。
プログラミングが初めての場合
- 学力が平均点くらいの中学1年生
- ミスに対して前向きで、ミスの原因を調べたり予想したりするのが得意な小学5年生
- 英語で作文が得意な小学3年生
くらいが対象の下限になると思います。
プログラミング経験がある場合
- マイクラミングのハイコース卒業者
- スクラッチで「自分で考えて」一通りのプログラミングができる人
- 他のテキストプログラミング言語で「自分で考えて」一通りの制御構文をプログラミングできる人
必ずしも文法の詳細を暗記している必要はなく、調べながらでも良いですが、「自分で考えて」プログラミングしてきたことが必須です。
考えなしに教科書やネットからコピー&ペーストしただけでは、たとえそれが動いたとしても、プログラミングを経験したことにはなりません。
たまにそういう人がいるので注意してください。
pythonが人気の理由
ネット上でpythonが人気だーと話題になるのは主に2つです。
- 人気ランキングでpythonが上位
- pythonの求人は年収が高い
ランキング上位について
人気ランキングというのは、プログラマーからの人気投票の結果です。どんな理由でも1票は1票ですから「なんとなく人気があって上位」ということです。
とにかく大雑把に「pythonが好き」という人の割合が高いよ、ということくらいしか分かりません。
後半で塾長がpythonを使ってみた感想を書いておきますので、参考にしてみてください。
年収が高い件について
これは人材の人数が少ないという意味で、確かに高収入になりやすいです。
pythonの求人内容は、主に情報解析や人工知能を使ったプログラミングです。
- 情報処理や人工知能を扱える高度な数学を身に着けている!
なおかつ、 - pythonでプログラミングができる!
そんな高い能力を持った人なんて、そもそも人数が少ないです。
人にできないことができるのですから給料が高くなります。
今のところ、その種の仕事は数が少ないです。
しかし今後は増えていくと見込まれていますから、学生の皆さんは希望を持って良いと思います。
とはいえ、3年後、5年後にどうなるかは分かりません。
工業的なニーズや商業的なニーズは、就職する時が来たら、その時に流行っているもので考えた方が実用的です。
もしも就職がずっと先であるならば、
「できるだけ学校の勉強をプログラミングに生かす」
という姿勢で「基礎」をしっかり鍛えておくのが良いと思います。
そういう意味では業界色の薄いpythonやScratchが無難ですね。
プログラミング言語 python の特徴
次にプログラミング言語としての特徴を挙げてみました。
pythonの特長
- 文法がシンプルかつ十分(短い文で済む、カッコ不要など)
- 高機能(高度な技術、トレンドば技術にすぐ対応)
- マルチプラットフォーム(WindowsでもMacでもLinuxでも富岳でも)
- 書いたらすぐ実行できる(コンパイル不要)
- 基本的に全て無料
- すぐに調べられる(解説ページやサンプルプログラムが多い)
pythonの得意分野
- 統計の全般
- 科学シミュレーション
- 人工知能の利用や開発
- 画像処理
- Webサーバー
- ゲーム(遅くても良い分野)
およそ何でもOKです。
日本のスーパーコンピューター「富岳」でも、ちゃんとpythonでプログラミングができますよ。
pythonの苦手分野
- 高速処理が必要なゲームプログラム
- 高速で高スループットな処理が必要なサーバープログラム
書いたらすぐに実行できる「インタープリター言語」であるため、どうしても計算スピードが犠牲になります。
そのため極端に計算スピードを要求されてしまうような処理には向きません。
フォートナイトやファイナルファンタジーのような本格的なCGのゲーム開発は無理です。
また動画編集ソフトや高度な画像編集ソフトも、pythonで開発するには無理があるでしょう。
pythonでは性能不足です。
CPUやGPUの性能を限界まで使いきるような超高速処理のプログラムを作るなら、C言語やC++、あるいはそのWindows版であるC#がおすすめです。
ほんの少しだけ性能を妥協する代わりに、マルチプラットフォームで動くアプリを作るならJavaがおすすめです。マルチプラットフォームの中ではJavaが最速です。
ただし、そのようなアプりの中で「作業を自動化するためのプログラミング言語」としてpythonが採用されている場合もあります。例えばBlenderというCGを作るアプリです。
性能を抜きにすれば、pythonはトップレベルに強力なプログラミング言語と言えます。
実際にpythonを使ってみた感想
塾長はこれまで、仕事やバイトなどで、C言語、C++、Objective C、Visual C++、Visual Basic、BASIC、Java、JavaScript、PHP、python、SQL(どこまでプログラミング言語とみなすか悩ましいですが)などを使ってきました。
結論から言えば、それらの中で pythonがダントツに良かったです。
書きやすいし、読みやすいし、思ったことがすぐできる!
という意味で、とにかく使いやすいです。初めてpythonを使ってみたときは、本当に衝撃でしたよ。
プログラマーの視点で優れていること
まず「プログラマーの視点」から見て、使いやすいです。
簡潔で読みやすくて無駄がない。それなのに、奥が深い!
そんな文法です。
きっと、プログラミングに関する「先人の知恵」が、ふんだんに組み込まれているから、そんなエレガントな文法になったのでしょう。
例えば「デザインパターン」研究されてきた知恵の一部が、言語の仕様として最初から組み込まれています。デコレーターやイテレーションなどです。
他にも、標準で用意されているオブジェクトの型の種類がちょうど良いです。細かすぎず、粗すぎず、それでいて、順序付けできるか否か、イテレーティブか否か、変更できるか否か、というカテゴライズの全てを網羅しているラインナップです。
ちょっと細かい話になってしまいましたが、要するに、本当によく考えこまれた言語だなぁと思います。
こうした言語仕様の何がすごいかと言えば、pythonで良いプログラムを書くだけで、良い設計をしたのと同じ価値が生まれるということです。
コーディングと設計の区別が、もはや無くなってきたということです。
優れた言語仕様と読みやすさが相まって、pythonのプログラムは仕様書としての価値も高いと言えます。
実際 pythonには、プログラムから仕様書を自動生成してしまうツールがいくつか用意されています。
とはいえ、こうした「プログラマーの視点」から見たエレガントさは、他の新しいプログラミング言語も負けてはいません。いろいろなプログラミング言語がタケノコのように、あちこちで生まれている時代です。
しかし、それでもなお、pythonが凄いと言いたいです。その理由は次の通りです。
科学技術の視点で優れていること
pythonは、なんと「数学や物理の視点」から見ても使いやすいのです!
他のプログラミング言語と一線を画す理由が、正にこれだと塾長は思います。
これまでのプログラミング言語は、数学や物理を取るか、アプリを取るか、のどちらかでした。
数学や物理が得意になれば、アプリを作るのが苦手になります。
アプリを作るのが得意になれば、数学や物理が苦手になります。
ところがpythonは最初から両方できます。
数学や物理が使いやすいので、pythonは大学の研究室や企業の研究開発で、よく使われています。
かつて理系の研究室ではC言語やC++(以降、まとめて単にCと略記します)を使って、研究に使う数学や物理の公式をプログラミングしていました。Cは何でも作ることができて、しかもプログラムが爆速で動作する、という最強のプログラミング言語ですが、その代わりに、何でも自分たちで用意する必要があります。先輩から後輩へプログラムを引き継いで、改良したり機能を拡張したりして、多くのコストと時間をかけてプログラムをメンテナンスしていく必要がありました。
しかし今は pythonのおかげで、そんな苦労の大部分が不要になってしまいました。pythonではたいていのことが最初からできるからです。
よっぽど計算スピードが重要になる研究でもしない限り、もう研究室でCをやる必要はありません。Pythonのお手軽さを1度でも味わってしまったら、もうCには戻れないでしょう。
そして実は、pythonはCと仲良しです。python自身がCで作られているからです。そのためスピードが重要な部分だけCで作り、残りをpythonでつくる、というハイブリッドな開発もできてしまいます。実際に高速なライブラリーも多く提供されています。
さて、数学や物理のプログラミングがしやすいということは、数学や理科の教科書の延長線上でpythonが利用しやすい、ということです。つまり、これからは高校生や大学1年生の教育でもPytnonの利用が増えると思います。
Pytnonのプログラミングに慣れてしまうと、もう他の言語が「めんどう」「ムダが多い」などと思えてしまいます。
人気の秘密はこうしたエレガントさにあるのだろうと勝手に想像しています。
忘れても問題ない文法とは?
誤解をしてほしくないので、最後にテキストプログラムの文法について補足しておきます。
今回のブログでは、pythonのメリットを語るために、文法や言語仕様について多く書きました。
でも誤解をしないでください。実際には文法を細かく「暗記」する必要はありません。しかも、これはpythonに限ったことではありません。
プロの世界でさえも、細かい文法は調べながらプログラミングしています。
意外でしょうか?
でも、これは常識です。例えば、
「C言語で仕事するのは2年ぶりだな。if 文の書き方はJavaとどう違うんだっけ?」
「PHPひさしぶり。文字と文字を連結する演算子は何だっけ?」
みたいなことは、プロでもよくあります。
プロの世界では1人が7~8種類のプログラミング言語を扱うのが普通です。C言語だけ、pythonだけ、というプログラマーなんて新人くらいです。
とはいえ1つのプロジェクトに使うプログラム言語は1~3種類くらいで済みます。ですから1つのプロジェクトに従事している間は、残りの使っていないプログラミング言語の細かいことは、忘れてしまいます。
たいていのプログラミング言語は似ていますが、細かいところで違います。そのような
プログラミング言語によって異なる部分
については、いちいち細かく覚えていられませんし、そこの暗記にこだわる必要もありません。
代わりに、
- 標準で使えるオブジェクトの型は言語によって違う
- 変数の初期化、参照、代入の作法が言語によって違う
- 分岐は if – else が基本だが、細かいルールや switch を使えるかなどは言語によって違う
- 繰り返しは for や while が基本だが、細かいルールは言語によって違う
・・・
みたいな勘所が、経験とともに蓄積していくものです。
「何を暗記しなければならないか」という項目は十分に知っておく必要はあります。
だからと言って、今すぐに暗記している必要があるか否かは別問題です。
細かいことは、必要になったら調べて暗記します。そしてプロジェクトが完了するまでは暗記の状態を保ちます。
しかしプロジェクトが終わって使わなくなれば、また忘れてしまうでしょう。
そんな感じで良いです。その方が、
「今回、また新しいプログラミング言語を使うことになった。」
と言われても、びっくりせずに済みます。
ほかの言語との違いを調べて使いこなすことには、変わりがないからです。
逆に、少しでも記憶があいまいなら、じゃんじゃん調べて確認します。
不確かな記憶のままプログラミングを進めてしまう人の方が信用できません。
プログラミングで大切なのは、
× 文法の知識が完璧であること
○ 全て説明できること
です。
プログラムの1行1行について、
「なぜ、そう書いたのか」
を1文字も漏らさず説明できる必要があります。
1文字でもあいまいだったら、すぐに調べる必要があります。
不明なことは、すぐ調べて確かめる!
これ、大切です。
勉強も同じ
細かい知識を忘れても、大した問題ではない。
これは数学や国語でも同じなのではないでしょうか?
社会や理科は、もっとそうですよね!
例えば歴史。
細かいことは、レポートを書いているときは覚えているかもしれません。
しかし、それが終われば忘れてしまいます。
相変わらず社会の定期テストや入試問題の多くは「暗記の詰込み」ですが、受験が終わったら忘れます(※)。
それでも、歴史の流れや国際関係の背景は、いつでも語ることができるだけの素養が身につくでしょう。
・・・みたいな感じですね。
よく、カリスマ的な人がプログラミングの実況動画を出しています。
すらすらと軽快にプログラムを書いて見せています。
そんな風にできるのは、たまたま業務でよく使っているか、リハーサルを十分にしているからです。
そういう人でも、違うプログラミング言語で同じものを作れと言われたり、違うジャンルのアプリを作れと言われたら、しばらくの間は、調べながらプログラミングしていくことになります。
だからといって、その人の能力が低いことにはなりません。
すらすらプログラムを書ける場面は、自分にとって、ある程度プロジェクトが乗ってきた時期です。
プログラミングの経験が蓄積できていれば、たとえ最初の数百行が遅くても、残りの数千行から数万行のプログラムはすらすら書けます。
逆にコンピューターを使いこなせるはずのプログラマーが、文法の暗記で消耗しているようでは先が思いやられます。
暗記で苦労する「暇」があったら、どんどん調べまくって仕事を先に進めましょう。そうするうちに勝手に頭に入ります。
※ 最近の入試問題は、理科や社会でも暗記の詰込み要素が無くなってきました。
多くの資料でヒントがたくさん与えられている問題形式が多くなってきました。そのため暗記がうろ覚えだとしても、今まで調べたり学んだりしてきた経験が十分にあれば、ちゃんと解けるように工夫されています。
まとめ
今回はpythonの魅力について書きました。
そのためにpythonの文法や言語仕様について少し詳しく書いたところもありました。だからと言って文法の詳細を覚えてほしいと言っているのではありません。
1つのプログラミング言語について、特徴をよく調べて使いこなすことが大切です。
そして少し時間がたって細かい文法を忘れたとしても、気にすることはありませ。細かい文法は、使う時に調べて確認すればよいです。
大切なことは、
「なぜ、そう書いたのか」
を1文字も漏らさず説明できることです。
あいまいなことや不明なことを放置せず、すぐに調べて確認する姿勢が大切です。
このことは勉強も同じだと思います。
ヒーローズ植田一本松校の進学実績
卒塾生(進路が確定するまで在籍していた生徒)が入学した学校の一覧です。
ちなみに合格実績だけであれば更に多岐・多数にわたりますが、当塾の理念に反するので生徒が入学しなかった学校名は公開しておりません。
国公立大学
名古屋大学、千葉大学、滋賀大学、愛知県立大学、鹿児島大学
私立大学
中央大学、南山大学、名城大学、中京大学、中部大学、愛知淑徳大学、椙山女学園大学、愛知大学、愛知学院大学、愛知東邦大学、同朋大学、帝京大学、藤田保健衛生大学、日本福祉大学
公立高校
菊里高校、名東高校、昭和高校、松陰高校、天白高校、名古屋西高校、熱田高校、緑高校、日進西高校、豊明高校、東郷高校、山田高校、鳴海高校、三好高校、惟信高校、日進高校、守山高校、愛知総合工科高校、愛知商業高校、名古屋商業高校、若宮商業高校、名古屋市工芸高校、桜台高校、名南工業高校
私立高校
中京大中京高校、愛工大名電高校、星城高校、東邦高校、桜花学園高校、東海学園高校、名経高蔵高校、栄徳高校、名古屋女子高校、中部第一高校、名古屋大谷高校、至学館高校、聖カピタニオ高校、享栄高校、菊華高校、黎明高校、愛知みずほ高校、豊田大谷高校、杜若高校、大同高校、愛産大工業高校、愛知工業高校、名古屋工業高校、黎明高校、岡崎城西高校、大垣日大高校
(番外編)学年1位または成績優秀者を輩出した高校
天白高校、日進西高校、愛工大名電高校、名古屋大谷高校
※ 成績優秀者・・・成績が学年トップクラスで、なおかつ卒業生代表などに選ばれた生徒
生徒・保護者様のお友達登録はこちら
LINE登録するとプレゼントがもらえます!
【会員限定】お子様の成績と可能性を伸ばす18個のノウハウ
塾関係者様のお友達登録はこちら
LINE登録するとプレゼントがもらえます!
「zoomで簡単。オンライン授業移行の教科書」
または個別対談も可
名古屋市天白区の植田で塾を探すなら個別指導のヒーローズ!!
★ 直接のお問い合わせ ★
――――――――――――――――――――――
個別指導ヒーローズ 植田一本松校
〒468-0009
名古屋市天白区元植田1-202 金光ビル2F
TEL:052-893-9759
教室の様子(360度カメラ) http://urx.blue/HCgL