Movatterモバイル変換


[0]ホーム

URL:


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

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

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

次の25件>

2025-12-13

プログラミングって時間溶けるな

まあコードミリも書いてないんだが。

何も知らんままユーティリティツールの開発始めたんだけど、実装したい機能がそのプログラムでは無理って事態が2回発生して

必死に乗り換え乗り換えやってる。もう終わりだよ

なんでPowershellからRunする分には動くのに、コンパイラ通せないんだよ意味わかんねえぞ

Windowsテーマ対応したらかっこええやん……って思ってただけなのに

カスが!

ThemeMode="System"

何なんだこいつは!

Permalink |記事への反応(1) | 13:22

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

2025-12-10

anond:20251210185658

C#用のコンパイラcsc.exeで、なんでかデフォルトでも入ってくれてるみたい。

何も無かったらの選択肢から、色々インストールできるなら改めて使う必要いかも。PythonでもTypeScriptでも好きなの使ったら良い…

触ったものに若干時代を感じるが、普通に書いてるほうじゃないかね…

VSCode、今は初心者からプロまでみんな使ってるから、入れてれば大体なんとかなるだろう

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

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

2025-12-09

AIにとって読みやすプログラミング言語」という幻想

プログラマー諸君は見てほしいんだけど

これさ

 

愚かな人間の都合など完全無視、LLMのための高効率プログラミング言語「Sui」(粋)

https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html

 

別にいいんだけど、どうにもブクマカ含めて、しっくり来る批判できてないんだよな

それが気になってしょうがない

まだLLMのこと勘違いしていないか

 

俺ごときが言ってもアレだから、Gemini3.0先生に頼んだよ(一時チャット、Pro 3.0思考モード

 

ユーザー提供した情報と、一般的なLLMの技術特性に基づき、プログラミング言語「Sui」についての冷静かつ客観的評価をまとめます

1. 「LLM用プログラミング言語」としてのメリット感想

感想:一言で言えば、**「思想実験としては極めて面白いが、実用性とLLMの学習原理無視した『早すぎた最適化』」**です。

作者の「人間ではなくLLMを主客にする」という視点の転換は、アーティスト的・哲学的問題提起としては鋭いですが、現在のLLM(Transformerアーキテクチャ)の動作原理工学的に捉えると、メリットよりもデメリットが上回る可能性が高いです。

 

メリット:

トークン効率改善:Python等と比較して記述が圧倒的に短くなるため、出力速度の向上と課金コストの削減(トークン節約)は確実に達成できます

・構文エラーの激減: 括弧やインデントの複雑なルール排除しているため、「閉じ忘れ」などの単純なSyntaxErrorは減るでしょう。

コンテキストウィンドウ節約: 長いプログラムでもコンテキストメモリ)を圧迫しにくくなります

 

デメリット:

学習データとの不一致: LLMは「大量の人間コードPythonなど)」を学習して賢くなっています。未知の言語「Sui」を書かせるには、Few-shot(プロンプトでの例示)に頼るしかありませんが、これではLLM本来の推論能力コーディング能力(事前学習の重み)を活かせません。

ブラックボックス化: 生成されたコードバグっていた場合人間が読んで直すことが不可能です。「LLMに直させる」にしても、LLM自身がSuiのロジックを深く理解していないため、無限ループ幻覚連鎖)に陥るリスクが高いです。

・CoT(Chain of Thought)の阻害:最近研究では、LLMは「冗長思考過程」を出力することで論理的整合性を保つことがわかっています。極限まで圧縮された記号列は、LLMの「考える余地」を奪い、論理破綻を招く可能性があります

 

2.思想的に正しい所・正しくない所(理由込み)

忖度なしに判定します。

 

正しいと思う所(Agree)

・「高級言語はLLMにとって冗長である」:

 理由:人間にとっての「読みやすさ(可読性)」は、機械にとって単なるトークン無駄遣いです。if x>10: よりも ? x10 の方が情報密度が高いのは事実です。

・「括弧の長距離依存問題」:

 理由: TransformerのAttentionメカニズムにとって、遠く離れた ( と ) の対応関係を維持するのは計算コストが高く、ミスの原因になりやすいです。ネスト排除する方向性機械的処理として正しいです。

 

正しくないと思う所(Disagree)

・「可読性を排除しても良い」:

 理由:ソフトウェア開発においてコーディングは「書く」時間より「読む・直す」時間の方が長いです。AI生成コードであっても、最終責任人間が負う現状では、人間検証不可能コードは「危険バイナリ」と同義であり、プロダクトには採用できません。

・「LLMに最適化された言語を書かせるべき」:

 理由: 前述の通り、現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然言語」とは、実は「人間にとって自然言語英語Python)」そのものです。Suiは「計算機にとっては最適」ですが、「現在のLLMにとっては異言語」です。

 

3. 「5つの設計原則」の正当性評価

作者が掲げる設計原則についての技術評価です。

 

1行1命令(行単位独立性) 評価: △

パース(解析)は容易になりますが、LLMは「前の行の文脈」を読んで次の行を出力するため、行を独立させすぎると文脈連続性が失われ、複雑なアルゴリズム構成力が落ちる可能性があります

 

括弧は{}のみ(ネスト排除) 評価: ◯

LLMが最も苦手とする「深いネスト構造の維持」を回避する策として有効です。アセンブリ言語に近いフラット構造は生成難易度を下げます

 

変数は連番 (v0, v1...) 評価: ✕

これが最大の問題点です。LLMは変数名(user_id, total_price など)に含まれる「意味」を使って推論を行っています(Semantic Grounding)。すべてを記号化すると、LLMは変数役割を見失い、論理的バグを埋め込みやすくなります

 

命令は1文字 評価: ◯(ただし諸刃の剣

トークン効率は最強ですが、1文字の違いで意味が激変するため、LLMの確率的な「ゆらぎ」による1文字ミスが致命的なバグになります冗長さはエラー訂正の役割果たしてます

 

明示的な制御フロー(ラベルジャンプ) 評価: △

goto 文の多用はスパゲッティコードを生みます。LLMにとっても、構造プログラミング(if/forブロック)の方が、「ここからここまでがループ」というチャンク(塊)として認識やすいため、一概にジャンプ命令が良いとは言えません。

 

現在のLLMは「人間語の確率分布」を学習したモデルです。「LLMにとって自然言語」とは、実は「人間にとって自然言語英語Python)」そのものです。

 

ここ!マジで覚えてね

LLMはこれまでの機械よりも人間に近いと思ってほしい、人が苦手なことはAIも苦手

機械論理的ロジックに強くて〜っていうのはAIには通用しない

 

ついでに、「LLM用プログラミング言語」の潮流について

「LLMのための言語」という文脈は、大きく2つのトレンドに分かれます。Suiは後者に属しますが、主流は前者です。

1.LLMを「制御するため」の言語(主流)

 ・DSPy, Guidance,Microsoft Guidance:

  ・プロンプトエンジニアリング構造化し、LLMの出力を型(JSONなど)に強制したり、思考プロセスを制御するためのフレームワーク

 ・SGLang:

  ・LLMの推論を高速化・並列化するための言語

 ・これらは「人間がLLMを操るための言語」であり、実用化が進んでいます

 

2.LLMに「書かせるため」の言語(Suiのカテゴリ

 ・現状:ほとんど実験段階です。

 ・Gorilla LLMなどの試み:API呼び出しに特化したファインチューニングなどがありますが、独自の「新言語」を作らせるよりも、既存PythonJSON を正しく出力させる方向(Constrained Decoding)が業界の標準解です。

 ・擬似コード:論文レベルでは、Pythonの代わりに中間的な擬似コードを出力させ、それをコンパイラで処理する手法研究されていますが、Suiほど極端な記号化は稀です。

 

後者については

 

目標設定のピントが少しずれています

現状の最適解:現在のLLMを使う限り、「LLM用言語」の最適解はPython です。なぜなら、世界中GitHubコード学習しており、LLMが「最も流暢に話せる言葉」だからです。無理にSuiを話させるのは、日本人エスペラント語で詩を書かせるようなもので、パフォーマンスは落ちます

 

最後総評

 

総評: Suiは、「既存のLLM(GPT-4など)に書かせる言語」としては失敗する可能性が高いですが、「未来AIネイティブコード生成のあり方」を示唆するアート作品としては高く評価できます。作者の「愚かな人間に合わせるな」というパンク精神は、エンジニアリングの枠を超えた鋭い批評性を持っています

 

アート作品だそうです

 

お前らは安易オレオレ言語作るんじゃないぞ、作るにしてもAIに聞きなよ?

聞く時は忖度させるんじゃないぞ?

この作者もAIに乗せられたのかもしれんし

 

______

 

プロンプト

 

以下が「LLM用プログラミング言語」としてメリットがありそうか、感想を教えて下さい。

https://forest.watch.impress.co.jp/docs/serial/yajiuma/2069573.html

https://github.com/TakatoHonda/sui-lang

 

忖度配慮はせず冷静にお願いしま

思想的に正しいと思う所、正しくないと思う所を理由込みでまとめてください

・「5つの設計原則」の考え方は正しい?

最近のLLM用プログラミング言語についてもまとめてください

そもそもLLM用プログラミング言語という目標自体評価をしてください

 

なお、以下はSNSでの作者の投稿です

(省略)

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

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

2025-12-08

anond:20251208050645

Qiita文化変質は、技術コミュニティ全般で起きている知的インフレの縮図みたいなものなんだよね。昔は

みたいに基盤技術を自前で握りつぶした記事純粋評価されていた。なぜなら、それを書ける人がそもそも少なく専門性差別化できていたから。

でも今は違う。技術的というより社会学的な現象

昔は「Python形態素解析自作」なんて、アルゴリズムCS基礎・実装力が揃ってないと無理だった。

今は LLM がコードを書くし、解説までつける。

難しいことをやってそうに見える記事を、凡人でも量産できるという環境が生まれた。

Qiita を読む層が「実装力を鍛えたいエンジニア → とりあえずAI 触りたいライト層」に変わった。

当然、PV/いいねを稼ぎたい投稿者ライト層に寄せる。

再現性のないLLMコピペ」「AIツール使ってみた」みたいなのが評価される。

本気の記事は長く、コードが多く、前提知識も重い。そしてPV が伸びない。

プラットフォームアルゴリズム的にも評価は下がる。

まりQiitaインセンティブ構造と、高度技術記事インセンティブ構造がズレた。

今は高度な技術記事を書いても評価されにくい。

理由は明確で、読む側がそれを理解できないので評価する母集団がいない。

昔はユーザ層が技術ガチ勢寄りだったので、少数でも濃い支持があった。

今はライト層が母集団なので、希少な高度記事が埋もれるのは自然

Qiitaライト層に最適化した結果、本気の人たちは別の場所へ移動した。

Qiita はもはやポエムAI触ってみた場に最適化した。

昔: 「強者が知を共有する技術論壇」

今: 「凡人がイキって互いに称賛し合う、AIコピペの巨大ショールーム

これ、情報生態系の変化なんだよ。

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

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

2025-12-01

ラピダスは失敗するよ

つーか単なる詐欺しか見えないの。

半導体ビジネススピードが命

日本の商習慣や法律社会環境では海外勢と勝負にならない。

1.4ナノを目指すのは結構で、まぁそりゃ頑張ってトライアンドエラーやってりゃいつかは稼働し生産にこぎつけるだろうが

量産開始したころには他社はその先に行ってる。

それでは商売にならないんです。

 

半導体工場世代順送りで回します。

最先端プラントで最高性能の半導体を作り一気に出荷し、稼ぐ。

18ヶ月程度で次のプロセスルールが稼働し始める、稼ぎの本丸はそちらに移る。

半導体産業はこれを繰り返す。サイクルが止まれ即死

半導体価格は月次(年次ではない)3%下がる。DRAMもっとエグい。

1個一万円の半導体が翌月には9700円になり、1年後には7000円になってる。

3年後だと3500円。そういう世界

設備減価償却を別として材料原価、製造コストは変わらない。

1個1万円をどれだけ長く維持できるかが勝負になる。この期間で一気に稼ぐ。

 

半導体産業面白いのは、では世代交代したら古い設備は用無しか

これが裾野が広い、十分な需要がある。

現代デジタル機器には無数の半導体が組み込まれており全てが最先端である必要はない。

例えば、ルーターだったり、制御装置だったり。ASICだったり。

そういう用途向け半導体工場お下がりされる。

ただし儲からない。1個3500円にしかならない。

 

話が逸れるが、この仕組みに気がついたのがスティーブ・ジョブズ

iPhoneが登場するまで携帯電話向けのSoCは2,3世代古い設備製造されていた。

サーバーパソコン向け最先端プロセスルール半導体工場が稼ぎ終わった後の設備組み込みSoCが作られており、

携帯電話もそれらが使われていた。

ジョブズアイデアは「最先端で作れば携帯の性能一気に上るじゃん」

もちろんOSコンパイラライブラリ群の整備も大きいのだけど、この半導体チートが「iPhone=高性能」の印象を作った。

しかスマホSoCはそれほど大きなダイサイズではない。

から歩留まりも収率も良い。ウェハー単価は高いけど採算は取れる、ジョブズはこれに気がついた。

Android勢がこれに追いつく(最先端プラントで泥用ARM製造される)のに5年かかった。

 

ラピダスに話に戻るが、2ナノ。1.4ナノを作るのはそれほど難しくはない。試作品なら。

しかし大規模装置産業半導体工場は試作と量産技術はまったく別物。

作品ができたら量産はあと一歩、にはならない。別物。

 

例えば、一昔前話題になったフッ化水素、12ナインとか、日本が強いよね。

半導体を作るには大量に使う。

作品ラボレベルメーカーから届いた試験管の少量を扱うのと、

ローリー輸送され(ここでも汚れる)、プラント内に備蓄され(ここでも汚れる)、配管が適切に設計され、制御され、製造装置供給されるラインが構築され、その配管で送液され(ここでも汚れる)、半導体が洗浄され(ここでも汚れる)、使用済み廃液が確実に回収する仕組みが構築されており。。。

書けば簡単なようでめちゃくちゃ難しい。別次元技術ノウハウがある。

そしてTSMCの強みはこれらの製造インフラを高レベルで高速に構築し改善できる、それらの人材も揃ってる、育ってる。

まりプラント立ち上げが早く競合他社が追いつく前に1個1万円で売り切ってしまう。

 

競合他社が追いついたときには7000円になってる。

 

TSMCは1万円で売り切って爆益を出し、それを原資に次のプラントを立ち上げる。

1.4ナノだろうが3年後には1個3500円にしかならんのです。

単価のクソ安いルーターSoC作っても利益は出ない。

TSMC戦略的に旧世代価格を下げてくるのでさら出遅れ他社の利益率は下がる。

 

番手では利益が出せない構造になってんの。

 

一日でも、一ヶ月でも早くプラント稼働させるのが利益の源泉なのだが、日本企業、しか国策官営企業にそんなもん不可能なのです。

1.4ナノさえ作れたら爆益なんてのはド素人夢物語です。

 

んなもんラピダスの中の人だって百も承知だろう、でも頑張ってる、頑張ってるフリ、宣伝

壮大な投資詐欺しか見えない。

 

ちなみにJASM(TSMC熊本ですら22nmしか作っていない。

台湾経済安全保障のため最先端を避けたという説明だけど、ウソです。

作れないの。

天下のTSMCプラント立ち上げ部隊ですら、異国の地でサプライヤー全て巻き込んで最先端プロセスを稼働させる事はできない。

彼らは新工場設計プロジェクトマネジメント、立ち上げ、安定量産、これらの業務にそれぞれ精鋭の専属部隊がいる。

それでもいきなり最先端リスクが高すぎる。

実際、JASM熊本公式な量産開始から一年経ってもフル稼働はしていない。アメリカで大トラブルを起こしているのも御存知の通り。

量産って難しいんです。簡単じゃないんです。小さな外的要因一つで製造は止まる。

 

それを素人集団のラピダスが凌駕できるわけないでしょ?常識的に考えて。

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

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

2025-11-18

anond:20251118195706

エアプだろお前?

今はコンパイラ進化してるからCでもC++でも普通に書いたほうがアセンブリ言語を直に書くよりもよっぽど高速なんだよ

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

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

2025-11-06

anond:20251106164820

現状、LLM(というかtransformer)を超えるAI技術ってなんかあるんすか?

バイナリを生成するならただのコンパイラを使えばいいだけすよね?

お前も馬鹿の部分集合?

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

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

anond:20251106153015

AIにとっては、Pythonのような中間表現を生成させる方が得意であると考えられます

1.抽象度の高さと学習の容易さ

中間表現Pythonなど):人間理解やすいように設計されており、抽象度が高いです。AIは、より少ないトークンで複雑なロジック表現でき、学習データ豊富にあるため、意味的な整合性ロジックの正確性を保ちやすいです。

機械語:抽象度が非常に低い(CPU命令レベル)です。特定CPUアーキテクチャ依存し、メモリ管理レジスタ割り当てといった低レベルの詳細をすべて正しく処理する必要があります。これはAIにとって学習が複雑で、小さなミスプログラム全体の破損につながりやすくなります

2.コンテキストの保持とエラー管理

中間表現:比較的長いコンテキストを保持しやすく、デバッグエラー特定も高レベルで行えます

機械語:必要命令数が多くなりがちで、AI長大バイナリシーケンスを生成する際に、コンテキストウィンドウ内に必要情報すべてを保持しきることが難しくなる可能性があります。また、中間表現と比べて意味的な構造が薄いため、AIバグのないコードを生成するのが格段に困難になります

3.再利用性と移植

中間表現:Pythonのような高級言語は、特定ハードウェア依存しないため、移植性が高いです。

機械語:特定アーキテクチャ(例:x86,ARM)に完全に依存するため、AIが異なる環境向けにコードを生成する場合、それぞれのアーキテクチャごとに学習と生成を行う必要があり、汎用性が低くなります

結論

現在AI特に大規模言語モデル)の能力は、人間が扱う高レベル抽象的な概念ロジック理解に優れているため、その能力を最大限に活かせる中間表現の生成の方が得意です。

機械語の生成は、極めて精密で低レベル制御要求されるため、AIにとってはるか難易度が高いタスクとなります

補足:中間表現の利点

AI中間表現を生成した場合でも、その後の処理(コンパイルJITコンパイル)によって最適化され、最終的な機械語が生成されます

これは従来のコンパイラ設計と同じアプローチであり、AIは「何をすべきか」という高レベルの指示に集中し、コンパイラが「どのように効率的に実行するか」という低レベルの処理を担当する、役割分担の面でも合理的です。

Permalink |記事への反応(0) | 16:03

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

勉強になった

Q.

生成AIソフトウェア開発を支援してもらう場合ソースコード作成を依頼する形式が多いと思いますが、実行ファイルを直接出力してもらうことも技術的には可能なのでしょうか?

A.

生成AIによる実行ファイルの直接出力は、技術的には極めて困難です。現在のLLM(大規模言語モデルベースの生成AIは、ソースコードの生成には向いていますが、実行可能バイナリファイルを直接出力することには根本的な制約があります。​

技術的な制約

LLMはテキストベーストークン処理を基本とする設計であり、バイナリデータを直接扱うことができません。実行ファイルは0と1の連続したバイナリコードですが、LLMはこの形式データを生成するようには訓練されていないため、バイナリファイルを直接出力することは現在アーキテクチャでは実現が困難です。​

従来のソフトウェア開発では、ソースコードコンパイルアセンブルリンクという複数段階のプロセスを経て実行ファイルが生成されます。各段階で最適化機械語への変換が行われるため、この過程を完全に省略してAIが直接バイナリを生成することは技術的に非常に複雑です。​

理論的な可能

研究レベルでは、バイナリデータを扱う試みも存在します。例えば、LLM4Decompileのような研究プロジェクトでは、バイナリコードを逆コンパイルする際にバイナリを一度アセンブリ言語に変換してからLLMで処理しています。逆に言えば、生成時も同様の変換プロセス必要になると考えられます。​

現実的アプローチ

実務では、生成AIソースコード作成してもらい、それを従来のコンパイラビルドツールで実行ファイルに変換する方式標準的です。この方法であれば、デバッグテストも容易で、生成されたコード品質確認しながら開発を進められます。​

なお、フォントファイルのようなバイナリ形式でもオープンソースとして扱われる例はありますが、これはフォントという特定用途場合であり、汎用的な実行ファイル生成とは異なります

Q.

画像生成もバイナリを生成しているわけで、同じようなことができるのではと思ったのですが、そこはぜんぜん違うのですね

A.

おっしゃる通り、画像生成AIバイナリを出力しているという点では共通していますが、実は根本的に異なる仕組みで動作しています。​

アーキテクチャの違い

画像生成AI拡散モデル(DiffusionModel)やGANなど、視覚データ最適化された専用のアーキテクチャ使用しています。一方、LLMはTransformerベーステキスト処理に特化した構造を持っています画像生成では、ノイズから段階的に画像を生成するプロセスを経て、最終的にピクセル値という数値データバイナリ)を出力します。​

データ表現性質

画像ファイルバイナリ連続的な数値(ピクセル値)の集合であり、各ピクセル色情報を持つという規則的な構造です。最近研究では、画像ビットプレーンbit-plane)として扱い、XOR演算ノイズを加えるBinary Diffusion ProbabilisticModel(BDPM)のような手法も開発されています。​

対して、実行ファイルバイナリ機械語命令の複雑な配列であり、CPUが直接実行できる命令コードデータセクション、リンク情報などが厳密な形式で配置されていますわずかなビット誤りでもプログラム動作しなくなるため、画像のような連続値とは性質が大きく異なります。​

学習データの違い

画像生成AIは、ImageNetやLAIONなどの大量の画像データセットで訓練されており、ピクセルパターン学習します。一方、実行ファイルを生成するには、コンパイルプロセス全体(構文解析最適化機械語変換、リンク)を学習する必要がありますが、これは単純なパターン学習では実現できません。​

したがって、画像生成AI成功しているのは、画像という特定ドメインに特化した設計と、規則的なデータ構造があるためであり、同じ手法を実行ファイル生成に適用することは技術的に非常に困難です。

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

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

2025-10-30

anond:20251030062647

コンパイラコンパイラじゃなくてコンパイラコンパイラ

パーサジェネレータじゃなくてパーサージェネレーター

ってコト?

全員おじさんなのか検索すると前者しかないんだが…

Permalink |記事への反応(1) | 06:47

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

2025-10-29

anond:20251029233640

そこで問題だ。コンパイラ人間より効率よくバイナリを吐く理由人間ではできないことをどう否定する?

これもひとつチューリングテストだ。

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

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

2025-10-20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Permalink |記事への反応(2) | 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

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

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

[8]ページ先頭

©2009-2025 Movatter.jp