初心者のためのプログ ..
930:908
08/05/15 17:48:16
多くの回答をいただいたのに返信がおくれてしまいました、ありがとうございます
0と1でのファイルを見たことがないというのは、眼に見える形で0と1で書かれているものを見たことがないという意味です
つまり、そのファイルをクリック、もしくはtxtに直してからみたときには、アセンブリ言語、C言語など、比較的わかりやすい言語で書かれているので
ファイルというのはすべて、実行プログラムを通して起動(?)する瞬間までは、コンパイルされていない人間語(プログラム言語?)の状態にあるのではと思い質問させてもらいました
最終的にコンピューターでの操作は機械語でなされていて、例えば今自分が書き込んでいるこの文字も
これが掲示板に反映される段階や、入力の段階では日本語ですが、実際は機械語(0、1)で書かれているというのも一応理解しているつもりです。
>>910
人間語=日本語や英語
機械語=0と1、C言語やアセンブリ言語ということでしょうか?
今回>>908では、
機械語=0,1(コンピューターが理解できる言語)
人間語=人がプログラムを作る段階でもちいる言語(アセンブリ、C)
とさせていただきました。
人間語という表現が、会話に使う言語と捉えられてしまい、御幣だったようです。
931:デフォルトの名無しさん
08/05/15 18:05:17
>>930
×御幣だった
○語弊を招いた
一般的に、実行モジュールは(所謂)機械語で書かれている。
それは、*.exeも*.dllも同じ。
コンピュータが扱うデータは全て、0と1で表されると言うのは正しい。
その点では、文字も全て0と1で表し得る。
しかし、それは単に「全ての数は2進数で表現できる」のと同じ程度のこと。
音声や画像の場合も同じように0と1で表現できるが、こちらは文字と違い単純には視覚化できない。
文字の場合は、比較的簡単に視覚化できると言うことが違うだけと言ってもいい。
さて、プログラミング言語の場合はどうか。
これらは単純に人間が読み書きしやすい形で「プログラム」を表現するためにある。
しかし、CPUがそれを実行時に一々解釈していたのでは埒が明かないので、コンパイルするわけだ。
コンパイルされて出来上がったもの、すなわち実行モジュールと言うこと。
アセンブリ言語の場合も、コンパイラの代わりにアセンブラを使うと言うこと以外たいした違いはない。
932:デフォルトの名無しさん
08/05/15 18:22:51
>>930
>ファイルというのはすべて、実行プログラムを通して起動(?)する瞬間までは、
>コンパイルされていない人間語(プログラム言語?)の状態にあるのではと思い質問させてもらいました
それじゃあインタプリタだ。
拡張子が「c」で中身がC言語のファイルを、拡張子「exe」に変えても実行も起動もできない、実行時に自動的にコンパイルとかもない。
>機械語=0,1(コンピューターが理解できる言語)
>人間語=人がプログラムを作る段階でもちいる言語(アセンブリ、C)
>とさせていただきました。
じゃなくてそれでいい。
933:908
08/05/15 18:25:21
>>931
回答ありがとうございます
どうやら、自分は実行プログラムとそうでないものそれぞれの定義があいまいだったようです
そこは一先ず置いといて、
>文字も全て0と1で表し得る
ということは、0と1ではないとコノピューターが理解できない、つまり、機械語=0,1というわけではなく
0,1の二進数というのはあくまで機械語の一種でしかないということでしょうか?
今まで、最終的にコンピューターが理解する言語は、何のプログラム言語が元であろうと0,1だと思っていたのですが
また、最後の5行については
「実行プログラムを通して解釈する、(つまり実行プログラムを起動した際にコンパイルする)のではなく
予めコンパイルをすませているファイルを実行プログラムが読み取る」
ととってもよろしいでしょうか
ちなみに用語はwikiで調べています
Wikipedia項目リンク
こちらが機械語についての項目なのですが、こちらを見て
機械語は2値(=0,1)のことであると解釈していました
あとでもう一度読み直してみます。
934:908
08/05/15 18:29:26
>>932
ありがとうございます
つまり、簡単にいうとC言語やアセンブリ言語をどれだけ見事に構成しファイルを作り上げても
コンパイルし機械語になおさなければ、ただの文字の羅列、意味のないものということでしょうか
935:デフォルトの名無しさん
08/05/15 18:40:14
>>934
うん
936:デフォルトの名無しさん
08/05/15 18:41:40
>0,1の二進数というのはあくまで機械語の一種でしかないということでしょうか?
全然違う。これは、データをどう表現するかということだけ。
つまり、あんたと私が0と1だけで会話を成立させることもできる。
# 恐ろしく不便ではあるが。
先ずは、2進数と言う表現に固執した考えを捨てろ。
>「実行プログラムを通して解釈する、(つまり実行プログラムを起動した際にコンパイルする)のではなく
>予めコンパイルをすませているファイルを実行プログラムが読み取る」
これもおかしい。
実行プログラムは、機械語が書き込まれているファイルのこと。
それをどう実行するかは基本ソフトウェアであるOS次第。
プログラムには概ね入力と出力があるわけだが、その辺りも理解できていないように感じるので例を挙げておく。
プログラムの種類 入力 出力
コンパイラ プログラム言語の書かれたファイル 実行ファイル
画像表示ツール 画像の書かれたファイル 画面表示
テキストエディタ 既存ファイルと文字入力 テキストファイル
OS キーボード、マウス、ディスクなど諸々 画面、ディスクなど諸々
937:デフォルトの名無しさん
08/05/15 18:46:07
適当なデータファイルがあったとして、そいつのデータをCPUに順に食わせてやったときに
何か意味のある結果が得られればそいつは実行ファイルだろw
つーか、お前らスレ違いだ。
938:デフォルトの名無しさん
08/05/15 18:46:11
長文を書き込む前にリロードしたい。
939:デフォルトの名無しさん
08/05/15 19:34:34
次スレのテンプレに入れといて
URLリンク(vipprog.net)
940:908
08/05/15 20:04:26
ありがとうございます
一つ目についてですが
ーーーーーーー
wikipedia-機械語
実用化され、普及しているコンピュータのほとんどは、機械語及びファイルを2進数データの組合せで論理的意味を持ち、
機械語でかかれたプログラムファイルを2進数を4bitずつ16進数に変換して表示すると、かろうじて認識が出来る状態になる場合が多い。
ーーーーーーー
とあるのですが、やはりこれを見ると、コンピューターの実行ファイルは2進数によって構成されていて、
16進数に変換する=機械が読み取れる言語ではなくなるが、人にはある程度理解しやすくなる
と取れると思うのですが、どうなのでしょうか、つまり「二進数は機械語」「16進数もC言語も人間語」ということを言っているように思えてしまいます
よろしければ、具体的な機械語を簡単でもよいので書いてもらえれば、わかるかもしれません
941:デフォルトの名無しさん
08/05/15 20:26:27
配信打開おめー
ぽこおつ
942:デフォルトの名無しさん
08/05/15 20:26:49
誤爆スマソ
943:デフォルトの名無しさん
08/05/15 20:27:17
ググって適当に見つけてきたぞ。
URLリンク(ant0x.udap.jp)
2進数ではかかれてないけど16進数でもいいだろ?
944:デフォルトの名無しさん
08/05/15 20:32:40
>>940
結構勘違いしている人が多いんだけど、そもそも「進数」っていうのは、
ある値を「どう表記するか」の違いでしかないんだよ。
たとえば、1ダースのリンゴがテーブルの上にポンポンポンと置かれているのを思い浮かべてくれ。
そのリンゴは2進数? 10進数? 16進数? もちろん答は「リンゴの数に進数なんか無い」。
そのリンゴ達は、2進数なら1100個、10進数なら12個、16進数(を0-9A-Fで表記した場合)ならC個に
なるというだけの話だ。
だから「16進数に変換する」というのは、0と1(あるいは無と有でも何でもいいけど)を4つずつまとめて
1つの数値として表記していく、ということであって、値のほうをどうにかすることではないんだよ。
「12個のリンゴを16進数に変換する」ところを想像してくれ。それは、リンゴをどうにかする行為か?
945:デフォルトの名無しさん
08/05/15 20:51:59
>>940
掲示板で聞くだけじゃなくて実際にやらなきゃ理解できないですよ。
機械語といっても機械が言葉を理解するわけないんだけど..わかってますか?
とりあえず『CODE コードから見たコンピュータのからくり』を読んでから
『独習アセンブラ』読んで勉強しゃさい。
946:908
08/05/15 20:59:02
回答ありがとうございます
>>944
2進数を10進数、10進数を16進数で、更に言うと、2進数をC言語などで表すこともできる
C言語で表記したとしても、同じ意味を持たせることができる、というのはわかるのですが
機械が理解できるのは、やはり「二進数」に限られるのでは?
例えば、C言語と2進数が同じ内容を表すことができるといっても、
C言語や16進数で書いたファイルをexeなどの実行プログラムとすることはできないのではないか、という質問をさせていただいています
947:デフォルトの名無しさん
08/05/15 20:59:16
もしかして、2進数、16進数の意味もわかってないんじゃないかと・・・
948:デフォルトの名無しさん
08/05/15 21:06:35
>>946
> 機械が理解できるのは、やはり「二進数」に限られるのでは?
>>925と同じことを言うようだけど、機械が理解できるのは「低い電圧」と「高い電圧」だけ。
> C言語や16進数で書いたファイルをexeなどの実行プログラムとすることはできないのではないか、という質問をさせていただいています
「16進数で書いたファイル」というこの表現は、進数がわかっていない人間しか書かないんだよ。
949:908
08/05/15 21:09:25
機械が理解
というのは確かに少しおかしいかもしれません
んー・・・機械が二進数でこのような組み合わせがきたらこう実行すると定義付けているといった感じでしょうか
例え二進数を様々な言語で表すことができ、それぞれ法則ができあがっていたとしても(2:1011⇒16:Bのように)、それを理解しているのは人間だけ
あくまで機械の中で定義付けられているのは、0と1についてのみ
というのが自分が調べて得た考えなのですが
950:デフォルトの名無しさん
08/05/15 21:11:50
>>949
> 例え二進数を様々な言語で表すことができ、
「○進数を×で表す」という考え方がおかしいの。
「○を×進数で表す」というのが、進数というものの存在意義であり、使い方。
951:デフォルトの名無しさん
08/05/15 21:17:56
>>950
しかしある言語を二進数で表すことができるということは
逆に二進数をある言語に表す、というか直すということもできるということですよね
表現はおかしいかもしれませんが、結局949でいいたいことは、
二進数と他の言語がそれぞれ同じ意味を持つことはできるが、しかし
機械の中では、二進数で書かれたものしか読み取れないのでは
ということです、
952:デフォルトの名無しさん
08/05/15 21:18:47
>>950
コンピュータの仕組み
URLリンク(itpro.nikkeibp.co.jp)
とりあえずここら辺読んどけ
953:デフォルトの名無しさん
08/05/15 21:22:22
・10110000 01100001(2進法表示)
・B0 61(16進法表示)
・MOV AL, 61(アセンブリ言語)
上二つは表示方法による違いでしかないんだってば、バイナリレベルで見たら一緒。
バイナリエディタってのを探してダウンロードしてきて、適当なプログラムを読み込んで表示させると理解が早いかも。
リアルタイムで逆アセンブルして表示するプログラムってのは無いと思う。
それとメモ帳開いて「0」と「1」という数字を用いて、「0」と「1」という数値のつもりで機械語プログラムを書いても実行することはできないよ。
数値と数字の違いを知るといいかも。
メモ帳で2進法に使われる「0」と「1」をいっぱい書いたファイル作って、バイナリエディタで読み込んで見てみそ、
あと同じ様にメモ帳で16進法に使われる「0〜F」をいっぱい書いたファイル作って、やっぱりバイナリエディタで読み込んで見る。
954:デフォルトの名無しさん
08/05/15 21:22:32
非常に簡単でいい加減な具体例を書いておこうか。雰囲気だけでも
二つの値を足して、その結果を返すCの関数
int add(int a, int b) { return(a+b); }
これは、コンパイラでアセンブリ言語に変換するとこうなる
(Borland C++ Compiler 5.5の場合)
push ebp
mov ebp,esp
mov eax,dword ptr [ebp+8]
add eax,dword ptr [ebp+12]
pop ebp
ret
さらにこれを機械語に変換したものを16進数表記すると
55
8b ec
8b 45 08
03 45 0c
5d
c3
955:デフォルトの名無しさん
08/05/15 21:23:51
>>951
「○進数で書かれた〜」という考え方がそもそもおかしいって言ってるのに、
なんでそこで粘るんだよw
956:デフォルトの名無しさん
08/05/15 21:26:06
>>954
ついでにソースコードも16進表記してあげたほうがいいと思う。
908にまず必要なのは、その辺の認識じゃないかと。
957:デフォルトの名無しさん
08/05/15 21:29:41
人間はどうしたって自分の中のルールというかものさしというか、
その枠の中でしかものを考えることができないということだ
バカという人種はその枠が極端に絶望的に狭い
958:デフォルトの名無しさん
08/05/15 21:31:52
ちっちぱん ちっちぱんぱん
959:デフォルトの名無しさん
08/05/15 21:32:44
>> 953
> それとメモ帳開いて「0」と「1」という数字を用いて、「0」と「1」という数値のつもりで機械語プログラムを書いても実行することはできないよ。
ああ、なるほど。
言われてみれば、>>908はそういう理解してそうだな。
960:908
08/05/15 21:33:30
すみません、折角たくさんの回答をいただいたのですが、色々な情報が混ざってしまって余計にわからなくなりそうですので、
サイトなどをみて、自分で調べてみます。
>>952にあるサイトをみても、「機械が読み取れるのは二進数」という自分の考えが間違っているようには思えませんし、
失礼な言い方ですが、ここで回答された情報がすべて正しいという保障もありませんので
おそらく自分の聞きたい内容と、皆さんが受け取った自分の質問内容が若干ずれているんだと思います
スレを読み直していくと回答者の中でも意見が食い違っていますし
961:デフォルトの名無しさん
08/05/15 21:33:42
debug.exeの出番だな
962:デフォルトの名無しさん
08/05/15 21:42:00
>>960
がんば
963:デフォルトの名無しさん
08/05/15 21:53:14
>>960
結局、
「機械が理解できるのは2進数だけですよ」
って言ってもらえれれば満足なんでしょ?
964:デフォルトの名無しさん
08/05/15 21:55:39
>>960
お前は挫折する
だから頼む
挫折したそのときは決して2chに戻ってくるな
荒らしたり、粘着するな
965:デフォルトの名無しさん
08/05/15 22:00:37
メモリ内では2進(のシグナル)状態でプールされてるってことを言いたいのでは
966:デフォルトの名無しさん
08/05/15 22:07:15
CPU はむしろレジスタサイズでしか理解できないんだが
967:デフォルトの名無しさん
08/05/15 22:09:49
表示が0と1しかないバイナリエヂタを作ってやれば納得してくれそう
968:デフォルトの名無しさん
08/05/15 22:10:10
>>おそらく自分の聞きたい内容と、皆さんが受け取った自分の質問内容が若干ずれているんだと思います
これがわかったので書き込みます
ここで後半言っていた二進数というのを1,0といえばわかってもらえるでしょうか
表現の方法などは関係なく、あくまで1、0というのが何度も述べているように「機械が理解できるコード」であるのか
と聞いていたのです。
とはいえそれについても否定はされていたのですが
回答はいりません、それを正しいかどうか判断できないので、取りあえず自己完結しておきます。
今回はただお互い何か有耶無耶なまま終わってしまうのもあれなので書き込みました
969:デフォルトの名無しさん
08/05/15 22:16:26
>>925
970:デフォルトの名無しさん
08/05/15 22:20:28
そうね。2進数ではなく、電圧の高低でしか読み取れない(ってのもちょっと違うか?)って
書き方の方が良かったかもね。
971:デフォルトの名無しさん
08/05/15 22:23:56
>>908はコンピュータ云々の前に電子回路を理解するべきだと思った
972:デフォルトの名無しさん
08/05/15 22:27:01
厨房やオッサンが覚えたてでよく理解してない単語を使って失敗するパターンだったな
973:デフォルトの名無しさん
08/05/15 22:28:36
960の最初の2行だけにしといて、引っ込んでおけばよかったのにな。
974:デフォルトの名無しさん
08/05/15 22:31:17
>>968
>スレを読み直していくと回答者の中でも意見が食い違っていますし
あまりにも常識的すぎる事で、誰も間違ったことは言っちゃいないよ。
これよんどけ。プログラミングを志す人に必ずしも必要とは思えないが、あんた向けだな。
URLリンク(www.amazon.co.jp)
975:デフォルトの名無しさん
08/05/15 22:33:39
内容はまともそうだが、表紙がヒドイなw
976:デフォルトの名無しさん
08/05/15 22:35:45
断片的で不正確なネットで聞きかじるより体系的に学んだ方が手っ取り早いと思うけどな。
俺はその手の基礎知識は
やさしいコンピュータ科学 Great Ideas In Computer Scienceで学んだな。
今ならもっと今風の本があるのかもしれないけど。
977:デフォルトの名無しさん
08/05/15 22:41:33
まず「プログラムはなぜ動くのか」とかをすすめたいような
なかなか良書
978:デフォルトの名無しさん
08/05/15 23:08:37
謙虚に学ぼうとしています、という態度をとりつつ、
自分の浅はかな頭で思いついた「独自設定」に手を入れる気はまったく無い人、
たまにいるよな。
979:936
08/05/15 23:08:44
書いたことを全く理解してもらえなかった俺涙目。
980:デフォルトの名無しさん
08/05/15 23:11:08
分数の1/2と小数の0.5は違う値かと言えば
908もこれは同じ値だと思うに違いない。
944が言っていう進数の違いは表記の違いでしかないということと
近い例をあげるとしたらこれだと俺は思っている。
981:デフォルトの名無しさん
08/05/15 23:14:43
動作原理が2進演算だから
2進で動いてると言うのは間違いではないと思うけどね。
982:デフォルトの名無しさん
08/05/15 23:20:43
>>981
まぁ、わかった上での言葉のアヤの問題ならいいんだけど、
> 自分は今まで0と1によって構成されているファイルをみたことがありません
という人の主張する「2進で動いてる」は、「まぁ、そうですね」の一言でさらっと通せないものがある・・・。
983:デフォルトの名無しさん
08/05/15 23:26:10
そろそろスレ違い
984:デフォルトの名無しさん
08/05/15 23:34:58
そろそろ次スレ
985:デフォルトの名無しさん
08/05/15 23:47:01
伸びてるので何事かと思って読んでみたらイーッってなった(><)
986:デフォルトの名無しさん
08/05/16 00:04:32
結論:本屋いけ。
お次の方どうぞ。
987:デフォルトの名無しさん
08/05/16 00:28:44
そろそろ次スレなんですがどうしたらいいですか?
988:デフォルトの名無しさん
08/05/16 01:00:55
次スレを立てるために最良の言語を(ry
989:デフォルトの名無しさん
08/05/16 01:20:54
つVHDL
990:デフォルトの名無しさん
08/05/16 02:00:48
つ【e言語】
991:デフォルトの名無しさん
08/05/16 21:39:10
初心者のためのプログラミング言語ガイド Part9
スレリンク(tech板)
992:デフォルトの名無しさん
08/05/16 22:36:56
>>908頭が固いやつの典型だな
993:デフォルトの名無しさん
08/05/16 22:42:35
>>908
んー、実際に組んでいただくのが一番なんですが、いい環境が思い当たりませんね。
とにかく、あせって言葉にする必要はないと思います。
994:デフォルトの名無しさん
08/05/16 22:47:04
>>908 はコピペ
995:デフォルトの名無しさん
08/05/17 00:24:06
>>992
ズバリ、頭が「悪い」でいいんじゃね?
996:デフォルトの名無しさん
08/05/17 01:16:33
ふと気になったんだけど、PerlとかPythonなどの言語ってソースコードを隠蔽できる?
CとかC++だとコンパイルしたものを配布すれば問題ないけど。
997:デフォルトの名無しさん
08/05/17 01:25:14
わかんないんです(><)
998:デフォルトの名無しさん
08/05/17 05:17:34
.
999:デフォルトの名無しさん
08/05/17 05:20:00
.
1000:小倉優子 ◆YUKOH0W58Q
08/05/17 05:20:21
1000ならジュースでも飲むか
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5394日前に更新/251 KB
担当:undef