新しいスクリプト言語を設計する!
■ このスレッドは過去ログ倉庫に格納されています
0001 ◆opMJSavJhM
NGNG言語が少ないような気がします。例えば。。。
PERL - 大変メジャーで、実績も十分!
しかし、記号&暗号のようなスクリプト言語と感じるのは私だけでは無いはず
です。昔やった、sendmailの設定ファイルを何故か思い出します。
RUBY - 最近(?)人気急上昇のメジャー言語!ネーミングも良い!
しかし、(善し悪しは別として)オブジェクト指向言語であるが故に、私の様
にいまだに抵抗を感じる方もきっと多いはず。
そこで、オブジェクト指向でない分かりやすいスクリプト言語を設計してみた
いと思うようになりました。
いろいろと、アドバイスなりアイデアなりを頂けると嬉しいです。
0175デフォルトの名無しさん
NGNGコード対応表見れバカ
一対一対応で分らんとか抜かすやつは逝ってよし
0176名無し@沢村
NGNGコード対応表ってサイトで見れるのか?
どこで見れるよ?コード対応表は無料か?
0177デフォルトの名無しさん
NGNGチップメーカーのサイトなり、チップ本なり買え、死んでしまえ。ドアホ。
マニュアル見たことねえのがバレバレだぞ。
0178デフォルトの名無しさん
NGNGそんなに自前のバイナリ化ここだわらなくてもいいと思うけど。
0179名無し@沢村
NGNGチップメーカー?わからん?
コードはメーカーによって違うのか?
つまり自分が使ってるPCのメーカーのコードに変換するように設計した言語は他のメーカーのPCでは使えないことになるな…。
富士通のPCを使って開発した言語は富士通のPCでしか使えないわけだ。
MSがつくったコンパイラなんかはどうやって機種の互換性を出してるのよ?
0180デフォルトの名無しさん
NGNGコンピュータの基礎からやりなおしなさい。論外、もう終り。
0181デフォルトの名無しさん
NGNG>コードはメーカーによって違うのか?
当たり前、マックとWinに互換があるか?
>MSがつくったコンパイラなんかはどうやって機種の互換性を出してるのよ?
互換OSの仕事、コンパイラは関係ない。
0182名無し@沢村
NGNGバイナリ化ができるならアセンブラ化するよりもバイナリ化するにこしたことはないぞ。
というのもアセンブラがあってもソースコードをアセンブラ言語に変換する作業は不可欠だからな…。
その上でアセンブラを起動してバイナリ化しなくちゃプログラムは実行できんわけだ。
つまりソースを書き終えて「コンパイル」ツールバーを押した時点で、
ソースをアセンブラ言語に変換→アセンブラの起動という二つの作業を内部で実行するようにしなくちゃいかんということだ。
それってちょっとドン臭いよな。
やはりバイナリ一発変換のほうがスマートで知的らしいよ♪
0183名無し@沢村
NGNGはげ!!
マックとWinは互換性はねーよ、ハゲ!!
だが、MSがつくったコンパイラは同じWinであれば富士通のでもNECのでもHewletPackardのでも動くだろ!!
チップのコードが違うのにだよ…それが不思議なんだよな?
0184デフォルトの名無しさん
NGNG> やはりバイナリ一発変換のほうがスマートで知的らしいよ♪
そか?
Eiffelなんかだと、他言語へのトランスレーターになってたりするし。
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNGそこで上げた環境で動くのは、同じIntelのCPU(もしくは、互換品)使ってるからだろ。
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGそんなことしたら、ソースコードが混沌として読みたくなくなっちゃう
0191デフォルトの名無しさん
NGNGひまわりやTTSねおを根本から否定する発言だな!
0192デフォルトの名無しさん
NGNGπは倍精度のローカル変数です
ここから実装部です
π ::= PI ();
帰値 := sin(度*π/256);
ここまで実装部でした
0193名無し@沢村
NGNGチップというのはCPUのことか?それならチップとまぎらわしい言葉使わずにCPUと言えや!
おれはまたいろんな部品のことかと思ったよ。
それで富士通とかNECとか言ったわけよ。
だが、Intelのサイト見ていろいろあるからわからんくなったよ。
どこにコードの対応表があるんだろうと思ってよ…?
Intelのサイトでもページの中にいろいろあって非常にわかりずらいよ!
http://www.intel.co.jp/
何かIntelアーキテクチャーソフトウエアデベロッパーのPDFマニュアルというのがそれっぽい気がするが…?
最適化リファレンス・マニュアル (日本語 PDF ファイル: 3,277KB)
デべロッパーズ・マニュアル、上巻:基本アーキテクチャ (日本語 PDF ファイル: 4,183KB)
デべロッパーズ・マニュアル、中巻:命令セット・リファレンス (日本語 PDF ファイル: 9,139KB)
デベロッパーズ・マニュアル、下巻:システム・プログラミング・ガイド (日本語 PDF ファイル: 7,838KB)
ハイパー・スレッディング・テクノロジのアーキテクチャとマイクロアーキテクチャ (日本語 PDF ファイル: 98KB)
ハイパー・スレッディング・テクノロジのプリシリコン検証 (日本語 PDF ファイル: 53KB)
スペキュレーティブ・プリコンピュテーション:マルチスレッディング・リソースの活用によるレイテンシの削減 (日本語 PDF ファイル: 118KB)
プロセッサの識別と CPUID 命令 (日本語 PDF ファイル: 688K
プロセッサにおけるスピン・ループの使用 (日本語 PDF ファイル: 103KB)
といろいろあってどれをダウンロードしていいかわからん…?
またCPUにもPentiumとXeonがあるみたいでこれには互換性があるのか?なども疑問だ…
おれはまたPentiumしかないと思っていたよ…
またそのPentiumも1〜4まであるし、まあ4のマニュアルをダウンロードしとけば下位互換性があるはずだから大丈夫だろうけどな…
拡張命令みたいなのはとりあえず知らなくても問題なさそうだな…
拡張命令って新しいから互換性ないからな…
それにしてもずいぶんサイズがでかくてイヤになりそうだが、外れなく一発でおれがコード対応表をダウンロードできるように教えてくれないかな?
0194デフォルトの名無しさん
NGNG0195名無し@沢村
NGNGひまわりやTTSの話はするな!
ちゃんと世界で話題になるような新しい言語をちゃんと設計してつくれ!!
子供のようなことを考えちゃダメだ。
0196デフォルトの名無しさん
NGNGアラビア語プログラミング言語とか?
0197名無し@沢村
NGNGちゃかすなハゲ!!
何がアラビア語だ!!
いいか世界で話題になるような言語とは世界の多くの人に使ってもらえるような言語ということだ。
チョンにも土人にもな。
0198デフォルトの名無しさん
NGNGスクリプトだぞ? 別に世界中で使ってもらう必要などない。
日本のみで、便利かつ判り易ければそれでいいんだ。
0199デフォルトの名無しさん
NGNG0200200
NGNG0201名無し@沢村
NGNG>日本のみで、便利かつ判り易ければそれでいいんだ。
いいかげん島国根性はやめんか、バカ!!
視野を広く持てよキチガイ!!
>>200
いいか世界だよ。wcharが2バイトだよ。わかるか?
日本、韓国、中国を忘れるな!!漢字はwcharだよ2バイトだよ。
世界の人口の4分の1だぞ!!
0202187
NGNG0203デフォルトの名無しさん
NGNGやはり用途を絞るべき
汎用的なのは Perl があれば足りてる
0204デフォルトの名無しさん
NGNG道理で透明あぼーんが多いと思った
0205デフォルトの名無しさん
NGNG>おれならchar=1バイト,wchar=2バイト,int=4バイト,flort=4バイト,long=8バイトとするね。
>そしてそれぞれにsignedとunsignedがあるわけだ。
>おまいらよ言語の設計は、字句解析、構文解析、意味解析、コード生成、最適化などの各ステップからなるが、
>実はおれはな、コード生成つーのがさっぱりわからんのよ。
>K言語では配列型というのをつくるんだよ。
>例えば、array a[50];というふうに宣言するんだな。
>またarray型は型であって型ではないから、型のサイズというものを持たない。
>array型というのはintやlongやflortやcharやwcharなどの型を混ぜることができる配列なんだよ。
>おれはこうして少しずつK言語を設計していくからな。このスレでな。
>いままでのことでわからないことがあったら、何でも聞いてくれ!
0206デフォルトの名無しさん
NGNG○ float
0207デフォルトの名無しさん
NGNG○ Solaris
0208 ◆opMJSavJhM
NGNGなるほど、charの件ですがこんなことも(多少、行儀悪いですが)出来ますね。
言われてみれば、時々活用することもあるようです。(^^;
文字を文字列として表現することによって、sideeffectが全く無いと思ってい
たので指摘していただいて、良かったです。
とはいえ、>>98さんも同感だと思いますが、トータル的な取捨選択をかんがえ
れば、思い切って(という程でもありませんが。。。)
文字=長さ1の文字列
としても良いようですね。
0209 ◆opMJSavJhM
NGNGあと、変数に型を持たせずに、データに型を持たせるということはオブジェク
ト指向になりえますかね?
よくあるように、宣言をせずに整数・実数・文字列をそのまま変数に代入して
使うやつです。(例↓)
a=10
b=25.6
c="Hello World\n"
これはスクリプト系では、あまりにも当たり前の使い方なんでしょうが、大変
便利だな。。。といつも関心しいます。
0210デフォルトの名無しさん
NGNGその代償として変数名の間違いに気付くのが遅くなるが
0211デフォルトの名無しさん
NGNGRuby!!
0212デフォルトの名無しさん
NGNG強型言語でもデータに型は持ってるでしょ。
データに型がなかったらキャストもいらなくなってしまう。
0213デフォルトの名無しさん
NGNGウホ!いい文法!
0214デフォルトの名無しさん
NGNG>データに型がなかったらキャストもいらなくなってしまう。
それは違うかと。 キャストはコンパイラを騙すためにするもの。 静的な型を解決するもの。
0215デフォルトの名無しさん
NGNG動いてしまえば、すべてビット列
0216デフォルトの名無しさん
NGNGrubyマンセ〜の方?すれ違いかも?
0217デフォルトの名無しさん
NGNGホイホイついて来ていいのか?
俺はリテラルからいきなりメソッド呼び出ししてしまうような言語だぜ
--------
「セックス」を「セクース」に変換
"セックス".sub(/(..)ッ(..)(..)/, '\1\2ー\3')
0218 ◆opMJSavJhM
NGNG必要なデータ型として
・空を表すNIL
・論理True/False
・文字列
・整数&実数
を仮定して、
typedef struct{
charname[14];
chartype;// Variable Type ('N'/'T'/'F'/'S'/'I'/'D')
char*str;
doubleval;
}varialbe;
のような構造を1つの変数としてもつのはいかがでしょう?
これなら、例えば
a=1.0
としたあとで、
a="Error!!"
としても、とりあえず対応出来るように思えます。
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNGそのレスでちょっとレベルが見えたけど、
ちゃんと基礎からやった方がいいよ。
このまま進めると、車輪を再発明し続ける事なる。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGなんで、struct なの union じゃダメなの ?
あと読み出す時はどうするの (どの型が入っているかわからんでしょ ?)
...
つーか、>>220 の言う通りだと思う。
0223デフォルトの名無しさん
NGNG> あと読み出す時はどうするの (どの型が入っているかわからんでしょ ?)
メンバ type で判断するんでしょ?
まあ >>220 の言う通りだと思うけど。
0224デフォルトの名無しさん
NGNG失礼、正直見落とし。
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGいや、おはずかしい!
実は、既にお気づきかと思いますが、非常に単純化したレベルから概念整理
を兼ねてコーディングしてみようと思いましたので、実行スピードやメモリ
効率など全く考えておりません。
unionを使ってないのもcodingの単純化のためです。
name[]はあえて、変数名をその中にもたせたものです。
don't invent the wheels again...
よく聞かされる表現です。とはいえ、既に定着しつつあることについても、
あえていろいろとトライしてみることも(時には)よいことかもしれません。
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG当然!
0229デフォルトの名無しさん
NGNGトリップが無いが226=218だな?
君は見当違いの解釈をした。
>>220はやんわりと「出直して来い」と言っているのだよ。
「あえて」なんて言い訳はクソにもならない。
0230デフォルトの名無しさん
NGNGそういう問題ではない、ヤバイ
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGソースはRTFで書く。
誰か物好きが使うかもしれん。
0233動画直リン
NGNG0234デフォルトの名無しさん
NGNGhttp://www4.org1.com/~kitt/labo/pc/html/index.html
見たいなやつ。スクリプトだと詳しいエラーが出ないからよくわからず
部落ら化していたりして・・・
0235デフォルトの名無しさん
NGNGすごい配色だな。
0236デフォルトの名無しさん
NGNG全然凄くない。俺なら簡単に出来るね。
0237デフォルトの名無しさん
NGNG0238 ◆opMJSavJhM
NGNGいろいろと、ご助言ありがとうございます。
さて、素人ながらも先のデータ型をもちいて、算術演算やらif()else()やらを、
一反32ビットのダブルワードコードに変換してから実行するような、スクリプ
ト風の仕掛けを作ってみたのですが、。。。
これが案外、うまく動くものでちょっと驚いています。
正直いってメモリ効率は非常に悪いものがありますが、実行効率は非常に良いみ
たいです。(GCいれると途端に遅くなるのかもしれませんが。。。(^^;)
算出演算を繰り返すようなスクリプトソースを、perl・ruby・32ビットスクリ
プトで組んでみたものをそれぞれ実行させてみたのですが、
perl = (approx.) 2[sec]
ruby = (approx.) 5[sec]
32bit = (approx.) 1[sec]
程度でした。
シンプルだから早いのか、これからどんどん遅くなっていくのか分かりませんが、
案外素人の作った車輪でもそこそこ転がるのかもしれませんね。
0239デフォルトの名無しさん
NGNG詳細が分からんことには、実行速度などという実装に大きく依存することには
コメントしようがない。
ただ、一般に組み込み関数はperlのほうがrubyよりも速いと言われてる。
>>238もその手の延長のような気がする。
0240デフォルトの名無しさん
NGNGネタにマジレスすんなよ。
>>218 みたいなこと書いてる奴が...
> さて、素人ながらも先のデータ型をもちいて、算術演算やらif()else()やらを、
> 一反32ビットのダブルワードコードに変換してから実行するような、スクリプ
> ト風の仕掛け
なんか作れるわけないと思うよ。
0241デフォルトの名無しさん
NGNG> >>218 みたいなこと書いてる奴が...
> なんか作れるわけないと思うよ。
ま、そりゃそうだ。
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0248 ◆opMJSavJhM
NGNG確かに、あまりにもアバウトな表示ですね。(^^;
各スクリプトのソースと、実行時間の詳細をincludeします。
実行環境はLinux-2.4.20/RHL-8.0,CPU=i686,500MHz,Mem=256MB です。
まぁ、いずれにせよ相対値しか参考にはならないですが。。。
まずは、ソースから
==> test.32 <==
x=0.0
s=0.0
while(x<=1000000){
s=s+x
x=x+1
}
put x
put s
0249デフォルトの名無しさん
NGNG==> test.perl <==
$x=0.0;
$s=0.0;
while($x<=1000000){
$s=$s+$x;
$x=$x+1;
}
print "$x\n";
print "$s\n";
==> test.ruby <==
x=0.0
s=0.0
while(x<=1000000)do
s=s+x
x=x+1
end
p x
p s
と、まぁ、実にたわいもないプログラムです。(^^;
で、次は結果です。
0250デフォルトの名無しさん
NGNG==> 32 <==
1000001.000000
500000500000.000000
real0m1.161s
user0m1.160s
sys0m0.000s
==> perl <==
1000001
500000500000
real0m2.821s
user0m2.610s
sys0m0.010s
==> ruby <==
1000001.0
500000500000.0
real0m4.700s
user0m4.630s
sys0m0.020s
0251デフォルトの名無しさん
NGNGいまは、if()/else()/while()ぐらいしか組み込んでいませんが、私のように
言語系の素人であっても、案外楽しくいろんな制御構造が組み込めるので、
びっくりしました。
# 自分がいいと思うような、制御構文をいれてみれるっていいですね。
正直なところ、このような単純な言語では全く何の役にも立ちそうにありませ
んが、。。。(^^;
やる気さえあれば、言語処理系の専門家でなくとも、多少はスクリプト処理系
「らしいもの」を真似てみることができるのかもしれません...
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGあと、どこかのスレッドで誰か様が提案されていたようなflowを組み込んでみたい
と思っています。(こんな感じの奴です↓)
while(x<10){
if(x==5){
break;
}
}
normal_exit{
# x=10
}
break_exit{
# x=5
}
でも、なかなか時間がとれなくって。。。
ちょっと昼休みとかにいじったりしています。
0254デフォルトの名無しさん
NGNGもっとそれぞれの言語にあった書き方と言うものがあるのに。
# perl
while($x<=1000000){$s+=$x++;}
# ruby
s = (0..100000).inject(0) {|s, x| s+x}
まあruby版はxが最後一回加算されないが。
0255デフォルトの名無しさん
NGNGたいして代わらんだろう?
0256デフォルトの名無しさん
NGNG(除くruby)
0257デフォルトの名無しさん
NGNGなるほどrubyは5倍程早くなるようだなぁ。。。(w
0258デフォルトの名無しさん
NGNGつまり、2倍程遅くなると。。。(w
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG何剃れ?
0261デフォルトの名無しさん
NGNGVBScriptがあるじゃないか。
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG0267256
NGNG0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGawk は ?
0272デフォルトの名無しさん
NGNGtcl, rexx, icon ....
腐るほどあるわけだが。
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています