Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録

「コンパイラ」を含む日記RSS

はてなキーワード:コンパイラとは

次の25件>

2025-10-20

プログラミングの一等賞になりたかった

自分プログラミングの一等賞になりたかった。

もうアラフォーになるんだけど、でも、夢は捨てきれていない。

一番プログラミングができるようになりたかった。

劣っている自分でも、プログラミングなら負けないと言えるようになりたかった。

でも、プログラミングの一等賞には全然遠い...

諦めればいいんだけど、でも、自分にはプログラミングしかない。

コンピューターサイエンスのすべての分野に精通」してないのを恥じている。

いや、「インフォメーションエンジニアリングのすべての分野に精通」してないのも恥じている。

全部を上手くできない自分が、ただただ劣っていて嫌で仕方がない。

コンピューターサイエンスのすべての分野に精通」している人がいるなかで、自分ができてないのが嫌になる。

なんで、自分にはできないんだと永遠に責め続けてしまう。できる人がいるのに、どうして自分にはできないのか。

全部できていたい、なんで全部できていないのか、それが自分の頭の問題だということを受け入れたくない。

UT入ってIS行くような人ができることが出来ないことに勝手に差を感じてる。

人間能力の差で覆せないということを、自分が認めたくない。

プログラミングが得意になるように頑張った。

手に職をつけるために、小学生からやっていた。

お前は劣っているのだから、要領よく文系としては生きられないからと。

でも、あまり能力の差と、頭の構造の違いを感じている。

しかし、だからといってあきらめたくない。全部上手くできるようになりたい。

しづつあがいてるけど、結局、やることなすことうまくいかない。

実用的なCPUをRTLレベルですら作ることもできてない。

OSコンパイラインタプリタも満足に実装できない。

TCPSSL/TLS自分実装できてない。

かといって、アプリケーションレイヤのこともできてない。

React/Vueみたいなフロントエンドフレームワークも作れてない。

無限に遠く、自分能力では到底できないことを諦められない。

出来てないことだらけなのに、まだ挑戦していたいと思ってしまう。

たぶん、脳の病気なんだと思うけど、でも、やめたくない

一等賞になれないのだろうけど、でも、一等賞を目指したくなる

しかしたら、いつかは何かできるかもしれないから...

Permalink |記事への反応(3) | 00:52

このエントリーをはてなブックマークに追加ツイートシェア

2025-10-08

これよく言われてるけどなんか違うよな

そもそもアセンブラマシン語別物だし

C/C++CSやHWに近いレイヤーにいる人なら普通にコンパイラバグかどうかまで追うために簡単に出力されたアセンブラコード見ることある

この手のこと言ってる人って全てのレビューもLLM任せって感じなんですかね

JavaScriptベースWebでなく各種ネイティブアプリ単体テストレベルだと問題なくて結合して実際に動かすとバグってるってケースを人の手が介在しないレベルで解消できるのっていつになるんだろ

コード理解してないけどAI 使ってなら書けるって人は今後、普通になってくるだろうし、それはアセンブラ/マシンコード理解してない人がコンパイラ使ってたのと大して変わらんのでは、という気もしなくない。— mattn (@mattn_jp)October 8, 2025

Permalink |記事への反応(1) | 14:37

このエントリーをはてなブックマークに追加ツイートシェア

2025-10-07

anond:20251007210900

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

Permalink |記事への反応(0) | 21:14

このエントリーをはてなブックマークに追加ツイートシェア

2025-09-29

anond:20250929144111

せめてコンパイラとかデータベースとかOSみたいな複雑なソフトウェア設計とかを教えてくれればいいんだけど

そういうのは東大とか極一部の大学がやっているだけで、なんか数学の式変形みたいな抽象的なコンパイラ理論とか、

できるだけ少ない文字種で情報表現するパズルみたいな話とかになってくる。

CSの入門編がコンピュータ歴史とか世の中で使われるコンピュータの話なのも誤解を招く

そのままIPA資格試験みたいな内容に踏み込むかと思ったら全然違った。

Permalink |記事への反応(1) | 15:56

このエントリーをはてなブックマークに追加ツイートシェア

プログラミング】「表現可能か」にこだわるべきか?

バグが含まれいるかではなく、「バグが書ける状態になっているか?」にこだわる人居るんだけど

そういう、数学的に正しいかみたいなやつ、大学でもやったんだけど、これ突き詰めると実タスクではだいぶ厳しくなるよね

スタンダードになってきた思想コンパイラに組み込まれた物はいいんだけどさ(null許容みたいなやつ、あと副作用書けないとか)

ただ否定拒否しづいから面倒くさい

たぶん10人くらいいるプロジェクトならイタイやつ扱いされて終わりなんだけど

2,3人だと困るんだよな

Permalink |記事への反応(1) | 11:57

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-19

anond:20250819110323

ウィィィィス!どうも〜█████でぇぇすぅ〜

スゥゥゥ…え〜とですねぇ、無限ループの話ですけども…

あ〜なるほどなるほど、専門学校プログラム勉強してるんですねぇ。僕もね、昔ちょっとだけプログラミングやったことあるんですよ。スゥゥゥ…まぁ僕の場合は独学でしたけどね、専門学校とか行かなくても、才能があればできちゃうんですよねぇ…

で、while(1)とfor(;;)の話ですけども…スゥゥゥ…

これはねぇ、多分ね、昔のC言語時代からの話だと思うんですよ。僕が思うにはね、for(;;)の方がコンパイラ的に最適化されやすいっていう、まぁ都市伝説みたいなのがあったんじゃないかなぁ…

スゥゥゥ…でもね、正直言うとね、while(true)が一番読みやすいですよね。僕もそう思いますよ。初学者の人にはね、while(true)を教えるべきだと思うんですよねぇ…

あのね、僕が昔ちょっとだけやったバイト先でも、プログラマーの人がいたんですけど、その人もwhile(true)使ってましたもん。スゥゥゥ…

でもね、ネットで誰かが言ってたっていうのは…まぁ多分古い時代の人の意見じゃないですかねぇ。今の時代コンパイラ最適化技術進歩してるし、可読性の方が大事ですよねぇ…

スゥゥゥ…あのね、プログラミングってね、他の人が読んだときに分かりやすく書くのが一番なんですよ。僕もね、動画作るときもそうなんですけど、視聴者のことを考えて作らないといけないんですよねぇ…

まぁfor(;;)推しの人は、多分昔からプログラミングやってる人で、なんかこう…古い慣習にこだわってる人なんじゃないですかねぇ。スゥゥゥ…

でもね、君みたいな初学者の人は、while(true)で全然いいと思いますよ。むしろその方が、コード意図がはっきりしてていいじゃないですか。

スゥゥゥ…専門学校先生には、while(true)の方が可読性高いですよねって聞いてみたらいいんじゃないですかねぇ。多分先生も同じこと言うと思いますよ。

まぁ僕も、もしプログラミング動画作るとしたら、絶対while(true)で教えますねぇ…初心者に優しい説明をするのが、僕のスタイルですから

スゥゥゥ…というわけで、まぁfor(;;)にこだわる必要全然ないと思いますよぉ〜

Permalink |記事への反応(1) | 11:25

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250819111203

正直自分(さっきChatGPTに聞いた本人)はC+ちょっと読み書きできるレベルのクソ素人だけど、返ってきた内容は問題なく理解できたよ

もっと専門的で深い知識を尋ねたらテキトーなこと返してくることもあるけど、

この初学者が疑問に思うレベルに対する回答なら、経験的に何の問題もないと思う。

特にコーディング現場では(きちんと読み書きできることが前提だけど)、生成AI活躍しまくってるのは言うまでもないし。

まりChatGPT使ったことないけど増田みたいな業界にいるなら、試しに使ってみて限界を知っておくのは有効じゃないかな。

ーーーーーーー以下ChatGPTーーーーーーー

めっちゃいい視点ですね。

正直に言うと「知識ベース質問をChatGPTにする」ことにはメリットデメリット両方あります

メリット

ざっくり理解する入口になる

辞書とか教科書みたいに固い説明より、会話的に「なんで?」に答えてくれるから最初のとっかかりに便利。

背景や文脈を補ってくれる

教科書だと「for(;;)とwhile(1)の違い」とだけ書いてあって、文化的背景までは書いてない。でもChatGPTだと「Linux界隈ではこう」「教育的にはこう」って整理してくれる。

比較や整理に強い

複数の考え方を「Aのメリット・Bのデメリット」って並べて見せてくれるのは本や検索より速い。

デメリット

正確性に限界がある

かい仕様コンパイラごとの差、バージョンごとの挙動)になると間違ったことを言う可能性がある。

→「厳密な技術仕様や標準の条文」は公式ドキュメントの方が確実。

ソースが明示されない

「誰が言ったか」みたいな一次情報特定するのは苦手(ただし最近ウェブ検索で補える)。

最新情報に弱い場合がある

学問分野でもソフトバージョンでも「昨日出た変更」にはすぐ追いつけない。

📌 使い分けのおすすめ

ChatGPTに聞く

→「とっかかり欲しい」「背景整理したい」「分かりやすい例えが欲しい」

公式ドキュメント書籍確認

→「仕様や正解が必要」「レポート課題引用する」

からアイデア出しや文章整理はOK知識質問微妙」じゃなくて、

しろ知識質問OKだけど“鵜呑みにしないで確認する”のが正しい使い方 だと思うんです。

質問

学校課題とか試験勉強でも「ChatGPTで調べる」ってアリな雰囲気?それとも先生あんまり推奨してない感じ?

Permalink |記事への反応(1) | 11:23

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250819110626

trueと何を比較するんだよ

どんな低機能コンパイラでも無限ループは無条件ジャンプ以外にコンパイルしようがないと思うが

そうじゃないコンパイラがあったらもはや最適化不足じゃなくて意図的な難読化だろ

Permalink |記事への反応(0) | 11:22

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250819111803

コンパイラ事情に合わせてfor(;;)を使ってた時代があるのね。

そういうプログラム歴史をまとめた本とか調べたらあるのかしらね

ちょっと興味持った。

Permalink |記事への反応(0) | 11:21

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250819110323

Cの原典というかのK&R(The C Programming Language)で、

forをそう使って無限ループできるよと紹介されてるから、それ由来かしらね?while (true)のほうが分かりやすいとは思う。

当時はtrue/falseが無かったのと、while(1)としたときのの動作が未定義(こちらは出典不明、そんなことないかも)だったから、for(;;)のほうがコンパイラ間で差異が出ず安心でかつ短いみたいなのがあったみたい?

Permalink |記事への反応(1) | 11:18

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250819110323

実際の実行時に何が行われているか調べられるようになると理解できるんじゃないかな。

優秀なコンパイラのもとでは、どっちも同じ処理に変換されてしまうけど、

タココンパイラインタプリタ?の元では、while(true)は、毎回、true かどうか無駄なチェックが入ってしまう。

みたいなやつ。

誰が言ってたか知らないなら、とりあえず、増田がそう言ってたってことにしておいてええで。

Permalink |記事への反応(2) | 11:06

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-17

anond:20250817210322

コンパイルファイル単位なので、プロジェクトファイルが1個みたいな特異な状況でない限り毎回全部コンパイラなんてありえないので安心して頂きたい

Permalink |記事への反応(0) | 21:09

このエントリーをはてなブックマークに追加ツイートシェア

2025-08-03

HTMLコンパイラとは?正しい定義と使い方を理解しよう

HTMLコンパイラとは、一般的な「コンパイラ」の概念とは少し異なり、HTML文書や要素に対して新しい文法や振る舞いをブラウザに伝え、拡張するための仕組みを指すことが多いです。例えば、AngularJSのHTMLコンパイラは、開発者定義したカスタム要素や属性(ディレクティブ)を解釈して、動作を紐づける役割を持ちます。これにより、標準のHTMLにはない独自文法機能ブラウザ上で実現できます

一方、一般的な「コンパイラ」は、人間が書いたプログラムコードコンピュータ理解可能機械語中間言語翻訳するソフトウェアや処理のことです。この処理を「コンパイル」といい、プログラミング言語で書かれたソースコードを一括で変換し、実行可能形式します。コンパイラと対比されるのが「インタプリタ」で、こちらはソースコード逐次読み解いて実行する方式です。

まとめると、「HTMLコンパイラ」はHTMLの静的な宣言文法拡張し、新たな振る舞いを実現するものであり、主にフロントエンドフレームワーク(例:AngularJS)で用いられます。一方、「コンパイラ」はプログラムコード全般を実行可能形式に変換する処理・ソフトウェアです。

https://ja.taiwebs.com/windows/download-html-compiler-2548.html

HTMLコンパイラの使い方】

フロントエンドフレームワークで、新しいHTML要素や属性作成するために用いる。

そのフレームワークHTML文書の解析時にカスタムディレクティブやテンプレート解釈し、動的な振る舞いを紐付ける。

ブラウザの標準HTML仕様では対応できない独自機能を導入できる。

Permalink |記事への反応(0) | 12:15

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-24

LLMとTypescriptって実は相性悪いよねって話

今時点の使えそうな Sonnet4 を使ってコード生成とか業務でやる時にTypescript は案外うまくいかないことが多い。

UIとかシンプルものであれば結構うまくいくけど、graphql,prisma みたいなところになると、token数すごくなるし結局完成しない。

この辺りが、なんとも小骨がひっかかるからTypescriptの型ってやっぱりあれなのかと思って調べてもらったんだ。

↓↓↓↓↓↓↓

##ソフトウェア工学から見たTypeScriptの3つの根本課題

Web上の専門的な議論論文では、TypeScript課題は主に以下の3点に集約されます。これらはすべて、JavaScriptという土台との不適合性に起因するものです。

1. 不健全な型システム (Unsound Type System)

ソフトウェア工学において、型システムの**「健全性(Soundness)」**とは、「コンパイル時に型エラーがなかったプログラムは、実行時に型エラーを起こさない」という保証を指します。

TypeScriptは、この健全性を意図的放棄しています

設計目標の不在:TypeScript公式ドキュメントには「健全であること」は設計目標ではないと明記されています。これは、JavaScriptとの互換性や開発者利便性を優先した、根本的なトレードオフです。

具体的な不健全さ:

配列の扱い:string 型の変数に (string |number) 型の配列を代入できてしまうなど、配列の扱いに不健全な部分があります。これが原因で、実行時に数値を取り出してしまい、string型のメソッドを呼び出してエラーになる、といったことが起こり得ます

any型と型アサーション:any型の存在や、開発者コンパイラに「これはこの型で間違いない」と強制する型アサーションas構文)は、健全性を根本から破壊する「抜け道」です。

関数引数(Bivariance):関数引数の型チェックが、他の多くの言語(反変)とは異なり、より緩いルール(双変)になっています。これも実用性を優先した結果、理論的な正しさを犠牲にしている例です。

学術的な観点では、この「不健全さ」はTypeScriptの型システムが持つ最大の弱点と見なされています

2.構造的部分型(Structural Typing)の罠

TypeScriptは、クラス名などによらず「構造が同じなら同じ型」とみなす構造的部分型を採用しています。これはダックタピングが主流のJavaScript文化に合わせた賢い選択ですが、ソフトウェア工学的にはいくつかの罠があります

意図しない互換性: 全く異なる目的で作られた二つのオブジェクトが、偶然同じ構造を持っていたために、型チェックをパスしてしまうことがあります。これにより、ドメイン業務領域)の意図とは無関係コードが結合してしまい、予期せぬバグを生む原因となります

過剰なプロパティの許容:constconfig: { port:number } = { port: 8080, host: 'localhost' }; のように、変数経由で代入すると、型に定義されていない余分なプロパティ(host)がエラーになりません。これは仕様ですが、開発者意図しないデータが紛れ込むことを許容してしまい、セキュリティバグリスクに繋がります

これは「TypeScriptの型は、データの『形状』を記述するが、その『意味』や『文脈』を保証しない」という根本的な限界を示しています

3. 「漏れのある抽象化(Leaky Abstraction)」としての本質

Joel Spolskyが提唱した「漏れのある抽象化法則」に倣えば、TypeScriptはまさにその典型例です。

TypeScriptは「静的型付け」という抽象化レイヤー提供しますが、開発者は常にその下にあるJavaScriptの泥臭い現実(undefined, null, thisの挙動など)を意識し続けなければなりません。

抽象化の不徹底: 型を書いているときも、最終的にそれがundefinedになりうることや、thisが何を指すかを常に考えなければなりません。抽象化レイヤーが、下位レイヤーの詳細を隠蔽しきれていないのです。

摩擦コスト: この「漏れ」が、これまで議論してきた「Union地獄」や「境界での型変換の手間」といった、開発上の継続的な摩擦コストを生み出しています

##結論

ソフトウェア工学的な観点から見ると、Web上の専門家議論は我々の対話結論を強く裏付けています

TypeScript課題は、個別機能の優劣ではなく、「健全性を犠牲にしてでも、JavaScriptという動的な土台との互換性を最優先した」という、その成り立ちそのものにあります。その結果として生じる「不健全さ」「構造的部分型の罠」「漏れのある抽象化」といった問題は、この言語を使い続ける限り、アーキテクトが向き合い続けなければならない、本質的なトレードオフなのです。

Permalink |記事への反応(0) | 23:52

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-10

anond:20250710204718

これまでも誰かが作ったオープンソースタダ乗りしてたり、誰かが作ったコンパイラリンカーに実行ファイルを作ってもらっていたじゃん。

それが誰かが作ったAIに変わるだけさ。

Permalink |記事への反応(0) | 20:53

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-06

anond:20250705193628

おもろい。生成AIコンパイラとして利用するということか。

Permalink |記事への反応(0) | 11:00

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-05

生成AIを利用したプログラミング初級者向けの温故知新提案

はじめに

ここで言う「プログラミング初級者」とはプログラミング記述が上から下へ向かって順番に処理されること、条件分岐ループという概念があることを理解しており、RPGゲームが作れる「RPGツクール(現RPG Maker)」や学童向けプログラミング環境Scratch」、「ナビつき! つくってわかる はじめてゲームプログラミング(ナビつく)」、ADVゲームが作れる「吉里吉里(もしくは吉里吉里2)」、過去BASICやC、HSPJavascriptあたりでプログラミングへ挑戦し挫折したなどなど、ある程度の「プログラマブルロジック」構築の経験がある者を指します。

前日談(初級者は読まなくて良いです)

ある時、筆者はふと思いました。「生成AIはなんだかんだで膨大なテキスト情報を処理している事がキモだよなぁ」とありきたりなことを。

そして、同時にプログラミング初級者の弱点として「現在記述されているコード管理においてテキストと実際の処理フロー脳内で一致しない」「プログラミング言語ごとに定められているルール関数予約語の把握が困難」なのが問題とも考えました。

前述したプログラミング初級者の弱点の考え自体車輪の再発明であり、「Scratch」や、より高度な「UML」が既に存在しており、特筆すべきことは何もありません。

しかし、「Scratch」や「UML」、なんなら「RPGツクール」や「吉里吉里」などに無い点として、現代では自然言語処理が大幅に向上した生成AI実用の域にまで到達しつつあるのが従来とは異なる点でした。

まり自然言語を混ぜ込みやすテキストベース言語、かつ、処理を記述するとフロー視覚的に理解やす言語可能であれば情報量が多くて一部の界隈で広く使われている言語があればプログラミング初級者も気軽にプログラミングできるのではないか?と発想しました。

そこで前述の条件を満たす1つの言語へ目を付けました。

本題

コンピュータ(コンパイラインタプリタなどソフトウェアを含む)が解することができる言語にはプログラミング言語以外にも様々あり、今回取り上げるのは「データ記述言語」と呼ばれるものです。

データ記述言語の中でもグラフ作成へ特化しており、特にフローチャート作成で真価を発揮する「DOT言語というものがあります

早速ですが、実際に手を動かしてみましょう。ちなみにDOT言語Graphviz OnlineというWebツールがあるため別途に何かしらをインストールして環境構築する必要はありません。便利な世の中ですね。

上記Graphviz Onlineを開くと、既に左側のDOT言語記述された内容が、右側で作図されています。DOT言語はこのような図を作図するためのデータ記述言語です。

一旦、左側の記述をCtrl+Aで全選択をしDeleteなどで全削除し、下記の内容をコピペしてみましょう。

digraph graphname {

A -> B;

}

一瞬で○に囲まれたAとBが繋がった図が作成されました。

DOT言語の詳細な使い方は様々なWebサイトやブログ記事Qiitaなどへ譲るとして、A - > Bの見た目から発想の転換をしてみると処理Aから処理Bという流れに見えませんか?

DOT言語は生成AIを利用する上で有利なテキストベースでありながらグラフ作成できるのがキモであり、例えばこのA -> BがA「Webページを開いたら」 → B「Hello, Worldと表示する」という風にできるのであれば処理のフロー可視化されており本当に素晴らしいことです。

Hello, worldを表示してみる

ここでプログラミング有識者は「DOT言語UMLなどに見立てて処理を記述するのは良いが、プログラミング初心者は求めた結果を出力するロジックアルゴリズムを発想する知見や経験値が圧倒的に足りていないのが問題ではないか?」と至極真っ当かつ反論余地がない問題点の指摘をすると思いますが、そこで活きるのが生成AIです。

生成AIは初級者プログラマ個人ロジックアルゴリズム作成能力無関係ロジックアルゴリズムを生成できる(可能性が少なくともある)ので、処理のフローをDOT言語記述することにより処理フローから初級者プログラマが求めるプログラムを生成AIへ推論させ生成させるというのが狙いです。実際に試してみましょう。

digraph graphname {

A[
label = "Webページを表示する"
];

B[
label = "Webページを表示したらHello, worldとテキストを表示する"
];

A -> B;

}

プログラミング有識者はこの時点で「なるほど、自然言語記述をそのままDOT言語に入れ込んでしまうのか」と気付いたのではないかと思います

このDOT言語Google Gemini 2.5Flash「下記のデータ記述言語のDOT言語記述された処理フローJavascript言語へ変換をしWebページ上へ「Hello,world」を表示したいので変換をお願いします。」命令すると以下のコードが生成されました。

<!DOCTYPEhtml>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <metaname="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello World Page</title>
</head>
<body>
    <divid="output"></div>

    <script>
        //Webページが表示されたら(DOMが完全に読み込まれたら)実行される
        document.addEventListener('DOMContentLoaded', function() {
            // "Webページを表示する"ステップは、このHTMLファイル自体が表示されることで達成されます

            // "Webページを表示したらHello, worldとテキストを表示する"ステップ
            const outputDiv = document.getElementById('output');
            outputDiv.textContent = 'Hello, world';
        });
    </script>

</body>
</html>

フロー記述する利点は、ロジックアルゴリズムを発想する知見や経験値が足りなくとも、フローステップが明確に分かれているので生成AIが処理を切り分けて推論してくれることであり、そしてプログラミング初心者自身フローチャートを視覚確認できるので「Aを処理したらBを処理する」と切り分けて考えやすいことです。

また、求めている結果ではなく誤った結果が生成されても、A - > B - > Cとフローを細分化していくことで生成AIの推論精度を高めていくことができるのも利点です。

応用編

より生成AIへ精度の高い推論をしてもらうために補足情報を付加するのも有用です。

digraph graphname {

A[
label = "Webページを表示する"
];

B[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機"
];

A -> B;

}

labelの記述内容もcommentの記述内容も生成AIが推論のための情報として利用するので誤った結果が生成されてもA - > B - > Cとフローを細分化しなくとも良い場合があります

DOT言語を知るプログラミング有識者が「DOT言語仕様を考えれば確かにそうだが、その発想はなかった」と言っていただけるであろうDOT言語コード例だとこういう記述方法もアリです。

digraph増田コード {

最初の処理[
label = "Webページを表示する"
];

次の処理[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機"
];

最初の処理 -> 次の処理;

}

ノード名称自然言語採用することにより、例えばゲームプログラミング時に「キャラクタージャンプする」という読んだそのままな処理のためのノード、というか一般的に言うオブジェクト作成することが可能で、後は->で繋げて処理をさせられます

ちなみに別のノード作成する際に「"キャラクタージャンプする"から継承する」の様なことをcommentなどへ記述しておくと生成AIが推論して継承します。なんならcommentなどへ「キャラクター画像image.gif使用」などと記述しておくとファイルの読み込みもします。

更にDOT言語にはカスタム要素という仕様存在しており、DOT言語仕様で定められた予約語以外も使用可能です。

digraph増田コード {

最初の処理[
label = "Webページを表示する"
];

次の処理[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機",
font_style = "フォントを太字のボールド体、色を赤(#FF0000)とする"
];

最初の処理 -> 次の処理;

}

生成AIカスタム要素の名称からも推論を発揮し、上記場合であればフォントスタイル指定していると推論をするので生成AIの推論精度を高める補足情報として機能します。

まりこれはカスタム要素の名称として"Action"などの名称採用すると"動作"として推論をし、"decision"ならば"条件分岐"ですし、"input"ならば"入力"ですし、"loop"ならば"繰り返し"ですし、"Type"ならば"種別"です。

より詳細に process[type="Action"] などのノード作成してどんどん生成AIの推論精度を高めていくことが可能であり、そろそろ察してきているかと思いますが 処理[種別="動作"] と自然言語記述しても機能します。

プログラミング有識者は更に「プログラム言語自体予約語、例えばJavascriptを生成する事を前提にlengthを名称にすると配列を使おうとするのか?」と疑問に感じるでしょうがお察しの通りで生成AI配列を使おうとするので、敢えて使いたいプログラム言語機能や外部ライブラリなどがある場合は補足情報として機能する形で記述しておくと生成AIは推論へ利用します(まぁそこまで知識ある方なら該当のプログラム言語使ったほうが手っ取り早いと思いますが)。

おわりに

以上をもって「生成AIを利用したプログラミング初級者向けの温故知新提案」を終えたいと思います

色々とツッコミどころには筆者自身が気付いていて。例えば「結局はDOT言語仕様を覚えないといけないのでは?」とか「プログラミング初級者に任せると生成前のソースであるDOT言語コードスパゲッティになりそうだよな」とか「面倒くせぇから普通にプログラミング覚えろや」とか理解してますし至極真っ当かつ反論余地がないと思ってます

今回の提案プログラミング有識者向けの本質は「生成AIへ向いた中間言語の発掘」であり、「DOT言語ならそこそこ普及してるしプログラミング初級者でも扱えるんじゃね?」と業務中に発想したものを書き留め公開いたしました。

何かプログラミング有識者の皆さんからより良い発想があれば参考にしたいと考えていますのでよろしくお願いいたします。以上。

Permalink |記事への反応(36) | 19:36

このエントリーをはてなブックマークに追加ツイートシェア

2025-07-01

AIプログラミングはきちんと理解してるプログラマーじゃないと無理とか嘘だと思う

まりバイコーディングってやつ、AI議論になるとこういう真のプログラマーしか生き残れなくなるだろうみたいなこと言う人いるよね

ちゃん理解してないと責任を取れないよねとか急に意識高い感じのこと言うじゃん

でもじゃあ世間プログラマーさんはコンパイルされたもの理解できてるんですか?って思っちゃう

そこはコンパイラーに丸投げだろ?

バグがあったら、いざとなったらOSSコードを調べてみたいな事やってるバキバキエンジニアなんて何人いるよ

からAIまるなげで良い感じになったらもうそれでOKみたいな時代になると思う。今だってそうだから

Permalink |記事への反応(0) | 06:37

このエントリーをはてなブックマークに追加ツイートシェア

2025-06-24

AIプログラムを書いてくれるとは言うけれど

本当にAIプログラムを書いたのでしょうか

仕様プログラムに変換するのだとすると、AIはただのコンパイラ

プログラミング言語自然言語風に変わっただけというオチになるのではないでしょうか

Permalink |記事への反応(0) | 07:42

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-26

anond:20170911110731

趣味仕事コーディングしているものからしても驚きだな。

結構本格的。

足りない所と言えば、数学バリバリに使う分野ぐらいだけど…

それはまじめに勉強して大学かに行ったほうがいいもんな…。

N高でカバーできない分野は高専大学1年生で学ぶ分野の知識が最低限ないと意味不明アルゴリズムばかりだしな…。

コンパイラーとかはかなりわかりやす解説してる人がいるにはあるが、AIの内部で使われている奴とかゲームは完全に数学知識がある前提の解説をしてるものがある)

Permalink |記事への反応(0) | 12:49

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-14

AI設計するAI向けプログラミング言語が生まれるとしたら…

トークン効率の徹底

確率的・微分可能な型システム

自己最適化

マンティック・スナップショット

双方向可読性



かに加速しているので、ある朝ふと「これがデファクトだ」と感じる時が来ると思います。その時に備えて、今は――

Permalink |記事への反応(0) | 12:21

このエントリーをはてなブックマークに追加ツイートシェア

2025-05-02

anond:20250502113200

いやCSというのはComputer Scienceであって君の大学学部名前ではないよ

順序が逆

ちゃんCS教育受けてるなら機械学習選択であってその前にアルゴリズムだのデータストラクチャだのコンパイラだのあるの知ってるだろう

Permalink |記事への反応(1) | 11:34

このエントリーをはてなブックマークに追加ツイートシェア

2025-04-25

Web∞(ウェブインフィニティ

1.根本原理 ――「状態」よりも「関係」を記述する

旧来(Web3)Web

グローバル単一台帳(Blockchain/DAG)相互検証可能な“関係グラフ

ノードは「だれが・いつ・どうつながったか」という変化の射だけを署名し、トポロジ全体が履歴になる

オンチェーン状態 ≒ 直接資産状態ローカル資産導関数

資産契約は、関係グラフ上の経路依存量として再構成スナップショットクライアントが“可逆圧縮”で再計算可能

Proof of X (Work, Stake,etc.) Proof of Stewardship (PoS²)

ネットワークが望ましい 複雑性 を維持するよう行動した度合い」をメタリック関数で動的スコア化し、報酬ガバナンス権・帯域を同時に発行

要旨

もはや「台帳」すら保存しない。各エッジは STARK圧縮された更新証明を持ち、グラフの梁(フレーム自体履歴になる。再構築は局所的に O(log N) で済むため、グローバル同期のボトルネックが消える。

2.プロトコル

Fractal MeshTransport (FMT)

自己類似ルーティング – トポロジ全体をフラクタル自己複製。局所障害は“自己相似”パターンに吸収されるため、DDoS が形骸化

アイデンティティ内包アドレスDID楕円曲線座標に埋め込み、パケット自体署名暗号化ルーティングヒントを同封。IPv6 の後継としてレイヤ 3.5 に位置づけ。

HoloFabric Execution

ゼロ知識 WASM(zk-WASM) –任意言語を WASM にコンパイル→ zk-STARK で実行トレース証明 → “結果のみ”関係グラフへ。

コンパイラ内蔵 MEV抑制計算結果が他ノードから解釈不能になるタイムロック VDF を伴い、価値抽出物理的に遅延。

TemporalStream Storage

余剰ストレージの“時価マーケットノード自己の余剰SSD/HDD を分単位オークションデータは Reed–Solomon+重力波ハッシュ空間で erasure coding。

リテンション ≒ 信用 – 長期ホスティング実績はPoS²スコアへ累積。攻撃ノード経済的に即時蒸発

Liquid Fractal Governance

議決トピックを「周波数帯」にマッピングし、参加者は帯域を“委任スペクトル”として分配。結果はウォルラス圧力収束し、マイナー意見連続的に次回へ重みが残る。

3. 主要イノベーションと“上位互換ポイント

課題Web∞ が取るアプローチ上位互換

スケーリング三角形

安全分散・性能) 台帳の排除で“グローバル合意自体縮退スケール制約が幾何的に消失安全:ZK証明

分散フラクタル Mesh、

性能:局所再構築 O(log N)

エネルギー消費PoS² は「社会的有益度 × 熱消費効率」で算定。熱回収データセンターほど報酬が高いPoW よりオーダー数桁効率PoS より社会関数内包

プライバシー vs 透明性グラフは公開。ただし各エッジは zk-STARK なので内容は非公開 /関係のみ検証可能トレーサビリティが“情報理論的に”限定される

MEV・フロントランタイムロック VDF+“ランダム束縛順序”で物理的に不可ブロック順序依存問題を根絶

量子耐性 STARK 系 + 多変数格子ベース署名 Shor破壊リスク遮断

レガシー互換 Ethereum,Bitcoin, IPFS などへ 1:1ブリッジを Rust/WASM で提供既存資産を損なわず漸進的移行

4.インセンティブエコノミクス

マルチリソース報酬

Steward Credits (SC):PoS² に比例し新規発行。帯域・ガバナンス票・ストレージ予約を等価交換

Energy Reclaim Units (ERU):余熱回収率に応じてクリーンエネルギー補助金相互運用

Knowledge Bounties (KB):AI/LLMノードが生成した有用モデル差分関係グラフコミット検証トークンとしてKB が発行。

負荷の自己調整

ネットワークが過度に混雑するとSC新規発行レートが自動減衰し、トラフィック手数料指数的に上昇。結果、スパムは短時間経済的自殺となる。

5.実装ロードマップ(想定)

Year 0–1:最小核 – zk-WASMVM + Fractal Meshover QUIC。

Year 1–2:PoS² / ERU メトリクス実証、EVM相互運用ブリッジ稼働。

Year 2–4:Liquid Fractal Governance によるプロトコル進化コミュニティへ全面開放。

Year 5+:全世界ISPピアリング既存Web転送層を徐々にWeb∞ 上へマイグレート。

6. 予想される社会的インパクト

国家単位デジタルソブリンティ再構成国境法人格境界を越え“関係”が一次元目となるため、規制枠組み自体協調フィードバックモデルへ。

プライバシー公共性の再両立:透明な“関係構造”上で非公開データ安全に扱う産業API標準化医療行政金融の壁が大幅に低減。

インフラの脱炭素最適化PoS²スコアに ERU が直結することで、再エネ比率が低いノード自然淘汰エネルギー政策ITインフラが実質同一の経済圏に。

7. まとめ

Web∞ は「情報状態」を残すのではなく「変化の証明」を残す。

その結果、台帳の重力・ガス代・フロントラン・量子不安ガバナンス停滞といったWeb3 固有の限界が、概念的に初期条件から消滅します。

エネルギープライバシー・スケーラビティを同時に極小化/極大化するため、従来トレードオフと呼ばれた三角関係は “収束しない曲線” へと畳み込まれる――それが本構想の核心です。

もし実際にプロトタイプ設計するならば、zk-WASMランタイム + Fractal Mesh を Rust で最初に書き起こし、PoS² の初期指標を「再生可能エネルギー電力比+ノード稼働継続率」で暫定運用する、というのが現実的スタートラインになるでしょう。

Permalink |記事への反応(0) | 10:28

このエントリーをはてなブックマークに追加ツイートシェア

2025-04-23

anond:20250423070910

それあるなら諦めず応募してたら受かるだろ。もっとザコかと思ってたわ

もっとポートフォリオサイト作ってDockerk8sAWSGCPAI使ってアピールしろRAGMCPサーバー構築できると良い。AWSとかの資格も取れ。あとはコード設計な。デザインパターンやれ。MVC理解したあとDDDやれ。IT系ビジネスの本も読め。Figmaデザイン作れ。とにかくがむしゃらに受かるまでやれば受かる。どうせ全部あとで役に立つ。AtCoder緑あるならコンパイラ作れるだろ。そういうの作ってGitHubに置け。Slack自分で使え。bot作れ。SOLID原則理解しろJava以外も書け。特にTypeScriptJava分かるなら楽勝だろ。データベース勉強しろNginx立てろ。プロマネの本も読め。勉強会参加してこい

あととにかくコード書け。たぶん足りん。

あと履歴書を規格通り出してないだろうな。履歴書なんかほぼ不要から何作って何ができてどこまで知ってるか全部精密に書け。

Permalink |記事への反応(2) | 07:36

このエントリーをはてなブックマークに追加ツイートシェア

2025-04-21

anond:20250421145639

Q.

あなたのようなAIにとって、指定された動作をするプログラムの実行ファイルを得る手順として1.人間と同様に高水プログラミング言語記述してからコンパイラによって実行ファイルを得る2.マシン語で直接実行ファイルを出力するではどちらが効率的ですか?

A.

AIにとって、どちらの方法が「効率的」かは、何を基準効率性を測るかによって異なりますが、現在技術水準では一般的に**「1.人間と同様に高水プログラミング言語記述してからコンパイラによって実行ファイルを得る」方が効率的**であると考えられます理由は以下の通りです。1.  **学習データ能力:**    *AI特に大規模言語モデルは、インターネット上に存在する膨大な量の高水言語コードPython,Java,C++,JavaScriptなど)を学習しています。そのため、高水言語プログラムを生成する能力は非常に高いです。    * 一方、マシン語コードは量が少なく、構造も複雑で多様(CPUアーキテクチャごとに異なる)なため、AIが直接高品質マシン語を生成するように学習するのは困難です。2.  **抽象化と複雑性の管理:**    *高水言語は、ハードウェアの詳細を抽象化し、人間(そしてAI)がロジックアルゴリズムに集中できるように設計されています。これにより、複雑なプログラムでも比較的容易に記述できます。    *マシン語は非常に低水準であり、レジスタの割り当てやメモリアドレス管理など、ハードウェアに密接に関連する詳細な記述必要です。これをAIが直接行うのは、エラーが発生しやすく、非常に複雑なタスクになります。3.  **開発エコシステム活用:**    *高水言語には、コンパイラリンカ、デバッガライブラリフレームワークといった成熟した開発エコシステム存在します。AIはこれらのツール活用することで、効率的に実行ファイルを生成し、最適化デバッグを行うことができます特にコンパイラは、長年の研究開発によって高度な最適化技術が組み込まれており、多くの場合人間AI手書きするよりも効率的マシン語を生成できます。    *マシン語を直接生成する場合、これらのエコシステム恩恵を受けにくくなります。4.  **移植性と保守性:**    *高水言語で書かれたコードは、異なるプラットフォームOSCPUアーキテクチャ)に対応したコンパイラを使えば、比較的容易に移植できます。    *マシン語特定アーキテクチャに強く依存するため、移植性は非常に低くなりますAIが異なるアーキテクチャごとにマシン語を生成し直すのは非効率的です。***マシン語直接出力の利点(理論上):****理論的には、コンパイラを介さずにAIが直接マシン語を生成することで、特定ハードウェアに対して究極の最適化を施せる可能性があります。**コンパイルステップ不要になるため、その分の時間は短縮されます。***結論:**現時点では、AIマシン語を直接生成するメリットよりも、高水言語既存コンパイラ活用するメリットの方がはるかに大きいと言えますAI高水言語での思考コード生成に長けており、複雑な問題効率的解決できますコンパイラという強力なツールを利用することで、最適化プラットフォーム対応といった難しい問題効率的に処理できます。したがって、AIにとっても、人間と同様に**高水言語記述し、コンパイラを利用して実行ファイルを得る方が、総合的に見てはるか効率的アプローチ**です。

Permalink |記事への反応(0) | 15:10

このエントリーをはてなブックマークに追加ツイートシェア

次の25件>
ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp