はてなキーワード: アセンブリ言語とは
A:はい、私はアセンブリ言語のコードを記述することができます。アセンブリ言語は、コンピュータのプロセッサが理解できる低水準の機械語命令に直接対応するプログラム言語であり、CPUの命令セットアーキテクチャに依存するため、異なるCPUアーキテクチャに対して異なるコードが必要です。
以下は、x86アーキテクチャ向けの単純なアセンブリ言語の例です。これは、メモリの特定の場所にある2つの数値を加算して、結果をレジスタに格納するプログラムです。
Copy code
section .data
num1 dd 10 ; Define num1 as a double word (32-bit integer) and set its initial value to 10
num2 dd 20 ; Define num2 as a double word and set its initial value to 20
section .text
global _start ; Declare the entry point for the program
_start:
mov eax, [num1] ; Move the value of num1 into the eax register
add eax, [num2] ; Add the value of num2 to the eax register
mov [result], eax ; Move the value in eax to the memory location "result"
section .data
result dd 0 ; Define result as a double word and set its initial value to 0
このプログラムは、num1の値をeaxレジスタに移動し、num2の値をeaxレジスタに加算し、最後にeaxレジスタの値をresultメモリアドレスに保存します。
ここ最近、ChatGPTのプロンプトをひたすら書きまくってるのだが分かってきたことがある
恐らく近い将来ChatGPTによって大半のプログラマーは職を失うことになるだろうし
残されたプログラマーもソースコードを書くのでは無くてプロンプトを書くことの方が増えるだろう
アセンブリ言語を書いてる人はほぼ死滅しているしCやC++ですら書いてる人は少ない
同様にプロンプトを書く人(プロンプター)が重宝されるようになるのだろう(もちろん例外的分野は存在する)
ただ、残念ながらプログラマーや非プログラマーがプロンプターになれるかというとそうではない
プロンプトを書く時に必要なのは、純粋にプログラマーが必要とされている能力の部分だからだ
その言語を知ってるだとかライブラリを知っているといった知識的な能力ではなくて
要件定義の能力や論理演算や集合論みたいな知識だったりオブジェクト指向や関数的な考え方だけが純粋に必要になる
例えば割とダメダメプログラマーは条件が100個あった時に普通にIF文を100個書く
こういうプログラマーはプロンプトを作ることができないし、仮に書いたとしてもまともに動かない
ちゃんとしたプログラマーは条件100個を整理してまず2つの場合に分けてそれぞれで3つに分け・・・みたいなことをする
場合によっては要件定義を鑑みて必要無い条件を削除する(もちろん確認の上で)
そういった整理整頓が出来る人じゃないとプロンプトを書くことは不可能なので
例えばPythonの書き方を知っているだけのプログラマーとかコピペで生きてきたプログラマーは死滅すると思う
彼らはプロンプトを書けないし、書くために学習しようとしてもベースとなっているものが無いのでそこから覚え直すしかない
なのでプログラマーの上位層はプロンプターとして生き残るが下位層は死滅するし、残念ながらプロンプター教室というのもちょっと想像が付かないしたぶん不可能だと思う
例えばJavaScriptでリストをコピーするとき
const newList = list.slice();
しかし、
「なんで const newList = listじゃダメなんですか?」
と聞かれると非常に困る。
例えばconst a = 123と入っているときに、bにコピーしたかったらconst b=aで良い。
プリミティブと配列の違いとして覚えてもらう、という方法もあるけれど
じゃぁ文字列はどうなんですか?となると非常に困る。
JavaScriptだけを教えるならそれでも問題ないかもしれないが、Pythonも一緒に教えるとかなるとカオスになる。
結局のところ、コンピュータの仕組みを理解してもらって、メモリのアドレスとかポインタを知ってもらい
それからプリミティブや配列の話をしないと根本的には説明できない。
単純なプログラミング教育ってこの辺が破綻してると思っているので、結局はPCの構造と機械語・アセンブリ言語・C言語と順番に教える必要があると思っている。
かなり興奮しているし酔っているので要領を得ないかも。
今日急にうちに派遣で来てるおっさんに飲みに誘われて、会社の近くの安い居酒屋につれていかれた。
なんで誘われたかというとこれもうまく言えないのだが、チームや全体での飲み会で近くにいることが多く、不幸なことに自分が少し聞き上手だからかもしれない。
とにかく席についてビールが来ないうちに、人をばかにしたような半笑いで話を切り出された。
おっさんが持っている10年も前にあったようなガラケーのメモ帳画面を見せられ、君になら理解できるだろうとかクィータとかいうサイトにはろくな人材がいないとかブツブツ言っていて、俺はメモの中身を読み進めているうちに顔が引きつっていくのがわかってなぜか記事自体よりもそのことで笑いが止まらなくなりそうなった。
しばらく自分はどうすればいいのか知らないふりをするべきか、なだめたほうがいいのかまじでわからなかったのだが、結局記事の本意を聞きたい好奇心には打ち勝てなかった。
ちなみに自分の仕事場ではWinXPが現役で動いている。派遣おっさんも含め会社がそういうカラーだと言えば伝わるだろうか。
自分は趣味でReact(ないしReactNative) とかで家計簿アプリを作っているし、Androidも(それこそJavaでだが)やっていてちょっと新しい技術は知っているというレベルである。
端的に言うと「必修」という意味で使ったらしい。ルー大柴かおまえは。いや意味が通ってないしルーに失礼か。
・JavaとJavascriptが同列になっている点について
どうやらプロトタイプベースのオブジェクト志向という意味をはきちがえている。
つまりJavascriptはオブジェクト指向言語のプロトタイプとして生まれた言語であり、完全オブジェクト指向言語(これも意味がわからなかった)のJavaとは切っても切り離せない関係であると思っているらしい。もう自分はここらへんから笑いが変な声で漏れる笑いを堪えられなくなっていて、喘息気味なんですとかアホな言い訳で必死にごまかそうとしていたんだけれど、この派遣のおっさんに対してそこまで気を使っている自分にも笑いが止まらなくなってまあなんというか、おもしろかった。
Rubyが(というかRORが?)動作が遅いという話をどこかで読んだか聞いたかしたらしく、そして動作が遅いかわりに処理がしっかりしている(現文ママ)という位置付けの言語だと思っているらしい。正確性が必要な処理はサブルーチンにしたRubyに投げるべきだとかなんとか。
パッセンジャーよりもエンジンクスにひもづけるべき(現文ママ)とか言っててもうビールがまずくて仕方ない。
・MSDN
自分はMSDNは学生時代にVisualC++とかで使ったことがあって、デスクトップアプリ用のライブラリだとずっと思ってたんだけど、違うんですかね。(無知)
MSDM(何度聞いてもエムにしか聞こえない)の逆アセンブリ言語がC++だとか、ここの話は輪をかけて本当に何言ってるのかわからなかった。
ねこのことを考えて耐えた。
・SQL
あんま深く考えてなかったらしい。言語と名前がついているから言語のくくりに入れた、くらいのスタンス。
ちなみになぜか、使ったこともないらしいSQLiteで配列型を使えないことは知っていた。
たぶん「ゲームを作りたい欲」からの行動でなく「知識欲」からの行動なのかな?
ゲームを作りたいならunityやUE4になると思うけど、知識欲の方が大きいのならば何学んでもいいと思いました。パソコンを根本的なところから学びたいならアセンブリ言語かC言語、バランス取りたいならpythonとか、業界標準を学びたいならjavaやc#なんでしょうか。まあ結局知識欲が満たされればいいだけなら、どれかに絞るのでなく、どれもちょびちょびやってけばいいと思いますが
unityやue4を使わないクソゲーなら「DXライブラリ」「cocos 2d」がよく挙がる気がしますね。そういうライブラリ使いたくないならprocessingとか
アセンブラ言語、という言い方があったとしても、アセンブラ言語のことを「アセンブラ」って呼ぶのは間違いで、アセンブラは言語ではないって訂正されるでしょ
コンパイラ言語/コンパイル言語って言い方は普通に通じるけど、言語のことをコンパイラって呼んだら怒られるのと同じでしょ
ただ一時期アセンブリ言語のことを「アセンブラ」って呼んでて、途中でおかしいって指摘が入って、「アセンブリ言語」に統一されたんじゃないの
アセンブリ言語はassembly languageの正しい、というかそのままの訳
昔assembly languageをアセンブラって呼んだ馬鹿がいて広まっちまって、その訂正が「アセンブラというのは~言語ではない」