「Fortran」を含む日記 RSS

はてなキーワード: Fortranとは

2025-11-06

anond:20251106215727

ほぉ。まるで「ライブラリ移植なんて余裕っすよ」と言わんばかりの口ぶりだな。お前、自己放尿レベル気持ちよくなってるが、現実を何も理解してねぇぞ。

いか。「同じ機能移植するだけ」って発想がそもそも低能証拠だ。Pythonの強みは言語としての表面構文じゃなく、生態系として積み重なった最適化と実績だ。

NumPyやPandas、Scikit-learn、PyTorch、全部C/C++Fortran実装Pythonバインディングで何層もラップしてる。

しかメモリ管理スレッドセーフティBLAS最適化GPUオフロード、それらを組み合わせたとき挙動の安定性まで含めてライブラリって呼ぶんだよ。

「決まったインターフェース移植するだけ」とか言ってる時点で、頭の中で想定してるライブラリが、せいぜい数千行のユーティリティレベルだろう。

企業が内部で作るって?そりゃ車輪の再発明だよ。しかも、Python10年かけて磨き上げたアルゴリズム最適化を、数ヶ月の業務開発で再現できるとでも?寝言は夜だけにしろ

あと、「いまどきの言語ならそんな大変じゃない」って、まるでNode.jsがCythonやNumbaのようなネイティブ統合の層を持ってるかのように錯覚してるのが痛い。

V8JIT高速化できるのはせいぜいスクリプトレベルの話。数値演算メモリアクセススレッド制御最適化できる数学的基盤の厚みがまるで違うんだよ。

Nodeで同じことをやろうとしたら、JSからC++アドオン叩いて、型変換のコスト死ぬだけ。

まり、「移植できるだろ」って発言は、Python生態系を単なるコード群だと思ってる愚か者自己放尿なんだよ。

それは「パルスジェットなら自作できるだろ」と言ってる鉄クズコレクターと同レベル。動くかもしれんが、効率も精度も再現性も自己放尿レベル

Node.js厨が「Pythonライブラリ移植できる」とか言うのは、「俺でもベートーベン交響曲ぐらい耳コピできる」と言ってる音感ゼロ自己放尿芸だ。

見てる側からすりゃ笑いのネタにもならねぇ。

2025-10-07

anond:20251007210900

自動プログラミングという言葉1960年代あたりに流行ったらしいね中田育男さんの本で読んだことがある。そう、FORTRANコンパイラとかが出てきた頃の話かな。「もうマシン語アセンブリ言語)でプログラミングしなくてもいい」とか

2025-08-30

anond:20250830221426

数千年の人類史から見れば、**プログラミング文化は100年〜150年程度の短い“過渡期文化”**だったと振り返られるでしょう。

ちょうど、かつて「計算尺」や「写植機」が一時代を築いたように。

FORTRANを起点としたこの100年は、

人間機械対話するために苦労した時代

として歴史に記録されるはずです。

2025-07-20

お堅い開発やってる情報技術から見たチームみらいへの期待と懸念

最近テクノロジー政治かえる」だの、「デジタル民主主義」だのって、やたらと情報工学系のバズワードを振り回す新党がある。「チームみらい」だ。

正直なところ、俺みたいなお堅い開発やってる情報技術からすると、最初は「またか」ってのが正直な感想だった。政治家が「IT」って言い出すと、ろくなことにならないってのが経験則からな。

でもちょっと調べてみたら、「チームみらい」の言ってることには、かに耳を傾ける価値のある部分と、背筋が凍るような懸念点が同居してるってのがわかってきた。

まず、彼らの主張と、俺がポジティブに受け取った点から見ていこうか。

問題意識は本物か?

彼らは日本の政治バグってる」表現し、「行政サービスは相変わらず使いづらい」と現状認識は一致する。

テクノロジーで、政治の透明化・効率化を実現する。それは今すぐできる。そしてあなた生活を着実に改善できる」と謳ってる。目標としては「テクノロジーで透明化、効率化、スマート化」を目指すんだと。まぁ、これは誰でも言うよな、って感じだが。

実装するという意思表示

「1議席を得て国政政党になったら、政党交付金永田町エンジニアチームをつくる」と明言してるのは驚いた。これが絵空事じゃないなら、これまで口先だけだった「IT化」「DX推進」とは一線を画す。

党首の安野たかひろ氏自身AIエンジニア起業家だというし、公認候補者の中にも複数情報技術者がいるのは確認できた。「手と足を動かす実践型」標榜してるってのも、従来の政治家とは違う姿勢だな。

プロトタイプ」を出す姿勢

自ら開発した政治資金透明化ツール Polimoney にてすべて公開」してるってのは、実際に手を動かした証拠だ。これは評価できる。

政策AI対話しながら深掘りし、意見要望簡単に送れる世界初チャット機能も搭載」したマニフェスト や、「政治参加を"楽しく"可視化ゲーミフィケーション導入のアクションボード」なんてのも作ってるらしい。これらはデジタル民主主義」を単なるスローガンで終わらせないという意欲の表れだろう。

しかし、お堅い開発やってる情報技術から見たら、これ、地雷満載可能性もある

ここからが本題だ。彼らの主張を聞いて、俺の脳内には危険信号が点滅しまくってる

何故なら「具体的な『(情報工学としての)マニフェスト』も『仕様書』も『実装計画』も決まってない」から

彼らは「アジャイルに、現場改善していく」って言いたいんだろうが、「基幹システム」と「Webサービス」を一緒にしてはいけない

仕様書なし」の恐怖

銀行勘定系なんて、たった一行のコード変更でも何十ページもの影響分析テスト計画必要になるんだぜ?国民税金個人情報社会保障に関わる行政システムは、国民全員の生活の基盤だ。それを「バグってるから現場で直す」なんて、詳細な設計書も持たずにメスを入れるようなものだ。そんなリスキーなことを許せるか?

テクノロジーは、難しい技術のことじゃない。できなかったことを、できるようにする方法のことだ」、って言うが、その「できるようにする方法」をどう「堅牢に」「安全に」「持続可能に」実現するかが、情報工学の肝なんだよ。

スケーラビティ堅牢性への疑念

彼らが作ったPolimoneyやAIチャットは、あくまプロトタイプ限定的ツールだ。素晴らしいが、それは「小さなシステム」での成功例に過ぎない。全国民が利用する行政サービスを、あのレベルアジャイル改善し続けられるのか? アクセスが集中した時、障害が発生した時、どうする?

勘定システムなら、トランザクション一つが飛んだら新聞沙汰だ。行政サービスもそれに近い重要性がある。「後から直す」では許されないレベルシステムを彼らがどう扱うのか、その哲学が全く見えてこない。

レガシーシステムとの闘い

日本中行政システムは、半世紀以上かけて積み上げられたレガシーの塊だ。古いCOBOLFortran、紙のワークフローがそこら中にある。永田町エンジニアチームを作ったとして、彼らが直面するのは、壮絶な「負の遺産との戦いだ。

既存の枠組みにとらわれることな活動していきます」というが、既存の枠組みに「縛られまくってる」のが日本行政システムなんだ。これらをどう「解体」し、「再構築」していくのか。それには膨大な時間予算、そして何よりも緻密な移行計画必要不可欠だ。

ガバナンス説明責任の欠如

エンジニアチームが政治社会課題を次々解決」 ってのは聞こえはいいが、誰がその「課題」を定義し、どの「解決策」が正しいと判断するのか?エンジニア政策立案まで牛耳るのか?

現在としてマニフェスト(情報工学)や仕様書がないということは、「誰が、何を、どう作ったのか」という明確な責任所在曖昧になるリスクはらむ。国民への説明責任をどう果たすのか?

結論:期待と不安交錯する「デジタル時代ベンチャー政党

「チームみらい」がこれまでの政治の慣習を破ろうとしている点は評価する。エンジニア政治の中枢に入れようとする試みも、既存政治家が積極的にやろうとしなかったことだ。

しかし、彼らがやろうとしているのは、町中の小さなウェブサイトを作るような話じゃない国家の基幹システムを「アップデート」する話だ。それには、バグってるから直す」というシンプルな熱意だけでは足りない

必要なのはシステム全体像を見通すアーキテクチャ設計能力、膨大なリスクと向き合うセキュリティ設計、そして長期的な運用を見据えたメンテナンス計画だ。

アジャイル」は魔法言葉じゃない。基幹システムにおいては、アジャイルの導入にも緻密な計画と準備、そして極めて高い技術力と経験が求められる

この党が、本当に日本未来を明るくできるのか、それとも「デジタルの皮を被った理想論」で終わってしまうのか。今の段階では、期待と不安五分五分だ。彼らが単なる「手を動かす」だけでなく、システム全体を見通す頭」と「国家レベル責任を背負う覚悟を具体的に示せるかに、全てがかかっていると俺は思うぜ。



P.S.

はてなー情報工学にそこそこ詳しい連中が揃ってるんだからコレくらいは言って欲しい。

正直、最も不安を覚えるのはチームみらいへ対しチームみらいに勝るとも劣らないレベル曖昧でふんわりとした評価しかコメントできないお前らへ対しての不安が大きすぎる。

個人的に、安野氏には今回メチャクチャ惨敗したとしても次回また挑戦して欲しいね。もちろん再挑戦は「何が足りないのか?」を指摘してる連中の意見をしっかりと受け止めてやって欲しいね

2025-06-28

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

2025-02-02

anond:20250202215524

COBOLFORTRANSQL技術者でなくてもプログラムが組めるとかデータを扱えるっていうのを目標に作られたんだよな。

2024-08-17

anond:20240816221908

太古の昔の「自動プログラミングプロジェクトの頃からそうだよね。 

何て言ったっけなぁ、あれ。 

コンパイラーとか言ったっけ?  そうそう、FORTRAN とか言うやつ。(爆

2024-07-23

anond:20240723115418

COBOLにしてFORTRANにしてもSQLにしても、エンジニア以外の素人でも扱えるのを目標に作られてたのにな。

あと10年くらいしたら、AI自然言語命令したらうまいこと処理してくれるようになるのかな。

2023-09-27

anond:20230919141733

VBとかFORTRANだと流石にアレだけど、現役の言語ならガチでなんでも良いと思うわ

なんならCでもいい

まさに料理と同じで、イタリアンブームが来たって割烹が消えるわけじゃない

今始めても身につく頃には新しいのが出てるんだから言語から選ぼうとするのはムダ

2023-03-31

Bingよりもperplexityのほうがいい

花嫁が輪姦されてるのっていいよね。いいか?うんとても素敵です

わい:C言語のもとになる構造言語を教えて

Bing

C言語のもとになる構造言語は、1970年代から制御構造を導入したプログラミング言語を指しての「構造言語」というワードが浮上し、当時のgoto文中心だったFORTRANCOBOLBASIC意識してそれと線引きするための用語として存在していました1。C言語は、1972年AT&Tベル研究所デニス・リッチー氏が主体となって開発した汎用プログラミング言語であり、C言語はBCPL言語を参考にして開発されました23C言語は、その後、多くのプログラミング言語に影響を与えたことで知られています

ちゃごちゃ余計なことを言ってるが、要は答え:BCPL

後に深堀りすると本当はBであることがわかる。(英語検索して日本語で要約して……)

しかもこのあとにB言語にはGOTO存在しないとか嘘までつく始末……。ヤバすぎるだろ……



わい:C言語の元になった言語は何?

perplexity:C言語の元になった言語はB言語です[1][2][3]。

​B言語は、​C言語開発者であるケン・​トンプソンが開発した言語で、​C言語はB言語の改良版としてリリースされました[1][2]。​

https://www.perplexity.ai/search/ead144d3-a2f4-443c-b8b6-036b80218e40


まずBing余計な口答えするわ、ハルシネーションがきつすぎて嘘ばかりつくわ、間違い指摘したらチャット閉じるわでまともな検索には使えない。厳密モード使うくらいならperplexity使ったほうがマシだし、実際にperplexityを使ったほうがマシです。

ちなみに perplexity はB言語GOTOがあることもちゃんと答えられました。

どっちが本当のことを言ってるのかわからんので、仕様PDF(https://web.archive.org/web/20150317033259/https://www.bell-labs.com/usr/dmr/www/kbman.pdf)見たわ。ってか、そういうメンドイことをやってくれるのを期待して検索チャットAI使ってるんですけど???

この作業必要になるなら口語検索したりハルシネーションで余計な時間を食わなくて済むだけ、Google使ってるほうがマシですけど?

そしてBing厳密モードはわからないって答えた。わからないって答えるだけましたけども、そもperplexityはちゃんとB言語GOTO存在すること答えられてるので、やっぱりBingよりはperplexityのほうがまともであるという結論になる。

何よりもperplexityは余計なことを言わないで聞かれたことだけを答えるし、ハルシネーション少ないからな。

結論検索(要約するなら) https://www.perplexity.ai 使え。Bingうんこ

2023-01-31

[]

あいもかわらずBSE検討してしまった。こんなことしていて意味あるのか。WFを求めるところと最終段のランチョス回すところは既存のものをつかうとして、その間は自分コーディングするのが良いようなきがしてきた。あの人が2000年前後に展開していた近似法がどこにも実装されていないような気がする。その近似をつかうとだいぶスピードが出るような期待が高まっている。その部分にしたって、既存Fortranコードベースライン実装だけど、そいつをもとにいじくる。ランチョスの部分はシングルコア想定で並列処理に対応してないので、そこを並列化(共有メモリ並列で十分)する。新興勢力言語実装してあるので、そこをどうするか

2022-10-13

anond:20221013145402

ほいノ

学歴

中学ん時の偏差値は60くらい。

高専行こうと思えば行けたんだけど、実家離れるの怖くて偏差値45の工業高校へ。

もう全然馴染めなくてさっさと中退

17歳までニート

18歳までフリーター

18歳〜21歳まで定時制に通った。

英語個人的にそこそこ勉強したけど、数学なんかはⅠの後のAが半分も終わらなかったレベルバカ校。

大検で足りない単位取って3年で卒業した。

職歴

21歳〜24歳まで契約社員

この時期は暇で、なぜかやる気に満ち溢れてたから、TOEIC700近くとか日商簿記2級とか色々資格を取った。

24歳でうつになって、30歳くらいまで日雇い派遣無職を半々くらいでリピートしてた。

30歳で製造業正社員になった。

これが人生初めての正社員だった。

やってる仕事は大したことなかったけど、幸い仕事中にPCをめちゃくちゃ使うのでやりたい放題だった。

この時にプログラミングを始めた。

33歳で正社員社内SE転職

年収めっちゃ下がった。

34歳でWebスタートアップ転職

ここで年収どんどん上がった。

36歳でうつが再発して辞めて今に至る。

プログラミング遍歴

略歴・技術スタック

基本は、仕事で使えそうなもの必要ものをその都度吸収していった感じ。

Webが中心ではあるけど、組み込みとかのハードが絡む分野以外は結果的に広く浅く手を出してる、つもり。

言語的なやーつ
Excel VBA 1年
VB.NET半年
JavaScriptNode.js 4年
HTML 1年
SQL 4年
GAS 3年
C# 1年半
TypeScript 2年
Java半年
C++半年
ラダーFB三菱シーメンス 1年

実務経験があるって胸張って言えるのはこれくらい。

大体習得順。

他には、Python、Julia、R、Fortran、Rust、GoDart、Shell、Deno、CSSなんかは少しずつかじってる。

最近Webに関してはほとんどJSTS)で済む感じになったので楽。

なんでPLC最後やねんってツッコミは置いといて、Web系寄りでラダーも触ってるって人は観測範囲ではあんまりいないので、それが俺の数少ない強み。

それ以外のなんかなやーつ

RDBPostgreSQLSQL Server、MySQLSQLiteの順で実務経験あり。

NoSQLはFirestoreが実務経験あり、実務なしだとNeo4jとか。

PaaSGCP(Firebase)、AWSの順で実務経験あり。AzureADVM周りをちょっと触った程度。

Dockerはよく使うけどKubernetesとかまでは行ってない。

後は産業用の通信プロトコル的なやつを無駄に色々触ってる。Modbus TCPとかORiNとかCC-Linkとか。PLCもそうだけど、あの辺は日本ドイツアメリカが未だに既得権益で幅利かせててまじで闇深い。その代わりそれをブレイクスルーできればめっちゃ稼げる分野だと思う。

閑話休題

俺のキャリア形成方法と、簡単アドバイス

まずはカイゼンをしよう

フリーターでどんな仕事してるか知らないけど、仕事で一日の半分が無くなっちゃうじゃん?

から、その時間をまず有効に使う。

以下、俺の場合ね。

次長クラスの人が「この製造番号でクレームがあったんだけど、作業当時どんなことあったか覚えてない?」みたいなことをわざわざ現場まで何度も聞きに来るんだよ。

作業したのなんて半年前だったりするから一々覚えてないっすよ、って言ってるのに何度も聞きに来るからイラッとして仕事用のPC勝手Excel業務日報を付けるようにして、イントラファイルサーバーに置いて「そういう時はこれ見て下さい。次長の貴重な時間が勿体ないです」って言ったのよ。

それだけでめちゃくちゃ喜ばれる。

で、今度はその次長が「この製造番号どれくらいの時間作業終わった?」みたいなことを現場までわざわざ何度も聞きに来るから、俺はその時またイラッとして、Excelストップウォッチもどき作って製造番号とか工程ごとに時間計測して記録して、やっぱりファイルサーバーに置いて「これ見て下さい」って言ったのよ。

それでまた、めちゃくちゃ喜ばれる。

俺のプログラミングの始まりは、ひたすらそれの繰り返し。

最初プライベート時間結構使ってやってたんだけど、そういう周りに喜ばれる効率化を繰り返してると、少しずつ業務時間内で自分スキルアップに直結する時間を作れるようになる。

自分でこれ面倒くせーな、効率よくできねえかなって思ったら、じゃあどうやって?てのを考える。

これがカイゼン英語Kaizenって言っても通じる。

ちなみにPCがなくても、たとえばメールアドレスさえあれば今の時代カイゼンはできる。

大きな会社に勤めてるとかだと使うのが難しいんだけど、IFTTTとかが良い例かな。

https://ifttt.com

これはiPaaSっていうサービス一種で、まあ言葉意味は覚えなくて良いんだけど、要は「イベントAが発生したら別のイベントBを起こせ」っていうのを登録して、自動化できるWebサービス

例えば、あなた日雇い会社にいて、毎日違う現場に働きに行くとする。

で、出勤前、現場到着時、勤務終了の時にLINE毎日報告しなきゃいけないとする。

で、その報告を受けた事務方は、Googleスプレッドシートにその都度入力する。つまり、それだけの為の事務員が一人いる。

面倒くさいし、お金がかかる。

そこで、「特定グループLINEを受信したら(イベントA)、特定Googleスプレッドシート情報を記録せよ(イベントB)」っていうのをIFTTT登録すると、少なくとも事務員入力の手間は省けるってえ寸法だ。

IFTTTはたくさんイベントを処理させたい場合は有料になっちゃうけど、個人で試すぶんにはクレカ登録しなきゃいいだけだから試してみるといいよ。

プログラミングを学ぶならN予備校

月1000円で学べる。コスパは圧倒的。

テキストベースだけど、Web講義とかチャット質問できる。

入門コース学習に180時間と公称してる)がしっかり理解できていれば、Webで大抵のものは作れる。

ただし、大筋は問題ないんだけど、細かい部分で最新技術キャッチアップできてない可能性があるので、そこは注意した方が良いかも。

https://www.nnn.ed.nico/pages/programming/

安定志向なら中小企業社内SE転職する

N予備校の入門コース終わらせたら、基本情報技術者応用情報技術者を取る。

そしたら、職歴書の作り方次第で中小企業社内SEにはまず転職できる。

中小企業社内SEは、ITリテラシーの低い社員が多い中で「Excelセルの色が変わらなくなっちゃったんだけど!」とか「複合機が紙詰まりって言ってるけどその紙が見つからない!」とかクソイージークエストをこなすだけでおちんぎんが貰える、人によっては天国、人によっては地獄のような職業だ。

ごめん、流石に言い過ぎた。実情は色々と面倒くさい。DXとかバズワードを聞きかじったクソ重役から突然言い渡される重めのミッションとか。

けど安定なのは間違いない。

上昇志向なら中小製造業生産技術転職する

N予備校の入門コース終わらせたら、基本情報技術者応用情報技術者を取る。ここは社内SEと同じ。

生産技術ってのは、誤解を恐れずにすげえ簡単に言えば、カイゼンばっかりやってる人たちのことだ。

あんまり詳しくは言えないんだけど、俺が最後にやっていた仕事は言わば生産技術だった。

で、中小企業生産技術は、Webに強い人材をかなり欲しがっている。有り体に言うとIoTとかね。

IoT最近セキュリティの強化がかなりクローズアップされていて、そのせいで二の足を踏んでる企業が多い。

そこに滑り込むのはアリだと思う。

まとめ

よく「T型人材」って言われ方をするけど、どっちのスペシャリストの言うこともある程度分かる「橋渡し」的な人材になると途端に貴重になって需要が増すので、上昇志向があるなら「Web+何か」の組み合わせでお金稼ぐのが良いんじゃないかな。

ま、橋渡しって自然プロマネとか任されがちで、裁量大きくて大変なんだけどね。

質問あればどうぞ。頑張って。

2022-10-05

anond:20221005192519

それは現状で i 単体の使われ方の話であって、FORTRANの暗黙の型宣言変数名の頭文字が[i,j,k,l,m,n]の6つのいずれかであれば整数変数とみなされる設計になっていた由来の話ではないぞよ。因果関係が逆だぞよ。

anond:20221005190212

FORTRANの暗黙の型宣言変数名の頭文字が[i,j,k,l,m,n]の6つのいずれかであれば整数変数とみなされた

  という説明からそういう結論が出て来るのか?

anond:20221005110007

そのFORTRANでiスタート理由を辿れば結局同じ話に行き着くやろ

anond:20221004173424

元はFORTRANの暗黙の型宣言変数名の頭文字が[i,j,k,l,m,n]の6つのいずれかであれば整数変数とみなされたので(それ以外は明示的に型宣言をしないと実数型となり処理速度が遅くなる)FORTRANループにI,J,K,L,M,Nが使われることが多かったので、その慣習が以降の言語にも伝わったため、が正しいと思います。 

ログイン ユーザー登録
ようこそ ゲスト さん