見出し画像

プログラミングは難しい?解その9

ソフトウエア工房孫風雅です。

ブログ投稿しています。最終版は此方から、ご覧ください。

先月20日に投稿した”プログラミングは難しい?”の検索結果としてえられた10アイテムについて、当日コメントさせて頂いていました様に、インターネットの再検索による、確認と各々のアイテムの検索結果について、講師のコメントを公開させて頂こうと思います。

諸般の都合で、すいませんが、LISTの若番順では無く、講師が説明を作成しやすい順(必要時間の関係です)に解説させていただこうと思います。今回の対象は以下の黒太字のアイテムになります。(9番目です)

尚、タイトルの”解その*”は、アイテムLISTの番号に合致させてあります。

1.どの言語を学べばいいのかが分からない<=>習得難易度の高いプログラミング言語を選んでいる

2.プログラミング学習をするための準備が難しい

3.英語のドキュメントが多い

4.プログラミング特有の用語や専門用語が多い

5.膨大な基礎学習が必要

6.厳密な論理性が求められる

7.抽象性の高い思考も求められる

8.エラーが多すぎる

9.覚える事が多すぎる

10.苦手意識が強い

覚える事が多すぎるというのは、講師的には少し?です。

と言うのも、プログラミングにしても、外国語にしても、とにかく何かを始めようとすると、新しいアイテムに挑戦する時は、当然、覚える事は何に対してでも、必ず、存在すると思います。

従って、覚える事が多すぎると感じるのは、違う側面が有るのではないかと推測します。

それは、少し説明が難しいですが、山登りに例えて、覚える量を考えると、どこまで、覚える必要があるのか簡単に判らないという事では無いでしょうか?

山は目の前に実体ががあり、途中まで登れば、目の前の景色が変わり、また指標などで何合目まで来たとか、成果を実感できます。

然しながら、プログラミングの場合、成果を実感できるのは、恐らく、小さなものでも、ソフトウェアを作成でき、そのソフトウェアが正しく動作した時なのでは無いかと思います。

そうなると、人それぞれでしょうが、そこそこかかなりか、時間を必要とする気がします。

恐らく、この成果を実感できる様になるまでの時間が、長めの為、覚える事が多すぎるという感想が出てきているのではないかと推測されます。

尚、語学の場合、色んな評価テストが世の中に沢山あり、学習途中であっても、そこまでの成果を確認できる可能性が高い為、語学も同様に時間が掛かるハズなのですが、比較的、覚える事が多いという感想には直接結びつか無いのではないかと講師自身は考えます。(語学が学習途中ですが、講師の場合は目的がTVドラマを主音声のみで理解したい等ハッキリしている為、多くを学ぶことにあまり不便・不満を感じていません)

この点、プログラミングスキルは客観性評価が難しい側面が有るかも知れません。また、成果を実感できるまでは長い時間が掛かり、第三者評価・主観評価も、動作するソフトウェアが出来るまでと、同様に長い時間が掛かるものかもしれません。

インターネット上で”プログラミングは難しい”と”覚える事が多すぎる”で検索すると、第一アイテムから、”覚える事が多い”事に言及が有る様です。

この意味で、覚える事が多いというイメージはかなり重要度の高い、解決乃至は取り除くべき、上位のアイテムと考えられると思います。

尚、講師が確認したところ、幾つかの上位検索結果アイテムで共通しているのが、関数などを全てを暗記する必要は無いとい点です。

要するに、完璧を目指すべきところと、都度都度、調べて吸収していけば良いところが有るという事です。

ここで言う完璧を目指すべきところは、講師は論理的思考や客観的検証方法(デバッグ)等は、先ず覚えて使いこなせることが必要であると考えます。(コーディングというソースコードを作成し始める前に、これらは理解・使用できることが必要と思います)

例えば、エラーが出てどう解決するかについては、言語により差異があると思いますが、具体的にはあまり言及されていないように見受けられます。(対象がふわっと、複数あるからと思いたいのですが、非常に重要な事なので、触れられていないのは???な気もしています)

簡単に触れると、エラーがでた場合、普通はデバッグをして問題を切り分けます。切り分けとは問題が何に関連して起きているかを切り分けるという意味です。

例えば、一例として、自分で作成したソースコード由来の問題なのか?(所謂バグの類いです)条件違いなのか?(例えばある変数が一定の範囲内で発生すると仕様書に記載されていれば、その範囲内の処理をソースコードに記述しますが、その前提条件を満たしていない、若しくは超えた数値に変数値が設定されていた場合、デバッグしている関数等が正しく動作しないのは、ある意味仕様通りという事になります)この場合は想定・仕様が誤りなので、仕様書に戻って、設定値の範囲を定義し直し、再度ソースコードを修正して、デバックを再度行う、といった感じに、バグを0になるまで繰り返し作業します。

インターネット上で、こういった点の記述は見たことはありますが、大概は特定の言語に関する情報の時だけの様に思えます。

本当に、重要な事なのですが…? 知らないと、コーディング後に、コンパイルした時・動作させた時、エラーの波に飲み込まれて、自分自身では抜け出せなくなる可能性があるのではと思われます。(実は”プログラミングは難しい?”の検索結果アイテムの8にエラーの件は出てきています)

普通にというか、論理的に考えて、エラーが出てから、どう解決するかを、探したり、調べたりするのは、正しい行為なのでしょうか?

ご自身の実際のデバッグのスキルが最初必要なレベルに達していなくても、コーディングを始める時点で、どう解決するのか、その解決方法である、デバック手法は、どんなものが有るのか?どう使うのか?等は最低限、理解した上で、コーディングを始めるべきだと思います。

従って、勿論、最初からデバック手法を縦横無尽に使いこなせる必要は無いと思います。何故なら、別な観点として、0バグ(最初から完璧なソースコードを)コードを書ければ、デバッグの必要は無いのですから。そうでない場合でも、いざ、旨く動作しないと自身で認識できた段階で、デバックして、問題を切り分けよう・発見しよう、で徐々に手法に慣れて、スキルをUPさせていけば良いと思います。

然しながら、解決方法を何も知らなければ、コーディングを始めて、そのコードがコンパイルできなかったら、正しく動作しなかったら、どうなるのでしょうか?皆さんだったら、どうされるでしょうか?

結果は簡単に想像出来ると思います。こう言った意味で、エラーの解決方法は、初めに、ソースコードを書き始める前に、知っておくべきだと思います。その他に、プログラムと言うのは、曖昧な指示では動作しません。従って論理的な思考というのが必要になってきます。

当工房では、こういった点を考えて、初心コースを新たに開設し、初級コースの前半の数ヶ月のカリキュラムとで、この様な最初に学習しておくべきスキルを学んで頂く様にカリキュラムを構成させて頂いています。ご興味のある方は、一度、当工房のサイトへおいで頂けると幸いです。(ソフトウェア工房孫風雅サイト)

皆さんは、プログラミングについて、どの様なご意見・イメージをお持ちでしょうか?

講師の経験が、皆様のお役に立てれば幸いです。

この記事が気に入ったらサポートをしてみませんか?