こんにちは、元おちこぼれシステムエンジニアのsakanaです。
「プログラミングは簡単」、「そんなに難しくない」と頭の良いひとたちが最近メディアで言っているのをよく耳にします。
しかし、頭の良いひとたちの言う「プログラミングは簡単」という説明がいまいちピンと来ないです。
そこで、なぜ頭の良いひとたちが「プログラミングが簡単」だと言うのかについてのわたしの考察をお伝えいたします!
また、わたしがプログラミングが難しいと思う点についてもお伝えしています。
「これからプログラミングをはじめてみたい!」というかたの参考になれば幸いです。
プログラミングが簡単な理由3つ
わたしがプログラミングを簡単だと言われる理由を3つに分けて解説していきます!
マークアップ言語(HTML/CSS)で表示させるだけなら簡単
サイトの見た目などをプログラミングするための言語のHTMLやCSSはこれらはマークアップ言語と呼ばれます。
そのため、厳密にはプログラミング言語ではないようなんですが、こちらも広義にプログラミングとするのであれば、こちらの言語はそこまで難しくないです。
ブログなどの運用経験がある方はHTMLやCSSを使用したことがあるかたも多いかもしれません。
こちらの言語が簡単だと言われる理由のひとつには表示させるだけであれば、HTMLとCSSだけであれば、すぐにできるからです。
例えば、下記をパソコンのメモ帳にコピペして、ファイルの拡張子を「txt」から「html」に変えてみてください。
<b><a href= "https://to-become-human.com/" >sakana - To Become Human</a></b>
拡張子がわからない、表示されていないかたはフォルダの上のメニューの「表示」→「ファイル名拡張子」をチェックしてください。
拡張子を変えたファイルをブラウザで開いてみてください。
すると、下の画像のように当ブログのリンクが表示されると思います。
たった一文書くだけで、リンクを表示させることができるのです。
厳密にはもっと色々書かなきゃいけないのですが、表示させるだけであればこれだけで表示されます。
なので、やりたいことに対して書き方を調べて覚えてしまえば、そんなに難しくありません。
このマークアップ言語ついて難しく感じる理由は書くのがめんどくさいからなんじゃないかと思います。
しかし、他のプログラミング言語の処理で動的に作成されたデータをHTMLで表示させるとなると少し複雑になってきますので、学習を進めていくにつれて難しくなっていきます。
プログラミングは「分岐」と「繰り返し」が基本
では、いわゆるプログラミング言語(Java、Python)などが簡単と言われる理由を解説していこうと思います。
見出しにある通り、プログラミングは処理の「分岐」と「繰り返し」を書いて処理の手順を記述するものです。
ここで言う「分岐」と「繰り返し」とは以下の意味で使っています。
「分岐」・・・ある条件のときに処理を分岐させること。 「繰り返し」・・・ある条件である間、同じ処理を繰り返す。
例えば、わたしたちが自販機で飲み物を買うときの脳内の処理をフローチャートを用いると下の画像のようになります。
小銭を一つずつ入れていくとしたら、投入金額が飲み物の代金になるまで入れますよね(繰り返し)。
また、お釣りがあれば取りますし、無かったら取る必要がないです(分岐)。
説明が長くなりましたが、プログラミングも基本的にはこのように処理を「分岐」させたり、「繰り返し」を行うことで、処理の命令を記述していくものです。
小学生のプログラミング教育義務化もこのような概念的な部分が主に教えられるようです。
単純な処理であればそこまで難しくないことが分かっていただけるのではないでしょうか?
ただ、複雑な処理になってくるとミスが起こりやすくなってきますので、その点では難しいと思います。。。
上級のプログラマーになると処理手順(アルゴリズム)の美しさにこだわるひとが多く、処理を遅くするような無駄な処理を極力無くすことが求められます。
単純な分、奥が深いのがこの「分岐」と「繰り返し」です。
ただ、考え方自体はそこまで難しくないと思います!
よく使われる機能は既に用意されている
それぞれのプログラミング言語でライブラリというものが用意されており、よく使われるような機能は既に誰でも簡単に記述できるようになっています。
どういうことかというと、例えばエクセルの関数なんかもライブラリのようなものだと言えると思います。
SUM関数を例に挙げると、わざわざ連続する複数のセルを”+”でつなげて、合計を求めなくても、SUM関数で範囲を選択するだけで簡単に合計を算出してくれますよね?
各プログラミング言語のライブラリというものもそのようによく使われるような便利な機能は簡単に記述して使えるようになっています。
そのため、難しい処理の多くは既に用意されているので、後は上で紹介した「分岐」と「繰り返し」を駆使して必要な処理を作っていくことになります!
プログラミングの難しいところ
ここまでプログラミングがなぜ簡単だと言われるのかについての理由をお伝えしてきましたが、実際は多くのかたがプログラミング学習を挫折しています。
学習を進めていくとぶち当たるプログラミングの難しい点もお伝えしていきます。
プログラム実行環境の構築
プログラムを実行するためにまずはプログラミング言語を実行できるように目的の言語をインストールする必要があります。
また実現したいものが明らかである場合にその機能に合わせたフレームワークを利用することもあります。
フレームワークというのは、ウェブアプリケーションであればウェブアプリケーションを作るためのテンプレートのようなものです。
それらをインストール、利用するのにパソコンの環境を設定をいじったりする必要があります。
フレームワークをよく理解していれば、目的のものを簡単に作るための助けになるのですが、フレームワークの構造を理解したり、インストールするのがわたしはあまり得意ではありませんでした。。。
また、環境によっては自分の記述したプログラムが上手く動かないなんてこともあるので、それらを想定したプログラムを書くことも難しいです。
例えば、ブラウザがIEからChromeに変わるだけでも表示が変わってしまったり、それらを考慮してプログラミングをするのは大変です。。。
環境構築などはプログラミングとは違いますが、プログラミングをする上で必須ですし、
環境系のことが絡んでくるとプログラミングが難しくなってくるのもまた事実です。
オブジェクト指向
オブジェクト指向とはJavaなどに代表されるプログラミングにおける考え方のようなもので、プログラミングをする上でこの考えに則ってプログラミングをすることが求められることが多々あります。
エンジニアやプログラマーの採用面接でオブジェクト指向について説明するように求めてエンジニアのレベルを測るひともいるそうです。
わたしならその質問が来た時点で「終わった」と思います。
自分の解釈で説明して強いひとに「それ全然違うよ」って言われると怖いので、「オブジェクト指向とは」と検索してみたのですが、引用できそうな短く端的なものはありませんでした。
オブジェクト指向とはプログラムをするときの考え方なので端的に表現するのは難しいみたいです。
そんなオブジェクト指向を理解していかなくてはいけないのが、そもそも難しい点です。。。
恐る恐るオブジェクト指向について触れるとすると、、、例えば、ゲームの初期アバターがあったとして、プレイヤーはそのアバターに名前を付けたりカスタマイズしますよね?
その初期アバターをひな形として定義するプログラムがあって、アバターをカスタマイズするプログラムが別で定義されているイメージです。
さらにカスタマイズされた武器などによってできる攻撃が異なり、その攻撃についても別プログラムで定義されているというのがわたしの理解です。
ちゃんと知りたい人はこちらをご覧ください。。。
上記のように別プログラムで定義することで、プログラムを読みやすくしたり、既存のプログラムを再利用したり、大人数で開発する際に便利だったりします。
しかし、オブジェクト指向が理解できていないと、「別で定義されているプログラムを行ったり来たり」、「どこに何が書いてあるのか分からない」などで詰みます!
オブジェクト指向を理解することが求められる言語を学習するのであれば、一度はぶつかる壁になると思います。
デバッグ
デバッグとはプログラムの処理が上手く動かなかったときにプログラムを修正することです。
システムエンジニア研修時代に講師のかたから言われたのが、「プログラミングの速さはデバッグの速さ」と言われたのを覚えています。
それくらいデバッグというのはプログラミングをする上で重要なスキルになるのですが、これが難しい!
「動くつもりで書いているものが動かない」その理由を探すのは大変です。
その理由はそれこそ先ほどお伝えした環境だったり、はたまたタイピングミスだったり。。。
文字コード問題にぶち当たるのはシステムエンジニアあるあるではないでしょうか?
文字の羅列や実体のないものからミスを見つけるのは難しいです。
また、エラーの箇所を教えてくれたりしますがそのエラー内容が英語で書いてあったりと心が折れてしまう点は多々。。。
上記からデバッグもプログラミングは難しいと思う理由になるでしょう。
なぜプログラミングが簡単と言われるのかまとめ
プログラミングの難しいところの章でお伝えしてるところから分かる通り、わたし自身はプログラミングを簡単だとあまり思っていません(笑)
正直プログラミングは苦手です!
ただ、頭の良い人たちがプログラミングを簡単と言っている理由としてははじめにお話ししている通りで、簡単だと思う理由については理解できます。
あなたがこれからプログミングを学習して難しいと思う点については多くのかたも同じように難しいと思ったところだと思います。
そのため、先人がネット上にヒントを残してくれていることがほとんどですので、調べる能力を身に着けることがプログラミング学習にのみ限らず大事です。
これからプログラミングを始める方は簡単と言われているとはいえ、一朝一夕でできることは期待せずにコツコツと学習を進めていきましょう!
コメント