Talk:Julia (programming language)/Archive 1
This is an archive of past discussions about Julia (programming language). Do not edit the contents of this page. If you wish to start a new discussion or revive an old one, please do so on the current talk page. |
Archive 1 | Archive 2 |
The Resurrection of The Julia Article
Apparently, this article has been recreated from its former deletion. I support this move given the recent publicity Julia has gotten (e.g. InfoWorld, NetworkWorld, O'Reilly Strata). During the former discussion, hac21 said "Delete No 3rd party sources", an arugment which was correct at the time, but now has changed. Does anyone know how to get the former page to incorporate details from it? 50.137.77.140 (talk) 15:27, 22 February 2013 (UTC)
- I was the nom for that AfD and I agree. When the article was recreated so quickly, I had the usual skepticism. But the new sources at O'Reilly and NetworkWorld quickly did it for me, too, easily establishing notability. If you'd like to retrieve the former page, I would post a request on Bwilkins's talk page as he (or she) was the admin who closed the AfD and deleted the page. Msnicki (talk) 19:47, 22 February 2013 (UTC)
- I just did so. Neo Poz (talk) 05:24, 23 February 2013 (UTC)
Julia's 0.1 release was in recognition of its package system crystallizing just recently. Now it is ready for much more substantial library development. Neo Poz (talk) 05:18, 23 February 2013 (UTC)
- It would be nice to also include a link to the list of Julia Packages [1].
Statement about performance
The statement that the speed of Julia comes "within a factor or two" of compiled code is meaningless without specifying what the factor is (and two factors can always be combined into one). If it is meant to say "within a factor _of_ two", a reference should be given.
- Corrected. — Steven G. Johnson (talk) 15:43, 17 July 2013 (UTC)
Where are the examples of Julia code
Where are the examples of the Julia Language coding? 202.177.218.59 (talk) 22:36, 5 February 2014 (UTC)
Matrix representation(s)
Julia has DArrays (distributed arrays - to other computers) and sparse arrays. I can't see that the latter can be distributed (would it make as much sense? But could be added I guess). I also found out about: Morton-order matrix representation. I assume it could be added but is not currently. Can all types of matrixes be used together and what is the outcome (eg. of multiplaction)? comp.arch (talk) 12:16, 27 June 2014 (UTC)
Comparison with other (new) languages/OO needed
How does it compare to other languages regarding parallel/distributed (and (serial) speed)? Julia seems to have the momentum, but are there other new or not new languages (at least that have a fighting chance/better abstractions) that could be better for the multi-core age? Fortress is dead, Chapel? With X10 new "time and space optimal" multi-dimensional arrays: "An extensive redesign of the X10 abstractions for arrays is the major new feature of the X10 v2.4 release. Although this redesign only involved very minor changes to the actual X10 language specification, the core class libraries did change significantly. As mentioned above, the driving motivation for the change was a long-contemplated strategic decision to shift to from Int-based (32-bit) to Long-based (64-bit) indexing for all X10 arrays." - possibly a competitor.
For (programmers familiar with) object oriented, maybe explaining the difference would be nice. Could be said to be a superset of "ordinary" OO? Has been said to be not OO, but it's not clear that it is true. How would OO stuff translate to Julia language syntax or interfacing with other OO languages? Python is one. C++ but currently caling C is supported and C++ is not it sems (at least portably? I saw something about overloading dot operator (not yet landed in language) and a foreign function interface library for C++).
Compared to Rust, Go (coroutines vs goroutines?), Erlang maybe? comp.arch (talk) 12:57, 28 July 2014 (UTC)
I support adding Julia's speed and parallel abilities to the article -Cs california (talk) 09:41, 23 October 2014 (UTC)
Too much Tutorial Material
Quoting from Wikipedia:What Wikipedia is not we read that
The purpose of Wikipedia is to present facts, not to teach subject matter.
Given this guidance, I think there is too much tutorial info on the Julia page. I'm a big fan of Julia; I think less REPL quotes than the number present now would be more encyclopedic. The Python article has essentially no examples; I think we can follow it's example here. Any comments from others?Sanpitch (talk) 00:35, 11 November 2014 (UTC)
- I agree that we could cut down on the large REPL quotes. The python (programming language) article does have many code examples, it just that most are embedded in the prose, or in the table in the python (programming language)#Typing subsection. The same idea could be used here--describe the language features using only minimal snippets of code where needed. Going in the other direction, I don't think we need a picture of the julia dev team holding beers. --Mark viking (talk) 03:57, 11 November 2014 (UTC)
- I moved many examples inline, condensed other examples, and removed much of the Examples section. I think it's cleaner now. --Sanpitch (talk) 02:09, 18 November 2014 (UTC)
- It is much improved, nice work. --Mark viking (talk) 03:27, 18 November 2014 (UTC)
I disagree (at least to an extent). The point of languages isn't just speed (then we would just use FORTRAN or C++) but the useful/readable syntax. If we say "functional" we may give the wrong idea/put people off, needs to be explained. I can justify what I added (or changed). I'll add comments that may not have been there:
julia> 1 + 2 * 3 # I used this to implictily indicate infix operators, unlike many functional language, that people might have assumed. Example was previously even more trivial (1 + 1) but showing REPL use (that is unusual)
shell> mkdir test # didn't put this in, ok to skip, useful, but only for interactive help?> print # unusual? INFO: Loading help data...
julia> println("Hello " * "World") # I put this in as * unusual.. can go either way on this..
julia> @printf("Hello World.. # I put this in, macros are unusual, except for LISP people.. may have gone overboard..
function p(x, y) return 2x^2 + y # The syntax for functions is very math like and unusual end
p(x, y) = 2x^2 + y
Functions can also return more than one value (e.g. tuples): # tuples maybe not unusual any more, but still missing in a lot of languages. I put in..
tup(x) = (x + 1, x + 2, x + 3)
Metaprogramming # macros should be explained I would think but some other way..(?)
julia> Pkg.add("PackageName") # I didn't put in but git included in unusual..
Maybe I'll conservativly revert and you can just revert right back.. comp.arch (talk) 15:47, 18 November 2014 (UTC)
- Thanks comp.arch, I did make a few minor changes to the "Hello World" example so that it wouldn't run off of the page in my browser. Just to be clear, I think your code examples are useful, just not for Wikipedia (maybe in a different article??). In general I think the article can be significantly cleaned up even more. --Sanpitch (talk) 21:04, 18 November 2014 (UTC)
Response to banners
Hi Sanpitch, thanks for your recent edits. I believe this was the state of the article just before my contributions. I can't take credit, good or bad, for everything since, but I believe I've made the most changes since, including some you reverted and I'm fine with. About the banners:
"may be written from a fan's point of view, rather than a neutral point of view."
Yes, I admit, I'm a fan, but I try to hold a "neutral point of view". I may have quoted too much and I already think you fixed the remaining issues.
"relies too much on references to primary sources" "may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral"
I haven't really changed any other programming language article that much. This is the only one I really care about. I'm trying to use sources so to prevent WP:OR. Most of the primary ones are to support how something very fact based or in some cases to NOT get people too exited (mentioning "alpha support"). I believe it may be ok to point to 0.4-dev features and see no good way to explain w/o primary sources..
"written like a manual or guidebook" any examples? I find Rust also interesting and important that you can easily call between (and other languages) any good way to say that without (these) sources? comp.arch (talk) 13:08, 26 May 2015 (UTC)
- Hey Comp.arch, I definitely wasn't singling you out, just trying to point out flaws in the article. I'm a big fan of Julia; I think the article would better represent Julia if it did not try to answer so many questions; for example with content from the julia-users mailing list and GitHub. For the state that Julia is in now, I think a much more concise and smaller page is more appropriate. As an example of the manual-style nature of the article, see the citation for how to remove the dependence on the GPL, or the section on forks of the language. This is useful information, just too detailed for the current stage of Julia. I'll look for time on the weekend to work on this. Sanpitch (talk) 16:22, 26 May 2015 (UTC)
- I removed the warnings about it being written like a fan site (this was too harsh), and also the warning about it being written like a manual. To some degree these things still apply; I'd rather focus on the references for now. Sanpitch (talk) 23:54, 27 May 2015 (UTC)
- As you can see, I took out remaining banners while making some changes only afterwards noticing that you had taken some out. Scanning refs (at that edit point) I saw nr.: 18, 20, 38 (Miles), 42, 48 that are WP:PRIMARY. I then read the article looking for possibly biased-stuff and cross-referenced.
- About the forks, SJulia was just fascinating to me (and still is), that Julia could be a good base fro symbolic computations and that you do not need a "special" language (like Mathematica) for that. Yes, you kind of still do, but SJulia uses macros to "add to the language". I thought of adding a redirect for SJulia to this page. I believe it's it is a work in progress and may not (yet) be notable enough itself for it's own page. Anyway, I commented it all out, as it's not really a fork anyway (I good sign for Julia) and didn't need to be. It just shows the power of Julia in my mind. But, now it is "just" a package and kind or regrettable that the article doesn't mention symbolic computation - I'm not sure which package should be mentioned here.
- About statics section that I made and someone revised a long time ago. I'm not sure you have an issue with that one, so I overlooked it now as I haven't touched it in a while. I'm not sure who I can cite (how closely they are tied to Julia), academics (Miles, Bates) will want to contribute to the language as they are impressed with it. I track Julia closely, just not closely enough to really know if they are contributing to "core" or "base". And not even sure if/where I should draw the line..
- "how to remove the dependence on the GPL" "how to" is not important, that you can is. They want to use MIT and that is what the article said. That is only a half-truth, it needs to say GPL. Many dislike the GPL ("copyleft") and with only a tine optional part (libraries) GPL, it would give a very wrong idea by saying GPL without explaining. comp.arch (talk) 00:40, 28 May 2015 (UTC)
Ranking and readability
I see Python starts with in the lead: "Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java." This is easily also true for Julia (that also beats Python or at least similar and all others on the following metric and all languages I know except for esoteric language made for code golfing..), and an important metric. I saw a benchmark of this kind that included Julia and a lot of other languages including Python, C, C++, etc. I'm not talking about the one on julialang.org, but an independent one. The code was all however on github, but there was a guy, an academic, that got convinced by it. Should the former or his blog post[2] that references it (or both) be cited here? Any better source and possible wording?
RedMonk has Julia as a "notable languages to watch" and I can't see a clear ranking (a number or two) from the graph. Is the former quote appropriate (maybe not inline?) or a longer one (maybe not this long..): "Further down in the rankings, however, there are several trends worth noting – one in particular. [..] Long two of the notable languages to watch, Julia and Rust"[3] This "one in particular" is (ambiguous?) probably about Swift.
In general, what would you have included in the article? I see Python has all keywords.. I'm not sure that is too important.. That you have loops not just recursion yes, and non-strange syntax, but the semantics and not having to specify types seems important. No matter how I would do this, a WP:PRIMARY would be appropriate for it (syntax). Those have been objected too.. :) comp.arch (talk) 09:32, 29 May 2015 (UTC)
Jeff's PhD and M# (MATLAB on .NET) - trivia - not include?
I saw this on, "just a [ ILNumerics ] blog": http://ilnumerics.net/blog/julia-math-net-m-fortran-net-managed-lapack-mkl-and-outlook/
I didn't know about M#.., also found here:
http://julialang.org/blog/2012/02/talk-announcement/
- Jeff was a principal developer of “M#”, an implementation of the MATLAB language running on .NET. [..] Jeff received an A.B. in Computer Science from Harvard University in 2004
Note, that info is outdated, as he got his PhD in if I recall, July 2015 (for Julia of course). Is that relevant in the article? His thesis is a good read.. Maybe, or maybe not [the bit on M#] here, while I did put in a "vs. MATLAB"-section.. comp.arch (talk) 15:52, 27 August 2015 (UTC)
- Definitely no on both counts. Notable info on Jeff Bezanson should go on his page. In general, given the new nature of Julia, I'd actually prefer a smaller and cleaner wikipedia page, rather than trying to add too much trivia.Sanpitch (talk) 15:11, 29 August 2015 (UTC)
- Ok, kind of what I thought, why I didn't put it in (see however at Python's page "by Guido van Rossum at CWI [..] as a successor to the ABC language", that is probably uncontroversial by now, but not that, Julia is a successor to M# or MATLAB..). I was intrigued by M#, but really unsure it needed M# needs to go to this page. Didn't think of his page; see his thesis is here and "(2015)" but not actually saying he has a PhD (only BS). I fixed only that. Feel free to read the PhD thesis, it's interesting and a good source, but is a WP:PRIMARY one. comp.arch (talk) 15:58, 29 August 2015 (UTC)
Inline assembly - too much trivia?
http://acooke.org/cute/InlineAsse0.html
I think I'll not add (at least for now) an inline assembly example. [You have to draw the line somewhere (and I've used my judgement so far to include most general stuff and some relevant to the target audience), and *I* find this interesting, while others may not..] It may be too much trivia.. Still, I'm not aware of many languages that allow.. C does (or is that only a GNU-extension?).
I included the example, of the other way around, seeing native machine code, as I found it interesting and others (enough to write a blog post about and say its one of the killer features of Julia).
Note, the example in shows x86, what is supported, but I guess would be ARM etc. on other architectures and that cross-platform llvm "machine code" is also available. llvm is however the only option for "in-line" assembly, but look at details in the blog. comp.arch (talk) 00:18, 21 September 2015 (UTC)
- I agree with your decision. Inline assembly might be occasionally useful, but it is more of an implementation detail (like the GNU extension that allows inline assembly in gcc) than a fundamental part of the language. Mentioning the possibility of inline assembly in the Implementation section, with a reliable reference, might be due weight, but a full example seems too far afield. --Mark viking (talk) 05:30, 22 September 2015 (UTC)
Howto/advertorial
This article still reads like a manual and advertorial for Julia, mixing extensive listings of features and recommendations for libraries into the little encyclopedic content. I'll try to trim it down a bit. QVVERTYVS (hm?) 08:18, 3 October 2015 (UTC)
- Thanks for caring about the article. I do not WP:OWN it (neither do you), so I would like to see some support for the things I've put in.
- I may comment out most of the article, to get the banners out, to see if you or others will uncomment back at least the stuff people are ok with. I already disagree with some of the deletions you've made. Such as this edit. I just recently saw the "10×" number and added it (before and should have provided a good source for it. However, you've thrown out the baby with the bathwater. Yes, the lead says garbage collection, but this bit said "mark and sweep" (used in stable Julia 0.3), I've seen other articles stating implementations. You also threw out the new GC implementation in 0.4 (now in release candidate). "Much faster" isn't really hard to believe, as generational (and incremental) generally is, that is it's point. comp.arch (talk) 14:47, 3 October 2015 (UTC)
- Still, such claims need reliable, independent sources to establish importance of these implementation details. There's no indication that GC performance is actually important to Julia (the need for which varies from language to language and implementation to implementation). There's no third party that establishes they didn't completely botch the implementation of their new GC. I'm not suggesting they did, I just want a secondary source.
- Regarding WP:ELNO, the main point is 13 (not directly related to the main topic). If we would link to every programming tool for C from C (programming language), we would be creating a massive linkfarm. Similarly, it's unclear why we should have deep links to selected parts of the Julia documentation, all of which can be found (hopefully) by navigating from the main webpage. QVVERTYVS (hm?) 15:16, 3 October 2015 (UTC)
- comp.arch, I am very grateful for the attention that you put into this article; it looks like 365 out of 690 edits are due to you. Thank you for your hard work! I do agree with QVVERTYVS that the article is much too large and cumbersome. Even though Julia is a much less popular language than Rust, it has an article that is twice the size (in bytes), with three times the references. I've left other comments in other sections above of a similar tone. My suggestion is that anytime you (or me or anyone else) wants to add something to this page for the next few years, that you (we) first delete as much or more content, so that we keep the article a reasonable length. I think a reasonable size is 1/4 to 1/6 of the current size of 57,000 bytes. Sanpitch (talk) 03:08, 4 October 2015 (UTC)
- "Even though Julia is a much less popular language than Rust". I think Rust is also an important language, and possibly the best complimentary language to Julia (C is complementary but outdated compared to Rust). I'm not sure you should be looking at popularity relative to Rust or established languages to judge the correct length here. I'm sure my edits can be questioned, but I'm not sure I can edit Julia anymore. comp.arch (talk) 13:47, 4 October 2015 (UTC)
- I think the the banners are appropriate; I do not think that they should be removed just because comp.arch doesn't like them. I have added them back in. Sanpitch (talk) 01:53, 5 October 2015 (UTC)
- Then you took out the advert banner, thanks. Not "just because" I don't like them, I thought I deleted the possible cause for them in the same edit. I reduced the article from 57959 to 43298 bytes (e.g. if the commented out sections were deleted for real; compared to 60,994 bytes for C++). About the banners:
- "This article may contain an excessive amount of intricate detail that may only interest a specific audience. (October 2015)" - Julia is for technical computing, so I added stuff related to that. Also for general computing, mostly that. Web and even game programming, both now gone. A banner isn't a good way to tell me what the issue (still) is.
- "This article relies too much on references to primary sources." - primary sources would be to Julia's documentation. If it says useful for general computing, then in a way, a link to a web library is secondary.. I asked another editor about the banners and got this response "Lastly, the {{Primary sources}} tag is debatable for technical articles". Yes, it's not ideal. For some of the stuff it may be the only source. I wander if this was put in for Julia primary sources or sources to libraries.
- "This article may be too long to read and navigate comfortably." - the first banner may be what you want, instead of this one. It just seems misapplied: Wikipedia:Article size: "Content should not be removed from articles simply to reduce length; see Wikipedia:Content removal#Reasons for acceptable reasons." and the length probably hits "< 40 kB Length alone does not justify division" as I counted the whole length, not only prose. The citations I would guess are about half). comp.arch (talk) 10:10, 5 October 2015 (UTC)
- I don't mind the length of the article per se. I think solving the other issues will require trimming it down and sticking to secondary sources as much as possible will pretty much automatically yield an article of the right length. The length of the article Rust (programming language) should not be a guideline, IMHO: if there are more good sources that discuss Julia at length than there are about Rust, then having a longer article is no problem. QVVERTYVS (hm?) 12:19, 5 October 2015 (UTC)
- In my edit summary, I meant so say "I do not see a way to edit this article, or other programming language articles, without primary sources". In many cases at least, no sources/WP:OR is the alternative (that was already done here, and I didn't change that text as it seemed more or less true). MATLAB has "Libraries written in Perl, Java, ActiveX or .NET can be directly called from MATLAB", linking to primary source. I didn't intend to to list all languages for Julia, but it seems to be valuable information that you can call most of the important languages so I leave that in. My dilemma, would have been 1) "You can call most popular languages" (OR) or "you can in theory call all languages through calling C" (even worse), 2) [Based in fact] "You can call Python, MATLAB, PHP" etc. (unsourced). 3) With source, to the libraries enabling each language. Seemed the best option until now, where every source I included in this way, seems in question. comp.arch (talk) 14:28, 5 October 2015 (UTC)
- comp.arch, I think the article looks much better, thanks for your changes. Much of the content that you're removing is about specific Julia packages; I would support a new article about 'Julia packages' that lists significant packages (it couldn't include all of them) and includes some of the material you're removing. Sanpitch (talk) 16:45, 10 October 2015 (UTC)
- Feel free to try that, what I added and deleted, can be reused elsewhere as, "irrevocably [..] under the CC BY-SA 3.0 License and the GFDL". I will be concentrating on non-programming language related articles (at least for now and while I'm not sure on what the rules allow). I may work on Julia in non-WP context (that possibly excludes working on it here). comp.arch (talk) 17:06, 10 October 2015 (UTC)
Decimal floating point in Julia vs. rational - [And commercial programming in general]
See [4][5]. I wander since basic types are not "privileged" and new ones can be easily added, that a decimal floating point (or fixed point or DEC64..) numeric type can be easily added (as a library - that I can't find). Doesn't have to be a base inbuilt type. I know Julia has a rational type (and bignum), not sure if that makes a decimal type unnecessary (for 1/10 to be exact). I know Julia is officially for technical programming, but they say it is a general language, then would this help for commercial programming (and what else)? Python has decimal in addition to binary floating point as onw of the basic types. comp.arch (talk) 11:54, 27 June 2014 (UTC)
- Yes, there are a couple of decimal floating-point packages for Julia now. — Steven G. Johnson (talk) 17:49, 3 January 2017 (UTC)
Julia2C
Article currently reads:
- A Julia2C source-to-source compiler from Intel Labs is available.[1] This source-to-source compiler is a fork of Julia, that emits C code (and makes the full Julia implementation not needed, for that generated C code) instead of native machine code, for functions or whole programs; this makes Julia effectively much more portable, as C is very portable with compilers available for most CPUs. The compiler is also meant to allow analyzing code at a higher level than C.[2]
- It would be nice to have independent evidence of the notability/importance of this compiler. Is it just some random project at Intel? github is no evidence of importance. The github Readme certainly makes it sound like it is a pretty basic and incomplete tool: "This initial version converts basic Julia types and expressions into corresponding C types and expressions"; "We do not have a checker that checks [that the Julia code is fully typed] before translation"; "The current release handles only common cases".
- It is unclear what some of it means. It says, for example, "and makes the full Julia implementation not needed, for that generated C code". Does this mean that the generated code requires no run-time library support? (Most compiled code probably does.) Or simply that it doesn't need an interpreter to be present? (The usual definition of a compiler.)
- Is the compiled code guaranteed to produce the same results on all correct implementations of C? Just translating to C doesn't guarantee that, as the comment about arithmetic semantics points out.
- The business about "leverage high-level abstractions" is completely unclear, since C doesn't have matrix and vector abstractions.
- What exactly does "easier to analyze" mean? That the C compiler can generate better code?
- What does "potentially add the rich extensions of C" mean? OpenMP and tbb are not "extensions of C"; they are just libraries. Anyway, Wikipedia is not a crystal ball. If taking advantage of these libraries is only a "potential" benefit, and has not been demonstrated by a reliable source, we shouldn't be mentioning it.
- "...extend[ing] Julia to new architectures where..." is obvious.
- "Translation from C to Julia might be harder" is a silly comment. What's the point?
- More trivially, a recent edit re-introduced this comma: "...is a fork of Julia, that emits...". The comma is wrong there, because what follows is a restrictive clause. In skimming the rest of the article, I see that there are other, similar, grammatical errors sprinked throughout....
All in all, it looks like this section should be removed. --Macrakis (talk) 23:37, 11 May 2017 (UTC)
References
- ^ https://github.com/IntelLabs/julia/tree/j2c/j2c
- ^ "Julia2C initial release".
By translating Julia to C, we leverage the high-level abstractions (matrix, vector, ..), which are easier to analyze, and can potentially add the rich extensions of C (like openmp, tbb, ...).
The tool may also extend Julia to new architectures where the only available tool chain is for C
[..]
Translation from C to Julia might be harder.