2003-what-is-programming

プログラミングを理解し使うとは

プログラミング言語の違い

プログラミング言語の分類

実行デバイス

  • Desktop
  • Web (Browser)
  • Backend
  • Batch
  • Mobile

処理手続き(process with procedures)を書く

プログラミングは、順次と分岐とループのフローコントールすれば、全ての処理手続きが記述できる。が、それだと、人にとって可読性とか、保守性が悪いという問題があり、関数とか外部ライブラリとかが導入された。そして、より人にとって扱いやすいように、Object指向という概念が、プログラミング言語に取り入れられた。

基本的に、現在のプログラミング言語は、C言語以外は、オブジェクト指向の考え方が取り入れられている。一つのオブジェクト指向言語を覚えれば、他の言語にも応用が効く。

プログラムを書く能力とは、文系の能力

プログラミング言語は、人工言語とはいえ、言語である。ただ、一般に書き言葉や、話し言葉で使われる言語(自然言語)と異なり、曖昧さはゼロであり、syntaxに従って書かないと、syntaxエラーとなる。し、プログラムに書かれた手順にしか、命令が届かず、その手順で実行される。

プログラミングができないヒトは、syntaxを理解していない(ここにハードルがある)状態であることが多い。

ただ、そこから先に、文章を、構造立てて書くという能力が重要になる。

特に、書き言葉の場合は、論理構成が、意見を伝えるためには、重要である。その論理構成で、特に、段落などが正しく構成される必要がある。これは、筋道立てて、曖昧さのない、それなりに大きな文章を、他人が読んで理解できるレベルで書くというスキルになる。

プログラミングは、この段落構成で表される一つの機能が、functionや外部libraryを、使うことで表さられる。

プログラミングに求められる能力は、文系

文章をきちんと書くには、文章の構造を、明確にして、論理的につながるように書くことが求められます。

文系でも、論理についての能力を求められ、論理学は哲学の一種だし、論理的な文章の展開は、文系的な素養ともとらえられます。

プログラムをきちんと書くには、プログラムの構造を、明確にして、プログラムが、順次・分岐・ループで論理的につながるように書くことが求められます。

プログラミングで取り込まれているObject指向も、もともと、認知心理的なObjectという空間の把握を、Programの空間に適用したものです。

つまりは、理系と文系の境目にあるのが、プログラミングとも言えるのです。

プログラミングそのものは、物理学とか化学とかの知識はいらないし、必要な数学の知識も、さほどない。

どちらかと言えば、命名とかで、英語ができた方が、メリットが高い。

プログラミングは、ターゲット指向

プログラムが実行後に、何を出力するかという視点は、「目的指向」と言える。Target-Orientedに、プログラミングする。つまり、インプットに対して、変換、導出、加工、定数化などを行い、目的とするアウトプットを出すのが、プログラミングである。

プログラミングは、順次と分岐とループのフローコントロールをすれば、全ての処理が記述できる。

その構造の中で、インプットに対して、プロセッシングして、ターゲットとするアウトプットを出す。

プログラミング空間

プログラムが実行される実行環境は、特有のプログラミング空間が生成されている。そのプログラミング空間は、以前は、内部空間だけで、外部ライブラリという概念がなかった。ので、Syntaxを理解し、イチから、全ての機能を実装する時代があった。

ただ、インターネットが普及し、外部ライブラリがフリーで、GitHubなどに公開されることで、プログラミングの空間把握は、インターネット上まで考慮する時代になっている。

rubyやnode、pythonなどは、その言語の成立後、すぐに、インターネット上のrepositoryと連携して、ライブラリを配布する機能が標準に搭載されている。つまり、プログラミングをする際に、外部ライブラリの理解と活用は、重要なスキルとなっている。

外部ライブラリとして活用されているコードは、十分に品質・機能が確保されているといえる。例えば、週に、10000ダウンロードされているようなライブラリは、自分が作るよりも、そのライブラリを使う方が良いと言える。

プログラミングの覚え方

オブジェクト指向な言語の効率的な学習法について

まず、変数定義とリテラル表現を理解する。 次に、組込のデータ型(string, number, boolean, Array, HashMap, Error, etc)を理解する。各標準データ型のmethodを使えるようにする。

で、フローコントロール(loopと分岐)と、外部化、関数化を使って、テンプレート・コードの書き方を練習する。

よく使われるライブラリを漁る。 ・iniやconfig等を扱うライブラリ ・log4系のライブラリ ・基本のデータ型を補完するライブラリ(String系Util、Date系Util、等) ・パス、ファイル操作を扱うライブラリ ・外部フォーマットを扱うライブラリ(xml, csv/tsv, json, markdown, xlsx, etc) ・通信系ライブラリ(XHR, url, query, file upload, email, etc)

template code