ゆるく楽しむプログラミング

ゆるく楽しむプログラミング

ガチでITエンジニア(w や フリーランスのプログラマを目指している人は そっと閉じてください。

基本、趣味でやっているだけのお遊びコンテンツです。
趣味なので私が楽しくない事はやりません。
ゆるく楽しむプログラミング&電子工作『ゆるプロ』です。

プログラミングを楽しむために

プログラミングって手段なんですよ、プログラミング言語はプログラムを作るための道具でしかありません。
どんなに道具に精通してもそれだけではプログラムは作れないけど、逆に必要最低限の事だけ知ってればプログラムは作れます。

(副業でかせげそうだから)プログラミングをマスターしたい。どの言語がお勧めですか?」
(何か格好良さそうだから)プログラミングをマスターしたい。流行ってるみたいだからPythonをやってみようかな」
など、目的が曖昧で手段が不明確な人は、まずモチベーションの維持が難しく挫折する率が高いです。

(〇〇を作りたいから) プログラミングをマスターしたい。Unityとか言うのが良いらしいからC#とJavascriptを覚えたい」
(掲示板を作りたいから)プログラミングをマスターしたい。PHPが利用できるらしいからPHPを覚えたい」
など、目的がハッキリしている人はマスターするのが早いです。

目標とする作りたいプログラムはありますか?
作りたいプログラムを実現するためにどんな道具(プログラミング言語)が必要なのかを調べてみましたか?

小説を書くために国語辞典を丸暗記するような不毛な事をやってませんか?
小説家になって億を稼ごう (新潮新書) 』みたいなのに感化されて『新版・小説を書きたい人の本』を熟読すれば小説家になれる!みたいな?
小説を書く方法に精通して漢字と慣用句を覚えたところで小説が書けない事くらい想像できますよね?
デキは度外視して実際に小説を書き上げて経験を積んでノウハウを蓄積していかなければ小説が書けるようにはならない事くらいは誰でも知ってると思うのですが…
何故かプログラミングに関してはプログラミング言語の文法を覚えて使い方をマスターすればプログラムが作れると思い込む人が多発します。
※英語学習にもそんな傾向がありますね。

実際に作りたい目標(プログラム:壮大な目標を定めるといつまでも完成しなくて挫折する、短期的な小さな目標が良い)を定めて、実現手段を探りながら試行錯誤する人は割とすぐに出来るようになります。
明確な目標がなく、宝くじが当たったら良いな~的な漠然としたイメージでプログラミング言語を学習しようとする人は挫折する人が多いです。

プログラムを作るうえで身につけなければならないのはプログラミング言語の知識ではなくロジックの組み立て方、アルゴリズムを組み上げる論理的な思考力だからです。
プログラムのロジックが決まれば、大体は、どのプログラミング言語でもプログラムは作れます。

ロジックの組み立て方、アルゴリズムの組み方は自分で考えて悩んで実践してみなければ身に付きません。

プログラミング言語は言語ではない

プログラミング言語は日本語、英語といった括りの《言語》ではありません。
コンピュータを動かす命令の集合体で歯車や配線に近しいモノです。
《言語》と言う日本語訳が理解を阻んでいるように思います。
コミュニケーションのための言語ではないので単語(命令文や関数名)を覚える事に意味はありません。
文法書(言語仕様書)を暗記したところでプログラムは作れません。
時計(機械式)を作るのに歯車の形を暗記しても意味がないみたいな感じです。



本物みたいだろ?
これペーパークラフトなんだぜ。

同時にプログラム中に記述される計算式は数式ではなく計算手順の指示です。
この辺りを勘違いするとA=A+1 ありえないと悩む事になります。

コンピュータが発明された当初、プログラミングにはタイプライターが使われていました。
タイプライターは英語の文章を書くためのモノですから使える記号も限られていました。
※普通の英文にそんなに特殊な記号は必要い。
限られた記号でプログラミングを行うために決められた記号の使い方が幾つかあります。
= イコール  : 本当は のような記号が欲しかったが無かったので = で代用した。
* アスタリスク: 本当は×(カケル)の記号が欲しかったが…以下略
/ スラッシュ : 本当は÷(ワル)の記号が欲しかったが…以下略
この辺りはどのプログラミング言語でも共通ですね。
後はタイプライターの動作に準じて決められた事もあります。
制御コードと呼ばれる特殊な文字でLF(ラインフィード:行送り)とCR(キャリッジリターン:印字位置を先頭に戻す)が特徴的ですかね。

このような歴史的な経緯もあってプログラミング言語は一見《言語》の様に見えますが、《言語》ではありませんし、プログラムの式も数式ではありません。

HTML・CSSはプログラミング言語ではない

HTML・CSSはマークアップ言語であってプログラミング言語ではありません。
表示書式なので工学系ではなく美術系のカテゴリーだと思うのです。写植とかイラストとかのジャンルですね。

HTMLはSGML(Standard Generalized Markup Language:スタンダード ジェネラライズド マークアップ ランゲージ)と言う空母や戦闘機のマニュアルを効率的に管理するための文書データの書式を参考に作られたデータ書式です。
HTML(HyperText Markup Language:ハイパーテキスト マークアップ ランゲージ)の名前が示す様に研究者が研究情報の共有化の為にハイパーテキストを実現する為に考案されました。
Webシステムとセットでデザイン表現の拡充、データとデザインの分離と拡張を重ねていますが表示方法を指定する書式でありプログラムではありません。
Word等のワープロソフトで章付けや見出し、段落を付ける事の延長上にあるモノだと思った方が良いです。

プログラムから見ればXMLやJSONと同じ処理対象のデータです。
なのでHTML・CSSを勉強してもプログラミングはできません。

Webのフロントエンドで欠かせない存在になったJavascriptやAjaxならプログラミング言語と言えますので、プログラミング言語として学ぶならJavascriputになります。

パソコンでのプログラミング

純粋にプログラミングの学習を考えるなら、マイコンを使用するよりパソコンを使用した方が効率的です。

無料で使用できるIDEにも インテリセンスやコード解析機能、デバック機能の充実した機能が搭載されています。
VisualStudio(C/C++,C#,VB,Python)やEclipse(Java,PHP) を利用すれば

VisualBasicで簡単ツール作成 

百聞は一見にしかず

百聞は一見にしかず (たくさん聞くより、一回見た方が良い)
百見は一考にしかず (たくさん見るより、一回考えた方が良い)
百考は一行にしかず (たくさん考えるより、一回行動した方が良い)
と言いますから、とやかく考えるより手近なところから一回やってみるのが良いです。
※この故事にはまだ続きがありますが…

進化の過程からプログラミング言語の本質を俯瞰してみる

プログラミングの本質
プログラムロジックの3つの基本動作
コンピュータの高性能化にともないプログラムも大規模化
巨大になるプログラムを効率的に開発する手法が提唱されてきました
オブジェクト指向の登場によって、プログラムの流用/部品化が進み、プログラムの開発効率は格段に向上しました。
オブジェクト指向は現在のプログラミング手法の主流ですが、「オブジェクト指向」の言葉はソフトウエア工学のプログミング論に発展しています。
オブジェクト指向の指す範囲が曖昧模糊として理解が難しく感じますが、プログラミング言語の機能としては”クラス”の機能にすぎません。
ビジュアルプログラミングは図形の組み合わせでロジックを構築します。
文法や命令文のスペルを覚える必要がなく、プログラムの構造を視覚的に見ることが出来ます。

C言語

C言語の歴史 と 楽手環境の構築
~ VisualStudioでHelloWorld を表示 ~