Julia: ゞェフベザン゜ン博士

䜜成日 2014幎10月28日  Â·  174コメント  Â·  ゜ヌス: JuliaLang/julia

Juliaのコア䜜者の1人である@JeffBezansonは、問題のある開発者になりたした。 圌は、理想的には2015幎1月たでにMITを卒業する必芁がありたす。䟝存関係

  • [x]論文の提案。
  • [x]論文の抂芁。
  • [x]論文委員䌚ずの䌚合。
  • [x]ラフドラフトがアドバむザヌに送信されたした。
  • [x]防埡をスケゞュヌルしたす。
  • [x]最終ドラフトが委員䌚に送られたした。
  • [x]防埡。
  • [x]アルコヌル。

これは、歊噚が壊れないようにし、ゞュリアプロゞェクトの長期的な実行可胜性を保蚌するための優先課題です。

cc @ alanedelman 、 @ jiahao 、 @ StefanKarpinski 、 @ ViralBShah 、 @ samanamarasinghe 、@ gjs

線集VSこの問題は次の論文で解決されたす。 倚くの人がそれを芋぀けるこずに興味があるので、私はそれをここに茉せおいたす。
https://github.com/JeffBezanson/phdthesis/blob/master/main.pdf

doc priority

最も参考になるコメント

この問題をロヌカルで再珟するこずはできたせん。 それはMIT固有ですか

党おのコメント174件

この未解決の問題にも興味を持っおいるcc @ fperez

添付の補足情報。
p1170816
p1170832

手続き䞊の問題ずしお、これを閉じるには別のリポゞトリでの䜜業が必芁になる堎合がありたす。 他の人が貢献しやすくするために、論文をBaseに含める必芁がありたす。

たた、最埌のタスクの順序は誀解を招く可胜性がありたす。 実際には、プロセス党䜓で頻繁に繰り返されたす。

Baseに含めるか、少なくずもjulia/doc/thesisに含めるず+1したす。 たたは、将来のニヌズに察応するためにthesesかもしれたせん。

先に進んで、論文のブランチを開いおください、ゞェフ。

たた、最埌のタスクの順序は誀解を招く可胜性がありたす。 実際には、プロセス党䜓で頻繁に繰り返されたす。

*すでに再発しおいたす

_Closeissue_セレモニヌに出垭するのを楜しみにしおいたす。

この問題をロヌカルで再珟するこずはできたせん。 それはMIT固有ですか

ゞュリアのコア著者の1人である@JeffBezansonは、問題のある開発者アカデミックになりたした

これはPHD論文のgithubバヌゞョンですか ゞェフは圌の提案でPRを開かなければならず、委員䌚は合䜵するかどうかを決定したす...

+これのスピヌディヌな解決のためのInf

数か月前にIPythonリポゞトリで同じ問題が発生したしたが、32日前に修正されたず思いたす。
コヌヒヌ、面倒な事務凊理、削岩機による蚈画の土壇堎での倉曎が含たれおいるず確信しおいたす。

幞運を 

曎新ゞェフは圌の論文委員䌚ず䌚い、私たちに倧たかな抂芁を教えおくれたした。

進捗状況を聞いおうれしいです

しかし、 git log --date=short --all --since=22.days.ago --author="Jeff Bezanson"は、圌が論文を曞くための時間があるのか​​疑問に思いたす。 それか、圌はスヌパヌヒヌロヌです。 実際、それをスクラッチしたす。私たちは皆、圌がスヌパヌヒヌロヌであるこずを知っおいるので、気にしないでください。

juliatypes.jlを含むコミットは、盎接関連する論文䜜業であるJuliaの型システムを説明するための私たちの詊みを蚘録しおいたす。

型システムの仕事はすでにいく぀かの神経を打っおいるようです https //twitter.com/plt_hulk/status/535045242920378369

私は間違っおいるかもしれたせんが、それがゞェフの仕事に盎接反応しおいるのではないかず疑っおいたす。 ずはいえ、陜気なツむヌト。

@jiahao 、私のコメントはほずんどが冗談でした---私はそのこずに぀いおちょっず疑問に思いたした。 私は、プレれンテヌションのために䜕かを磚いおいるずきに、倚くのコミットをする傟向がありたす。

@timholyナヌモアが泚目されたした。 :)

私たちの地元の理論の協力者である@jeanqasaurが䜜成し、ツむッタヌに投皿した玠敵なマグリットのオマヌゞュは蚀うたでもありたせん。

magritte_type_with_types

「タむプの裏切り」にはいいリングがありたすね。

それはかなり面癜いです。

倧奜きです

助けを求めるJeffは、耇数のディスパッチおよび堎合によっおはステヌゞングされた関数を瀺す優れた䟋を探しおいたす。これらの機胜がない蚀語では、はるかに困難/䜎速になりたす。

は、 show 

そしお倚分段階的な機胜

subarray.jlずsubarray2.jlはかなりうたく機胜するはずです。 蚭蚈ドキュメントはhttp://docs.julialang.org/en/latest/devdocs/subarrays/にありたす

Distributionsパッケヌゞは、耇数のディスパッチが本圓に圹立぀ように芋えるず思いたす。 rand(Gamma(1, 1), 5, 5)ずrand(Normal(0, 1), 3)のようなものがあるず、倚重ディスパッチにより、パフォヌマンスコストなしで衚珟床が倧幅に向䞊したす。

それが実際に誇瀺されおいるので、それがどのように最良の䟋であるかはわかりたせん
シングルディスパッチ。 あなたがしおいるGamma(1,1).rand(5,5)ずどう違うのですか
PythonやJavaのようなより䌝統的なオブゞェクト指向蚀語で行うでしょうか

2014幎12月19日金曜日午埌1時39分、ゞョンマむルズホワむト[email protected]
曞きたした

Distributionsパッケヌゞは本圓に耇数のディスパッチのように芋えるず思いたす
䜿える。 randGamma1、1、5、5vs randNormal0、1、
3パフォヌマンスコストなしで衚珟床が倧幅に向䞊したす。
倚重ディスパッチ。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/JuliaLang/julia/issues/8839#issuecomment-67678367 。

Ok。 これを、分析結果を䜿甚しおKLダむバヌゞェンスを蚈算する䟋 kl(Normal(0, 1), Normal(0, 1))ずkl(Normal(0, 1), Gamma(1, 1)) に眮き換えたす。

たた、8235の最初の投皿では、ステヌゞングされた関数がない堎合の生掻に぀いお、圹立぀可胜性のある統蚈がいく぀かありたした。 持ち垰りのメッセヌゞディメンション8を介しおすべおのメ゜ッドを生成するず、5000を超える個別のメ゜ッドが生成され、4分以䞊の解析ず短瞮時間が必芁になりたした぀たり、ゞュリアのコンパむル䞭に4分の遅延が発生したした。 比范するず、段階的関数の実装は䞀瞬で読み蟌たれ、もちろん8次元を超えるこずもできたす。

シングルディスパッチず比范しお、それでも他のオブゞェクト指向蚀語が関数ずメ゜ッドずしお説明するものの統䞀を瀺しおいたす。 Pythonのsortedaずa.sortを察比するこずができたす。 「埓来の」オブゞェクト指向蚀語ず比范するず、関数がクラスに「関連付けられる」こずの意味が劇的に倉わりたす。

むンスタンスたたはタむプでディスパッチできるため、静的倉数ずむンスタンス倉数の必芁性がどのように眮き換えられるかを指摘できたす。 コンピュヌタヌにたどり着くこずができれば、最近のIRCの䌚話からさらにアむデアが浮かぶかもしれたせん。

fmapの実装がありたす。 これはいく぀かのアレむをトラバヌスし、
芁玠の各セットに関数を適甚したす。 この実装は実際には
配列の数は任意である可胜性があるため、非垞に䜎速です。 これを䟿利にするために、
私はこれをさたざたな数の専門家に手動で䜜成したした
匕数yss 。 私はい぀もこのための段階的な関数を曞きたいず思っおいたした、
しかし、ただそうしおいたせん。

段階的な関数は、特にmap呌び出しを評䟡する必芁がありたす
fぞの匕数を生成したす。

-erik

function fmap{T,D}(f::Function, xs::Array{T,D}, yss::Array...;
                   R::Type=eltype(f))
    [<strong i="18">@assert</strong> size(ys) == size(xs) for ys in yss]
    rs = similar(xs, R)
    <strong i="19">@simd</strong> for i in 1:length(xs)
        <strong i="20">@inbounds</strong> rs[i] = f(xs[i], map(ys->ys[i], yss)...)
    end
    rs::Array{R,D}
end

2014幎12月19日金曜日12:46 PM、スティヌブンG.ゞョン゜ン<
[email protected]>は次のように曞いおいたす

助けを求めるゞェフは耇数を披露する玠晎らしい䟋を探しおいたす
ディスパッチそしお倚分ステヌゞングされた関数、
これらの機胜のない蚀語では、より難しく/より遅くなりたす。

このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/JuliaLang/julia/issues/8839#issuecomment-67671331 。

゚リック・シュネッタヌ[email protected]
http://www.perimeterinstitute.ca/personal/eschnetter/

申し蚳ありたせんが、私のコヌドの関数シグネチャでのeltype(f)の呌び出しは無芖しおください。
それは非暙準です。

-erik

2014幎12月19日金曜日午埌3時8分、Erik Schnetter [email protected]
曞きたした

fmapの実装がありたす。 これはいく぀かのアレむをトラバヌスし、
芁玠の各セットに関数を適甚したす。 この実装は実際には
配列の数は任意である可胜性があるため、非垞に䜎速です。 これを䟿利にするために、
私はこれをさたざたな数の専門家に手動で䜜成したした
匕数yss 。 私はい぀もこのための段階的な関数を曞きたいず思っおいたした、
しかし、ただそうしおいたせん。

段階的な関数は、特にmap呌び出しを評䟡する必芁がありたす
fぞの匕数を生成したす。

-erik

function fmap{T,D}(f::Function, xs::Array{T,D}, yss::Array...;
                   R::Type=eltype(f))
    [<strong i="26">@assert</strong> size(ys) == size(xs) for ys in yss]
    rs = similar(xs, R)
    <strong i="27">@simd</strong> for i in 1:length(xs)
        <strong i="28">@inbounds</strong> rs[i] = f(xs[i], map(ys->ys[i], yss)...)
    end
    rs::Array{R,D}
end

2014幎12月19日金曜日12:46 PM、スティヌブンG.ゞョン゜ン<
[email protected]>は次のように曞いおいたす

助けを求めるゞェフは耇数を披露する玠晎らしい䟋を探しおいたす
ディスパッチそしお倚分ステヌゞングされた関数、
これらの機胜のない蚀語では、より難しく/より遅くなりたす。

このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/JuliaLang/julia/issues/8839#issuecomment-67671331 。

゚リック・シュネッタヌ[email protected]
http://www.perimeterinstitute.ca/personal/eschnetter/

゚リック・シュネッタヌ[email protected]
http://www.perimeterinstitute.ca/personal/eschnetter/

@ timholy 、MatlabずNumPyにもサブ配列/スラむスがあるので、なぜここで倚重ディスパッチが䞍可欠であるず䞻匵できるのでしょうか。

実装のしやすさ 私が知る限り、どの蚀語でも耇数のディスパッチをシミュレヌトできるので、それは䜕にずっおも必須ではありたせん。

ただ決めおいないものを掚枬するのは良くないかもしれたせん。 https://github.com/JuliaLang/julia/issues/9297には、効率的なUTF-8バッファヌ䜍眮ず、穎のない䟿利なむンデックス䜜成の䞡方を可胜にする提案があり、必芁なずきに䟿利な挔算を実行できたす。 正芏衚珟ず怜玢はラップされた内郚むンデックスを返したすが、 s[2]は、最初の文字の゚ンコヌドに䜿甚されたバむト数に関係なく、2番目の文字を䞎えるこずができたす。

圌らはAbstractArraysの効率的なサブアレむ/スラむスを䜜成できたすか、それずもそれらの実装はメモリの連続したブロックに察しおのみ機胜したすか 芪配列に連続したメモリがあるず想定できる堎合、これを解決するのはそれほど難しい問題ではありたせん。 あなたがその仮定をしないずき、それはより面癜くなりたす。

はい、それが私たちが探しおいる重芁な機胜です。耇数のディスパッチやステヌゞングされた関数で䜕かをうたく実行できるだけでなく、他の蚀語でこれらの機胜がないため、機胜の実装がはるかに困難になりたした理想的には非垞に誰もそれを詊みたこずがないほど難しい。

@ timholy 、NumPy配列は、各次元の固定ストラむドによっお特城付けられたすが、必ずしも隣接しおいる必芁はありたせん基本的にDenseArrayず同等です。 このプロパティはスラむス時に保持されるため、スラむス自䜓をスラむスするこずができたす。

aberrantは、これらの方針に沿っおIRCに぀いおいく぀かの良い質問をしたした。 私は以䞋のコメントの関連する郚分だけを抜出しようずしたした無関係な䌚話ず通知の䞭から

2014-12-10 (EST)
11:41 aberrant: “Organizing methods into function objects rather than having named bags of methods “inside” each object ends up being a highly beneficial aspect of the language design.”
11:41 aberrant: why?
12:20 Travisty: aberrant: I can’t speak for them, but I imagine that the argument is that it’s a nice separation of concerns. I have data (which I will represent with types) and routines for operating on that data (which I will represent as functions), and rather than having some routines belong to specific types, they are kept separate
12:21 aberrant: Travisty: I sort of understand the argument, but I’m not sure I agree with it :)
12:22 Travisty: aberrant: Yeah, sure. This is the sort of thing that may be hard to argue about from first principles, and it may be useful to look at examples. I think one place where this design simplified things was in impementing the standard mathematical functions on all of the numeric types, and dealing with conversion
12:22 Travisty: I’m not sure, but I think the solution in julia is quite elegant because of this design and it would be a bit trickier to do it in the traditional OOP setting
12:23 aberrant: Travisty: perhaps. I need to think about it some more. I really like pure OO, and this is a bit of a change that I need to wrap my head around.
...
12:54 vtjnash: julia has a convention that a method name will end in a ! to signify that the method will mutate one of it's arguments
12:56 aberrant: that’s one thing I sorely miss in python. foo.sort() vs foo.sorted() always confused me.
12:57 vtjnash: except that in python, isn't it sort(foo) vs sorted(foo) ?
12:57 aberrant: it might be :)
12:58 aberrant: no
12:58 aberrant: it’s foo.sort vs sorted(foo)
12:58 vtjnash: ah
12:58 aberrant: foo.sort modifies foo in place.
12:58 aberrant: see?
12:58 aberrant: that’s what I mean.
12:58 vtjnash: well, anyways, that's an unintentional example of why . oriented programming is a pain
12:58 aberrant: sort(foo) vs sort!(foo) makes much more sense.
12:59 vtjnash: python made a reasonable choice there
12:59 vtjnash: and tries to help you remember
12:59 vtjnash: but it still was forced to make some decision
2014-12-14 (EST)
15:25 aberrant: there’s no way to do type constants, I guess?
15:25 aberrant: http://dpaste.com/18AEHBG
15:25 aberrant: like that
15:27 vtjnash: no. that declares a local variable inside the type (can be seen by the constructors and other methods in there)
15:27 vtjnash: instead, define `y(::Foo) = 6`
15:28 aberrant: is that mutable?
15:29 aberrant: hm, yeah, that’s not what I want though.
15:29 aberrant: but I guess I can use it.
15:30 vtjnash: not what you want, or not what other languages do?
15:31 vtjnash: multiple dispatch in julia allows you to collapse 4 or 5 or more different constructs needed by other OO languages into one abstraction
15:33 aberrant: oh, I see how it works.
15:33 aberrant: well, it’s a function and therefore more overhead
15:33 aberrant: basically, I want to set the “bitwidth” of an IPv4 address to be 32, and the “bitwidth” of an IPv6 address to be 128, and then be able to write a function that takes ::IPAddr and uses the appropriate bitwidth.
15:34 aberrant: I can do this with the function, but it seems like overhead to have a function return a constant.
15:35 aberrant: e.g., http://dpaste.com/3RXRCAG
15:36 vtjnash: don't assume that a function has more overhead
15:36 vtjnash: in this case, it would actually have less overhead
15:54 aberrant: wow, ok
15:54 aberrant: I don’t see how, but I’ll take your word for it :)
15:59 vtjnash: inlining
...
18:04 aberrant: there’s no way to associate a constant inside a type?
18:04 aberrant: it would make my life a whole lot easier.
18:04 mlubin: aberrant: t.constant or constant(t) is just a syntax difference
18:04 mlubin: julia uses the latter
18:05 aberrant: mlubin: the issue is that you have to instantiate the type first.
18:05 aberrant: mlubin: I need the equivalent of a class property.
18:05 mlubin: constant(::Type{Int32}) = 10
18:05 mlubin: constant(Int32)
18:05 aberrant: oh. wow.
18:06 Travisty: The only member of Type{T} is T, which is why this works
18:06 mlubin: mind=blown? ;)
18:06 aberrant: yeah
18:06 aberrant: that’s jacked up
18:07 aberrant: there’s NO WAY I would have ever thought of that on my own :(
18:07 mlubin: once you see it for the first time it becomes a lot more intuitive
18:07 aberrant: ipaddrwidth(::Type{IPv4}) = uint8(32)
18:08 aberrant: w00t
18:10 aberrant: can I do a const in front of that?
18:11 Travisty: I don’t think so, but usually when julia generates code, it should be inlined so that just the constant uint8(32) appears, instead of a function call

その他の䟋をお探しの堎合 https //github.com/JuliaLang/julia/pull/7291

ネットコヌドの削枛は、6K C ++から玄1KJuliaになりたす。 初期のパフォヌマンスベンチマヌクは、ネむティブC ++の2倍匱であるこずを瀺しおいたす。

挔算子+-* /、Int、Floatから数倀出力フォヌマットたで、蚀語自䜓でprintfの実装を芁求でき、libcバヌゞョンのわずかなマヌゞン内でベンチマヌクできる蚀語はいく぀ありたすか 倚分C ++ Cはこれを䞻匵するこずさえできたせん挔算子のオヌバヌロヌドはありたせん。

Python / MATLAB /など。 これのビットを䞻匵するこずができるかもしれたせんが、MATLABで文字列挔算子を䜿甚しようずしたこずがありたすか

これは非垞に興味深い議論であり、いく぀かのポむントを远加したいず思いたす。

  • 実際には答えられおいないように思われるのは、JuliaがC ++のポリモヌフィズムず速床的に比范する方法です。 C ++では、テンプレヌトを介した静的ポリモヌフィズム、たたはOOを介した動的ポリモヌフィズムを持぀こずができたす。 しかし、埌者はvtableを必芁ずし、特にタむトなルヌプでそのようなものを呌び出す堎合は、垞に少し遅くなりたす。 このため、高速ではないため、配列アクセス挔算子が過負荷になるこずはありたせん。 たずえば、Eigenは静的ポリモヌフィズムを䜿甚したす。
  • Juliaでは、仮想関数ず非仮想関数の間に宛先はなく、パフォヌマンスのペナルティはありたせん。 私の理解では、Juliaは「オンザフラむ」でコヌドを生成できるため、高速コヌドを生成できたすが、C ++ランタむムでは、生成されたコヌドを倉曎できなくなりたす。 さらに、Juliaでは、実行時にむンラむン化を行うこずができたす。 したがっお、関数呌び出しのオヌバヌヘッドはありたせん。 ゞュリアでは、自動的に行われるため、これらすべおに぀いお考える必芁はありたせん。
  • 再び1぀の倧きなこずはオヌバヌヘッドがなく、C ++が持぀すべおの苊痛のないゞェネリックコンパむル時間を芋るゞェネリックを実装する方法はさたざたであり、IMHO JuliaはCず同じモデルを䜿甚するため、これは完党に新しいものではない可胜性がありたすゞェフス論文。 しかし、それでも私はこれが論文で議論する䜕かかもしれないず思いたす。

倚重ディスパッチがどれほど効果的であるかを説明するのがどれほど難しいかは、それ自䜓非垞に興味深いものです。

私たちが今同じペヌゞにいるこずをうれしく思いたす。 はい、私たちの新しいSubArrayは、ストラむドに䟝存しおいたせん。たた、線圢むンデックスを必芁ずしたせんただし、䜿甚でき、効率的である堎合はデフォルトで䜿甚できたす。 したがっお、これらはAbstractArrayに察しお効率的に機胜し、「非ストラむド」 Vector{Int}むンデックスビュヌもサポヌトしたす。

明確にするために、私は新しいサブアレむを、倚重ディスパッチではなく、䞻に段階的な関数の䟋ずしお提瀺したした。 ずは蚀うものの、珟圚のスキヌムは、倚重ディスパッチなしで構築ステップで厩壊したす。 slice(::AbstractArray, ::UnitRange{Int}, ::Int, ::Vector{Int})やslice(::AbstractArray, ::Int, ::UnitRange{Int}, ::UnitRange{Int})などに察しお完党に異なるコンストラクタヌメ゜ッドを呌び出したす。これらのコンストラクタヌは段階的な関数によっお生成されたすが、システムが機胜するには、耇数のディスパッチが必芁です。

個別の関数がない堎合、varargsコンストラクタヌは、むンデックスタプルの゚ントリのルヌプが型安定ではないずいう事実に盎面する必芁がありたす。ルヌプ内の個々のむンデックスを凊理するには、それらを名前付きスカラヌ倉数に割り圓おる必芁があり、その倉数は次のようになりたす。入力タプルは正しく入力できたすが、正しく入力されないこずが保蚌されおいたす。 もちろん、ステヌゞングされた関数は、はるかに倚くのこずを行いたす。ほずんどすべおの「難しい」決定---これをスラむスされたディメンションずしおドロップするのか、それずも保持するのか、そしおオブゞェクトの内郚衚珟にどのような圱響がありたすか ---コンパむル時に䜜成できるため、ランタむムコンストラクタヌを非垞に簡単な操䜜に枛らすこずができたす。 たたたた、特定の些现な操䜜が入力タむプの組み合わせごずに異なるため、この些现なこずを利甚しお構築を高速化するには、入力タむプの組み合わせごずにカスタマむズされたさたざたなメ゜ッドを呌び出す必芁がありたす。 これが、ステヌゞングされた関数ず倚重ディスパッチの䞡方が必芁な理由です。

個人的には、段階的な関数ず耇数のディスパッチを組み合わせなくおも、これたで行っおきたこずを実行できるずは思えたせん。たた、juliaは、あらゆる蚀語の䞭で最も柔軟で効率的な配列ビュヌを備えおいる可胜性がありたす。 しかし、私はこの問題に぀いお実際に研究を行ったふりをしおいたせん。

これは、公開甚にSubArrayを䜜成する必芁があるかどうか疑問に思いたす---ここに䜕か新しいものがあるようです。

@StefanKarpinski 自己批刀的にしたしょうたぶん私たちはただそれを曞いおいたせんか

@timholy実際には、ここで2぀のこずがわかりたす。ステヌゞングされた関数完党には理解されおいないこずを認める必芁がありたすず、JuliaがC ++仮想関数ずテンプレヌトナニバヌスにどのように適合するかCずJavaはここで䌌おいたす。

C ++の比范では、タむミングを取り、コンパむル時のポリモヌフィズムに到達できるこずを実隓的に蚌明するこずは非垞に興味深いでしょうこれは私たちが行うず確信しおいたす

私がしばらくの間定匏化したかったもう1぀のこずは、C ++の抂念ラむトに関しおJuliaがC ++ずどのように比范されるかです。 私たちが持っおいるサブタむピングは、C ++コンセプトの倧郚分です。

これをチェックするために、たくさんのC ++コヌドを蚘述し、タむミングを実行する必芁さえありたすか

A = rand(3,5)
<strong i="6">@code_llvm</strong> slice(A, 2, :)
<strong i="7">@code_llvm</strong> slice(A, :, 2)

基本的に、そこにはロヌドおよびストア操䜜぀たり、メモリアクセスしかありたせん。

@timholyこれを曞く䟡倀があるず思いたす。 Nd配列を実装する倚くのシステムは、最初の数次元に特化した実装を持っおおり、それ以倖の堎合は䞀般的に遅いものにフォヌルバックするず思いたすただし怜蚌はしおいたせん。新しい実装の堎合はそうではありたせん。

もう1぀の関連するケヌスは、効率的なスパヌスNdストアの䜜成です配列は䞀般的な特殊なケヌスです。

ティム、

はい、確かに結果のアセンブリコヌドを芋るのは玠晎らしいツヌルです。 しかし、それでも、これは、C ++実装では仮想関数を考慮に入れる必芁がある、より倧きなコンテキストで比范する必芁があるず思いたす。

私の掚枬では、それほど高速multiple dispatchではありたせんが、実行時にむンラむン化できるため、仮想関数ゞェネリック関数を関数呌び出しの間接参照なしで効率的な呜什に倉換できたす。

これが本圓の堎合私が間違っおいる堎合は蚂正しおください@JeffBezanson @vtjnash @stevengj @timholy  multiple dispatchの倍数は、ゞュリアがそれほど速くビヌむングする理由ではありたせんが、特定のコヌドを定匏化できるずいうきちんずした偎面に圱響したすより良い単䞀のディスパッチが制限されおいる堎合

私はおそらく理解しおいないだけですが、あなたが䜕を区別しおいるのかわかりたせん。 ゞュリアでは、「むンラむン」ず「ランタむム」は実際には䞀緒になっおいないようです。 むンラむン化は、型掚論䞭、぀たりコンパむル時に実行されたす。 倚重ディスパッチは、掚枬されたタむプに適切な方法を遞択するために䜿甚されたす。

ここでの混乱は、C ++の「コンパむル時」ず「実行時」をJuliaのものず比范できないこずです。 Codegenは「実行時」に発生する可胜性があるため、 include("myscript.jl")を実行するずむンラむン化が実行されるず思いたす。 そしお、「ランタむム」がC ++の芳点からそのための正しい蚀葉でなくおも、それは「ランタむム」です。

たた、さたざたなタむプでのディスパッチはvtableのようなものですが、より䞀般的ではありたせんか

これは、公開甚にSubArrayを䜜成する必芁があるかどうか疑問に思いたす---ここに䜕か新しいものがあるようです。

暙準的なトピックからは少し遠いですが、JSSぞの提出を怜蚎するこずをお勧めしたす。 ゞュリアの蚘事がもっず必芁です。

倚くの人がスピヌドを䞊げるこずができるので、ティムがこの䜜業を最初に説明するブログ投皿を曞いたら、私はそれが倧奜きです。 JSSは玠晎らしいアむデアであり、おそらくデヌタフレヌムずディストリビュヌションで行われた基本的な䜜業のいく぀かも曞き留める䟡倀がありたすか 私は確かにそれを読むのを楜しみたす。

さお、私がそれを思い぀いたのは、その倚くが曞かれおいるずいうこずですhttp //docs.julialang.org/en/latest/devdocs/subarrays/。 出版物に぀いおは、もっず詳しく調べたいず思うでしょうが、これはかなりの数の䞻芁な党䜓像のポむントに圓おはたりたす。

@stevengjが倚重ディスパッチに぀いお提起した質問に察しお、倚重ディスパッチがなければ、juliaでベヌスラむブラリを䜜成するこずはかなり難しいず思いたす。 私はここで誰もがすでに知っおいるこずを蚀っおいたす、そしおこれがここで提起された理由のために説埗力のある䟋ではないかどうか疑問に思いたす。

番号の操䜜や倉換/プロモヌションなどの詳现は、耇数のディスパッチず耇雑に結び぀いおいたす。 倚重ディスパッチは、コンパむラでの型掚論をコヌドでの型の䜿甚方法に本質的に公開するものであるため、汎甚的で高速な数倀ベヌスラむブラリを䜜成できたす。 あなたが行ったステヌトメントを匕甚するず、それはコンパむラからラむブラリぞのポリシヌ䜜成を分離するのに圹立ちたす。 たずえば、 @ JeffBezansonは、Scheme仕様がそのスペヌスの1/3を数倀の詳现にどのように費やしおいるかを䞀床私に瀺したした。

倚くのむンタプリタシステムは、倚くの堎合、䞀般的な型を持ち、実行時にオブゞェクトの型を怜査しお、実行するコヌドを決定したす。 倚くの堎合、タむプごずにベヌスラむブラリのC / C ++ / Fortranに個別の実装があり、コヌドベヌスのデバッグが倧きく困難になりたす。 倚くの堎合、これらは倖郚マクロシステムを介しお生成されたすが、C ++テンプレヌトを䜿甚するこずで、この特定の問題を回避できるようになりたした。 これらの堎合でも、2぀の蚀語ず型掚論の問題が残っおいたす。

あるレベルでは、ベクトル化ずは、実行時に型を決定し、適切なコヌド遞択を行うためのコストを償华する科孊蚀語の数です。 ゞュリアでは、型掚論、倚重ディスパッチ、ゞェネリックプログラミングを組み合わせるこずで、䞡方のコストが倧幅に削枛され、型なしで䞀般的なベクトル化解陀されたコヌドCを蚘述できるようになりたす。

1぀の䟋は、PR9198のMathConst 無理数を衚すずの䞍等匏の比范です。

https://github.com/JuliaLang/julia/pull/9198/files#diff -e247e18c426659d185379c7c96c1899dR29

  • FloatingPoint vs MathConstは、フロヌトを定数の䞊/䞋のフロヌトず比范したす
  • Rational{T} vs MathConst 有界敎数型の堎合T は、型で衚珟できる最も近い有理数を芋぀けたす。 次に、それが真の䞍合理なタむプの䞊にあるか䞋にあるかに基づいおいたす。

これを実珟可胜にするのは、コンパむル時にRationalおよびBigFloat機胜に簡単にアクセスできるこずです。 マクロプリプロセッサのようなものを䜿甚するこずは可胜かもしれたせんが、それは本質的にすべおの機胜の2぀の実装を必芁ずしたす。

この問題に関する小さな曎新がありたす。 ドキュメントは珟圚䞀般に公開されおいたす https //github.com/JeffBezanson/phdthesis

本日、私はある皮のドラフトを自䞻的な期限たでにリリヌスしたす。 ドラフトではありたせん。 倚くの郚分が完党に欠萜しおいたす。 たた、TeXコメント内にあるもの、たたは過去のバヌゞョン履歎にのみ存圚するものに぀いおも責任を負いたせん:)

すべおのフィヌドバックを歓迎したす 特に、蚀語を䞊手く芋せおくれるゞュリアコヌドの良い䟋がある堎合、特にそれなしでは実行するのが難しいこずは䜕でも。 垞に重芁な倚重ディスパッチの良い䟋を探しおいたす。

これを公開しおいただきありがずうございたす。 SGJが䜿甚したリンクをたどっお404をヒットしようずしたずき、私は驚いた。

䞉角行列挔算は、ゞュリアの倚重ディスパッチの有甚性の䟋かもしれたせん。 ここでUpperTriangular+UpperTriangular=UpperTriangularですが、 UpperTriangular+LowerTriangular=Matrixです。

たた、芁玠タむプのプロモヌションに぀いおも話したした。 必芁のないずきは昇進を避けるこずができるのが奜きです。

julia> Base.LinAlg.UnitLowerTriangular(ones(Int, 3, 3))\[1,2,3]
3-element Array{Int64,1}:
 1
 1
 1

julia> Base.LinAlg.UnitLowerTriangular(ones(Int, 3, 3))\[1,2,3.0]
3-element Array{Float64,1}:
 1.0
 1.0
 1.0

これがゞュリアにどれほど具䜓的であるかは蚀えたせんが、私たちが芋たように、少なくずもEigenは昇進を管理しないように芋えたしたが、線圢代数挔算の䞋で芁玠タむプが安定しおいる必芁がありたす。

ゞェフは今、最終段階に入っおいるこずを願っおいたす。そのため、圌の論文に察するフィヌドバックず修正䞊蚘のgithubリポゞトリを参照は、特に歓迎されたす。

タむプミス、参照の欠萜などのPRを自由に提出しおください。

@stevengjここで防衛スケゞュヌルの発衚を期埅すべきですか

はい。

圌がすでにMITで仕事をしおいるこずを願っおいたす...たたは圌が玠晎らしいゞュリアの仕事を続ける堎所ならどこでも...今圌の論文を読んでいたす...玠晎らしいもの、IMO

@andreasnoack少し難解ですが、ずにかく面癜いです。矢印行列リングタむプを定矩し、ベヌスからコレスキヌ分解を適甚しお、矢印行列の矢印行列のコレスキヌ分解の構造がどのように芋えるかを確認したす。 https://gist.github.com/mschauer/c325ff89cd378fe7ecd6  "A"矢印マトリックス、 "F"完党マトリックス、 "L"䞋半分矢印 "。

@ScottPJonesありがずう!!

防衛予定5月13日氎曜日午埌1時StataD-463。

@JeffBezansonは、replay.csail.mit.eduを通じお蚘録する予定ですか

...倚分私はそれを忘れたいです... :)

それが最埌のチェックボックスの目的ではありたせんか

あなたは_本圓に_あなたがアドレスを䞎えるべきであるず確信しおいたすか あなたはあなたの論文の眲名されたコピヌを望んでいるファンの男の子に襲われるかもしれたせん ニダリ

私はすでにチケットを持っおいたす。 闇垂堎での䟡栌はすでに800ドルに達しおいるず聞きたした。

Stata D-463は私の日にはありたせんでした...私は友人を蚪ねるためにそしおNEデヌタベヌスの日のためだけにそこにいたした...それは十分に倧きくなるでしょうか きっず圌は10-250を必芁ずするでしょう

公匏にはD-463は48脚の怅子に適合したす。 それだけでは䞍十分だず思われる堎合は、より広い郚屋を確保するこずを怜蚎できたす。

私はあなたがあなたがしたこずを本圓に感謝しおいるずは思いたせん ファン党員が珟れた堎合、おそらく10-250は十分な倧きさではないでしょう...今すぐKresgeを予玄しおください

テクニカルコンピュヌティングにおける抜象化

  • 博士課皋の候補者ゞェフ・ベザン゜ン
  • 論文指導教員アラン・゚デルマン教授
  • 論文委員䌚スティヌブン・ゞョン゜ン教授、サマン・アマラシンゲ教授、ゞェリヌ・サスマン教授
  • 日付2015幎5月13日氎曜日
  • 時間午埌1時
  • 堎所MITキャンパス、32-D463

_アレむベヌスのプログラミング環境は、科孊的および技術的なコンピュヌティングで人気がありたす。 これらのシステムは、盞互䜜甚のための高玚蚀語ずペアになった組み蟌み関数ラむブラリで構成されおいたす。 ラむブラリはうたく機胜したすが、これらの蚀語でのスクリプト䜜成は必然的に遅く、゚ンゞニアリングの英雄的な偉業だけがこの問題を郚分的に改善できるず広く信じられおいたす。

_この論文は、本圓に必芁なのはこの機胜のためのより䞀貫性のある構造であるず䞻匵しおいたす。 1぀を芋぀けるには、テクニカルコンピュヌティングが実際に䜕であるかを尋ねる必芁がありたす。 この論文は、この皮のプログラミングは、挔算子の耇雑さずコヌドの特殊化に重点を眮いおいるこずを特城ずし、蚀語はこれらの芁件によりよく適合するように蚭蚈できるこずを瀺唆しおいたす。

_重芁なアむデアは、code_ _selection __with code_ _specialization _ 、_ generic関数ずデヌタフロヌ型掚論を䜿甚しお統合するこずです。 このようなシステムは、非効率的なコンパむルや、䜕に特化するかに぀いおの䞍確実性に悩たされる可胜性がありたす。 十分に匷力なタむプベヌスのディスパッチがこれらの問題に察凊するこずを瀺したす。 結果ずしお埗られる蚀語であるJuliaは、テクニカルコンピュヌティングナヌザヌが期埅する倚くの生産的な機胜のQuineスタむルの「排陀による説明」を実珟したす。_

芳客が利甚できる圌の論文の印刷されたコピヌはありたすか

それが私が望んでいるこずです...私は10-15幎でサむン入りのコピヌを売っおEbayでいくらかの倧金を埗るこずができるず思いたす私が私の子䟛の倧孊教育を完枈するためにそれが本圓に必芁になるずき...特に。圌らが行きたいず蚀ったずころに行くなら...ニダリず:)

頑匵っお、ゞェフ

幞運を もし私がその地域にいたら、私は@ScottPJonesが蚀及するファンボヌむの1人になるでしょう

@ScottPJones +1

足を折っお、ゞェフ

頑匵っお、ゞェフ

幞運を @ゞェフベザン゜ン

@JeffBezanson幞運!!

うたくいけば、私は垭を埗るこずができたす。

幞運を

私は圌に10-250を予玄すべきだったず蚀った

私のiPhoneから送信された

2015幎5月13日午前11時53分、 YichaoYunotifications @ github.comは次のように曞いおいたす。

@JeffBezanson幞運!!

うたくいけば、私は垭を埗るこずができたす。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください。

幞運を

同䞊

幞いなこずに、私は垭を確保するのに十分早く着きたした...そしお私は正しかったですい぀ものようにニダリず:)圌は本圓にもっず倧きな郚屋を予玄するべきでした

img_0994

おめでずう

修理枈み。

ただチェックされおいないチェックボックスが1぀ありたす。 うたくいきたす。

shipit  tropical_drink  beers  cocktail  tada 

いいぞ

おめでずう、ベザン゜ン博士

おめでずう、ゞェフ

+1

ブラボヌ

最埌のチェックボックスは、ケンタッキヌバヌボンりむスキヌで埋められたした。

ゞェフおめでずう

2015幎5月13日氎曜日午埌1時44分、Mike [email protected]
曞きたした

+1

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/JuliaLang/julia/issues/8839#issuecomment-101772806 。

おめでずう

ゞェフおめでずう beers  beers  smile

これは玠晎らしい おめでずう、ゞェフ。 花火

玠晎らしいニュヌス。 おめでずう、ゞェフ

おめでずう

おめでずうございたす

りヌプりヌプおめでずうゞェフ

おめでずう、ベザン゜ン博士

写真を投皿しおいただきありがずうございたす、@ ScottPJones。 @jiahao 、写真もあるず思いたすか

ゞェフおめでずうございたす。 このPHDで終わったあなたの仕事は、私たちの倚くに圱響を䞎えたした。 それは科孊蚈算に倧きな圱響を䞎え、すでに倧きな圱響を䞎えたす ロックオン

おめでずう。

すごい

ゞェフおめでずう

玠晎らしい、おめでずうございたす

ベザン゜ン博士おめでずう

芗き芋したい人のための論文

https://github.com/JeffBezanson/phdthesis/blob/master/main.pdf

おめでずうございたす

おめでずう

おめでずう

おめでずう+1

GitHubがすべおの写真を回転させるこずにした理由はわかりたせんが、ここにありたす。

2015-05-13 13 11 16

2015-05-13 14 00 17

2015-05-13 14 26 23

2015-05-13 14 45 00

2015-05-13 14 46 56

閉䌚匏ビデオの発行http //youtu.be/hGpLOZX6CEY

アレフれロおめでずう、ゞェフ シアトルに来たこずがあれば、お祝いの飲み物を買わせおください。 :)

ゞェフおめでずう。 コミュニティずしおのあなたの仕事を祝うのはずおもいい気分です。

おめでずう

@jiahao 、謝蟞ペヌゞの補足資料ずしお、ゞュリアの最新の䞖界を再実行する䟡倀があるかもしれたせん:)

みなさん、ありがずうございたした。

残念ながら、私の論文は実際には完成しおいたせんが、うたくいけばすぐに完成するでしょう...

もう少し写真がありたす。目を芚たした埌、ゞェフに写真を送りたす圌の母芪、ずおも玠敵な女性のために_ Dr._ベザン゜ンは、必芁に応じおここに写真を投皿できたす...

ただ完成しおない ゞェリヌはあなたにその血たみれの「構文」をすべお削陀しお、S匏で曞かせおくれるように頌んだのですか

Macを䜿甚しおいる@JeffBezansonは、私が今たで芋たず思っおいた写真ではありたせん。

わヌい

おめでずう

池のこちら偎のすべおのファンからよくやった。

ただ完成しおない ゞェリヌはあなたにその血たみれの「構文」をすべお削陀しお、S匏で曞かせおくれるように頌んだのですか

あなたはそれを釘付けにしたした 冗談じゃないよ。 しかし、圌はオプションのs-exprモヌドに萜ち着きたす。

プレれンテヌションの埌で圌ず話しおいたした...圌はあなたのものが奜きでしたが、実際にはすべおの構文を気にしたせんでした...それは_so_だけです...圌はSchemeマニュアルがいかに小さいかを私に思い出させたしたgrinning6.001 [最初の孊期に教えられた]で圌を迎えたずき、MacLispに小さなSchemeむンタヌプリタヌを実装する必芁がありたした... Schemeはずおも小さかったので、かなり実行可胜でした...

そしお、䌚瀟甚のバヌボンのボトルを䜿えば、すぐにそれをノックアりトできるず確信しおいたす残っおいる堎合は;-)

スキヌムマニュアルの長さに぀いお蚀えば、それはおかしいです。図曞通で定矩されおいるゞュリアでは、その倧郚分が数字の振る舞いを文曞化するこずに専念しおいたす。 Juliaは、スキヌムよりも小さなコア蚀語になる可胜性がありたすもちろん、LLVM仕様をそれにステヌプルで留めた堎合を陀きたす。

賛成か反察かを問わず、構文が匷調されすぎおいたす。 http://www.schemers.org/Documents/Standards/R5RS/HTML/のセクション7.1も確認しおください。 Schemeの構文は人々が考えるよりも耇雑です

Juliaは、スキヌムよりも小さなコア蚀語になる可胜性がありたすもちろん、LLVM仕様をそれにステヌプルで留めた堎合を陀きたす。

はい、ゞュリアは骚がいいです

叀い@sexprマクロを掘り䞋げる時が来たしたか

卒業おめでずう、そしおゞュリアず䞀緒に匕き出したもの

cakeおめでずうございたす

おめでずうございたす@JeffBezanson

おめでずう 

+1

@boyers 長い間あっおいたせんでしたね

あなたたちを欠堎 

おめでずう

質問です。PDFには、目次にリンクがなく、PDFメタデヌタに閲芧可胜なむンデックスがありたせん。
MITを卒業したプログラマヌラむタヌが前文に\ usepackage {hyperref}を远加するのが難しいのはなぜですか

それは、あなたがただスキップするのではなく、すべおを読むこずになっおいるからです。 ;-)

しかし、はい、hyperrefはこれをはるかにアクセスしやすくしたす。

リンクを远加したら、党郚読むこずをお玄束したすP

おめでずう。 自由が埅っおいたす。

おめでずう、ベザン゜ン博士

@ nicola-gigante、プルリク゚ストを行うこずができたす smile:。

最高の論文賞を求めおロビヌ掻動をするこずはできたすか

http://awards.acm.org/doctoral_dissertation/nominations.cfm

おめでずうございたす!!!

@ jpfairbanks-良いアむデアです しかし、それは圌の論文アドバむザヌによっお提出されなければなりたせん...ペスタヌアラン゚デルマン、私は思う...

ええ、それは顧問による指名ず5通の支持が必芁です。 に基づく
この問題私は少なくずも5人が圌がそれに倀するず思うず思いたす。

サポヌトの5文字に制限されおいたすか たた、圌がそれに倀するず思う実際の数は、少なくずも数桁倚いです

@JeffBezanson おめでずうございたす

@alanedelman  @jpfairbanksには良い点があるず思いたす。ゞェフは、 ACM博士論文賞にノミネヌトされるべきです。

@JeffBezansonよくやったし、それに倀する

@ScottPJones 「さらに、論文の圱響に関する远加の掞察たたは蚌拠を提䟛できる分野の専門家からのサポヌトレタヌを少なくずも3぀、5぀以䞋含める必芁がありたす。」

たぶん、ゞェリヌは圌に1぀曞くでしょう圌がs-exprモヌドを远加した埌grinning

ハッカヌニュヌスのフロントペヌゞ:-)おめでずう、ゞェフ。

@ nicola-giganteそうです、hyperrefを远加したす。

皆様、ありがずうございたした。 あなたの感謝のすべおが究極の賞です。

@jiahaoブラりザが気にしないEXIFロヌテヌションデヌタがあるからです。 ほずんどの時間。 Chromeは、画像が独自のりィンドりである堎合にのみEXIFデヌタを考慮したす。 右クリックしお[新しいタブで開く]をクリックするず、正しい方向が衚瀺されたす。

EXIFメタデヌタストリッパヌを䜿甚しお、それを取り陀き、「適切な」方法で回転させるこずができたす。

ACM論文賞のノミネヌトには+1。

掚薊の締め切りは2015幎10月31日です。

http://awards.acm.org/doctoral_dissertation/nominations.cfm

ACMが圌らぞの著䜜暩の譲枡ず独占的な出版暩を芁求するのは奜きではありたせん。 いずれにせよ、それは今でも䟡倀があり、暩嚁がありたす。

おめでずうございたす

独占出版暩 私はサむン入りのコピヌにディブを持っおいたすたたは2぀... 10〜15幎でe-bayで販売するために1぀が必芁です、もう1぀は自分のために保぀ためにニダリず...それがロックされる前にそれを取埗する必芁がありたすACM
もちろん、それはおそらくそれがメンバヌのためにACMのデゞタルラむブラリで利甚可胜になるこずを意味したす

論文に眲名するために私に枡されたら、私はあらゆる意図を持っおいたす
さたざたな賞に論文をノミネヌトするこずの:-)

2015幎5月17日午前8時49分、スコットP.ゞョヌンズ[email protected]
曞きたした

独占出版暩 サむン入りのコピヌたたは
2぀... 1぀は10〜15幎でe-bayで販売する必芁があり、もう1぀は自分のために保管する必芁がありたす[画像
grinning]... ACMによっおロックされる前にそれを取埗する必芁がありたす
もちろん、それはおそらくそれがACMで利甚可胜になるこずを意味したす
メンバヌのためのデゞタルラむブラリ

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/JuliaLang/julia/issues/8839#issuecomment-102801616 。

@JeffBezansonからのコメントはありたせん...私は圌が祝っおいるこずを_願っおいたす_圌の最埌のボックスをもっずチェックしおください、圌がs-exprモヌドを機胜させるたで、GJSによっおどこかの郚屋に閉じ蟌められおいたせん

おめでずう

おめでずう、@ JeffBezanson

遅ればせながらおめでずうございたす

曎新ドキュメントを送信したした。 送信されたバヌゞョンはhttps://github.com/JeffBezanson/phdthesis/tree/876be73a5aab9b034fac3eb9ea9d8f96713f786fです。

私はそれが倚くの点で䞍足しおいるず確信しおいたす。 しかたがない。 うたくいけば、そこには本圓に悪いこずは䜕もありたせん。

良い。 本圓に博士号を取埗したした。おめでずうございたす。

おめでずう、ゞェフ 玠晎らしい成果。 終わっおよかったず思いたす。

party

あなたの論文がJuliaのドキュメントのいく぀かの穎を埋めおいるこずはすでにわかっおいるので、明らかに非垞に圹立぀でしょう。 すべおのドキュメントには欠陥がありたす。 私たちの残りの郚分は、匷みに感銘を受けおいたす おめでずうございたす

そしおそれを共有しおくれおありがずう

うわヌ 匁護ず論文、およびそれらが意味し、衚す他のすべおの䜜業を終えたこずを祝犏したす。 あなたが達成したすべおのこずを認識するために、このマむルストヌンを持぀こずは玠晎らしいこずです。 私はあなたが誇りに思っおいるこずを願っおいたす

@JeffBezanson冷静になっお祝うために数日䌑むこずを蚈画しおいるこずを願っおいたす。あるいは、型システムのオヌバヌホヌルなどで祝うこずを蚈画しおいるこずを願っおいたす。 :-)

新しいPDFにhyperrefが含たれおいるのは玠晎らしいこずです-閲芧したい人のために。 ゞュリアの出版物リストにも掲茉する必芁がありたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡

関連する問題

Keno picture Keno  Â·  3コメント

StefanKarpinski picture StefanKarpinski  Â·  3コメント

omus picture omus  Â·  3コメント

arshpreetsingh picture arshpreetsingh  Â·  3コメント

i-apellaniz picture i-apellaniz  Â·  3コメント