JavaSqriptを使う場合でもJqueryを使う場合には、別途
JavaScriptで記述されたライブラリを読み込む状態になって
いましたが、開発言語の場合、多くの言語でその処理用のラ
イブラリを読み込むような仕様になっています。
こうしたっ仕様はC言語がそうなんですが、これに準した形
でC++もヘッダー呼び出しがないと処理できないなどの状態
になっていますし、Javaも多くの呼び出しをプログラムの頭で
行います。
これはやってる内容でいうと、外部ファイル参照なんですが、
基本的に、処理に応じた呼び出しが行わえていない場合エラー
が返ってきます。つまり、必要な機能だけを実装して実行する
構文にできる反面、どういう機能であるのかをあらかじめ覚え
る必要があります。
古い本になるのですが、
【 プログラミング言語C ANSI規格準拠 】
という物があります。これはC言語の教科書なんですが、この本
を読み進めるためには最初に後方にある付録を読まないと理解
に至りません。232ページから100ページ分あるそれを見て基礎
的な内容を理科死してからおy無事になるんド絵酢が、。ここには
ちゃんと付録Bに標準ライブラリについての記述があります。
つまり、本文中で分からなくなるくらいなら最初に読んでおいた
ほうがいいのですが、基本的に、何か若rな愛物をそういう記述と
言う【 文章覚えと言う意味和解らないがそう書くものと言う雑な
記憶方法をすると結果的に規模が大きくなると破たんするのです
べきではない 】のですが、基本的に、こういう教本については、
最初にページの後ろが目次だけなのか、コマンドリファレンスだけ
なのか、それとも仕様などの説明まであるもオンあのかを確認し
て、最初に基礎知識を付けてから読み始めるというのが正しいや
り方のような気がします。ちなみに、これも古い本になりますが、
Microsoft VisualC++ ver.2.0
初級者プログラミング入門【上】
では、使い方については、172ページにわたって書かれているの
ですが
■ グローバル関数
■ グローバル変数
■ マクロリファレンス
に関しては、174ページ~462ページに渡って解説されています。
実質的に、こうした本と言うのは、どういう構成なのかを見て、そ
の通常の記述だけで解りにくい場合、不親切な本ではなく、通常
は、付録などが後方に存在しています。そうした構成なので、そ
うしたモノを読む場合には本お構成を見てからちょみ進めて学習
する事をお勧めします。
ネットの場合、現在は便利になっており、wikiが存在している
のと大抵のことは、
■ その言語の総本山を見てみる
(大抵の場合、リファレンスは世界の共通語の英語表記)
■ MSDNなどデベロップメントのサイトを見る
(これは日本語で高度なことも書いてあります。)
■ wikiを見る
の三点でしょうか。と言っても、Visial C++の本のように基本的な
ライブラリなどの量がすさまじい物もありますが、
【 それを覚える事がプログラミングの前にしておくお仕事 】
なので、プログラマーと言うのはそれを覚えて使える人の事示して
います。ただ、その人たちに得意分野がありますから、目的に合っ
たスキルを持った人でないと、基本的にその作業が無理な場合が
あるので、この辺りがざっくりとしていてプログラマーなら何でもい
いとかいう雑な無能は山にでもこもってとりあえず俗世を捨てて、
仏門に走るか、もしくは野生の本能のままに、謎の未開の地でU
MAをしてるのがちょうどいいくらいですから、そういう間違いはす
べきではありません。
ただし、その基礎中の基礎がこういうものになります。まぁ、単
純に
【 VisualC++をフツーにその言語を使えるという
レベルだとそれ位のものを覚える事になる 】
と言うお話です。とりあえず、ヘッダなどの内容もネットで調べる
のと、書籍で学ぶのでは相当温度差があるのは言うまでもない
のですが、結果的に、調べて済む内容だと即座に答えはそこに
ありますが、書籍の場合はそうはいきません。つまり、ヘッダ名
が網羅されてるだけで詳細の説明がない場合、何の事だかわか
りません。
そうなると、別のモノを探してこないと、その答えに行き着か
ない訳です。つまり、本と言う媒体に頼った場合には、それの答
えが所蔵されている場所で調べるしなくなります。
例えば、C++のヘッダーだと
■ C++ Standard Library header files
【 cppreference.com 】
http://ja.cppreference.com/w/cpp/header
を見ればわかりますし、C言語だと
■ C言語関数辞典
http://www.c-tipsref.com/reference.html
で確認できます。こうした内容から、日本語で書かれているモノは多く
あるのですが、言語が何であっても外国語を学ぶレベルで覚える事が
多いのは確かです。w
こうした学習において、英語が必要になるというのは、
【 基礎を学んで、別の新規の知識を付けようと思った場合、
論文などが大抵は和訳されていないから 】
と言えます。これからは、深層学習で賢くなった翻訳エンジンがちゃん
とした言語で表示してくれるかもしれませんが、そうした内容があるとも
言えます。
開発言語の場合、日本語表記の少ない分野ではないので、ゲー
ムエンジンなどのように英語のTIPSまみれと言う訳ではないのです
が、使う物によっては日本語のテキストがない場合の保険のようなも
のが英語という事になります。
ただし、基本的には日本語ローカライズの選択肢がサイトにある
のでそうしたモノを使うと理解に至るはずです。
しかし、ソレに関しての専門用語と言うのも登場するので、こうした
分野は
【 処理をする上においての専門用語での説明がなされて
いるので用語が何か解らないと文面を見ても理解に至
らない 】
と言えます。流石にていきゅ言語のような機会に近い処理をハー
ドウェアを基準に考えるようなものでも専門用語は出てきますし、
優しく説明していないおhンだと結構初心者では厳しい物があり
ますし、他人が出来たら自分もできるとかいう無能の発作では絶
対に無理ですから、そういう末期な何かの間違いは相手にせず、
当たり前の事を知って学習する事が大事です。。
リファレンスについてですが、これも仕様の変更などでイロ
イロ変わってしまいますから、【 総本山見て学習をする 】
と言うのが基本いなりそうですが、開発言語の場合、メモ帳で
書く場合は別ですが、統合環境を使う場合には、ある程度の
リファレンスなどは掲載されていますから、それを参照すると
言う学習方法もあります。
例えば、マイクロソフトのC#も
■ MSDN:C#リファレンス
https://msdn.microsoft.com/ja-jp/library/
618ayhy6.aspx
などがありますし、そうした開発言語のTIPSを網羅したサイトも
あります。
その為、こうした学習は
【 あって然るべき当たり前のリテラシー能力 】
があれば、当たり前に答えに行き着くのですが、こうした時に一
番の遠回りとなるのは、【 質問をする事 】です。
あくまでも質問して答えが返ってくると言うのは、ある程度の
知識がある人向けのモノなので、その基礎のキの字からなくて
も思えれるだのと言う、やる気もへったくれもない末期な老人の
ような思い違いをしてもどうしようもないわけです。と言うのも、
元々やる気がない某が他人い相手にされたがってるだけです
から。
つまり、【 なぜそうなるのか? 】の疑問が解消していて
ソレに着手するのと、【 何か解らないがそうだと思う 】で、
それを行うのでは内容が全く違いますから、やはり、基礎学
習は必要です。
ただし、コマンドリファレンスを見ても多分全く内容が解ら
ないでしょうし、何よりも、
【 OOはXXに使います 】
と書かれていたとして、構文が出来ますか?と言うとまず無
理だと思います。と言うのも
【 英単語の辞書を丸覚えしても英会話は出来ない 】
のと内容は同じです。とりあえず、そ状態で、ソースコードを
書いてもだと構文が違うのでエラーしか出ません。
結果的にこれも言語ですから、構文は存在します。そうな
ると、学習の内容と言う音は英語の授業によく似ています。
例えば、
■ This Is a Pen.
■ That is an Apple.
を覚えるとします。これはOOとアレはXXという文面を覚える
方法ですが、この構文を覚えるときに練習問題と言うのが出
てきます。
【 問1 】
以下の文章を英文にしなさい。
(1)これはバナナです。
【 回答欄 】_______________
(2)あれはゴリラです。
【 回答欄 】_______________
みたいな感じです。まぁ、この場合、前者は、BANANAなので、
This is BANANA。
で、後者はGoriraですから、
【O】 That is Gorira.
【×】 That Man is Mr.Hijikata.
となります。 こんな感じで、英文は覚えますが、開発言語も処理を
覚える場合にはそんな感じになります。結果的に、
■ サンプルで基本的な構文を学習
■ 練習問題
です、例えば、Print文を覚える場合に、
■ 数式を呼び出せる
■ 変数を表示できる
■ 文字列を表示出来る
■ 文字列を合わせて表示させる事が出来る
などの機能があるのですが、このそれぞれの問題を用意して
それがどういう構文で動くのかをいかいすれば大丈夫だと言う
お話です。
そうした場合、SmallBASICのようにライブラリ読み込みの
概念が外部ライブラリを実装した状態でないと発生しない物だ
と話は別ですが、ライブラリの記述が発生する場合には、ソレ
を当たり前に行うのが構文という事になります。
とりあえず、そうした部分もやはり開発言語には存在するの
で、その基本的な事を覚えて、その内容成分を覚えていくこと
になります。
JavaScriotでは、
■ クラス.プロパティー
■ クラス.メソッド(パラメーター)
のような構造になっていて、サブルーチンとしてFunctionでオブ
ジェクト指定をして動かすような作りになっていますが、そうしたモノ
も構文になります。そして、それがどういう構造なのかと言うのも学
習する事になります。
ちなみに、BASICの場合、手続き型の言語なので、オブジェク
トと言う概念がありませんし、処理においての構文音仕方が全く異
なります。これは、ループなどの記述がC言語に近いオブジェクト
指向のものだと、BASICのような上から流れてGoto文を使うよう
な構造物とは異なります。(JavaScriptではGotoは基本的に使
いません。あと、new Objectのような表記で、オブジェクト指定を
する内容も存在しません。つまり、記述が異なる訳です。)
こうした内容ですが、時に、BASICを触ったことがある空他の言
語も解ると言う勘違いがありますが、日本語しかわからない人間が
国語を習ったら、スワヒリ語が解ると言うレベルの間違いですから、
非現実的な話になります。ここで、JavaScriptの事に少し触れまし
たが、構文そのものが異なるので、全く違うと言うのが理解できると
思います。
その為、全く別の外国の言語を覚えるのと同じレベルの作業に
なる訳です。
ライブラリのお話
先日、JAVAのライブラリで、動画関連でイロイロ使えるのがある
と言うのを書きましたが、あれもライブラリなのでインストール後に
は外部ライブラリを最初の記述で呼び出すことになります。
こうした処理は、どの言語も同じですが、Androidのゲームのコ
ードなどを見ると、冒頭で結構なライブラリの呼び出しがされている
状態になっているはずです。
つまり、処理において必要なモノを呼び出すという手続きが必要
な言語だおtなにも記述していない場合にはその実行は許可しない
という縛りとしても使えますから、結果的に使う機能はライブラリの
呼び出しを行う事になります。
その為、コンパイルが必要な言語の場合には、ヘッダーファイル
を呼び出しているはずです。BASICとJAVAやC++などは日本語と
スワヒリ語くらい違うというのは、ライブラリの呼び出しもあるのです
が、そもそも、クラス・オブジェクト・モジュール・メソッド・プロパティー
と言う概念がありません。また、オブジェクトの指定で動かすという
概念もないのとサブルーチンのない世についても以前書いた通りで
すから、GOSUB ~ RETURNでループさせるそれと、funvtionで
囲ってそれを作る物だと異なります。
とりあえず、そうした内容から全く違うのですが、やはり、時代的に
違いすぎるので、現在行う内容の知識に至らないというのもあります。
というのも、制御系のような非GUIだと言語の呼応増的に使えなくも
ないのですが、その処理を行う場合だt別の言語の邦画向いていると
いう内容があります。
例えば、BASICに3D機能を実装しようと思うtおどういうプログラ
ムを実装し、どういう関数でそれを呼び出すような仕様にしなくてはな
らないだろうか?と言う問題が発生します。ライブラリと言うのは自分
で構築できますから、そうした物がない場合自分が作成して実装する
しかありません。
外部ライブラリと言うのはそういうプログラムを作った人がいるの
で存在しているのですが、3D関連もそんな感じです。
3Dライブラリには、オープン化された3DライブラリのOpen-GLと
マイクロソフトのWINDOWSで実装されているDirect 3Dがありま
すが、グラフィックライブラリについては、OSで異なる物の、3Dでも
少し仕様が異なる感じです。Open-GLはもともと制作用途で発生し
たライブラリなので、昔からあるのですが、Direct 3Dに関しては、
Direct Xに至るまでの工程の中で発生し、ゲームの進化と共に
ブラッシュアップされていった経緯があります。
その為、Direct 3DのD3Dライブラリと、Open-GLのglutでは
全くモノが異なります。当然、これは双方ともに存在しないので、使
う場合には実装し、呼び出さなくてはならないのですが、
【 標準ライブラリではないんド絵、別途学習が必要になる 】
代物だと言えます。これはマルチメディア関連で何かを追加する
ような状態で標準ライブらrでない場合には、ヘッダーで呼び出す
のもそうですが、その処理をする記述が必要になるので、ライブ
ラリで実装している関数を呼び出すことになります。
この二つのライブラリですが、
■ GLUTによる「手抜き」OpenGL入門
https://tokoik.github.io/opengl/libglut
.html#1.1
■ 0からのゲームプログラミング
(*)Direct 3D 9での記述になっているので、現在の
12とは互換性がありません。ちなみに、これはXP
でも大丈夫なバージョンになります。
で使用されているのですが、Open-GLはValcanになるので刷
新されているわけですが、Direct Xもメジャーバージョンアップで
現在は12ですから、それを使うとなると、そのライブラリの利用と、
その学習が必要になります。
3Dと言うとこうしたライブラリを使うようになるのですが、今後は
後方互換でOpen-GLと新しいライブラリで、ValcanとDirect X12
を使うような状態になるのかな?と思います。
PC環境ではあまり使わないような気がしますが、モバイルだと、
Open-GLESが3Dライブラリで使われていますが、これの呼び出
しも標準ライブラリではないですかrあ、別途ヘッダーでの呼び出し
が発生します。
とりあえず、標準ライブラリでは実装していない物を使う場合だと、
外部のライブラリを使うか、ハードウェアを追加した時のようにSDK
を利用する事になるのですが、結果的に、その利用をするとなると
標準機能ではありませんから、その省の準じた命令軍が登場してき
ます。これは、RGB-DカメラにセンサーのついたKinect(v2からは
商用利用が可能になりました。)や現在増えているVRグラスもそう
ですし、SDKがオープンで利用できるものに名関してはそうなってい
るわけですが、当然のようにゲームエンジンで利用される可能性も
ありそうな、オールインワンのHMD型PCのホロレンズもそうなるよ
うな気がします。
その為、こうした分野は、開発言語の基礎の上に利用するための
SDK多追加ライブラリと言う知識の枝葉を付けていくことになるので、
単一の言語の標準らライブありと命令軍を覚えたら完結するという物
ではありません。というのも、スポーツをする場合に、その教義を学ば
ずに筋トレして勝てたら誰も苦労はしませんが、その間違いと内容的
には同じ(野球で、ボール打った後ンい三塁のほうに走る状態の何か
が我が道行き過ぎて、常にそれしかしないような脳筋肉だとどうしよう
もないのと同じです。)ですからそういう分野になります。
当然標準ライブラリでモノを作る事はd系るし物を組み立てる上での
基礎は学ぶことにはなりますが、見s実装機能を開発するための基礎
学習が開発言語の学習であり、その開発ではなく、すでに開発してある
ものを使う場合にはライブラリやSDKの利用方法に関する学習が必要
になると言う訳です。
とりあえず、m基礎がないと応用は聞かないので、基礎固めが必要
と言うのは学習において重要なファクターですが、それは何かを学ぶ
上ではどの分野も同じような気がします。