Edited at

全ての開発者が学ぶべき2つの言語


このような傲慢なタイトルが多く、業を煮やしました

ここでは、私なりのプログラミング上達論を言います。

なお、爆速で成長するという意見も、傲慢極まりないと考えます。


はじめに


あなたなら、完璧なプログラミング言語をどのようにデザインしますか?

に、アラン・ケイ氏が回答されておりますが、

「完璧であることとより良い事は、必要であることに対する敵です。」


最初にJavaを学ばないでください

ある専門学校では、一貫してJavaを教育します。

欠席すると教師が

「このタイミングで休む事をどう思いますか?」

と教室の生徒全員に聞きます。

生徒たちも、「信じられません」と言います。

この専門学校を卒業した生徒の就職率はとても良いです。

会社の評判では、とても良く飼いならされていて使いやすいそうです。

そして、幾人かはその考えに染まりきれず脱落し、

かなりの人間が柔軟性のなさから、生存率を下げ心を病むのです。


オブジェクト指向は 哲学?宗教?

Quoraの回答に対する低評価とその見解

十分に抽象化されたオブジェクト指向のソースでさえ、

激動のプロジェクトを目の前にすれば、それが如何に無力なものかを理解します。

私のプログラミングスタイルでは、引数が2つオプションで追加され、

処理が渡されるまでのコーディングは10秒ほどでバージョンは2つ飛んでも問題なく管理でき、NPMにパッケージが上がります。

派生バージョンを考え尽くし、利便性と言語学に研鑽し、手短な開発を実現していきます。

必要であればシングルトンを書き、ファクトリーに入ったインスタンスが使用された後に削除されます。

インスタンスそのものに対してのプログラミングは最小限になり、一つのセオリーの記述にのみ専念できるスタイルを取ります。

ポリモーフィズムのための不用意な継承は悪とすら考えるほどですが、誰でも同じレベルでプログラミング出来るわけではありません。

そして、そんな私にもミスはあります。


大切なのは、本来の楽しさ

そこで、まずはパラダイムの事は脇に置きましょう。

そして、Scratchをおもむろに開くのです!

もし、近くにCoderDojoがあるなら、

そこのメンターになることで、Scratchの理解は早まるでしょう。

もし、Scratchが肌に合わないならSqueak etoysをおすすめします。


なぜ、この2つの環境が重要なのか?

昨今、Node-Redや、IBM BlueMixなど、ブロック接続型のVPLも利用者が増えてまいりました。

数学的にも、圏論を主体としたプログラムを矢印で結ぶことの大切さが問われ始めています。特に、Squeak etoysは、Squeak Smalltalk環境上に構築されたブロックVPLで、そのままソースコードを見てSmalltalkに親しむことで、Squeak Smalltalk環境でのコーディング障壁を下げることが出来ます。


ある、Qiitaの記事のコメントで…

和訳ですが「日本では、まだJavaとVBScriptを使っていると思っている」というコメントが入りました。こういうコメントが入ることを、我々は真摯に考え直さなくてはなりません。


抽象化すべきものの正体

抽象化するべきは、現実世界ではなくあなたの目の前にあります。

そう、端末の計算資源です。

オブジェクト指向は、目の前の計算資源に対して現実世界を専門的に取り扱うための仮想の計算機があるという事を実現したかっただけなのです。


終わりに

あらゆる言語は、その考察された経緯があります。

ある言語を叩くのは、自分がただ、その言語が嫌いなだけという偏見の押し付けにしか過ぎません。

逆に、ある言語だけを褒めるのも同じだと思っています。

言語の製作者の皆様には、畏敬の念を忘れてはならないだけです。

そういう真摯な気持ちが、プログラミングやデザインを超えた問題領域の解決に繋がるだけですので、深呼吸をして、プログラミングに取り組んでみてください。


補足、参考など

コーディングのスピードを上げるためには、どんなトレーニングやテクニックが効果的ですか?

Swiftと圏論への応用