30年以上プログラミングに関わった技術者の方からプログラミング入門者、初心者の方にアドバイスにをいただきました。
具体的には、そのプロフェッショナルの技術者に投稿をいただきました。
私はその内容に大変感動いたしましたので、是非皆様にお伝えいたしますね。
お読みいただいてその感動がお伝えできれば、正に幸いに思います。
プログラミング 入門 初心者の方に
『プログラミングに興味がある入門者や初心者向けの解説書は数多くあります。
しかし、多すぎて選ぶのに迷う方もいるでしょうね。
そんな方のために、現役プログラマーの立場で、プログラミングとは何か、何をどのように学べば良いのか、心構えなどを説明しますね。
プログラミングの特徴は、自由度の高さです。
簡単に言うと、正解は無いということですよ。
なので、ここでの説明も説得力に欠けるかもしれませんが、30年以上プログラミングに関わった技術者のアドバイスと捉えてくださいね。
プログラミングとは
プログラミングとは、ソフトウエア(以下、ソフト)を創ることです。
具体的な作り方は、使用するプログラミング言語の種類やソフト開発環境により様々です。
ウィキペディアの“プログラミング言語一覧”を見ると、多くのプログラミング言語の種類がABC順に一覧で判ります。
プログラミングの魅力は、ソフトを自分で創れることです。
「創る」意味は2段階あります。
第1ステップは、どのようにソフトへ創り込むか⁈
第2ステップは、考えた創り込みをプログラミング言語でどう実現するか⁈です。
第1ステップ・アルゴリズム
ソフトへ創り込む方法や手順を考えることを、アルゴリズムを考えると言います。
アルゴリズムは、プログラミング言語には無関係です。
高速検索などの定番アルゴリズムがありますが、それ以外は独創性を活かして自由にアルゴリズムの検討が可能です。
第2ステップ・プログラミング言語
プログラミング言語での実現は、どの場所で実現したソフトが動くかにより、適したプログラミング言語が違いますので様々です。
例えば、パソコンならC++言語、ネット内のコンピュータならサイト開発に適したJava言語などが代表的ですが、これらもほんの一例にすぎません。
このように入門者や初心者は、第2ステップのプログラミング言語や動作環境に拘る必要はありません。
先ずは、第1ステップのアルゴリズムの考え方や創造の仕方、定番アルゴリズムを学ぶことが重要ですよ。
プログラミング言語は、考えたアルゴリズムを試す手段の1つという位置づけで十分です。
推薦プログラミング言語・c言語
アルゴリズム検討手段であるプログラミング言語ですが、プログラミング言語一覧からどれを選べばより良いかを説明しますね。
将来IT関連の職業を目指すなら、C言語がお勧めです。
殆どのプログラミング言語の基礎となっており、プログラミングの初歩から応用まで学べるからです。
但し、身近にC言語の習得者がいないと、独学で内容を理解するのは結構大変です。
プログラミング言語・BASIC
趣味としてプログラミングを考えているなら、入門者や初心者でも理解しやすいBASICが良いでしょう。
BASICとは、Beginner’s All-purpose Symbolic Instruction Code:初心者向け汎用記号命令コードを意味し、昔から多くの書物やネット情報もあります。
これらを活用すれば、独学での習得も可能です。
独学であっても誰かに習う場合でも、プログラミングは、アルゴリズムを考え→その実現ソフトを作り→作ったソフトを動作させ→正しく動作するかを検証する、これらの繰り返しで完成します。
この検証のことを、デバッグ:Debugと言います。
Bug:バグは、昆虫のことです。
作ったソフトのプログラムミス、これを虫:Bugにたとえ、このBugを取り除くのでDebugなのです。
このように、プログラミング言語は、英語が基礎です。
従って、プログラミング習得には、英語が分かることも重要な要素です。
優れた解説書の多くは、英語で書かれています。
英語が分からないと、処理内容がピンとこないなど英語能力はプログラミングに重要です。
また、どのプログラミング言語の場合でも、1から10まで自分でソフトを創ることもできますが、既にいろいろ利用できるソフトが、ツールとして用意されています。
これをライブラリと言います。
このライブラリを上手く利用できること、これも身に付けたい技術です。
例えば、サイバー攻撃の対策に、セキュリティを意識したソフトも必要です。
セキュリティを根本から理解するのは大変です。
理解するだけで難解で分厚い本が何冊も必要なうえ、攻撃側は常に進化し続けるからです。
こんな時は、セキュリティ専門家が開発した最新セキュリティ対策済みのライブラリを、自分のソフトへ部品のように組み込めれば、ソフトの安全性が高まります。
Windows Updateでお馴染みですね。
このように、様々なライブラリを活用できる技術は、今後ますます重要になります。
プログラミングの歴史も既に数十年以上です。
いろいろな既存ライブラリを上手く使って、効率良くソフトを創れる力を養いましょう。
ソフト開発環境
考えたアルゴリズムを、プログラミング言語で実現し、デバッグする環境を、ソフト開発環境と言います。
手ごろなソフト開発環境は、パソコンです。
パソコンなら、主要なプログラミング言語が動作するアプリケーションソフト(以下、アプリ)を無料または、学生特権で低価格で入手できます。
例えば、Windowsパソコンで使える無料アプリとして、マイクロソフトのVisual Studio Community 2017があります。
プログラミング言語は、C/C++/Visual Basic/Pythonなどが使えます。
技術ガイドなどの資料も豊富です。
※C++は、C言語を発展させたプログラミング言語
※Visual Basicは、Windowsアプリを開発できるようにBASICを発展させたプログラミング言語
※Pythonは、初心者向けプログラミング言語です。
また、初めから無料のソフト開発環境が付いたRaspberry Pi 3というボードコンピュータもお勧めです。
Raspberry Pi 3は、英国の学校で、プログラミング教育促進を目的として開発されたコンピュータです。
入門者や初心者だけでなく、子供でも簡単にプログラミングが学べる開発環境が無料で付いています。
使えるプログラミング言語は、C/C++/Pythonなどです。
※Raspberry Pi 3を子供でも使えるようなソフト開発環境に準備するには、Unixオペレーティングシステムの知識が必要です。
また、日本国内でアマゾンなどからの通販購入も可能です。
ゲームが好きな方は、自分でゲームを創ることでソフト開発をするのも良いでしょう。
ゲームが創れる無料のソフト開発環境として、Code.orgがあります。
プログラミング言語は、JavaScript/Scratchなどが使えます。
※JavaScriptは、ネット内コンピュータで使われるプログラミング言語
※Scratchは、ブロック(≒積み木)を使って処理を組立てる子供向けプログラミング言語です。
Code.orgは、米国のコンピュータ科学の学習支援サイトです。
パソコンとブラウザがあれば、サイトへアクセス可能で、プログラミングの無料レッスンなども受けることもできます。
サイトは、日本語表示にも対応しています。
* * *
ここで示したソフト開発環境はどれも、初心者や子供がプログラミングする前段階で、準備作業が必要です。
この作業には、IT関連の知識と、英語サイト読解力を持った人のサポートが必須です。
また、プログラミングを始めると生じる疑問、質問を解決するコミュニティへのリンクがありますが、回答内容は、英語で記載されたものが多いです。
プログラミングと子供のIT教育
個人主義の欧米には、子供でも自分の好きなようにプログラミングを学べるRaspberry PiのコミュニティやCode.orgのような英語の社会基盤があります。
プログラミングを良く解った教師や指導者いて、しかもIT技術の重要性を理解する親や世間がいるからこそ生まれた社会基盤です。
先端IT技術や新しいプログラミング技術は、この英語社会基盤から生まれ、現在も生まれ続けています。
英語障壁がある日本の小学生、子供たちへのプログラミング教育が始まろうとしています。
先ずは、第1ステップの重要な独創性やアルゴリムズに集中して教育してほしいと思います。
この部分ならば、英語障壁を少しは避けて学べるからです。
AI:人工知能による英語→日本語への自動翻訳が100%完成したとしても、英語の背景にある考え方は伝えきれません。
第1ステップ以降は、英語読解力の養成とプログラミングを並行して学習するのが良いと思います。
さいごに
理系大卒でも、OJT:On-the-Job Trainingで実務に応じたプログラミングができるようになるには、1年~3年程度が必要です。
組織でのソフト開発は、複数による共同作業なので、ソフト本来の自由度を抑えて、つまり組織の共通規則という枠の中でソフト開発することが求められるからです。
少し窮屈に感じるかもしれません。
※OJT: 職場で実務をさせることで行う従業員の職業教育です。企業内で行われるトレーニング手法、企業内教育手法の一種です。=ウィキペディアより
しかし、基礎的なプログラミング技術を習得済みの人は、窮屈なOJTを早く終了できますよ。
ソフト自由度の高さを理解しているからです。
AIなど最先端で変化も激しいIT業界だからこそ、基礎が大切です。
プログラミング初心者は、答えや成果をすぐに得ようとするのではなく、今のうちは少し長い目でじっくり基礎を学んでくださいね。
激変に対応するには、基礎での経験や知識が結局必要になります。
仕事に就くと、解りにくい英語の最先端IT技術を追いかけるだけで精いっぱいで、基礎を学べる時間は、少なくなるからです。』
と・・・・
含蓄に富んだお言葉です。
プログラミングを勉強してみませんか?
「自分でホームページを作ってみたい!」
「WEBの仕事で独立したい!」
どんどんIT化が進む中で、確かに便利になっていますが、自分自身がそれら便利なツールを作れる側になれるかと考えると「難しそうだな・・・。」と感じていませんか?
でも、大丈夫です!
実はホームページやアプリケーションは「プログラム」によってできています。
そのプログラムを自分で書けるようになれば、自分のWEBサイトを作れるのはもちろん、便利なアプリやIoTに通じる製品まで操れるようになってしまうのです!
そこで、まずは基本からの勉強が大切。
いきなり、応用編から始めようと独学で学ぶ人も多いのですが、正直基本を学んでいないと、大きな壁にぶつかり挫折してしまうことがほとんどです。
そこで、おすすめなのが「TechAcademy」というプログラミングスクールです。
親切丁寧にマンツーマンで質問することもでき、なにしろネットを通じて自宅や会社にいても授業を受けられるところが素敵です!
さぁ、あなたも今日からプログラマーだ!!!