プログラミングとは?
今、このページをご覧になっている皆さんは、パソコンかスマホか、はたまはタブレットPCか、そういったものでご覧になっていることでしょう。
こういったデバイスがどうやって動いているかというと、内部に電気回路があって、そこに電気を流す(1)、流さない(0)の2種類の組み合わせで動いています。

要するに、コンピュータが理解できる言語は、101110101010010…といった感じなわけです。
でもある動作をさせたい時、人間が101101011000111010…なんて書いたって何の動作なのか分からないですよね。
そこで出てくるのがプログラミング言語なのです。
単なる01の羅列を、人間が分かりやすく、そして目的の動作をさせるため、翻訳したもの、つまりコンピュータと人間を繋ぐための言語、それがプログラミング言語なのです。
そしてプログラミング言語を使って、目的の動作をさせる文章がプログラム、その文章を書く動作がプログラミング(コーディングということもあります)なのです。
プログラミングを学ぶと何ができる?
プログラミングを学び、コンピュータと会話できるようになったら、何ができるのでしょうか?
端的に言えば、コンピュータを思い通りに動かすことができます。
私は研究者なので、パソコンで実験データを取得し、保存させたり、取得したデータを処理して、画面に表示させたりということをメインで用いています。
世の中では、もちろんパソコン、スマホ、タブレットのようなデバイスを動かすのに用いられていて、アプリやゲームなんかもプログラムでできています。
それでも普通、自分でゲーム作ったり、アプリ作ったりしないでしょう。
それに自分が作るよりもアプリをダウンロードしたほうが早いのは間違いないですし、目的通りに動いてくれます。
本当に自分の目的に合ったアプリやソフトが見つかるならそれでいいですが、使いにくいけど、これしかないから使っているなんてアプリやソフトはありませんか?
もしくは簡単な作業なんだけど、ちょうどいいアプリやソフトがなくて困っているなんてことはありませんか?
そんな時、自分でプログラミングできれば、自分の思い通りのアプリやソフトを作れたり、作業を自動化したりできます。
例えば、写真が好きな人であれば、撮った写真を自動でカテゴリ分けしたり、フィルターをかけたり、主婦なら家計簿を自動で処理したりなんてこともできるようになるかもしれません。
最近ではスマートホーム化なんていって、帰ってきたら自動で電気を点けてくれたり、「テレビ点けて!」って言ったら、リモコンを触らなくてもテレビをつけてくれるなんて近未来的な家も現実のものとなってきています。
こういったデバイスを自分の思い通りに動かすこともできるようになるでしょう。
プログラミングをやったほうがいい理由
プログラミングを学んだほうがいいか?という問いに、私は「絶対やったほうがいい」と答えます。
なんだかんだ言っても、我々の生活はもうコンピュータとは切っても切り離せない生活となっています。
スマートホーム化していなくても、パソコンもスマホもあるでしょうし、外に出ればスーパーのレジだってATMだって、はたまた電車の改札だって、コンピュータの恩恵に預かっているわけです。
できることならこう言ったコンピュータと仲良くすることが、今後生活を豊かにするために必要なことであることは間違いないでしょう。
仕事をしている方であれば、論理的思考(ロジカルシンキング)を鍛えるのにいい題材でもあります。
この論理的思考は、義理、人情、その場の雰囲気を重視する日本人は苦手だと言われています。
現在、日本が活気がないのは、こういった感情的なものが、合理性よりも重視されてしまったからだと解説しているのを目にしたことがある人もいることでしょう。
もし、感情面が得意な日本人が、さらに論理的思考による合理性を手に入れたら、最強なのではないかなぁなんて思ったりもします。
話が逸れましたが、何故プログラミングを学ぶと、論理的思考を鍛えることができるのでしょうか?
コンピュータは、頑固で融通が利かないけど、言われたことに対してはものすごく従順です。
感情や妥協は一切なし、こうやって、ああやって、そしてこれをやってと指示を間違いなく伝えてあげないと、思った処理をしてくれません。
何となく、「これやっといて〜」では動いてくれないのです。
コンピュータのルールに従って、1つ1つ間違いなく指示を積み上げ、自分が必要とするものを作るいう経験が、仕事での考え方も感覚ではなく、最終目的をはっきりと定め、それに向かい必要なことを論理的・合理的に処理する能力を鍛えることになることでしょう。
だからこそ私は、初歩的なことでもいいので、プログラミングはやったほうがいいと言います。
プログラミング言語は何がいい?
Aboutにもある通り、私自身はRuby、Java、Objective-C、Pythonとまぁ節操もなくいくつもの言語をかじってきています。

Rubyは、何となくプログラミングを始めようと思った時、他のプログラミング言語よりも簡単だという触れ込み(実際そうなのですが)で始めました
何が簡単かというと、型宣言が必要がないことになります。
型宣言とは、例えば「1」と書いた時に、どういった「1」なのか説明する必要があることを言います。
コンピュータに対しては、この「1」が整数としての「1」なのか、小数の「1.0」なのか、それか文字としての「1」なのか教えてあげる必要があります。
何故なら、プログラミング言語では、それぞれできる処理が異なるのです。
ただ、このRubyでは、どういった「1」なのか教えてあげる必要ななく、どんな「1」としても扱えるという特徴をもっていて、プログラミング初心者が理解しづらい型宣言を省けるというのが私的に良かったわけです。
その後のJavaでは、ある処理をするソフトウェアを作りたいと思った時、GUI(グラフィカルユーザーインターフェース)も作りたいなと思ったのがきっかけです。
プログラミングというと、わけわからない文字が並んで、どこに何を入れたらいいかわからないものです。
ですが例えばメールを送る時にそんなこと考えないですよね。
メールを書いて、送信ボタンを押したら、メールを送る。
もちろん裏ではプログラムが動いているわけですが、万人が見て、クリックすると思い通りの処理ができる、これがGUIです。
反対に1つ1つコマンドを入力していく画面をCUI(キャラクターユーザーインターフェース)と言います。
とにかく、誰でも簡単に使えるようにGUIを作りたかった。
そしてJavaがそれが得意だということで、Javaを使ってみたわけです。
Objective-Cは、これこそ趣味で、一回でいいからiPhoneのアプリを作って見たかったという、ミーハーな想いから勉強しました。
ちゃんと最後まで作りきり、App Store登録までしましたが、現在では削除してあり、残念ながらお見せすることができない状況になっています。
Pythonに関しては次の項目に譲ることにします。
こうやっていくつかの言語を使ってみて言えることは、あまり言語にこだわることはないということです。
プログラミングの考え方を一度学べば、他の言語においても同じ考え方はできますし、処理に関しても同じようにできます。
確かに処理速度が異なったり、プログラミング量が違ったりとか細かいことを言えば色々あるでしょうが、初めてプログラミングする人にとってはあまり気にすることはないでしょう。
とりあえずプログラミングの世界に触れてみるというのが重要です。
Pythonをオススメする理由
現在使っているPythonは、仕事で処理を自動化したいと思った時に、Anacondaと呼ばれるPython用開発環境の存在を知ったことが大きいです。
またPythonは他の言語と比べて、すっきりと見やすいプログラムになりやすい(そうなるように設計された)言語であり、他の人のプログラムを読んで勉強しやすいという面があります。
この開発環境の使いやすさと書きやすさ、読みやすさからプログラミング初心者の方にオススメできる言語です。
個人的な理由としては、やはり科学系の処理が得意ということもあり、研究者の中で広く使われている言語だということも、研究者の方にはオススメできる点です。
3PySciもPythonの説明をメインでしていきますので、もしプログラミングするのは初めてだよという方は、ここから入ってみてもいいのではないでしょうか?
次回はPythonの開発環境Anacondaのインストール方法から基本的な使い方、パッケージのインストール方法を解説していきます。

ということで今回はこんな感じで。
コメント
コメント一覧 (4件)
読みやすく、頭の中が整理されました。
これからちょくちょく読みに来ます!
パイパイさん、ようこそです!
少しずつですが、充実したブログにしていきたいと思っていますので、よろしくお願いいたしますm(_ _)m
アラサーですが、今年からプログラミングpythonを勉強し始めました。
現在PyQで学習中の初心者ですが、
とてもわかりやすい説明でしたので、こちらのサイトも参考にさせていただきます!
今後ともお世話になります^ ^
Hi-tanさん、コメントありがとうございます
私自身も学習しつつ、皆さんの勉強の手助けになればと思いつつ運営しています。
これからもよろしくお願いします♂️