真理は一つ

 

ザクッと言うと関数は戻り値を持つ処理のひとかたまり。

なので関数を繋げれば処理を簡潔に記述できる。

言い換えれば条件分岐や反復を隠蔽する記法って事ですね。

判る人には判る。実に科学的です。

 

メリットとデメリットがあって一般人は理解しにくいでしょうね。

関数型人間は無口で付き合い難いっって感じですかね。

 

 

 

付き合い難さは次の通り。お友達程度で済ませるのが平和。

関数型言語は学者(プログラミング言語を作りたい人たち)の間では人気があります。いろんな作者さんが居て面白い。アニメの世界と同様です。

欧米系はアニメよりアルファベット文字による文化構築が盛ん。

アルファベット文化は1バイト文字の世界では有効だったかもしれませんが、

複数バイト文字(花文字あり)の世界では表現力を阻害してますね。

 

AIが発達すれば母国語による自然語プログラミングが主流になるでしょう。

それはコンピュータとの会話に繋がります。

 

ヨウツベでも難解とされてるのがHaskell。手続き型もサポートする等学術から離れて商用も目指してるようです。

 

ソフト開発現場は柵で雁字搦めなのです。理想は現実化しない。

 

実社会の人気度はpythonとcがあれば十分。高位言語pythonをマシン語が吐けるC言語が支える。そんな構図が見みえてきます。

 

 

 

給与を頂ける現場ではJAVA系が圧倒。

pythonで簡潔にサクサクは夢物語。プログラーマは気楽な稼業では無いのです。

 

関数型言語をすこし掘り下げてみましょう。

若きエンジニアのこの投稿がよくまとまってます。

 
 
変性を避ける、副作用を避ける。学者としては強要したいところでしょう。
私的には変性あり、副作用ありなほうが簡潔にアプリ書けると思うよ。
状況に応じて関数の働きが変化するってのが有効性が高い。
 
pythonは関数型言語の側面もあります。
サプー先生に説明してもらいます。
pythonは何でもかんでもオブジェクトとして名前を付けて管理します。
要するに大きな辞書を引きならな処理をしてる。
各オブジェクトごとに何ができるかが定義されてる。
リスト型のメモリーだったり、ロジックとデータを持つクラスだったり処理だけの関数だったり。関数はメソッドとも言って作用を与えるもの。保持してる値はプロパティとして扱える。()をつけるとオブジェクトを関数として実行。
 
 
分岐がある部分を関数として切り出せば関数型に見えるがそれは関数型とは違うらしい。でもまあ、記法として如何に隠蔽するかが学術テーマ。
pythonでは内包表記として関数型的記法を許す。
 
pythonは特徴的なのは処理をパックしオブジェクトを返す。
下の例だとxはオブジェクトで実行結果が入ってるわけでは無い。
実行予約券みたいなもん。次の式でその券を使ってリストを作成する。
これが遅延実行。
 
下の文は rusult=list(map(適用したい関数、繰り返しオブジェクト))
とも書ける。元になる入力に処理関数を積層して結果を導き出す構文。
 
ものは言いよう。リストから何かを選び出す時、素直にはifで判定。
ですが、if機能を内蔵してる「選別用の関数」を使うとみためでIF文は逃れられる。
要は処理を条件分岐の命令ではなく選別関数に置き換える。
まあ、それはそれでありだとおもうけど、それでif文を全部なくす?
そりゃ無理があるでしょう。でも無理を道理にするのが学者の仕事。
 
コンパイラー言語だと関数は実行バイナリーの一部に組み込まれ、マシン語レベルで分岐されてきます。その分事前のチェックが厳しく、記法も制約が多い。
その代わりマシン語だから極めて高速。
 
pythonはオブジェクトを作る作業をソースコードを解析しながら行ってるので、
柔軟で臨機応変。解釈次第で大抵の事が出来てしまう。
基本的にはハードウエア命令に依存しない。
 
pythonだと辞書から関数を選び出して、それがバイナリコードだったら、マシン語レベルで呼び出す。pythonコードだったらインタプリターで解析
なので処理は遅いけど記法に柔軟性があるのです。
 
辞書を書き換えれば実際に動く関数を変えられます。
違ったソースを読み込ます事もできる。
pythonは言語を越えてOSとも言えます。pythonはJVM相当。
MS DOS前はROM BASICが流行りました。BASICが言語でもありOSでもあった。
これはコンパイラー言語ではDLLとして多用されてます。
WindowsはDLLの塊。DLLは別途コンパイル済の実行可能モジュール。
 
 
pythonは関数型でも手続き型でも記述できる優れもの。
無料で開発環境も整備されており、個人で愛用するのに適してますね。
スマホでは動きません。今どきスマホでアプリ書く人は居ないでしょうけどね。
 
実運用では使えるリソースに限界がありますからpython万能にはなりません。
これからの普及には期待してます。
 
GPUみたいにpython専用のプロセッサができると局面は大きく変わるでしょう。
専用のハードが作られるほどに浸透すれば良いですね。

 

JAVAの生みの親サンマイクロシステムズはJVM(仮想マシン)のハード実装を考えた事がありました。JAVAのバイトコードを直接実行できるCPU.。

評判が最悪で実現はしませんでしたね。

CPUメーカーでもあったのでそこからは凋落の一途。

 

もしうまくいってたらスマホのCPU独占できてたかも。

 

pythonでAI言語開発の緒に付いたかもしれません。

AIは次なるプログラミングの闇。

AIの世界はあいまい。デジタルな手続き型言語では到達できません。

画像認識とかの末端の低次元なAIではなくてもっと上層のAIについては、

せめて自然言語処理を正確に行えなければ次は無い。

話が出来なきゃほんと話にならんよ。

 

人類はCPUのアーキテクチャは進化さず微細化と高クロック化に邁進。

台湾のTSMCが大成功したわけです。ここに来てコスト的に微細化も限界。

陳腐なCPUアーキテクチャでAIをなんとかしようとしてますが、莫大に電気を食います。

 

高額な航空機には自動運転が装備されてます。

なので金かければなんとかなる世界ではあります。

でも自動運転装置があまりに高額だと人を雇った方が安上がり。

 

電気自動車社会と自動運転は庶民の夢ですが車載のバッテーリーだけでAIがどこまで働けるか?自動運転するための外界認識だけで莫大な情報量です。

そしてそれはほとんど捨てられる情報なので車内で完結させないといけません。

動物の脳は大したエネルギーを使わず自衛本能としてそれを実現してます。

 

車庫入れやら駐車だったらAI使わないほうがアプリは楽に出来ます。

AIに車庫入れと駐車を学習だけでマスターさせるのはかなり大変。

いろんな状況下で人間が何回も実演して見せないといけないんですよ。

 

沢山の動画を解析して運転方法を自己学習。学習結果のテスト。

学習済みの知識ベースはオブジェクト指向的に継承して利用できる。

コピーフリーな知識?もしそうなるなら人類はハッピーだけど企業は不幸。

自動運転技術は人類共有の知識で公共物。そんなことは誰も考えては居ない。

自動運転出来たら儲かる。だから躍起。人類は欲望でのみ動く。

 

自動運転は良くてアンドロイドみたいに無償で配られるけど実装と責任は各メーカって感じかな。得た知識を配布する仕組みが重要だね。軍事用の知識は特に取り扱い注意。

テスラーが自動運転を完成させたとしてもそれを搭載するのはテスラー車だけ。

テスラーがアンドロイドにならないとしたら。自動運転に明るい未来は無い。

アンドロイドは過去の資産の寄せ集め。自動運転は人類の全く新しい試み。

 

アップルは自動運転を棚上げにしました。

M3チップを開発できるアップルですが可能性あるAIチップはなかなか出しません。

市場価値があるAI半導体の開発には10年以上掛かると思います。

生きて見届ける事はできないでしょう。

 

おしまい。