Re: 本体の起動について
sam
居住地: 東京
投稿数: 10
Takehiroさん、こんばんは
CPUはマシン語以外は実行できません。数十年前、BASICのソースをいきなり、実行するというCPUも有りましたが、これとて、ONE―CHIPの中に、インタプリタのROMを積んだものでした。
今の、半導体の集積度とベリログのような、便利な道具が有れば、コンパイラの一つ位、ハードで積むことは、やって出来ないことはありませんが、デバッグと編集を外のコンパイラでやる以上、実行だけのコンパイラをCPUに積むメリットは有りません。
インタプリタとは、高級言語をステップごとに機械語に訳して、実行しては、また次のステップを読み込み、機械語に翻訳する、と言う動作を繰り返します。
対して、コンパイラは全文章を一気に機械語に直して、実行するときは、ソースを必要としません。
この、一気に全文章を翻訳するのに、コンパイルの時間が必要なのです。
一方、インタプリタは1ステップだけ訳せばいいので、コンパイルと言う特別な作業をする必要がないのです。
ですから、インタプリタは実行時間が遅い反面、実行させながら、どの行の記述が気に入らない、等と言うことが、すぐ分かり、修正しながら、プログラムを完成させると言う目的にはぴったりだと思います。
Flightgearのように、人の書いたものを、自分の好きなように書き換える、これも、コンパイラでは簡単にはいきませんね。
ただ、インタプリタが完成していれば、コンパイラを作るのは、難しくはありません。
難しいのは、むしろデバッガーでしょう。
その為、昔GAME等という、記号言語では、インタプリタとコンパイラを両方用意して、
インタプリタで散々、デバッグをして、これで良しとなってから、コンパイルする、と言う方法をとっていました。
そろそろ、FlightGearも重くなってきたこともあり、コンパイラを用意するのも一つの方法だと思っています。
If(xxxxx) と if(xxxxx)=0
後者はベーシックで言う、 IF (XXXXX)=0 THEN と言うやつで THEN がTRUEになります。 ELSEがFALSE になるわけで、私が問題にしたのは、前者の場合、何が真で、何が偽か、と言うことで、答えは前ページにあるように分かりました。
その後、nasal の 文章にいろいろな文字列、数字、配列などを、定義して、何が入っているのか、検証してみましたが、残念ながらnasalはpeal程、複雑なことをやっていません。
こんな、コンパクトにまとめられた、インタープリタにあまり、難しいことを要求するのは無理、必要なことは、やってある、と言うことでしょうか。
ちなみに、 <yyyy>0<yyyy> <yyyy>true<yyyy> <yyyy><yyyy> <yyyy>0.5<yyyy> <yyyy>”A”<yyyy> <yyyy>xyz<yyyy> <yyyy>false<yyyy>
まだまだ、いろいろやってみましたが、全部 falseになります。
<yyyy>2.56<yyyy> <yyyy>257<yyyy> <yyyy>9999<yyyy>
これらは、true と判断されます。
もうお分かりでしょう、nasalでは、どうやら、最初の一文字しか、見ていないようなのです。
最初の1文字が1〜9はtrue それ以外は全部falseなのです。
勿論、<のように、宣言文に使うような記号を入れると、エラーとなりますが・・・
でも、分かってしまえば、これはこれでいいんです。
言語が、どうなっているのか、分からなければ、手も足も出ない。
以上、お答えになっているでしょうか?
CPUはマシン語以外は実行できません。数十年前、BASICのソースをいきなり、実行するというCPUも有りましたが、これとて、ONE―CHIPの中に、インタプリタのROMを積んだものでした。
今の、半導体の集積度とベリログのような、便利な道具が有れば、コンパイラの一つ位、ハードで積むことは、やって出来ないことはありませんが、デバッグと編集を外のコンパイラでやる以上、実行だけのコンパイラをCPUに積むメリットは有りません。
インタプリタとは、高級言語をステップごとに機械語に訳して、実行しては、また次のステップを読み込み、機械語に翻訳する、と言う動作を繰り返します。
対して、コンパイラは全文章を一気に機械語に直して、実行するときは、ソースを必要としません。
この、一気に全文章を翻訳するのに、コンパイルの時間が必要なのです。
一方、インタプリタは1ステップだけ訳せばいいので、コンパイルと言う特別な作業をする必要がないのです。
ですから、インタプリタは実行時間が遅い反面、実行させながら、どの行の記述が気に入らない、等と言うことが、すぐ分かり、修正しながら、プログラムを完成させると言う目的にはぴったりだと思います。
Flightgearのように、人の書いたものを、自分の好きなように書き換える、これも、コンパイラでは簡単にはいきませんね。
ただ、インタプリタが完成していれば、コンパイラを作るのは、難しくはありません。
難しいのは、むしろデバッガーでしょう。
その為、昔GAME等という、記号言語では、インタプリタとコンパイラを両方用意して、
インタプリタで散々、デバッグをして、これで良しとなってから、コンパイルする、と言う方法をとっていました。
そろそろ、FlightGearも重くなってきたこともあり、コンパイラを用意するのも一つの方法だと思っています。
If(xxxxx) と if(xxxxx)=0
後者はベーシックで言う、 IF (XXXXX)=0 THEN と言うやつで THEN がTRUEになります。 ELSEがFALSE になるわけで、私が問題にしたのは、前者の場合、何が真で、何が偽か、と言うことで、答えは前ページにあるように分かりました。
その後、nasal の 文章にいろいろな文字列、数字、配列などを、定義して、何が入っているのか、検証してみましたが、残念ながらnasalはpeal程、複雑なことをやっていません。
こんな、コンパクトにまとめられた、インタープリタにあまり、難しいことを要求するのは無理、必要なことは、やってある、と言うことでしょうか。
ちなみに、 <yyyy>0<yyyy> <yyyy>true<yyyy> <yyyy><yyyy> <yyyy>0.5<yyyy> <yyyy>”A”<yyyy> <yyyy>xyz<yyyy> <yyyy>false<yyyy>
まだまだ、いろいろやってみましたが、全部 falseになります。
<yyyy>2.56<yyyy> <yyyy>257<yyyy> <yyyy>9999<yyyy>
これらは、true と判断されます。
もうお分かりでしょう、nasalでは、どうやら、最初の一文字しか、見ていないようなのです。
最初の1文字が1〜9はtrue それ以外は全部falseなのです。
勿論、<のように、宣言文に使うような記号を入れると、エラーとなりますが・・・
でも、分かってしまえば、これはこれでいいんです。
言語が、どうなっているのか、分からなければ、手も足も出ない。
以上、お答えになっているでしょうか?
投票数:9
平均点:4.44
投稿ツリー
-
本体の起動について
(r.naka, 2008-12-16 16:49)
- Re: 本体の起動について (zero1962, 2008-12-16 21:30)
-
Re: 本体の起動について
(r.naka, 2008-12-17 17:09)
- Re: 本体の起動について (Tat, 2008-12-18 5:57)
- Re: 本体の起動について (r.naka, 2008-12-19 23:44)
-
Re: 本体の起動について
(sam, 2009-3-24 12:38)
-
787の起動について(Re: 本体の起動について)
(toshi, 2009-3-25 2:01)
- Re: 787の起動について(Re: 本体の起動について) (toshi, 2009-3-27 2:17)
-
787の起動について(Re: 本体の起動について)
(toshi, 2009-3-25 2:01)
- Re: 本体の起動について (sam, 2009-3-25 10:56)
- Re: 本体の起動について (sam, 2009-3-25 11:40)
- Re: 本体の起動について (sam, 2009-3-27 10:44)
-
Re: 本体の起動について
(takehiro, 2009-3-27 18:20)
- Re: 本体の起動について (MiYABi, 2009-3-27 20:09)
- Re: 本体の起動について (toshi, 2009-3-29 2:45)
- Re: 本体の起動について (sam, 2009-3-28 11:22)
- Re: 本体の起動について (takehiro, 2009-3-29 0:25)
- Re: 本体の起動について (sam, 2009-3-29 9:55)
- Re: 本体の起動について (takehiro, 2009-3-29 23:15)
- Re: 本体の起動について (sam, 2009-3-30 22:41)
- Re: 本体の起動について (takehiro, 2009-3-31 0:10)