TypeScript(MS) VS Swift(Apple)
■ このスレッドは過去ログ倉庫に格納されています
まあ、どちらもタイプセーフJavaScriptという
似たような言語なんだから仲良くしろや。 >>171
実際にリンクするわけじゃないだろ?
呼び出すJavaScriptランタイムがなければそれはEmscriptenにとっては変換失敗じゃないか >>170はちょっと書き方が悪かったなライブラリをリンクしてるというかライブラリの関数を呼び出してると書くべきだった
そしてライブラリ関数の呼び出しはとりあえずJavaScriptに変換されて、
Emscriptenが用意してるJavaScriptとランタイムと一緒に実行したときに
ランタイムがそのライブラリ関数をサポートしてれば実行されるし、サポートしてなければ実行時エラーになるのか
このへんはちょっと勘違いしてた >>174
そんな感じやね。もちろんヘッダすらなかったらコンパイルエラーになるけど だからとりあえずどんなLLVM-IRでもJavaScriptへの変換は可能。これは訂正しとくは
そして、Swiftをブラウザで実行しようと思ったらSwift用のJavaScriptランタイムを用意する必要があると
Cocoaに相当するランタイムは実質不可能だろう
SwiftからDOMにアクセスするランタイムは作れなくも無さそうだけど、
Swift側のAPIを決めて、それにマッピングするようランタイム作る必要があるわけだ >>176
「は」 と 「わ」 の使い分けも出来んバカだったのかお前
さもありなんだな >>176 XcodeのSwiftデバッグ情報を見ると、WebKitのJS JIT(VM/LLVM)が動いてREPLを実行してるようだ。
Xcodeが落ちた時に詳細情報を見ると、中にこんなのが見える。
VM Region Summary:
JS JIT generated code 8K
JS JIT generated code (reserved) 1.0G reserved VM address space (unallocated)
VM_ALLOCATE 16.5M
WebKit Malloc 1232K
なんだかすごく楽しみだな。 >>176 Javascriptライブラリは一通りそろってるはず。
こんどのOSX10.10(Yosemite)では、Javascriptがシステムオートメーション用のスクリプトとして動き始めるからJavascriptのすべてのライブラリは揃ってると見て良い。
Release Notes This is a preliminary document
https://developer.apple.com/library/prerelease/mac/releasenotes/interapplicationcommunication/rn-javascriptforautomation/index.html
This article describes JavaScript for Automation, a new feature in OS X 10.10.
当面はOSXで実績を積んでいずれSwiftとマージと言う話になると思う。
JavascriptからObjCとの相互呼び出しも可能だからとうぜんSwiftとの間の相互呼び出しも可能のはず。(WebKitで許すかどうかは別の話)
SwiftからJSへの変換は結構早い時期に発表が有ると思う。 将来的には、JavascriptとSwiftのソースの混在も可能になるだろう。 >>180
単にXcodeが表示にWebKitを使ってるだけじゃないの? >>181
そのリンクの先はOSX上でJavaScriptからCocoa関係にアクセスするための仕組みのように見えるんだけど違うの?
>>176とはほとんど関係無くない? ID:uI+Octwc
お前さ、マルチしないでどっちかで話進めろよ >>184 こっちは話の流れ上Webクライアント限定。 あっちは本流。
>>183 OSXのスクリプトとしてJavascriptが動き出した。
>>176のSwiftがJavascripに変換されてもクライアントのJavascripライブラリがなければ動き様が無いと言う話は、OSXでJavascriptが動き出すので殆どクライアント用ライブラリも揃ってると見て良いだろうと思う。
iOS用のライブラリはまた別になるのでそのまま全て横流しと言う訳にはいかないが、大した手間では無いだろう。
WebKit用ライブラリは既に揃ってるから、WebKitを使う他社のブラウザでもその範囲なら大丈夫だろう。
WebKitを使わないブラウザ用としては変換したJavascriptが動く様にしておけば良いだろう。
この考え方はDartでも同じ。
このスクリプトで面白いのは、スクリプトエディタでJavascriptをアプリケーションとして保存すると、Appletとして呼び出して使える事。
この保存形式は解らないが、Javascriptのソースコードで無いことは明らか。
例えば、LLVM IR がApplet用バイトコードとして使われる可能性は結構有ると思う。
Googleとは別々の道を進んでいても、バイトコードとしてLLVM IR形式を使おうと言う合意の可能性はまだ残されてるんじゃ無いかな。 LLVM IR で無くても良いが何らかの統一コードは必要だろう。
しかし何故Java中間コードでは満足出来なかったんだろう?冗長性有り過ぎ?
ネイティブコード/バイトコードのアプレットが広く普及するとは思えないが、企業などの作り込みアプリなら利用されるだろう。
このスレでこの話題を話すのは、Webクライアントソフトが今後どう言う方向に進んで行くかと言う話にマッチしてるから。
TypeScriptも今はJavascriptに変換してるが、もし統一中間コードが決まればダイレクトにそのコードにコンパイルする様になるだろう。 その方が効率が良いはずだから。 >>185
JavaScriptからCocoa呼び出せても、ネイティブなCocoaがあるOSでしか動かないじゃない?
そんなのは一般的なWebクライアント用言語としては使えないよ >>186 Java Appletが、動ける範囲を制限してる様に、何らかのクラスの下でだけ動ける様にするはず。
極端な話WebKitの範囲内だけとか。要はJavaScriptが動ける範囲内だけで良いんだよ。WebKitAppクラスとか。
別に汎用のCocoaを網羅する必要は無いし動いたら却って怖い話。 そんなのセキュリティ上有り得ない。 あんたが言ってるようなのって今現在沢山あるぞ?
どれも中途半端でイマイチ流行らないけどね
OSのAPIをひたすらラップするだけの作業だから
手間さえかければ良い物ができるよ
>>187による実装に期待 >>187
クラスの下で動くって意味がわからないよ
そのクラスっていうのは実体が何で、世の中の一般的なブラウザはそれをどうやって利用するの? >>186 それとクラスと言ってもそれは上位言語の話で有って、中間言語などに降りてきたらクラスなんか関係無い。
単なる汎用のマシン語が動くかどうかの世界。
ただ、まっさらなマシン語の実行を許すと大きなセキュリティの危険にさらされるから、何らかのガードの元で実行出来る様にするはず。 >>190
だからその中間言語を一般的なブラウザでどうやって実行するつもりなんだって聞いてるんだ
プラグインか?JavaScriptランタイムか?アップルはそんなもの提供するなんて一言も言ってないだろ swift→bit code→NativeClientは可能だろうけど。 >>191 一般ブラウザは中間コードじゃなくて単なるJavascriptだよ。
つまり、Native/bytecode またはJavascriptの両方出力できるようにするはず。 Dartも同じ。
多分HTML上も両方スイッチできるようにしておいてクライアントに応じてどちらかをダウンロードする形。 >>191 >JavaScriptランタイムか?アップルはそんなもの提供するなんて一言も言ってないだろ
全て妄想の範囲だよ。 だが現実味が強い。
1.Javascriptランタイムライブラリは殆ど揃ってる。 <−JavascriptがOSスクリプトに採用されたから。 <−公式発表
2.SwiftからLLVM IRは今でも出力できる。 <−既に動いてる。
3.LLVM IRからJavascriptへのコンバータは既にある。 だからライブラリさえ提供されれば可能になる。
いつごろ実現するかはわからんが1年以内だろう。 >>194-195
LLVM-IRからJavaScriptに変換したコードを他ブラウザで実行する際に必要とするJavascriptランタイムは、
JavaScriptをOS Xのスクリプトとして利用するための仕組みに関係するものとは全然性質が違うんだよ
前者はcocoaの機能に相当する部分までなんとかしないといけないけど、
後者は単にOS Xへのラッパーにしか過ぎない
この違いが理解できるかな?
前者はかなり大変な仕組みだからアップルが何の発表もしてない時点で現実味が全く無い WindowsでもJScriptがつかえるよ!
やったね! >>196 逆にJavascriptに変換すると言う事は、javascript実行環境で使うのであればJavascript内でクローズしていれば良いのだから複雑なライブラリは必要ないとも言えるのでは?
だからすべてのブラウザで動く事が出来る。
Javascriptに変換した後の環境は単にウエブブラウザのJavascriptインタプリタのみ。
必要なランタイムライブラリはインタプリタが実装していると言える。 >>198
そうだよ。単にDOMにアクセスするためなら複雑なランタイムは必要無い
だから>>181のJavaScriptからcocoaを呼び出す仕組みとか関係無いってことだ WebになるとSwift関連ツールがWindows向けに提供されない場合、Windowsでのデバッグがやりにくくなる
スマフォ用Webアプリには使われても、直ぐに後追いが出てマルチプラットホームでのツール提供をすればそれに越されそう >>200 JavaScriptに変換するのならTypeScriptと同じ土俵だろ。 デバッグに心配はない。 emscripten使えばわかるけど、生成されたゲロみたいなjsコードのデバッグは非常に困難
極めて綺麗なJSを吐くTypeScriptとは一緒にしてはいけない >>202 どのレベルのJSを吐くかによるだろ。 EmScriptenはasm.js を吐き出すんだろ?
性能を取るか視認性を取るかの違いだろ。
asm.jsを吐き出しても元のソースコードをコメントで入れてあれば見やすいのにそれはしていないんだろうな。
そのうち成長してくるだろう。 >>203
Emscriptenはデバッグが完了したネイティブアプリを変換する為だけのもの >>204 単体デバッグ出来るんだっけ?
LLDB使って出来そうには思うけど。 >>203
ジェネレータは関係ない
コンパイル時のデバッグ情報を使わない限り、IRの時点でデバッグは十分困難だから >>206 詳しいことは知らないんだけど、IRにまでデバッグ情報は持ち込めるんじゃ無いの?
IRを使ってLLDBでデバッグ出来るんだから。 LLDBはClangでしかデバッグ出来ないの? >>202 あのね、コンパイラ言語はソースでデバッグするだろ、アセンブラでデバッグする事は滅多にないよ。 >>209
TypeScriptと同じ土俵ってところへの突っ込みでしょ。TypeScriptにとってJSは中間言語じゃない。
あっちはデバッガ含めJS資産を完全にシームレスに活用できるのが売り。
最悪、生成されたJSコードをベースにしてJSに戻って開発を続けることも十分可能なほど。 言語が違うんだから、デバッグ方法が異なっても当然だな
しかし、JSのデバッグはお世辞にもデバッグしやすいとは言えないだろ。 iPhone修理の仕事してる人っている?
iPhone6とかすでに受け取ってるんかね?
そういえば、ビックカメラとキタムラのiPhone修理受付の求人が入れ食い状態だとか噂を聞いたことある。確かに最近混雑して待ち時間が6時間とからしいからな
可愛い女の子も多いし応募してみようかと思ってる >>211
とはいえ最近かなり環境整ってるぞ
JSソースからデバッグ用JSソースのコンパイルってのも増えてきたし >>67
いつの話だよ
invokedynamicとか知らないのか Typescriptもdiscriminated union対応したか Android Studioの標準言語をTypescriptにしてくれるとだいぶ助かる >>217
vscで良いやん。エクステンションもtsで書ける 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
PPU1S >>1 しかしなんのために TypeScript と Swiftを並べてみようという気になったのかが気になる。
全く比べるようなものじゃないだろ。 ■ このスレッドは過去ログ倉庫に格納されています