一つのソースコードから他言語のコードを生成したい
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/04/06(日) 04:04:02チェックをするコード書いたんですよ。
ネット上に転がってるのろくなソースねーなと思いながら、
今回はPHPなんですが、なんか昔VBで同じようなの書いたなーと
思いながら書いたんですよ。
で、またJavaScript版もほしいですよ。
まったく同じアルゴリズムを別言語で実装するとか明らかに無駄じゃね?
ということで、一つのコードからいろんな言語の
コードを生成する方法ってないですか?
ないなら作ってもいいんですが、一つの簡易汎用言語から、
他の言語のコード変更するトランスレータを作ればいいんですかね?
0002デフォルトの名無しさん
2008/04/06(日) 04:09:44才
、あらわる
0003デフォルトの名無しさん
2008/04/06(日) 04:10:570004デフォルトの名無しさん
2008/04/06(日) 04:11:580005デフォルトの名無しさん
2008/04/06(日) 04:13:19言語に依存しないデータ形式がありますが、
あれのロジック版と考えてください。
0006デフォルトの名無しさん
2008/04/06(日) 04:17:25いろんな言語でそれを実行できる
実行エンジンを作るってのもありですね。
0007デフォルトの名無しさん
2008/04/06(日) 04:21:44そういう効率とかを度外視してしまうのであれば
ある程度のものまでは作れるやもしれん。
0008デフォルトの名無しさん
2008/04/06(日) 04:33:07それに合わせて・・・ってのなら可能ではあるだろうけれど。
ただ繰り返しとか比較とかそういう共通パーツの組み合わせしか使えない
0009デフォルトの名無しさん
2008/04/06(日) 04:35:18生成されたコードがいかに汚かろうが、
所定の動作が実現できればいいんだから。
0010デフォルトの名無しさん
2008/04/06(日) 04:37:13効率度外視でいいです。
もし効率化したければ、そこの部分だけ
特定の言語版に入れ替えられる仕組みを
作っておけばいいので。
0011デフォルトの名無しさん
2008/04/06(日) 04:38:26生成前のコードがきれいなら問題ないでしょうね。
C言語のコードから生成された機械語だって
そんなもんだし。
0012デフォルトの名無しさん
2008/04/06(日) 04:39:01他にもそういうのはあったと思うけど、
色んな言語に変換される事を前提として作られた言語ってのは聞いた事ない。
そういうのを作ってみるのも面白そうね。
0013デフォルトの名無しさん
2008/04/06(日) 04:41:35ソフトウェアの命令って基本的な命令に落とすと
数値演算と比較とジャンプだけですから
0014デフォルトの名無しさん
2008/04/06(日) 04:46:260015デフォルトの名無しさん
2008/04/06(日) 04:48:57どうせ最近はコードの効率性なんて体感処理時間に影響しづらいしな
0016デフォルトの名無しさん
2008/04/06(日) 04:57:54あったような・・・。
でも、私的にはJavaScriptは仕様として重いんですよね。
言語仕様としては、アセンブラ程度の単純な命令だけで
非プログラマでもがんばればわかる程度の機能にしておきたい。
あと、非プログラマが書くことを考慮して
危険なことができる機能は省きたいなぁと。
ただ、for文必須な機能だと思うけど、無限ループという
危険なことができるのが困るなぁと思っていたり。
関数呼び出しも再帰という危険なことができるか。
ここら辺は仕方のないことかな。
0017デフォルトの名無しさん
2008/04/06(日) 04:59:33ローカルスコープくらいは欲しい気はするけど。
0018デフォルトの名無しさん
2008/04/06(日) 05:02:41確かにあれなら簡単かもしれん。
命令的にも仕様的にも
0019デフォルトの名無しさん
2008/04/06(日) 05:05:44これを共通化するのは意外と面倒だろうな。
0020デフォルトの名無しさん
2008/04/06(日) 05:09:41値の入出力さえできればそれでいい気もする。
0021デフォルトの名無しさん
2008/04/06(日) 05:12:47比較もジャンプも数値計算ですが。。
0022デフォルトの名無しさん
2008/04/06(日) 05:13:01http://ja.wikipedia.org/wiki/SWIG
> SWIG (Simplified Wrapper and Interface Generator) は、
> C/C++ で書かれたプログラムやライブラリを、
> Tcl/Tk、Perl、Python、Ruby、PHP、Lua などのスクリプト言語や、
> Java、C#、Scheme、Ocaml などの言語に接続するためのオープンソースのツールである
なんか感覚的に近いものがあるんですよねー。
C/C++でコード書いておけば、他の言語からも使える。
ただこれだと、C/C++でコード書かないといけない。
JavaScriptや、共有レンタルサーバーなど、C/C++で
書いたコードが使えないパターンもあるんです。
0023デフォルトの名無しさん
2008/04/06(日) 05:13:3700241
2008/04/06(日) 05:16:05みんな少しは興味を持ってもらえたようでよかったw
0025デフォルトの名無しさん
2008/04/06(日) 05:16:08最終的にはそのターゲット言語のみ使えればいい状態になるから、
環境を選ばないってとこなんだろうね。
0026デフォルトの名無しさん
2008/04/06(日) 05:19:510027デフォルトの名無しさん
2008/04/06(日) 05:24:33とりあえずインタプリタではなく、
トランスレータにしようかなと思いました。
(少なくとも最初は)
理由は、JavaScriptでインタプリタって
いくらなんでもやばくね?ということです。
0028デフォルトの名無しさん
2008/04/06(日) 05:34:59簡易言語で書いて、いろんな言語にトランスレートとか考え出してきたw
俺、何を作ろうとしているのだろうwww
汎用言語ライブラリ?
やり過ぎないように注意しよう。
0029デフォルトの名無しさん
2008/04/06(日) 06:39:14後は言語別に外注すればいいじゃん。
0030デフォルトの名無しさん
2008/04/06(日) 06:54:36つまりトランスレータ。
簡易言語というより、Prologが最適だね。
0031デフォルトの名無しさん
2008/04/06(日) 09:10:57つ [CLI]
0032デフォルトの名無しさん
2008/04/06(日) 09:18:420033デフォルトの名無しさん
2008/04/06(日) 09:32:200034デフォルトの名無しさん
2008/04/06(日) 09:43:34旧いC++がCへのコンバータであったのと同様の理由。
そもそも、アセンブリを除くほぼすべてのプログラミング言語が
Cへコンバート可能なのは、Cの当初の目的からして当然。
0035デフォルトの名無しさん
2008/04/06(日) 10:02:30asm->c言語とかある意味おもしろいのもあったよね、確か。
あまり難しいことはしない、cというかshellscript程度の文字扱いであれば
1部分だけに適用できるってのはなんかありそうだよなぁ。
0036デフォルトの名無しさん
2008/04/06(日) 10:05:180037デフォルトの名無しさん
2008/04/06(日) 10:37:250038デフォルトの名無しさん
2008/04/06(日) 11:03:11メジャーな言語の最大公約数的な機能のみもった言語を作ればいいんじゃん?
00391
2008/04/06(日) 13:01:33素直に処理できる程度の仕様でいいかも?
YAMLファイルの読み書き機能は
つけるべきだろうか?
00401
2008/04/06(日) 13:12:14作ったことがないことなわけだがw
BNFで書く?として、それを処理するのはどういった
ツール(ライブラリ)を使っていけばいいのだろうorz
YACCあたりを使うのかな?
がんばろうと思うので、そこらへんのベストプラクティス
(どういったものや方法で作るのが、セオリーで最善なのか)の
ヒント、もらえないでしょうか? いえ、もちろん貰えなくても自分で探しますけど・・・。できればちょっとヒントを・・・
0041デフォルトの名無しさん
2008/04/06(日) 13:48:35C で書いてライブラリにしておけば、他の言語から呼び出すのは簡単だよ。
Java から呼び出すなら JNI があるし、他の言語でも FFI を備えていたり、
dlopen を直接使えたり、簡単に stub コードを書ける様になっている筈。
YAML が汎用データ記述言語である様な感覚で、汎用アルゴリズム記述言語が
欲しいというのは良く分かるけど、そっち方面は中々難しいよね。
0042デフォルトの名無しさん
2008/04/06(日) 13:57:11JavaScriptから呼び出すにはどうすれば・・・
0043デフォルトの名無しさん
2008/04/06(日) 14:34:28CGIとかでJavaScriptで解釈可能なデータ形式で吐き出すようにすればいい
最終的には
言語A −[AtoC]→ 無難なCソース −[CtoB]→ 言語B
という無数のコンバータを作ることになる
0044デフォルトの名無しさん
2008/04/06(日) 14:47:29要するにJavaScriptを使ってクライアントサイドで
クイックな処理をしたいのに、
いったんサーバーにデータPOSTして負荷かかる
重い処理にするということ?
俺はいやだw
0045デフォルトの名無しさん
2008/04/06(日) 14:56:08ローカルで C 言語で書いてコンバータ通すと JS ファイルができてるってやつ
それを手動で HTML にリンクさせればいい
C 言語で HTML や 他の JavaScript と連携するコード書くのは明らかに面倒そうだが
0046デフォルトの名無しさん
2008/04/06(日) 15:04:30だから、それが>>1が言っているトランスレータじゃね?
C言語の言語仕様をJavaScriptにするのはかなり無理があると思うが?
0047デフォルトの名無しさん
2008/04/06(日) 15:10:05サーバサイドに持って行くから負荷が掛かって重いという訳ではないよ。
同じ処理をするのに計算量と通信とどっちのコストが大きいかの問題。
処理の粒度を上げれば通信のコストは相対的に小さくなるし JavaScript
よりも C で実装した方が当然計算量は少なくなる。
C to JS のトランスレータは見た事無いな。
逆であればあってもおかしくはないけど。
0048デフォルトの名無しさん
2008/04/06(日) 15:13:28>>1の例のJANコードのチェック程度なら重いだろ・・・
第一、C言語のコードを実行する許可が与えられていないサーバーも多いしな。
0049デフォルトの名無しさん
2008/04/06(日) 15:15:05無理があるも何も、やらなければならないことだけ抽出して言葉にすると
「C言語でJavaScriptの処理書きたい」
だろ、要は
0050デフォルトの名無しさん
2008/04/06(日) 15:17:45堂々巡りだな(w
0051デフォルトの名無しさん
2008/04/06(日) 15:19:34んで、できないから、サーバーでC言語で書いたコードをコンパイルしてCGIにして
動かすしかないわけだけど、その方法が取れない場合もあるし重い。
0052デフォルトの名無しさん
2008/04/06(日) 15:26:18JavaScript でロジック記述用の簡易言語を実装する
Python でも同じ言語を実装する
Ruby でも...
Java でも(以下略
JAN コードのチェックくらいならこういう手法も許容範囲じゃないかな
簡易言語は文法が単純で既に実装が沢山ある高級言語が良いかと
0053デフォルトの名無しさん
2008/04/06(日) 15:32:39> 簡易言語は文法が単純で既に実装が沢山ある高級言語が良いかと
よくわからんが、JavaScript製の、簡易言語インタプリタ
作るということでいいのか?
簡易言語というわりに、高級言語?
0054デフォルトの名無しさん
2008/04/06(日) 15:39:48対になっている概念だから、簡易言語で高級言語というのは別に
問題無いでしょ。Lisp から不要な機能を削ぎ落として軽くした様な
物を想定してたんだけど、実装方法はググれば沢山出て来るよ。
0055デフォルトの名無しさん
2008/04/06(日) 15:43:14数学的にシンプルってのはわかるんだけど、
人間の考え方とは必ずしも一致していない気がする。
こうして書いている文章だって「。」で小さく区切って書くしね。
この文章を「。」なしで書いたらどれだけ読みづらいことか。
0056デフォルトの名無しさん
2008/04/06(日) 15:55:157 行スレに BASIC があった様な…
↓これは Python
http://www.logos.ic.i.u-tokyo.ac.jp/lectures/enshu2007/index.php?%B9%D6%B5%C1%BB%F1%CE%C1
0057デフォルトの名無しさん
2008/04/06(日) 16:33:04あったな。
0058デフォルトの名無しさん
2008/04/06(日) 16:44:03関数型言語はなんかいやだな。数学的にシンプルってのはわかるんだけど、人間の考え方とは必ずしも一致していない気がする。こうして書いている文章だって「。」で小さく区切って書くしね。この文章を「。」なしで書いたらどれだけ読みづらいことか。
こう書くべき
君の文章は句点以外にも改行で区切られているから、それをして句点の意味を語るのは卑怯
0059デフォルトの名無しさん
2008/04/06(日) 16:50:140060デフォルトの名無しさん
2008/04/06(日) 19:15:14それを色んな言語に変換するツールを作るという話だったんだよね?
0061デフォルトの名無しさん
2008/04/06(日) 21:33:460062デフォルトの名無しさん
2008/04/06(日) 23:00:570063デフォルトの名無しさん
2008/04/06(日) 23:24:470064デフォルトの名無しさん
2008/04/07(月) 01:04:580065デフォルトの名無しさん
2008/04/07(月) 01:26:58>>1のやりたい事とは方向性が違うんじゃね?
0066デフォルトの名無しさん
2008/04/07(月) 07:16:510067デフォルトの名無しさん
2008/04/07(月) 10:34:570068デフォルトの名無しさん
2008/04/09(水) 23:55:480069デフォルトの名無しさん
2008/04/10(木) 00:02:240070デフォルトの名無しさん
2008/04/10(木) 00:04:55( ゚ω゚ ) お断りします
/ \
((⊂ ) ノ\つ))
(_⌒ヽ
ヽ ヘ }
ε≡Ξ ノノ `J
0071デフォルトの名無しさん
2008/04/10(木) 00:07:05期待してたのにスレがすっかり止まっちゃってるから出来ることで
協力しようかと思ってさ。
0072デフォルトの名無しさん
2008/04/10(木) 00:22:26俺はお願いしたいです
0073デフォルトの名無しさん
2008/04/10(木) 00:38:44お願いします。
0074デフォルトの名無しさん
2008/04/10(木) 02:33:250075デフォルトの名無しさん
2008/04/10(木) 02:39:090076デフォルトの名無しさん
2008/04/10(木) 04:29:58お願いします
0077デフォルトの名無しさん
2008/04/10(木) 05:43:460078デフォルトの名無しさん
2008/04/10(木) 06:55:38汎用言語ねぇ。発想は面白いんだが最小公倍数的な言語になりそうだな
0079デフォルトの名無しさん
2008/04/10(木) 06:59:48複雑なアルゴリズム→個々の言語機能をフルに活用しないと効率が悪い
ということになりそうだが
0080デフォルトの名無しさん
2008/04/10(木) 07:22:110081デフォルトの名無しさん
2008/04/10(木) 07:24:33最適化できる範囲では、言語次第でもっと具体的な型にしてもいいかもしんないか。
最適化というか、静的型言語では型推論するとか。
0082デフォルトの名無しさん
2008/04/10(木) 08:41:58言語の達人を呼んできて、問題ごとに具体的に
オブジェクト・型・API等の変換をやってもらう。
それをルールとして書き取る。
逆引き的で不完全な方法だが、着眼点から優先順位をつけて
記述されるので、達人であるなら他人のものでも、何をやっているか
理解しやすく、オープンな開発に向いている。
ほんとかねぇ・・・wWw
0083デフォルトの名無しさん
2008/04/10(木) 10:48:41> 汎用言語ねぇ。発想は面白いんだが最小公倍数的な言語になりそうだな
アルゴリズムを書く程度、つまりオブジェクト指向の部分を除いた
範囲なら、どの言語もほとんど同じじゃね?
0084デフォルトの名無しさん
2008/04/10(木) 10:51:48逆に、具体的な型に対応して、
各言語に翻訳する場合に、Variantしかないような言語なら
Variantを使ったコードに変換するとか。
0085デフォルトの名無しさん
2008/04/10(木) 11:31:38最大公約数じゃない?
>>80
バリアント型で記述したコードをバリアント型のないCのような言語に変換するとしたら結構面倒な気も・・・
0086デフォルトの名無しさん
2008/04/10(木) 12:33:430087デフォルトの名無しさん
2008/04/10(木) 19:44:24> 最大公約数じゃない?
その通りw
昔からよく間違えるんだ
0088デフォルトの名無しさん
2008/04/10(木) 19:50:57埋め合わせを自動的に入れればいいので、それであっているような。
最大公約数的な言語っつったら、本当に全ての言語に共通した事しかできないものにならないか?
まぁ新しい記述言語が一つ増えるだけになるに1パロップ。
0089デフォルトの名無しさん
2008/04/10(木) 22:07:17普通の言語なら意外とそれなりにいけるんじゃないかと思う。
もの凄く泥臭いコードに変換されても構わないんだし。
0090デフォルトの名無しさん
2008/04/10(木) 22:16:00JavaScript とかで仮想マシンとか鬱陶しくてかなわんなw
0091デフォルトの名無しさん
2008/04/11(金) 02:10:25残念なことだ。
0092デフォルトの名無しさん
2008/04/11(金) 03:34:490093デフォルトの名無しさん
2008/04/11(金) 03:38:52アルゴリズムを簡潔に書ける。オブジェクト指向にこだわらない。
対応データ型、YAMLで定義されているもの
配列・ハッシュ
0094デフォルトの名無しさん
2008/04/11(金) 03:51:39何の事前調査もなしにいきなりポリシーが公表されても同意しようがない。
0095デフォルトの名無しさん
2008/04/11(金) 04:42:29君も自由にポリシー言っていいんだよ?
0096デフォルトの名無しさん
2008/04/11(金) 04:57:44それやりだすと伝統的な2ch作るスレになるだろ。
0097デフォルトの名無しさん
2008/04/11(金) 15:14:40今現在こういうものを作る場合のセオリーというか
よく使われるツールは何でしょうか?
キーワードだけでいいので教えてください。
0098デフォルトの名無しさん
2008/04/11(金) 15:21:19データ形式があるような気がしてならない。
0099デフォルトの名無しさん
2008/04/11(金) 15:29:45lex+yaccあたりでどう
0100デフォルトの名無しさん
2008/04/11(金) 17:13:36やっぱりそれですか。
もう何年も前からあるものだから
もしかして今は別のもっと良い奴があるのかなと。
0101デフォルトの名無しさん
2008/04/11(金) 17:25:2835年くらい前からあるものかな。
0102デフォルトの名無しさん
2008/04/11(金) 17:56:030103デフォルトの名無しさん
2008/04/11(金) 18:52:59http://spirit.sourceforge.net/
0104デフォルトの名無しさん
2008/04/11(金) 20:47:310105デフォルトの名無しさん
2008/04/11(金) 22:58:30これは面白い・・というかすげー!
C#3.0+LINQ, VB.NET → MSIL → native backend(JavaScript, ActionScript, Java, PHP), custom backend(その他の言語への変換サポート)
# 何も書かれてないけど、MSILを解析するって事は/clr:pureなC++/CLIはどうなんだろ?
とりあえず↓あたりはサポートしてるってさ
* operators
* properties
* delegates
* generics
* enumerators
* anonymous types
* linq with objects
0106デフォルトの名無しさん
2008/04/12(土) 02:18:38セオリーは、既存の言語の調査。
言語仕様を決める際には、LALRの範囲内に収めるのが吉。
まず、エクセルのシートに知っている限りの言語名を羅列していくところから
始めたらどうかな。
0107デフォルトの名無しさん
2008/04/12(土) 08:57:08これはもしかして求めていたものなのかッ?!
0108デフォルトの名無しさん
2008/04/13(日) 18:22:150109デフォルトの名無しさん
2008/04/14(月) 02:46:520110デフォルトの名無しさん
2008/04/14(月) 04:38:310111デフォルトの名無しさん
2008/04/14(月) 22:40:050112デフォルトの名無しさん
2008/04/15(火) 04:36:530113デフォルトの名無しさん
2008/04/16(水) 13:42:080114デフォルトの名無しさん
2008/05/12(月) 22:21:42どのプログラミング言語もC ABIをラップして呼び出せるインターフェースをサポートしているだろ。
言語ごとに特性が異なるのに無理やり変換する意味なんてない。
0115デフォルトの名無しさん
2008/05/14(水) 01:35:36JavaScriptもサポートしてるのかよ!w
0116デフォルトの名無しさん
2008/05/14(水) 20:47:54世の中には、そんな機能が無い言語もある。
PHPとか。
0117デフォルトの名無しさん
2008/05/14(水) 20:58:410118マイク ◆yrBrqfF1Ew
2008/05/15(木) 14:33:030119デフォルトの名無しさん
2008/05/15(木) 15:13:59JSAPI
0120デフォルトの名無しさん
2008/05/16(金) 04:05:23それをブラウザがサポートしているのかよw
0121デフォルトの名無しさん
2008/05/16(金) 14:04:080122デフォルトの名無しさん
2008/05/16(金) 15:46:130123デフォルトの名無しさん
2008/05/16(金) 16:15:36>で、またJavaScript版もほしいですよ。
って書いてある。
普通、JavaScriptって「サーバサイド」って明記がない限り、ブラウザの話じゃね?
0124デフォルトの名無しさん
2008/05/16(金) 21:30:310125デフォルトの名無しさん
2008/10/25(土) 13:40:010126デフォルトの名無しさん
2008/10/25(土) 15:20:10VBで書いたライブラリをJScriptで使いまわせるぜ。
0127デフォルトの名無しさん
2008/10/25(土) 20:42:35http://local.joelonsoftware.com/mediawiki/index.php/Wasabi
0128デフォルトの名無しさん
2008/10/25(土) 20:46:01.NETやJavaで十分っちゃぁ十分なんだよね。
012967.180.210.220.dy.bbexcite.jp
2009/07/24(金) 00:01:02013067.180.210.220.dy.bbexcite.jp
2009/07/24(金) 00:02:250131デフォルトの名無しさん
2009/07/25(土) 21:59:22http://namidame.2ch.net/test/read.cgi/hidari/1225537555/
0132ぅゅ ◆e6.oHu1j.o
2009/09/20(日) 08:28:010133デフォルトの名無しさん
2009/09/28(月) 09:27:32■ このスレッドは過去ログ倉庫に格納されています