Julia: ์ œํ”„ ๋ฒ ์ž”์Šจ ๋ฐ•์‚ฌ

์— ๋งŒ๋“  2014๋…„ 10์›” 28์ผ  ยท  174์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: JuliaLang/julia

Julia์˜ ํ•ต์‹ฌ ์ €์ž ์ค‘ ํ•œ ๋ช…์ธ @JeffBezanson ์€ ๋ฌธ์ œ๊ฐ€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ด์ƒ์ ์œผ๋กœ๋Š” 2015๋…„ 1์›”๊นŒ์ง€ MIT๋ฅผ ์กธ์—…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ข…์†์„ฑ:

  • [x] ๋…ผ๋ฌธ ์ œ์•ˆ์„œ.
  • [x] ๋…ผ๋ฌธ ๊ฐœ์š”.
  • [x] ๋…ผ๋ฌธ ์œ„์›ํšŒ์™€์˜ ํšŒ์˜.
  • [x] ๊ณ ๋ฌธ์—๊ฒŒ ์ดˆ์•ˆ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.
  • [x] ์ผ์ • ๋ฐฉ์–ด.
  • [x] ์œ„์›ํšŒ์— ์ตœ์ข… ์ดˆ์•ˆ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.
  • [x] ๋ฐฉ์–ด.
  • [x] ์•Œ์ฝ”์˜ฌ.

์ด๊ฒƒ์€ ํŒ”์ด ๋ถ€๋Ÿฌ์ง€์ง€ ์•Š๊ณ  Julia ํ”„๋กœ์ ํŠธ์˜ ์žฅ๊ธฐ์ ์ธ ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์šฐ์„ ์ˆœ์œ„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ฐธ์กฐ: @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 ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์ œํ”„, ๋…ผ๋ฌธ ๋ถ„๊ธฐ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.)

๋˜ํ•œ ๋งˆ์ง€๋ง‰ ์ž‘์—…์˜ ์ˆœ์„œ๋Š” ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ”„๋กœ์„ธ์Šค ์ „๋ฐ˜์— ๊ฑธ์ณ ์ž์ฃผ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

*๋˜ํ•œ ์ด๋ฏธ ์žฌ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” _Close issue_ ํ–‰์‚ฌ์— ์ฐธ์„ํ•˜๊ธฐ๋ฅผ ๊ณ ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋กœ์ปฌ์—์„œ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. MIT ์ „์šฉ์ธ๊ฐ€์š”?

Julia์˜ ํ•ต์‹ฌ ์ €์ž ์ค‘ ํ•œ ๋ช…์ธ @JeffBezanson ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ํ•™์ž๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ PHD ๋…ผ๋ฌธ์˜ github ๋ฒ„์ „์ž…๋‹ˆ๊นŒ? Jeff๋Š” ์ œ์•ˆ์„œ๋กœ PR์„ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๊ณ  ์œ„์›ํšŒ์—์„œ ํ•ฉ๋ณ‘ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค...

+์ด๊ฒƒ์˜ ๋น ๋ฅธ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ •๋ณด!

๋ช‡ ๋‹ฌ ์ „์— IPython repo์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ 32์ผ ์ „์— ํ•ด๊ฒฐ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ปคํ”ผ, ์„ฑ๊ฐ€์‹  ์„œ๋ฅ˜ ์ž‘์—… ๋ฐ ์ฐฉ์•”๊ธฐ๋กœ ์ธํ•œ ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์˜ ๊ณ„ํš ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค !

์—…๋ฐ์ดํŠธ๋จ: Jeff๋Š” ๋…ผ๋ฌธ ์œ„์›ํšŒ๋ฅผ ๋งŒ๋‚˜ ๋Œ€๋žต์ ์ธ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง„ํ–‰๋˜๊ณ  ์žˆ๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค!

๊ทธ๋Ÿฌ๋‚˜ git log --date=short --all --since=22.days.ago --author="Jeff Bezanson" ๋Š” ์—ฌ์ „ํžˆ ๊ทธ๊ฐ€ ๋…ผ๋ฌธ์„ ์ž‘์„ฑํ•  ์‹œ๊ฐ„์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ฉด ๊ทธ๋Š” ์Šˆํผํžˆ์–ด๋กœ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๊ธ์ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๊ทธ๊ฐ€ ์Šˆํผํžˆ์–ด๋กœ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์‹ ๊ฒฝ์“ฐ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

juliatypes.jl๊ณผ ๊ด€๋ จ๋œ ์ปค๋ฐ‹์€ ๋…ผ๋ฌธ ์ž‘์—…๊ณผ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์žˆ๋Š” Julia์˜ ์œ ํ˜• ์‹œ์Šคํ…œ์„ ์„ค๋ช…ํ•˜๋ ค๋Š” ์‹œ๋„๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์œ ํ˜• ์‹œ์Šคํ…œ ์ž‘์—…์€ ์ด๋ฏธ ์ผ๋ถ€ ์‹ ๊ฒฝ์„ ๊ฑด๋“œ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค: https://twitter.com/plt_hulk/status/535045242920378369

๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์ง€๋งŒ Jeff์˜ ์ž‘์—…์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์‘๋‹ต์ธ์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์žฌ๋ฏธ์žˆ๋Š” ํŠธ์œ—.

@jiahao , ์ œ ๋Œ“๊ธ€์€ ๋Œ€๋ถ€๋ถ„ ํ˜€๋ฅผ ๋‚ด๋‘๋ฅผ ์ •๋„์˜€์Šต๋‹ˆ๋‹ค --- ์ €๋Š” ๋ฐ”๋กœ ๊ทธ ๋ถ€๋ถ„์ด ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ €๋Š” ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ์œ„ํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ค๋“ฌ์„ ๋•Œ ์ปค๋ฐ‹์„ ๋งŽ์ด ํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@timholy ์œ ๋จธ๊ฐ€ ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. :)

์šฐ๋ฆฌ ์ง€์—ญ ์ด๋ก  ํ˜‘๋ ฅ์ž ์ธ @jeanqasaur ๊ฐ€ ํŠธ์œ„ํ„ฐ์— ๊ฒŒ์‹œํ•œ ์•„๋ฆ„๋‹ค์šด Magritte ๊ฒฝ์˜ ๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ํƒœ๋งŒํ•œ ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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์™€ ๊ฐ™์€ ๋ณด๋‹ค ์ „ํ†ต์ ์ธ OO ์–ธ์–ด๋กœ ํ•  ๊ฒƒ์ธ๊ฐ€?

2014๋…„ 12์›” 19์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 1์‹œ 39๋ถ„, John Myles White ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

๋‚˜๋Š” Distributions ํŒจํ‚ค์ง€๊ฐ€ ์‹ค์ œ๋กœ ์—ฌ๋Ÿฌ ๋””์ŠคํŒจ์น˜๋ฅผ โ€‹โ€‹๋ณด์ด๊ฒŒ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์œ ์šฉํ•œ. rand(Gamma(1, 1), 5, 5) ๋Œ€ rand(Normal(0, 1),
3) ๋‹ค์Œ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ๋น„์šฉ ์—†์ด ํ‘œํ˜„๋ ฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
๋‹ค์ค‘ ํŒŒ๊ฒฌ.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/JuliaLang/julia/issues/8839#issuecomment -67678367.

ํ™•์ธ. kl(Normal(0, 1), Normal(0, 1)) vs kl(Normal(0, 1), Gamma(1, 1)) $ ์™€ ๊ฐ™์€ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ KL-divergence๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์˜ˆ์ œ๋กœ ๋Œ€์ฒดํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๋˜ํ•œ ์ถ”๊ฐ€ํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. #8235์˜ ๋‚ด ์ดˆ๊ธฐ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ธ์ƒ์ด _์—†๋Š”_ ์ค€๋น„๋œ ํ•จ์ˆ˜์™€ ๊ฐ™์„ ๊ฒƒ์ด๋ผ๋Š” ์ž ์žฌ์ ์œผ๋กœ ์œ ์šฉํ•œ ํ†ต๊ณ„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ดํฌ ํ™ˆ ๋ฉ”์‹œ์ง€: ์ฐจ์› 8์„ ํ†ตํ•ด ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด 5000๊ฐœ ์ด์ƒ์˜ ๊ฐœ๋ณ„ ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  4๋ถ„ ์ด์ƒ์˜ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ฐ ๊ฐ์†Œ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์ฆ‰, julia๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋™์•ˆ 4๋ถ„ ์ง€์—ฐ). ๊ทธ์— ๋น„ํ•ด stagedfunction ๊ตฌํ˜„์€ ์ˆœ์‹๊ฐ„์— ๋กœ๋“œ๋˜๋ฉฐ ๋ฌผ๋ก  8์ฐจ์›์„ ๋„˜์–ด์„ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ ๋””์ŠคํŒจ์น˜์™€ ๋น„๊ตํ•˜์—ฌ ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ OO ์–ธ์–ด๊ฐ€ ์„ค๋ช…ํ•˜๋Š” ๊ธฐ๋Šฅ ๋Œ€ ๋ฉ”์„œ๋“œ์˜ ํ†ตํ•ฉ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์˜ sorted(a) ๋Œ€ a.sort()์™€ ๋Œ€์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์ „ํ†ต์ ์ธ" ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์™€ ๋น„๊ตํ•  ๋•Œ, ๊ทธ๊ฒƒ์€ ํ•จ์ˆ˜๊ฐ€ ํด๋ž˜์Šค์™€ "์—ฐ๊ด€"๋œ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๊ทน์ ์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ๋˜๋Š” ์œ ํ˜•์— ๋Œ€ํ•ด ๋””์ŠคํŒจ์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ •์  ๋Œ€ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ ํ•„์š”์„ฑ์„ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ์ตœ๊ทผ IRC ๋Œ€ํ™”์—์„œ ์•„์ด๋””์–ด๋ฅผ ๋” ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

fmap ์˜ ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๊ณ 
๊ฐ ์š”์†Œ ์ง‘ํ•ฉ์— ๊ธฐ๋Šฅ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌํ˜„์€ ์‹ค์ œ๋กœ
๋ฐฐ์—ด ์ˆ˜๊ฐ€ ์ž„์˜์ ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ ค๋ฉด
๋‹ค์–‘ํ•œ ์ˆ˜์— ๋Œ€ํ•ด ์ด ์ „๋ฌธํ™”๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
์ธ์ˆ˜ yss . ๋‚˜๋Š” ํ•ญ์ƒ ์ด๊ฒƒ์„ ์œ„ํ•ด ๋‹จ๊ณ„์  ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์•„์ง ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ค€๋น„๋œ ํ•จ์ˆ˜๋Š” ํŠนํžˆ map ํ˜ธ์ถœ์„ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
f ์— ๋Œ€ํ•œ ์ธ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

-์—๋ฆญ

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๋ถ„, Steven G. Johnson <
[email protected]>์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋„์›€ ์š”์ฒญ: Jeff๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ข‹์€ ์˜ˆ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋””์ŠคํŒจ์น˜(๋ฐ ์•„๋งˆ๋„ ๋‹จ๊ณ„์  ๊ธฐ๋Šฅ),
ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์—†๋Š” ์–ธ์–ด์—์„œ๋Š” ๋” ์–ด๋ ต๊ฑฐ๋‚˜ ๋” ๋Š๋ฆฝ๋‹ˆ๋‹ค.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/JuliaLang/julia/issues/8839#issuecomment -67671331.

์—๋ฆญ ์Šˆ ๋„คํ„ฐ [email protected]
http://www.perimeterinstitute.ca/personal/eschnetter/

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ์˜ ํ•จ์ˆ˜ ์„œ๋ช…์—์„œ eltype(f) ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์„ ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค.
๊ทธ๊ฒƒ์€ ๋น„ํ‘œ์ค€์ž…๋‹ˆ๋‹ค.

-์—๋ฆญ

2014๋…„ 12์›” 19์ผ(๊ธˆ) ์˜คํ›„ 3์‹œ 88๋ถ„, Erik Schnetter [email protected]
์ผ๋‹ค:

fmap ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๊ณ 
๊ฐ ์š”์†Œ ์ง‘ํ•ฉ์— ๊ธฐ๋Šฅ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌํ˜„์€ ์‹ค์ œ๋กœ
๋ฐฐ์—ด ์ˆ˜๊ฐ€ ์ž„์˜์ ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ ค๋ฉด
๋‹ค์–‘ํ•œ ์ˆ˜์— ๋Œ€ํ•ด ์ด ์ „๋ฌธํ™”๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
์ธ์ˆ˜ yss . ๋‚˜๋Š” ํ•ญ์ƒ ์ด๊ฒƒ์„ ์œ„ํ•ด ๋‹จ๊ณ„์  ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์•„์ง ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ค€๋น„๋œ ํ•จ์ˆ˜๋Š” ํŠนํžˆ map ํ˜ธ์ถœ์„ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
f ์— ๋Œ€ํ•œ ์ธ์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

-์—๋ฆญ

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๋ถ„, Steven G. Johnson <
[email protected]>์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋„์›€ ์š”์ฒญ: Jeff๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ข‹์€ ์˜ˆ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋””์ŠคํŒจ์น˜(๋ฐ ์•„๋งˆ๋„ ๋‹จ๊ณ„์  ๊ธฐ๋Šฅ),
ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์—†๋Š” ์–ธ์–ด์—์„œ๋Š” ๋” ์–ด๋ ต๊ฑฐ๋‚˜ ๋” ๋Š๋ฆฝ๋‹ˆ๋‹ค.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ 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 ๋ฒ„ํผ ์œ„์น˜์™€ ๊ตฌ๋ฉ ์—†๋Š” ํŽธ๋ฆฌํ•œ ์ธ๋ฑ์‹ฑ์„ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜์—ฌ ์›ํ•  ๋•Œ ํŽธ๋ฆฌํ•œ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ œ์•ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Regex ๋ฐ ๊ฒ€์ƒ‰์€ ๋ž˜ํ•‘๋œ ๋‚ด๋ถ€ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ s[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++์—์„œ ์•ฝ 1K Julia๊นŒ์ง€ ์ข‹์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ์— ๋”ฐ๋ฅด๋ฉด ๋„ค์ดํ‹ฐ๋ธŒ C++์˜ 2๋ฐฐ ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž(+-*/, Int, Float)์—์„œ ์ˆซ์ž ์ถœ๋ ฅ ํ˜•์‹์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ์–ธ์–ด ์ž์ฒด์—์„œ printf์˜ ๊ตฌํ˜„์„ ์ฃผ์žฅํ•  ์ˆ˜ ์žˆ๊ณ  libc ๋ฒ„์ „์˜ ์ž‘์€ ์—ฌ๋ฐฑ ๋‚ด์—์„œ ๋ฒค์น˜๋งˆํ‚นํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„ C++? C๋Š” ์ด๊ฒƒ์„ ์ฃผ์žฅํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค(์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์ด ์—†์Šต๋‹ˆ๋‹ค).

ํŒŒ์ด์ฌ/MATLAB/๋“ฑ. ์ด ์ค‘ ์ผ๋ถ€๋ฅผ ์ฃผ์žฅํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ MATLAB์—์„œ ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ํ† ๋ก ์ด๋ฉฐ ๋ช‡ ๊ฐ€์ง€ ์š”์ ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ์‹ค์ œ๋กœ ๋‹ต๋ณ€๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒƒ์€ Julia๊ฐ€ C++์˜ ๋‹คํ˜•์„ฑ๊ณผ ์†๋„ ์ธก๋ฉด์—์„œ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. C++์—์„œ๋Š” ํ…œํ”Œ๋ฆฟ์„ ํ†ตํ•œ ์ •์  ๋‹คํ˜•์„ฑ ๋˜๋Š” OO๋ฅผ ํ†ตํ•œ ๋™์  ๋‹คํ˜•์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์ค‘์—๋Š” vtable์ด ํ•„์š”ํ•˜๋ฉฐ ํŠนํžˆ ๋นก๋นกํ•œ ๋ฃจํ”„์—์„œ ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ํ˜ธ์ถœํ•  ๋•Œ ํ•ญ์ƒ ์•ฝ๊ฐ„ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ๋ฐฐ์—ด ์•ก์„ธ์Šค ์—ฐ์‚ฐ์ž๋Š” ๋น ๋ฅด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€ ๊ณผ๋ถ€ํ•˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Eigen์€ ์ •์  ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Julia์—๋Š” ๊ฐ€์ƒ ๊ธฐ๋Šฅ๊ณผ ๋น„๊ฐ€์ƒ ๊ธฐ๋Šฅ ์‚ฌ์ด์— ๋ชฉ์ ์ง€๊ฐ€ ์—†์œผ๋ฉฐ ์—ฌ์ „ํžˆ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ Julia๊ฐ€ "์ฆ‰์‹œ" ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ C++ ๋Ÿฐํƒ€์ž„์—์„œ ์ƒ์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋” ์ด์ƒ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•˜๋Š” ๋น ๋ฅธ ์ฝ”๋“œ๋ฅผ ๊ณ„์† ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Julia์—์„œ๋Š” ๋Ÿฐํƒ€์ž„์— ์ธ๋ผ์ธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Julia์—์„œ๋Š” ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ํ•œ ๊ฐ€์ง€ ํฐ ์ ์€ (๋‹ค์‹œ) ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๊ณ  C++๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ณ ํ†ต์ด ์—†๋Š” ์ œ๋„ค๋ฆญ์ž…๋‹ˆ๋‹ค(์ปดํŒŒ์ผ ์‹œ๊ฐ„ ๋ณด๊ธฐ) ์ œ๋„ค๋ฆญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅด๊ณ  IMHO Julia๋Š” C#๊ณผ ๋™์ผํ•œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์ด ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ฒƒ์€ ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค( ์ œํ”„์Šค ํ…Œ์ œ). ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์ด๊ฒƒ์€ ๋…ผ๋ฌธ์—์„œ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ํšจ๊ณผ์ ์ธ์ง€ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€ ์ž์ฒด๊ฐ€ ์ƒ๋‹นํžˆ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๊ฐ™์€ ํŽ˜์ด์ง€์— ์žˆ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์šฐ๋ฆฌ์˜ ์ƒˆ๋กœ์šด ํ•˜์œ„ ๋ฐฐ์—ด์€ ๋ณดํญ์— ์˜์กดํ•˜์ง€ ์•Š์œผ๋ฉฐ ์„ ํ˜• ์ธ๋ฑ์‹ฑ์ด ํ•„์š”ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค(๋น„๋ก ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ํšจ์œจ์ ์ธ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•จ). ๋”ฐ๋ผ์„œ ๋ชจ๋“  AbstractArray์— ๋Œ€ํ•ด ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ  "๋น„์ŠคํŠธ๋ผ์ด๋“œ"( Vector{Int} ์ธ๋ฑ์Šค) ๋ณด๊ธฐ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์ €๋Š” ์ฃผ๋กœ ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜๊ฐ€ ์•„๋‹Œ ๋‹จ๊ณ„์  ๊ธฐ๋Šฅ์˜ ์˜ˆ๋กœ ์ƒˆ๋กœ์šด SubArray๋ฅผ ์ œ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ˜„์žฌ ์ฒด๊ณ„๋Š” ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜ ์—†์ด ๊ตฌ์„ฑ ๋‹จ๊ณ„์—์„œ ๋ฌด๋„ˆ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. slice(::AbstractArray, ::UnitRange{Int}, ::Int, ::Vector{Int}) ๋ฐ slice(::AbstractArray, ::Int, ::UnitRange{Int}, ::UnitRange{Int}) ๋“ฑ์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ƒ์„ฑ์ž ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒ์„ฑ์ž๋Š” ๋‹จ๊ณ„์  ํ•จ์ˆ˜์— ์˜ํ•ด ์ƒ์„ฑ๋˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ๋””์ŠคํŒจ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ณ„๋„์˜ ํ•จ์ˆ˜๊ฐ€ ์—†์œผ๋ฉด varargs ์ƒ์„ฑ์ž๋Š” ์ธ๋ฑ์Šค ํŠœํ”Œ์˜ ํ•ญ๋ชฉ์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด ์œ ํ˜•์ด ์•ˆ์ •์ ์ด์ง€ ์•Š๋‹ค๋Š” ์‚ฌ์‹ค์— ์ง๋ฉดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํ”„์—์„œ ๊ฐœ๋ณ„ ์ธ๋ฑ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋ช…๋ช…๋œ ์Šค์นผ๋ผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ด์•ผ ํ•˜๋ฉฐ ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ์ž…๋ ฅ ํŠœํ”Œ์ด ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ์ž˜ ์ž…๋ ฅ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก , staged ํ•จ์ˆ˜๋Š” ํ›จ์”ฌ ๋” ๋งŽ์€ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  "์–ด๋ ค์šด" ๊ฒฐ์ •์€ ์ด๊ฒƒ์„ ์Šฌ๋ผ์ด์Šค ์ฐจ์›์œผ๋กœ ์‚ญ์ œํ•  ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ์œ ์ง€ํ•  ๊ฒƒ์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ํ‘œํ˜„์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ---์ปดํŒŒ์ผ ํƒ€์ž„์— ๋งŒ๋“ค์–ด ๋Ÿฐํƒ€์ž„ ์ƒ์„ฑ์ž๋ฅผ ๋งค์šฐ ์‚ฌ์†Œํ•œ ์ž‘์—…์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ์œ ํ˜•์˜ ๊ฐ ์กฐํ•ฉ์— ๋Œ€ํ•ด ํŠน์ • ์‚ฌ์†Œํ•œ ์ž‘์—…์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ด ์‚ฌ์†Œํ•œ ๊ฒƒ์„ ์ด์šฉํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ž…๋ ฅ ์œ ํ˜•์˜ ๊ฐ ์กฐํ•ฉ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ์ •์˜๋œ ๋‹ค๋ฅธ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‹จ๊ณ„์  ๊ธฐ๋Šฅ๊ณผ ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜ ๋ชจ๋‘๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ, ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ–ˆ๋˜ ์ผ์„ ๋‹จ๊ณ„์  ๊ธฐ๋Šฅ๊ณผ ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜์˜ ์กฐํ•ฉ ์—†์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„์ง€, ๊ทธ๋ฆฌ๊ณ  julia๊ฐ€ ์ด์ œ ๋ชจ๋“  ์–ธ์–ด ์ค‘ ๊ฐ€์žฅ ์œ ์—ฐํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฐ์—ด ๋ณด๊ธฐ๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ์‹ค์ œ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ์ฒ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ถœํŒ์„ ์œ„ํ•ด SubArray๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ---์—ฌ๊ธฐ์— ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@StefanKarpinski : ์ž๊ธฐ ๋น„ํŒ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์•„์ง ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@timholy ์ €๋Š” ์‹ค์ œ๋กœ ์—ฌ๊ธฐ์—์„œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ๊ณ„์  ๊ธฐ๋Šฅ(์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ์ ์„ ์ธ์ •ํ•ด์•ผ ํ•จ)๊ณผ Julia๊ฐ€ C++ ๊ฐ€์ƒ ๊ธฐ๋Šฅ ๋Œ€ ํ…œํ”Œ๋ฆฟ ์œ ๋‹ˆ๋ฒ„์Šค(์—ฌ๊ธฐ์„œ C# ๋ฐ Java์™€ ์œ ์‚ฌํ•จ)์— ์ ํ•ฉํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

C++ ๋น„๊ต๋ฅผ ์œ„ํ•ด ํƒ€์ด๋ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ๋‹คํ˜•์„ฑ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์‹คํ—˜์ ์œผ๋กœ ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•œ๋™์•ˆ ๊ณต์‹ํ™”ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ Julia๊ฐ€ C++ ๊ฐœ๋…(๋ผ์ดํŠธ)๊ณผ ๊ด€๋ จํ•˜์—ฌ 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 ๋ฐฐ์—ด์„ ๊ตฌํ˜„ํ•˜๋Š” ๋งŽ์€ ์‹œ์Šคํ…œ์ด ์ฒ˜์Œ ๋ช‡ ์ฐจ์›์— ๋Œ€ํ•ด ํŠน์ˆ˜ ๊ตฌํ˜„์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋Š๋ฆฐ ๊ฒƒ์œผ๋กœ ๋Œ€์ฒด๋˜๋ฉฐ ์ƒˆ๋กœ์šด ๊ตฌํ˜„์˜ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค(๊ฒ€์ฆ๋˜์ง€๋Š” ์•Š์Œ).

๋˜ ๋‹ค๋ฅธ ๊ด€๋ จ ์‚ฌ๋ก€๋Š” ํšจ์œจ์ ์ธ ํฌ์†Œ Nd ์ €์žฅ์†Œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ฐฐ์—ด์€ ์ผ๋ฐ˜์ ์ธ ํŠน์ˆ˜ ์‚ฌ๋ก€์ž„).

ํŒ€,

์˜ˆ, ์‹ค์ œ๋กœ ๊ฒฐ๊ณผ ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๊ฒƒ์€ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์ด๊ฒƒ์€ (C++ ๊ตฌํ˜„์—์„œ) ๊ฐ€์ƒ ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๋” ํฐ ๋งฅ๋ฝ์—์„œ ๋น„๊ต๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅธ ๊ฒƒ์€ multiple dispatch ๊ฐ€ ์•„๋‹ˆ๋ผ ๋Ÿฐํƒ€์ž„์— ์ธ๋ผ์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€์ƒ ํ•จ์ˆ˜(์ผ๋ฐ˜ ํ•จ์ˆ˜๊ฐ€ ์žˆ์Œ)๋ฅผ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ฐ„์ ‘ ์ง€์ • ์—†์ด ํšจ์œจ์ ์ธ ๋ช…๋ น์–ด๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๋ฉด (์ œ๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•ด์ฃผ์„ธ์š” @JeffBezanson @vtjnash @stevengj @timholy ) multiple dispatch ์˜ ๋ฐฐ์ˆ˜๋Š” Julia๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅธ ์ด์œ ๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ • ์ฝ”๋“œ๋ฅผ ๊ณต์‹ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊น”๋”ํ•œ ์ธก๋ฉด ์˜ํ–ฅ์ž…๋‹ˆ๋‹ค nicer(๋‹จ์ผ ๋””์ŠคํŒจ์น˜๊ฐ€ ์ œํ•œ๋˜๋Š” ๊ฒฝ์šฐ)

๋‚˜๋Š” ์•„๋งˆ๋„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์ด ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๊ตฌ๋ณ„์ด ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Julia์—์„œ "์ธ๋ผ์ธ"๊ณผ "๋Ÿฐํƒ€์ž„"์€ ์‹ค์ œ๋กœ ํ•จ๊ป˜ ๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ๋ผ์ธ์€ ํ˜•์‹ ์œ ์ถ” ์ค‘์—, ์ฆ‰ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜๋Š” ์œ ์ถ”๋œ ์œ ํ˜•์— ๋Œ€ํ•ด ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ˜ผ๋ž€์€ C++์˜ "์ปดํŒŒ์ผ ์‹œ๊ฐ„"๊ณผ "๋Ÿฐํƒ€์ž„"์ด Julia์™€ ๋น„๊ตํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Codegen์€ "๋Ÿฐํƒ€์ž„" ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ include("myscript.jl") ํ•˜๋ฉด ์ธ๋ผ์ธ์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "๋Ÿฐํƒ€์ž„"์ด C++ ๊ด€์ ์—์„œ ์ ์ ˆํ•œ ๋‹จ์–ด๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ "๋Ÿฐํƒ€์ž„"์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์œ ํ˜•์— ๋Œ€ํ•œ ๋””์ŠคํŒจ์นญ์€ vtable๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋” ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์ถœํŒ์„ ์œ„ํ•ด SubArray๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ---์—ฌ๊ธฐ์— ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ‘œ์ค€ ์ฃผ์ œ์™€๋Š” ์กฐ๊ธˆ ๊ฑฐ๋ฆฌ๊ฐ€ ์žˆ์ง€๋งŒ JSS์— ์ œ์ถœํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Julia ๊ธฐ์‚ฌ๊ฐ€ ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Tim์ด ์ด ์ž‘์—…์„ ์„ค๋ช…ํ•˜๋Š” ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•˜๋ฉด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์†๋„๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. JSS๋Š” ํ›Œ๋ฅญํ•œ ์•„์ด๋””์–ด์ด๋ฉฐ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ๋ฐ ๋ฐฐํฌํŒ์—์„œ ์ˆ˜ํ–‰๋œ ๊ธฐ๋ณธ ์ž‘์—… ์ค‘ ์ผ๋ถ€๋„ ์“ธ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์„ ์ฝ๋Š” ๊ฒƒ์„ ์ฆ๊ธด๋‹ค.

๊ธ€์Ž„, ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“  ๊ฒƒ์€ ๋งŽ์€ ๋ถ€๋ถ„์ด http://docs.julialang.org/en/latest/devdocs/subarrays/์— ์ž‘์„ฑ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถœํŒ๋ฌผ์˜ ๊ฒฝ์šฐ ํ›จ์”ฌ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ด๊ฒƒ์€ ์ฃผ์š” ํฐ ๊ทธ๋ฆผ ์š”์ ์˜ ์ƒ๋‹น ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

@stevengj ๊ฐ€ ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜์— ๋Œ€ํ•ด ์ œ๊ธฐํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•ด ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜ ์—†์ด๋Š” julia์—์„œ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€ ๊ฝค ์–ด๋ ต๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์ด ์—ฌ๊ธฐ์—์„œ ์ œ๊ธฐ๋œ ์ด์œ ์— ๋Œ€ํ•œ ์„ค๋“๋ ฅ ์žˆ๋Š” ์˜ˆ๊ฐ€ ์•„๋‹Œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ˆซ์ž ์—ฐ์‚ฐ ๋ฐ ์ „ํ™˜/ํ”„๋กœ๋ชจ์…˜๊ณผ ๊ฐ™์€ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ์—ฌ๋Ÿฌ ๋””์ŠคํŒจ์น˜์™€ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜๋Š” ์ฝ”๋“œ์—์„œ ์œ ํ˜•์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์œ ํ˜• ์ถ”๋ก ์„ ๋ณธ์งˆ์ ์œผ๋กœ ๋…ธ์ถœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ด๊ณ  ๋น ๋ฅธ ์ˆซ์ž ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ํ•œ ๋ง์„ ์ธ์šฉํ•˜์ž๋ฉด - ์ •์ฑ…์„ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด @JeffBezanson ์€ Scheme ์‚ฌ์–‘์ด ์ˆ˜์น˜์  ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๊ณต๊ฐ„์˜ 1/3์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•œ ๋ฒˆ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด์„๋œ ๋งŽ์€ ์‹œ์Šคํ…œ์€ ์ข…์ข… ์ผ๋ฐ˜ ์œ ํ˜•์„ ๊ฐ–๊ฒŒ ๋˜๋ฉฐ ์‹คํ–‰ํ•  ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ๋Ÿฐํƒ€์ž„์— ํ•ด๋‹น ๊ฐœ์ฒด์˜ ์œ ํ˜•์„ ๊ฒ€์‚ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ ์œ ํ˜•์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ C/C++/Fortran์— ๋ณ„๋„์˜ ๊ตฌํ˜„์ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ ์ด๋กœ ์ธํ•ด ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ํฌ๊ณ  ๋””๋ฒ„๊ทธํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ข…์ข… ์ด๋“ค์€ ์™ธ๋ถ€ ๋งคํฌ๋กœ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ƒ์„ฑ๋˜์ง€๋งŒ C++ ํ…œํ”Œ๋ฆฟ์„ ์ ์  ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ์–ธ์–ด ๋ฐ ํ˜•์‹ ์œ ์ถ” ๋ฌธ์ œ๋Š” ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ˆ˜์ค€์—์„œ ๋ฒกํ„ฐํ™”๋Š” ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ณผํ•™ ์–ธ์–ด๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์œ ํ˜•์„ ๊ฒฐ์ •ํ•˜๊ณ  ์ ์ ˆํ•œ ์ฝ”๋“œ ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„์šฉ์„ ์ƒ๊ฐํ•˜๋Š”๊ฐ€์ž…๋‹ˆ๋‹ค. Julia์—์„œ๋Š” ํ˜•์‹ ์œ ์ถ”, ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜ ๋ฐ ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ ๋น„์šฉ์„ ๋ชจ๋‘ ํฌ๊ฒŒ ๋‚ฎ์ถ”์–ด ํ˜•์‹ ์—†๋Š” ์ผ๋ฐ˜ ์—ญ๋ฒกํ„ฐํ™”๋œ ์ฝ”๋“œ(C)๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์˜ˆ๋Š” PR #9198์—์„œ MathConst (๋ฌด๋ฆฌ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ„)์™€์˜ ๋ถˆํ‰๋“ฑ ๋น„๊ต์ž…๋‹ˆ๋‹ค.

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

  • FloatingPoint ๋Œ€ MathConst ๋Š” ๋ถ€๋™ ์†Œ์ˆ˜์ ์„ ์ƒ์ˆ˜ ์œ„/์•„๋ž˜ ๋ถ€๋™ ์†Œ์ˆ˜์ ๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • Rational{T} ๋Œ€ MathConst (์ œํ•œ๋œ ์ •์ˆ˜ ์œ ํ˜•์˜ ๊ฒฝ์šฐ T )์€ ์œ ํ˜•์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์œ ๋ฆฌ์ˆ˜๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ทธ๊ฒƒ์ด ์ง„์ •ํ•œ ๋น„ํ•ฉ๋ฆฌ์  ์œ ํ˜• ์œ„์ธ์ง€ ์•„๋ž˜์ธ์ง€์— ๋”ฐ๋ผ.

์ด๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— Rational ๋ฐ BigFloat ๊ธฐ๋Šฅ์— ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งคํฌ๋กœ ์ „์ฒ˜๋ฆฌ๊ธฐ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ธฐ๋Šฅ์˜ ๋‘ ๊ฐ€์ง€ ๊ตฌํ˜„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž‘์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ์ด์ œ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค: https://github.com/JeffBezanson/phdthesis

์˜ค๋Š˜ ์ €๋Š” ์ผ์ข…์˜ ๋“œ๋ž˜ํ”„ํŠธ๋ฅผ ์ž์ฒด์ ์œผ๋กœ ์ •ํ•œ ๊ธฐํ•œ์— ๋งž์ถฐ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ดˆ์•ˆ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋งŽ์€ ์กฐ๊ฐ์ด ์™„์ „ํžˆ ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ TeX ์ฃผ์„ ๋‚ด๋ถ€์— ์žˆ๊ฑฐ๋‚˜ ๊ณผ๊ฑฐ ๋ฒ„์ „ ๊ธฐ๋ก์—๋งŒ ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ์ฑ…์ž„์„ ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :)

๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ํŠนํžˆ, ์–ธ์–ด๋ฅผ ์ž˜ ๋ณด์—ฌ์ฃผ๋Š” ์ค„๋ฆฌ์•„ ์ฝ”๋“œ์˜ ์ข‹์€ ์˜ˆ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ํŠนํžˆ ์–ธ์–ด ์—†์ด๋Š” ํ•˜๊ธฐ ํž˜๋“  ๋ชจ๋“  ์ž‘์—…์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜ ์˜ˆ์ œ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฐœํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. SGJ๊ฐ€ ์‚ฌ์šฉํ•œ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ ค๋‹ค๊ฐ€ 404๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ ๋†€๋ž์Šต๋‹ˆ๋‹ค.

์‚ผ๊ฐํ–‰๋ ฌ ์‚ฐ์ˆ  ์€ Julia์˜ ๋‹ค์ค‘ ๋””์ŠคํŒจ์น˜์˜ ์œ ์šฉ์„ฑ์— ๋Œ€ํ•œ ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ 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

์ด๊ฒƒ์ด Julia์—๊ฒŒ ์–ผ๋งˆ๋‚˜ ๊ตฌ์ฒด์ ์ธ์ง€ ๋งํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ, ์šฐ๋ฆฌ๊ฐ€ ๋ณด์•˜๋“ฏ์ด ์ตœ์†Œํ•œ Eigen์€ ์Šน๊ฒฉ์„ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ ์„ ํ˜• ๋Œ€์ˆ˜ ์—ฐ์‚ฐ์—์„œ ์š”์†Œ ์œ ํ˜•์ด ์•ˆ์ •์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Jeff๋Š” ์ด์ œ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋กœ ์ ‘์–ด๋“ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ทธ์˜ ๋…ผ๋ฌธ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ๊ณผ ์ˆ˜์ • ์‚ฌํ•ญ(์œ„์— ์–ธ๊ธ‰๋œ github ์ €์žฅ์†Œ ์ฐธ์กฐ)์ด ํŠนํžˆ ํ™˜์˜๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜คํƒ€, ๋ˆ„๋ฝ๋œ ์ฐธ์กฐ ๋“ฑ์— ๋Œ€ํ•œ PR์„ ์ž์œ ๋กญ๊ฒŒ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

@stevengj ์—ฌ๊ธฐ์—์„œ ๋ฐฉ์–ด ์ผ์ • ๋ฐœํ‘œ๋ฅผ ์˜ˆ์ƒํ•ด์•ผ ํ•˜๋‚˜์š”?

๋„ค.

๊ทธ๊ฐ€ MIT์—์„œ ์ด๋ฏธ ์ผ์„ ํ•˜๊ณ  ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค... (๋˜๋Š” ๊ทธ๊ฐ€ Julia์˜ ํ›Œ๋ฅญํ•œ ์ž‘์—…์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๋ฉด ์–ด๋””๋“ ์ง€)... ์ง€๊ธˆ ๊ทธ์˜ ๋…ผ๋ฌธ์„ ์ฝ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค... ํ›Œ๋ฅญํ•œ ์ž๋ฃŒ, IMO!

@andreasnoack ์กฐ๊ธˆ ๋‚œํ•ดํ•˜์ง€๋งŒ ์–ด์จŒ๋“  ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค. ํ™”์‚ดํ‘œ ํ–‰๋ ฌ ๋ง ์œ ํ˜•์„ ์ •์˜ํ•˜๊ณ  ๋ฐ‘์œผ๋กœ๋ถ€ํ„ฐ Cholesky ์ธ์ˆ˜๋ถ„ํ•ด๋ฅผ ์ ์šฉํ•˜์—ฌ ํ™”์‚ดํ‘œ ํ–‰๋ ฌ์˜ ํ™”์‚ดํ‘œ ํ–‰๋ ฌ์˜ ์ด๋ ˆ์Šคํ‚ค ์ธ์ˆ˜๋ถ„ํ•ด ๊ตฌ์กฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. https://gist.github.com/mschauer/c325ff89cd378fe7ecd6 ("A" ํ™”์‚ดํ‘œ ํ–‰๋ ฌ, "F" ์ „์ฒด ํ–‰๋ ฌ, "L" ์•„๋ž˜์ชฝ ์ ˆ๋ฐ˜ ํ™”์‚ดํ‘œ").

@ScottPJones ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

๋ฐฉ์–ด ์˜ˆ์ •: 5์›” 13์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 1์‹œ Stata D-463.

@JeffBezanson replay.csail.mit.edu ๋ฅผ ํ†ตํ•ด ๋…น์Œํ•  ๊ณ„ํš์ธ๊ฐ€์š”?

...์•„๋งˆ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š”๊ฒŒ ๋‚˜์„์ง€๋„... :)

์ด๊ฒƒ์ด ๋งˆ์ง€๋ง‰ ์ฒดํฌ๋ฐ•์Šค์˜ ์šฉ๋„๊ฐ€ ์•„๋‹Œ๊ฐ€์š”?

์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์•ผ ํ•˜๋Š” _์ •๋ง_ ํ™•์‹ ํ•ฉ๋‹ˆ๊นŒ? ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ๋…ผ๋ฌธ์˜ ์„œ๋ช…๋œ ์‚ฌ๋ณธ์„ ์›ํ•˜๋Š” ํŒฌ ๋ณด์ด์ฆˆ์— ์˜ํ•ด ๋ถ๋น„๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค! :์›ƒ์Œ์ด ๋„˜์น˜๋Š”:

๋‚˜๋Š” ์ด๋ฏธ ๋‚ด ํ‹ฐ์ผ“์„ ์–ป์—ˆ๋‹ค. ๊ฐ€๊ฒฉ์ด ์•”์‹œ์žฅ์—์„œ ์ด๋ฏธ 800๋‹ฌ๋Ÿฌ๊นŒ์ง€ ์˜ฌ๋ž๋‹ค๊ณ  ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์‹œ๋Œ€์—๋Š” Stata D-463์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค... (๋‚˜๋Š” ๋‹จ์ง€ ์นœ๊ตฌ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆฌ๊ณ  NE Database Day๋ฅผ ์œ„ํ•ด ๊ฑฐ๊ธฐ์— ๊ฐ”์„ ๋ฟ์ž…๋‹ˆ๋‹ค)... ์ถฉ๋ถ„ํžˆ ์ปค์งˆ๊นŒ์š”? ํ™•์‹คํžˆ ๊ทธ๋Š” 10-250์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๊ณต์‹์ ์œผ๋กœ D-463์€ 48๊ฐœ์˜ ์˜์ž์— ๋งž์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋” ํฐ ๋ฐฉ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง„์ง€ํ•˜๊ฒŒ ๋‹น์‹ ์ด ํ•œ ์ผ์— ๋Œ€ํ•ด ์ •๋ง๋กœ ๊ฐ์‚ฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ํŒฌ์ด ๋ชจ๋‘ ๋ชจ์˜€๋‹ค๋ฉด 10-250๋ช…์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ์ง€๊ธˆ Kresge๋ฅผ ์˜ˆ์•ฝํ•˜์„ธ์š”!

ํ…Œํฌ๋‹ˆ์ปฌ ์ปดํ“จํŒ…์˜ ์ถ”์ƒํ™”

  • ๋ฐ•์‚ฌ ํ›„๋ณด: ์ œํ”„ ๋ฒ ์ž”์Šจ
  • ๋…ผ๋ฌธ ๊ฐ๋…: Alan Edelman ๊ต์ˆ˜
  • ๋…ผ๋ฌธ์œ„์›ํšŒ: Steven Johnson ๊ต์ˆ˜, Saman Amarasinghe ๊ต์ˆ˜, Gerry Sussman ๊ต์ˆ˜
  • ๋‚ ์งœ: 2015๋…„ 5์›” 13์ผ ์ˆ˜์š”์ผ
  • ์‹œ๊ฐ„: ์˜คํ›„ 1์‹œ
  • ์œ„์น˜: MIT ์บ ํผ์Šค, 32-D463

_๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์€ ๊ณผํ•™ ๋ฐ ๊ธฐ์ˆ  ์ปดํ“จํŒ…์— ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์–ธ์–ด์™€ ์Œ์„ ์ด๋ฃจ๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž˜ ์ˆ˜ํ–‰๋˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ์–ธ์–ด๋กœ ๋œ ์Šคํฌ๋ฆฝํŒ…์€ ๋ฐ˜๋“œ์‹œ ๋Š๋ฆฌ๊ณ  ์—”์ง€๋‹ˆ์–ด๋ง์˜ ์˜์›…์ ์ธ ์—…์ ๋งŒ์ด ์ด ๋ฌธ์ œ๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋„๋ฆฌ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค._

_์ด ๋…ผ๋ฌธ์€ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์€ ์ด ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋ณด๋‹ค ์ผ๊ด€๋œ ๊ตฌ์กฐ๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ํ…Œํฌ๋‹ˆ์ปฌ ์ปดํ“จํŒ…์ด ์‹ค์ œ๋กœ ๋ฌด์—‡์— ๊ด€ํ•œ ๊ฒƒ์ธ์ง€ ๋ฌผ์–ด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋…ผ๋ฌธ์€ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์—ฐ์‚ฐ์ž ๋ณต์žก์„ฑ๊ณผ ์ฝ”๋“œ ์ „๋ฌธํ™”์— ์ค‘์ ์„ ๋‘” ๊ฒƒ์ด ํŠน์ง•์ด๋ฉฐ ์–ธ์–ด๊ฐ€ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋” ์ž˜ ๋งž๋„๋ก ์„ค๊ณ„๋  ์ˆ˜ ์žˆ์Œ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค._

_ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ์ฝ”๋“œ_ _์„ ํƒ _ _์ฝ”๋“œ ์™€_ _์ „๋ฌธํ™” _ , _์ผ๋ฐ˜ ํ•จ์ˆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์œ ํ˜• ์ถ”๋ก ์„ ํ†ตํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์€ ๋น„ํšจ์œจ์ ์ธ ์ปดํŒŒ์ผ์ด๋‚˜ ๋ฌด์—‡์„ ์ „๋ฌธํ™”ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ถˆํ™•์‹ค์„ฑ์œผ๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํžˆ ๊ฐ•๋ ฅํ•œ ์œ ํ˜• ๊ธฐ๋ฐ˜ ๋””์ŠคํŒจ์น˜๊ฐ€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ์–ธ์–ด์ธ Julia๋Š” ๊ธฐ์ˆ  ์ปดํ“จํŒ… ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•˜๋Š” ๋งŽ์€ ์ƒ์‚ฐ์ ์ธ ๊ธฐ๋Šฅ์˜ Quine ์Šคํƒ€์ผ "์ œ๊ฑฐ๋ฅผ ํ†ตํ•œ ์„ค๋ช…"์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค._

๊ด€์ค‘์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ์˜ ๋…ผ๋ฌธ์˜ ์ธ์‡„๋œ ์‚ฌ๋ณธ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์„œ๋ช…๋œ ์‚ฌ๋ณธ ์ผ ์ˆ˜ ์žˆ์Œ

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค... 10-15๋…„ ์•ˆ์— Ebay์—์„œ ์‹ธ์ธ๋œ ์‚ฌ๋ณธ์„ ํŒ๋งคํ•˜์—ฌ ํฐ ๋ˆ์„ ๋ฒŒ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๊ณ  ์‹ถ๋‹ค๊ณ  ๋งํ•œ ๊ณณ์œผ๋กœ ๊ฐ€๋ฉด... :์›ƒ๋Š”๋‹ค:)

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค, ์ œํ”„!

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ๊ทธ ์ง€์—ญ์— ์žˆ์—ˆ๋‹ค๋ฉด @ScottPJones๊ฐ€ ์–ธ๊ธ‰ํ•œ ํŒฌ๋ณด์ด ์ค‘ ํ•œ ๋ช…์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ScottPJones :+1:

๋‹ค๋ฆฌ๋ฅผ ๋ถ€๋Ÿฌ๋œจ๋ ค, ์ œํ”„!

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค, ์ œํ”„!

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค! @JeffBezanson

@JeffBezanson ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค!!

์ž๋ฆฌ๋ฅผ ์žก์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค

๋‚˜๋Š” ๊ทธ๊ฐ€ 10-250์„ ์˜ˆ์•ฝํ–ˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ทธ์—๊ฒŒ ๋งํ–ˆ๋‹ค!

๋‚ด iPhone์—์„œ ๋ณด๋‚ธ

2015๋…„ 5์›” 13์ผ ์˜ค์ „ 11์‹œ 53๋ถ„์— Yichao Yu [email protected] ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@JeffBezanson ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค!!

์ž๋ฆฌ๋ฅผ ์žก์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค!

๊ฐ™๊ฒŒ!

์šด ์ข‹๊ฒŒ๋„ ๋‚˜๋Š” ์ž๋ฆฌ์— ์•‰์„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ผ์ฐ ๋“ค์–ด๊ฐ”๊ณ ... ๋‚ด ๋ง์ด ๋งž์•˜๋‹ค.

img_0994

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค

๊ฒฐ์ •๋œ.

์•„์ง ์„ ํƒํ•˜์ง€ ์•Š์€ ํ™•์ธ๋ž€์ด ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์ž‘์—…์„ ์–ป์„.

:shipit: :tropical_drink: :๋งฅ์ฃผ: :์นตํ…Œ์ผ: :ํƒ€๋‹ค: !

:์—„์ง€์†๊ฐ€๋ฝ:

๋ฒ ์ž”์Šจ ๋ฐ•์‚ฌ๋‹˜ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค, ์ œํ”„!

+1

๋ธŒ๋ผ๋ณด

๋งˆ์ง€๋ง‰ ํ™•์ธ๋ž€์€ ์ด์ œ ์ผ„ํ„ฐํ‚ค ๋ฒ„๋ฒˆ ์œ„์Šคํ‚ค๋กœ ์ฑ„์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค ์ œํ”„!

2015๋…„ 5์›” 13์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 1:44 Mike Nolta [email protected]
์ผ๋‹ค:

+1

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/JuliaLang/julia/issues/8839#issuecomment -101772806.

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค ์ œํ”„! :๋งฅ์ฃผ: :๋งฅ์ฃผ: :์Šค๋งˆ์ผ:

์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค! ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค, ์ œํ”„. :๋ถˆ๊ฝƒ:

์ข‹์€ ์†Œ์‹. ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค, ์ œํ”„!

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

์ถ•ํ•˜ ํ•ด์š”

์› ์› ์ œํ”„ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค, ๋ฒ ์ž”์Šจ ๋ฐ•์‚ฌ๋‹˜!

์‚ฌ์ง„์„ ์˜ฌ๋ ค์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. @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

Aleph-zero ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค, ์ œํ”„! ์‹œ์• ํ‹€์— ๊ณ„์‹œ๋‹ค๋ฉด ์ถ•ํ•˜ ์Œ๋ฃŒ๋ฅผ ์‚ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. :)

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค ์ œํ”„. ์ปค๋ฎค๋‹ˆํ‹ฐ๋กœ์„œ ๊ท€ํ•˜์˜ ์ž‘์—…์„ ์ถ•ํ•˜ํ•˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ๋ถ„์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

@jiahao , ๊ฐ์‚ฌ์˜ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ๋ณด์ถฉ ์ž๋ฃŒ ๋กœ Julia์˜ ์ตœ์‹  ์„ธ๊ณ„๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. :)

๋ชจ๋‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ๋‚ด ๋…ผ๋ฌธ์€ ์‹ค์ œ๋กœ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๊ณง ์ด๋ฃจ์–ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ช‡ ์žฅ์˜ ์‚ฌ์ง„์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ๊นจ์–ด๋‚œ ํ›„์— Jeff์—๊ฒŒ ๋ณด๋‚ด๊ฒ ์Šต๋‹ˆ๋‹ค(๊ทธ์˜ ์–ด๋จธ๋‹ˆ, ์•„์ฃผ ์ข‹์€ ์—ฌ์„ฑ์„ ์œ„ํ•ด!) _Dr._ Bezanson์€ ์›ํ•œ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ์‚ฌ์ง„์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

์•ˆ ๋๋‚ฌ์–ด??? Gerry๊ฐ€ ๊ทธ ๋นŒ์–ด๋จน์„ "๊ตฌ๋ฌธ"์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ณ  s-ํ‘œํ˜„์‹์œผ๋กœ ์ž‘์„ฑํ•˜๊ฒŒ ํ•˜๋ผ๊ณ  ์š”์ฒญํ–ˆ์Šต๋‹ˆ๊นŒ?

@JeffBezanson ์ด Mac์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ์Šต์€ ๋‚ด๊ฐ€ ์˜ˆ์ƒํ•œ ์‚ฌ์ง„์ด ์•„๋‹™๋‹ˆ๋‹ค!

์•ผ!

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค

์ด ์—ฐ๋ชป์˜ ๋ชจ๋“  ํŒฌ ์—ฌ๋Ÿฌ๋ถ„ ์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค.

์•ˆ ๋๋‚ฌ์–ด??? Gerry๊ฐ€ ๊ทธ ๋นŒ์–ด๋จน์„ "๊ตฌ๋ฌธ"์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ณ  s-ํ‘œํ˜„์‹์œผ๋กœ ์ž‘์„ฑํ•˜๊ฒŒ ํ•˜๋ผ๊ณ  ์š”์ฒญํ–ˆ์Šต๋‹ˆ๊นŒ?

๋‹ˆ๊ฐ€ ๋๋ƒˆ์–ด! ๋†๋‹ด์ด ์•„๋ƒ. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Š” ์„ ํƒ์  s-expr ๋ชจ๋“œ์— ๋งŒ์กฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋ ˆ์  ํ…Œ์ด์…˜์ด ๋๋‚œ ํ›„ ๊ทธ์™€ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค... ๊ทธ๋Š” ๋‹น์‹ ์˜ ๋‚ด์šฉ์„ ์ข‹์•„ํ–ˆ์ง€๋งŒ ๋ชจ๋“  ๊ตฌ๋ฌธ์— ๋Œ€ํ•ด์„œ๋Š” ์ „ํ˜€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค... ๋„ˆ๋ฌด ๋งŽ์€ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค... ๊ทธ๋Š” ๋‚˜์—๊ฒŒ Scheme ๋งค๋‰ด์–ผ์ด ์–ผ๋งˆ๋‚˜ ์ž‘์€์ง€๋ฅผ ์ƒ๊ธฐ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค :์›ƒ๋Š”๋‹ค: 6.001[์ฒซ ํ•™๊ธฐ์— ๋ฐฐ์› ๋‹ค]์— ๊ทธ๋ฅผ ์‹œ์ผฐ์„ ๋•Œ, ์šฐ๋ฆฌ๋Š” MacLisp์—์„œ ์ž‘์€ Scheme ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค... Scheme์ด ๋„ˆ๋ฌด ์ž‘์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฝค ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค...

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๋‹น์‹ ์ด ํšŒ์‚ฌ๋ฅผ ์œ„ํ•œ ๊ทธ ๋ฒ„๋ฒˆ ๋ณ‘์œผ๋กœ ๊ฝค ๋นจ๋ฆฌ ๊ทธ๊ฒƒ์„ ๋…น์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค(๋‚จ์€ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด! ;-))

์Šคํ‚ด ๋งค๋‰ด์–ผ์˜ ๊ธธ์ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜์ž๋ฉด ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋ถ€๋ถ„์ด ์ˆซ์ž์˜ ๋™์ž‘์„ ๋ฌธ์„œํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ˜๋ฉด Julia์—์„œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Julia๋Š” ์ž ์žฌ์ ์œผ๋กœ scheme๋ณด๋‹ค ์ž‘์€ ํ•ต์‹ฌ ์–ธ์–ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  LLVM ์‚ฌ์–‘์„ ์Šคํ…Œ์ดํ”Œ๋งํ•˜์ง€ ์•Š๋Š” ํ•œ).

์ฐฌ์„ฑ์ด๋“  ๋ฐ˜๋Œ€์ด๋“  ๋ฌธ๋ฒ•์ด ๋„ˆ๋ฌด ๊ฐ•์กฐ๋ฉ๋‹ˆ๋‹ค! ๋˜ํ•œ http://www.schemers.org/Documents/Standards/R5RS/HTML/์˜ ์„น์…˜ 7.1์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์Šคํ‚ค๋งˆ ๊ตฌ๋ฌธ์€ ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค!

Julia๋Š” ์ž ์žฌ์ ์œผ๋กœ scheme๋ณด๋‹ค ์ž‘์€ ํ•ต์‹ฌ ์–ธ์–ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฌผ๋ก  LLVM ์‚ฌ์–‘์„ ์Šคํ…Œ์ดํ”Œ๋งํ•˜์ง€ ์•Š๋Š” ํ•œ).

์˜ˆ, Julia๋Š” ์ข‹์€ ๋ผˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

์ด์ „ @sexpr ๋งคํฌ๋กœ๋ฅผ ํŒŒํ—ค์น  ์‹œ๊ฐ„์ž…๋‹ˆ๊นŒ?

์กธ์—…์„ ์ถ•ํ•˜ํ•˜๊ณ  Julia์™€ ํ•จ๊ป˜ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

:์ผ€์ดํฌ: ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

@JeffBezanson์„ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค :)

:+1:

@์†Œ๋…„! ์˜ค๋žœ๋งŒ ์ด๋„ค์š”!

๊ทธ๋ฆฌ์›Œ์š” ์—ฌ๋Ÿฌ๋ถ„ :)

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

์งˆ๋ฌธ: PDF์—๋Š” ToC์˜ ๋งํฌ๋‚˜ pdf ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ํƒ์ƒ‰ ๊ฐ€๋Šฅํ•œ ์ƒ‰์ธ์ด ์—†์Šต๋‹ˆ๋‹ค.
MIT๋ฅผ ์กธ์—…ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ž‘์„ฑ์ž๊ฐ€ ์„œ๋ฌธ์— \usepackage{hyperref}๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ค์šด๊ฐ€์š”?

๊ทธ๋ƒฅ ์ง€๋‚˜์น˜์ง€ ์•Š๊ณ  ์ „์ฒด๋ฅผ ์ฝ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ;-)

ํ•˜์ง€๋งŒ ์˜ˆ, hyperref๋Š” ์ด๊ฒƒ์„ ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ „์ฒด ๋‚ด์šฉ์„ ์ฝ์„ ๊ฒƒ์„ ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค :P

์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค. ์ž์œ ๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ ์ž”์Šจ ๋ฐ•์‚ฌ๋‹˜, ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

@nicola-gigante, ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์Šค๋งˆ์ผ:.

์ตœ์šฐ์ˆ˜ ๋…ผ๋ฌธ์ƒ์„ ์œ„ํ•ด ๋กœ๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

์ถ•ํ•˜ํ•ด!!!

@jpfairbanks - ์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค! ๊ทธ์˜ ๋…ผ๋ฌธ ์ง€๋„๊ต์ˆ˜๊ฐ€ ์ œ์ถœํ•ด์•ผ ํ•˜์ง€๋งŒ... ํŽ˜์Šคํ„ฐ ์•จ๋Ÿฐ ์—๋ธ๋งŒ, ์ œ ์ƒ๊ฐ์—๋Š”...

์˜ˆ, ๊ณ ๋ฌธ์˜ ์ถ”์ฒœ๊ณผ 5๊ฐœ์˜ ์ง€์› ์„œ์‹ ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ฐ˜์œผ๋กœ
์ด ๋ฌธ์ œ๋Š” ์ ์–ด๋„ 5๋ช…์ด ๊ทธ๊ฐ€ ๊ทธ๋Ÿด ์ž๊ฒฉ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ง€์›์€ 5๊ธ€์ž๋กœ ์ œํ•œ๋˜๋‚˜์š”? ๋˜ํ•œ, ๊ทธ๊ฐ€ ๊ทธ๋Ÿด ์ž๊ฒฉ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์‹ค์ œ ์ˆ˜๋Š” ์ ์–ด๋„ ๋ช‡ ์ž๋ฆฟ์ˆ˜ ์ด์ƒ ๋” ๋งŽ์Šต๋‹ˆ๋‹ค!

@JeffBezanson : ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค!

@alanedelman : @jpfairbanks ๊ฐ€ ์ข‹์€ ์ง€์ ์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Jeff๋Š” ACM ๋ฐ•์‚ฌ ํ•™์œ„ ๋…ผ๋ฌธ ์ƒ ํ›„๋ณด๋กœ ์ง€๋ช…๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@JeffBezanson ์ˆ˜๊ณ ํ–ˆ๊ณ  ๊ทธ๋Ÿด ์ž๊ฒฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค!

@ScottPJones "๋˜ํ•œ ๋…ผ๋ฌธ์˜ ์˜ํ–ฅ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ํ†ต์ฐฐ๋ ฅ์ด๋‚˜ ์ฆ๊ฑฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๋‹น ๋ถ„์•ผ ์ „๋ฌธ๊ฐ€์˜ ์ง€์› ์„œ์‹ ์ด ์ตœ์†Œ 3๊ฐœ์—์„œ 5๊ฐœ ์ดํ•˜๋กœ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."

์•„๋งˆ๋„ Gerry๊ฐ€ ๊ทธ์—๊ฒŒ ํ•˜๋‚˜๋ฅผ ์“ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๊ฐ€ s-expr ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„!).

Hacker News ์ฒซ ํŽ˜์ด์ง€ :-) ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค, Jeff.

@nicola-gigante ๋งž์Šต๋‹ˆ๋‹ค. ํ•˜์ดํผ ์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ์‚ฌ๊ฐ€ ์ตœ๊ณ ์˜ ์ƒ์ž…๋‹ˆ๋‹ค.

@jiahao ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” EXIF โ€‹โ€‹ํšŒ์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ. Chrome์€ ์‚ฌ์ง„์ด ์ž์ฒด ์ฐฝ์ธ ๊ฒฝ์šฐ์—๋งŒ EXIF โ€‹โ€‹๋ฐ์ดํ„ฐ์— ๊ด€์‹ฌ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์„ ๋ณด๋ ค๋ฉด ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  "์ƒˆ ํƒญ์—์„œ ์—ด๊ธฐ"๋ฅผ ํด๋ฆญํ•˜์‹ญ์‹œ์˜ค.

EXIF ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆฌํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  "์ ์ ˆํ•œ" ๋ฐฉ์‹์œผ๋กœ ํšŒ์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ACM ๋…ผ๋ฌธ์ƒ ํ›„๋ณด์— +1.

์ถ”์ฒœ ๋งˆ๊ฐ์ผ์€ 2015๋…„ 10์›” 31์ผ์ž…๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ACM์ด ๊ทธ๋“ค์— ๋Œ€ํ•œ ์ €์ž‘๊ถŒ ์–‘๋„์™€ ๋…์  ์ถœํŒ๊ถŒ์„ ์š”๊ตฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ๊ฐ€์น˜ ์žˆ๊ณ  ๊ถŒ์œ„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ•ํ•˜ ํ•ด์š”!

๋…์ ์ถœํŒ๊ถŒ!!?! ๋‚˜๋Š” ์‹ธ์ธ ์‚ฌ๋ณธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (๋˜๋Š” ๋‘ ... 10-15 ๋…„ ์•ˆ์— e-bay์—์„œ ํŒ๋งคํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด ๋ณด๊ด€ํ•ด์•ผ ํ•  ๋˜ ํ•˜๋‚˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค :์›ƒ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:)... ACM!
(๋‹น์—ฐํžˆ ACM์˜ ๋””์ง€ํ„ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํšŒ์›๋“ค์—๊ฒŒ ์ œ๊ณต๋œ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋…ผ๋ฌธ์ด ๋‚˜์—๊ฒŒ ์ „๋‹ฌ๋˜๋ฉด ์„œ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์˜๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ์ˆ˜์ƒ ๊ฒฝ๋ ฅ์— ๋น›๋‚˜๋Š” ๋…ผ๋ฌธ :-)

2015๋…„ 5์›” 17์ผ ์ผ์š”์ผ ์˜ค์ „ 8:49, Scott P. Jones ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

๋…์ ์ถœํŒ๊ถŒ!!?! ๋‚˜๋Š” ์‹ธ์ธ ์‚ฌ๋ณธ์— dibs๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (๋˜๋Š”
๋‘˜... ํ•˜๋‚˜๋Š” 10-15๋…„ ์•ˆ์— e-bay์—์„œ ํŒ๋งคํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด ๋ณด๊ด€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [์ด๋ฏธ์ง€:
:์›ƒ์œผ๋ฉด์„œ:])... 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 ๋“ฑ๊ธ‰