Movatterモバイル変換


[0]ホーム

URL:


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

「バイナリコード」を含む日記RSS

はてなキーワード:バイナリコードとは

2025-11-06

anond:20251106164127

現在、LLM(大規模言語モデル)によるバイナリコードの直接的な生成は、ソースコード生成と比較して、一般的に非効率とされる分野です。

📜ソースコード生成の優位性

LLMは、大量のソースコードデータで事前学習されているため、特定要件に基づいたソースコードの生成において顕著な能力を発揮しています

GitHub Copilotなどのツールは、開発者コーディング作業効率化しており、その有効性は広く認識されています

🤖バイナリコード生成・理解の挑戦

バイナリコードは、ソースコード比較してセマンティック情報意味的な情報)が失われているため、LLMにとって直接的な生成や理解は困難なタスクと見なされています

現在研究の焦点は、生成よりもむしろ既存バイナリコード理解分析(例えば、関数名の回復バイナリコードの要約、脆弱性分析など)の分野に置かれています

📌効果定義評価の難しさ

現在開発プロセスを考えると、多くの専門家は、人間理解修正デバッグやすソースコード生成に当面はより大きな実用的な価値があると見ている可能性が高いです。

一方で、バイナリコード理解分析におけるLLMの潜在能力は、リバースエンジニアリングセキュリティ分析の分野の専門家からは関心を集めています

 

したがって、現在技術的な難易度研究の進捗状況から、「コード生成の方が現時点では実用的で効果が高い」と考える専門家が多いと推測されます

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

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

勉強になった

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

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

2016-09-03

情報系の学科に通っています」の人へ

私は某大学情報科所属しています

情報科増田さんが何かと話題になっていますが、専門を同じとする学徒のひとりとして、僭越ながら2冊ほど本を紹介したいと思います

本で勉強をするのが辛いという方に本を紹介するのも変な話でありますしかしながら、いずれの本も手を動かしながら学ぶというスタイルをとっており、情報科増田さんにとって有益なのではないだろうかと思います

つまるところ、読んでわからないなら創ってみればいいじゃないという提案をしたいと思います。もちろん全く読まずにいると手を動かしようもないのですが、ある程度読んでわからなくなったら取り敢えず創ってみるという選択肢があると勉強捗るのではないでしょうか。

とにかく何か創れというのも抽象的でありますから、そんな精神を全面に出している本をご紹介させて頂くことにしました。

どちらの本もOSより下の階層の内容に関することが含まれていますある意味定番な本でありますから既にご存知かもしれません。


CPUの創り方

https://www.amazon.co.jp/CPU%E3%81%AE%E5%89%B5%E3%82%8A%E3%81%8B%E3%81%9F-%E6%B8%A1%E6%B3%A2-%E9%83%81/dp/4839909865

黒いゲジゲジさんや抵抗、コンデンサーなどを使って、CPU作成します。本書ではハンダ付けで組み立ていますが、ブレットボードでもCPUを組み立てることができます

CPUを創る」こんなパワーワードが他にあるでしょうか。合コンで「おれはCPUを創ったんだぜ」なんて言えば、伝説になれるかもしれません。私は常日頃からこのパワーワードを発射する機会を探っているのですが、未だそのような機会に恵まれておりませんし、これからもあるとも思えません。情報科増田さんに限らずはてなーの皆様に於かれましては合コンにおける効果の是非を試していただきたく存じます

CPUコンピュータの中核を担う大切な要素であり、その役割は与えられたプログラムを実行するというものです。プログラムだかなんだか難しそうですが、この本におけるプログラムはそんなに大層なものではありません。単なるスイッチの組み合わせです。

要するにこの本ではたくさんのスイッチの切り替えにより、色々な挙動を示す何かを作ります

そんな機械のどこがCPUなのだと思うかもしれません。しかし、そのスイッチパターンこそ当に我々がプログラムと読んでいるものであり、そのスイッチに従って所定の動作をするというのはCPU役割のものなのです。

ディップスイッチ表現した0と1のプログラム特定意味を持ち、それにより特定動作が実際に実行されるというのを見ると心を大きく揺さぶられるはずです。

たぶん…。


ただ、忘れていけないのがお金の話。

私はブレットボードやその配線キッドといった商品も合わせて購入したので、本の内容を試すためには2万円ほどのお金を費やしました。(ちなみに部品リストは本書に書かれていません。しかし、Googleで本のタイトルや「TD4」などの言葉検索すると沢山の情報が出てきます。)

テスターも良いのを揃えたいなんて欲望を持つと合計で数万ほど飛びます

もし部品を揃えようと思ったならば、ネットを使って集めるというのが確実な方法です。ですが、秋葉原まで出向いて揃えるのもいいかもしれません。秋葉原を歩きまわり9種類のゲジゲジや各種部品を集めていると、玄人っぽい雰囲気を醸しだすことが出来るので個人的にはオススメです。

この本において作成するCPUは、知らない人からみるとなんかLEDがピカピカ光っている機械しかありません。電卓のように大層な機能があるわけでもなく、せいぜいがラーメンタイマーであります。正直なところ、数万円かけて電卓にも負けるようなCPUを創ってどうするのかと言われると返答に窮します。ですが、知識を得るための勉強代と思うと安いのではないかなと思います



コンピュータシステム理論実装

https://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E2%80%95%E3%83%A2%E3%83%80%E3%83%B3%E3%81%AA%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9-Noam-Nisan/dp/4873117127/ref=sr_1_1?s=books&ie=UTF8&qid=1472831764&sr=1-1&keywords=%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0

この本では文字で書かれたプログラムが、現実世界に影響をおよぼすという一連の流れを手を動かしながら学ぶことが出来ます。前の本と異なり、ソフトウェア(*1)上でコンピューターを作るという形になります制作場所が画面の外側ではなく内側であるという違いこそありますが、基本素子からコンピュータを組み立てていくことには変わりないので参考になるかと思います

本書は大きく2部に別れています。1部目でバイナリコード(0と1のプログラム)を実行できるコンピューターを作ります。2部目で本書で提供されるJack言語(いわゆる我々の考えるプログラム言語)をバイナリコードに変換するためのコンパイラを作り、さらにJack言語OSを作ります

最後に、OSコンパイラに通してコンピューターに読み込ませて簡単ゲームを動かしてみようというものです。

この壮大な内容が1冊の本にまとまっていますシンプルにまとまっている反面、ややもすると説明不足だと思うかもしれません。

そんなときオンライン上でビデオ講義を無料にて受講することができます。(ただし、現時点で公開されているのは1部目の内容だけです。)

https://www.coursera.org/learn/build-a-computer/

ただ、注意点があるとすれば言語英語しかないということです。私は英語苦手マンなのでスライドの図に全神経を集中させています。それだけでも、意外なほど言っている内容を推測することが出来ます

さらにこのビデオ講座を図書館で受講することで、周囲に威圧感を与えることができます



この2冊の本はどちらも10年以上前に書かれた本です。古臭いとか思うかもしれません。けれども、書かれているコンピューター基本的な考えや構成は今もなお現役です。言い換えると、その長い時を超えても不変である根本知識が記されています

それでは、情報科増田さんにとって今後の方針の参考になれば幸いです。


ここまでダラダラと書いて今更なのですが、はてなという戦場においてこのような上から目線アドバイスを書くことに、若干の恐怖を抱いております情報科増田さん、CPU警察さんおよび、コンピューター警察さんの皆様に於かれましては、何か誤った記述などがございましたら火炎放射器を持ち出す前に、ご指摘をくださるようにお願いたします。


(*1):http://www.nand2tetris.org/software.phpから無料インストールできます

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

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

2012-05-31

地方エンジニアなんて使い捨てだよ

http://d.hatena.ne.jp/iad_otomamay/20120529/1338304867

を読んで。

驚いている人がいるみたいなので、増田ちょっと書いておく。

こんなの20年前からある話なので私は驚かないし、そういう一派でもあった。地方都市SIerとか名乗っているIT企業はかなりの確率でこの商法で儲けているはずだ。事務所が小さいのに従業員数が異常に多い会社は、つまり外に出ているということだし、「大手の○○と共同プロジェクト」などの売り文句が見えたら、それたぶんひ孫受けかそれ以下。

単価の話をすると、さすがに新人でも0円というのは発注側もまずいので、抱き合わせ商法で内部的に大特価という方法を使う。たとえば業界5年目が時給1,000円×160H=160,000円で、新人時給800円×160H=128,000円などの組み合わせだ。もちろんこの場合も、ふたりが同じプロジェクトで働くわけではなく、5年目はそれなりにちゃんとした仕事が与えられ、新人は納品用の資料のページ数を数えるとか、FDをひたすらコピーするとか、5分おきにエンタキーを押す人間cronとか、印刷されたバイナリコード目視比較する人間コンペアとか、ダンボール箱に詰められた書類を夜行バスで運ぶだけのメール便まがいの仕事とか、そういう肉体労働をさせられる。

プロジェクトが終われば表面上は職歴が付くが、実態としては未経験のままだ。プログラムを1行も書くことなく、仕様書をチラ見することもないし見せてもらえない。普通会社でこういう下働き仕事をしていれば、そのうちマシな仕事が回ってくるのだが、社外に派遣されている期限がきたらさよならする使い捨ての人なのでずっと待遇は変わらず。職務経歴書だけは凄いのに全然仕事できない自称エンジニアが量産されていき、行き場を失って転職する人が後を絶たない。勉強しようと思って自宅でプログラムを組んでも、それはアマチュアの域を出ない。ある意味プログラマ35歳定年説に繋がっている。

ひ孫受けなのに大手と対等みたいな話と同じようなものに、社員スキルの偽装がある。「今回のミッションの君の設定はこれだ」と嘘の年齢・学歴・職務経歴を渡されてその通りに演じきることが求められる。やったことない仕事を「いやぁあれは大変でしたよ!」と実感を込めて言えるようになれば一人前だ。特に上に書いたような単純作業に学歴や職歴は必要ないのだが、それでは大手のプライドが許さない。だから条件を満たすように偽装してプロジェクトに潜り込ませる。

そして稀にマシな仕事がまわってきても期待ハズレで、リアルに「○ねばいいのに」とか言われる。

これが地方都市エンジニアのあり方だよ。

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

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

2009-06-16

http://anond.hatelabo.jp/20090616163600

ASCIIコードUTF-8もこの世の中の文字コードは、全部バイナリコードだよね。

バイナリじゃないテキストベースってなに?

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

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

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

[8]ページ先頭

©2009-2025 Movatter.jp