|date1 = June 9 2012 |result1 = '''delete''' |page1 = Julia (programming language)
}}
{{WikiProject Statisticsbanner shell|class=B | importance=High}} ▼
{{WikiProjectBannerShell|
{{WikiProject Computer science |class=B |importance=Tophigh}}
{{WikiProject Computing |class=B |importance=Tophigh|software=y |software-importance=Top |science=y |science-importance=Tophigh}}
{{Maths rating |class=B |priority=High|field=applied}}
▲{{WikiProject Statistics |class=B |importance=High}}
}}
{{refideas|1={{Cite web |last1=Phillips |first1=Lee |title=The unreasonable effectiveness of the Julia programming language |work=[[Ars Technica]] |date=2020-10-09 |url=https://arstechnica.com/science/2020/10/the-unreasonable-effectiveness-of-the-julia-programming-language/ |language=en-us |accessdate=2020-10-10 |df=mdy-all }}
|archiveheader = {{talkarchivenav}}
|maxarchivesize = 31K
|counter = 23
|algo = old(365d)
|archive = Talk:Julia (programming language)/Archive %(counter)d
{{Reflist-talk}}
== Excessive detail/difficult readability ==
== Criticism ==
In my opinion, while the facts in this article are all fairly well-sourced, the article contains way too many esoteric details that are of little use to most people. These details are often in parentheses, sometimes nested parentheses, with "e.g." and "i.e.," and that in turn makes it hard to even follow the original text. This type of writing style is unlike most other articles I have encountered on this site. Take this paragraph in the introduction:
Currently the article says nothing bad about Julia. Its tone is pretty dignified --- not quite cheerleading/advocacy --- but it still reads as if Julia solves all problems with no drawbacks. Some balance would improve the article. For example, [https://julialang.org/images/2019-julia-user-developer-survey.pdf this] user survey suggests some room for improvement (although a secondary source would be better). [[User:Mgnbar|Mgnbar]] ([[User talk:Mgnbar|talk]]) 19:46, 8 February 2020 (UTC)
* "Several development tools support coding in Julia, such as [[Integrated development environment|integrated development environments]] (e.g. for Microsoft's [[Visual Studio Code]], an [[Plug-in (computing)|extension]] is available providing debugging and [[Lint (software)|linting]] support); with integrated tools, e.g. a [[Profiling (computer programming)|profiler]] (and flame graph support available for the built-in one), debugger, and the Rebugger.jl package "supports [[Interactive programming|repeated-execution debugging]]" and more."
:The drawbacks of Julia are pretty obvious, they are mostly inherited from drawbacks of its paradigms and design choices. For example, there is a compile time attached to pretty much everything you do in Julia for the first time, because it's a compiled language. So the fact that we refer to ahead-of-time compilation is a big hint towards that. We could create a section and populate it with these drawbacks, however. For reference, Python doesn't have a section like that either, nor is the text particularly hinting at its disadvantages. [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 14:50, 5 April 2020 (UTC)
All that this paragraph really needs to say is that there is linting and debugging support in IDEs for the language. Mentions of VS Code, the flame graph, and whatever Rebugger.jl is doing are details which should be in a section further down or omitted altogether save their citations. I am of the opinion that the entire paragraph should be removed from the intro because it does not concern the language itself, but rather third-party tools.
::As you say Python has no drawback section, and its pros and cons are somewhat opposite to Julia. Julia however also has an interpreter, a non-default and undocumented... --compile=min option to enable it so you can get roughly Python behavior, avoiding that "compile" overhead. Language (by default) can have only either or, and both have pros and cons. There is a third hybrid option "tiered compilation"[https://devblogs.microsoft.com/dotnet/tiered-compilation-preview-in-net-core-2-1/] (also with pros and cons, while trying to get most of the pros minimizing the cons) in C#, not yet in Julia. [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]])
As far as I understand, Julia's support for compilation to binary executables is still experimental, and not really a core feature of the language - does it really deserve a paragraph in the intro?
Following up on this. The article seems to read as an advertisement right now, most egregiously/noticeably the [[Julia (programming language)#Notable uses|Notable uses]] section. Would be great to have another editor check this. For starters, I would add a criticism section, note drawbacks in various sections, and "neutralize" the tone in several parts of the article.
<!-- Template:Unsigned IP --><small class="autosigned">— Preceding [[Wikipedia:Signatures|unsigned]] comment added by [[Special:Contributions/24.238.13.130|24.238.13.130]] ([[User talk:24.238.13.130#top|talk]]) 21:22, 1 July 2020 (UTC)</small>
As another example, take the list in the history section with the version numbers 1.1, 1.2, etc. Given that the 1.X is a stable version of the language, this seems like a list that could be cleaned up by simply mentioning the most important features that have been added since the 1.0 release, such as the multithreading from 1.3. Those sentences about 1.7+ being time-based releases or 1.7.3 shouldn't be there at all - aren't all patch releases "fixing some issues?" And who cares about time-based vs. feature-based? There are also multiple sentences in this section mentioning the details regarding performance improvements or things done to reduce compiler latency when it could really be boiled down to one or two sentences about how the developers have been focusing on the problem more generally.
: Just to grab a few pieces which might be contributing to an overly positive message:
* "While it is a general purpose language and can be used to write any application, many of its features are well-suited...", which is indeed sourced, but may still be too opinionated. Alternatives could be more in the vein of "is designed for". One of the sources here is "Out in the Open: Man Creates One Programming Language to Rule Them All", so it may be possible that finding a wider variety of sources could be beneficial here?
* "Julia is in practice interoperable with many languages" (unsourced)
* Lots of "also"s, or things which do not technically contribute but may cause a biased tone overall: "Julia 1.4 allowed better syntax for..." that could be replaced with a less opinionated or more specific wording.
Here's a draft of how I would write the history section, starting after the Bezanson quote and up to the sponsors subsection:
: Besides the notable users, The "Current and future platforms" section also feels a bit like an advertisement or maybe just confused. It compares Julia's JIT to other languages and even brings up the support tiers. It goes into a very high depth here, although I think we should expect more detail for a numerical language than most conventional languages. [[User:Yafwa|Yafwa]] ([[User talk:Yafwa|talk]]) 04:33, 5 July 2020 (UTC)
:: On "Julia is in practice interoperable with many languages", I believe I wrote it, and a lot of other, some you point out, so feel free to amend. Where do you draw the line with "many" (you can even use Julia from within Excel[https://juliacomputing.com/blog/2019/06/10/juliainxl.html] but that's proprietary, and otherwise I only list no-cost solutions)? You can call to/from Python, R, C, C++, Rust, Zig, (Swift I guess), and of the top 20 language on July 2020 TIOBE index list, I only see Scratch as problematic. You can call C#[https://discourse.julialang.org/t/is-it-possible-to-call-c-functions-with-julia/18979/2?] (while not much done), i.e. .NET and thus I believe Visual Basic .NET (wouldn't cover Classic, but I'm unsure if important or how easy to do differently). For some languages you can only (in practice, currently, as you can interoperate with any language theoretically both ways) call from Julia, e.g. now to MATLAB, Java (not back as far as I know, except with callbacks). You can call to JavaScript, meaning Node.js (could call from but that package is outdated), or use in a web browser or through WebAssembly. I've called Octave from Julia, but that was though Python. You can call all languages with a C API (i.e. without garbage collection), why I listed Zig without knowing anyone actually having done that.. You can call '''from''' Ruby[https://github.com/mrkn/ruby-julia] and more, so in some sense those are interoperable but I've not seen a package to call in the other direction. "we send an integer value from Julia to Go and back via a C shared library (written in Go)."[https://rsdoiel.github.io/blog/2018/03/11/accessing-go-from-julia.html] You could call to/from PHP and Perl [https://gitlab.com/wavexx/Polyglot.jl] but that package to do it is outdated, only needs to be revived for Julia 1.0+, and you can still shell out and call those language, or from that way or differently (web services). [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 13:47, 8 July 2020 (UTC)
Julia 1.0 was released on 8 August 2018 with the syntax stabilized. Since then, the language has added many new features, such as composable multithreading in version 1.3, syntax for generic array indexing in 1.4, and an improved random number generator in 1.7. The releases have also gradually improved compiler latency and package loading times, i.e. the "time-to-first-plot" performance.
::: Thanks for the response. I'll put the caveat that I'm relatively new to Wikipedia, so I might not be perfect on the standards. The main issue in my mind is one of sourcing/notability. There's no sourcing on that statement, and it's something of an opinionated, abstract statement on its own. So the answer to where we draw the line on "many" is that we should avoid making judgments like that outright. While it may even be true that there are quite a few languages, making that sort of judgment could be original research. I can say that I personally cannot determine from this that Julia has necessarily more than other languages; most languages have a C FFI, and in many cases bindings to other languages.
Three of the Julia co-creators are the recipients of the 2019 [[J. H. Wilkinson Prize for Numerical Software|James H. Wilkinson Prize for Numerical Software]] "for the creation of Julia, an innovative environment for the creation of high-performance tools that enable the analysis and solution of computational science problems." Alan Edelman received the 2019 IEEE Computer Society [[Sidney Fernbach Award]] "for outstanding breakthroughs in high-performance computing, linear algebra, and computational science and for contributions to the Julia programming language."
::: I'm thinking a wording more like the following would work: "Julia has a foreign function interface to C, with libraries available to interact with other languages[...refs]". That sentence would avoid trying to judge how practical or complete the interoperability is. And of course, if there are other reasons that might be notable, we can mention those. Is interop a priority for the Julia language, or something which makes it stand out amongst languages in the same class? If some sources have identified Julia as being particularly strong in interop, it would also be notable. [[User:Yafwa|Yafwa]] ([[User talk:Yafwa|talk]]) 06:31, 11 July 2020 (UTC)
Since 2014, the Julia community has hosted an annual conference (JuliaCon) focused on developers and users. The conferences have taken place across a number of locations including MIT and the University of Maryland, Baltimore. JuliaCon was conducted virtually from 2020 to 2022 due to the COVID-19 pandemic. The event audience has grown from a few dozen people to over 43,000 unique attendees during JuliaCon 2021. The conferences have featured keynote addresses from notable individuals such as [[William Kahan]] (the primary architect of the [[IEEE 754-1985|IEEE 754]] floating-point standard) and Soumith Chintala (co-creator of [[PyTorch]]).
:::: I just thought "many" would be uncontroversial at the time, when I put it in. To clarify, if you can call another language at all, you can usually call C, and then indirectly to a lot of other. In theory, all (those that can be embedded). Also you can interact with a web service (or ZMQ), so that way in theory also all languages, but often not what's meant. Yes, I think it's fair to say that interop is a priority for Julia, why it has the {{code|ccall}} keyword (and now macro too), it is unusual (no boilerplate, for many other languages it's the opposite). At https://github.com/JuliaInterop/ you can e.g. find [https://github.com/JuliaInterop/MathLink.jl MathLink.jl] to call proprietary Wolfram Mathematica™, and I just discovered OctCall.jl, but I was calling Octave before, through Python (not a big hoop to jump through, but without would be slightly easier). I did not know about [https://github.com/azurefx/DotNET.jl DotNET.jl Julia [heart] .NET] package. You can call Julia from D, but as I know the guy personally who made it work, I only list from people I'm not familiar with, non-Julia websites. From different people in that thread: "Julia has 0-copy numpy array interop through PyCall.jl if that's what you're asking."[https://news.ycombinator.com/item?id=21636661] "There are only 2 languages with really good Python interop [..]One of them is Julia! [..] The other is Swift [..]And here is the kicker: Packages is Julia are far more interoperable than in any other eco system I have seen. Than means 10 packages in Julia can quickly do more than 50 packages in other language."[https://news.ycombinator.com/item?id=21636661] "Julia's `ccall` is great in terms of overhead[0], so calling Rust shared libraries is not a problem."[https://news.ycombinator.com/item?id=19134140]. A tutorial I found [https://techytok.com/lesson-other-languages/ on interop] and a [https://www.meetup.com/Triangle-Julia-Users/events/234969968/ meetup]. And:
::::: “When you see such a tweet from a renowned author about Python and Julialang interoperability then you feel good about investing time learning in #JuliaLang ”
::::: [tweet]
::::: "This is 100% Julia code, If you replace the first 3 lines with [those importing tensorflow and keras)], you can run the exact same code in Python. Talk about excellent interoperability!".[https://pradeeppant.com/2020/06/29/python_Julia_lang_interop.html]
:::: I clicked on the tweet author's name and saw "Author of the book Hands-On #MachineLearning with #ScikitLearn, #Keras and #TensorFlow. Former PM of #YouTube video classification. Founder of telco operator." [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 18:44, 14 July 2020 (UTC)
It's much shorter, but it's also more readable and obviates the need for the reader to wade through the details of changes made to the language which could be easily accessed in their release notes. This would of course be a major edit, so let me know your thoughts. [[User:Eulalie880|Eulalie880]] ([[User talk:Eulalie880|talk]]) 21:36, 12 November 2022 (UTC)
: Following up on this, I'd stillbe thinkhappy the article reads like an advertisement, so I will beto addingsee athese cleanupedits template.merged! [[User:VeryClosed FantasticLimelike DudeCurves|VeryClosed FantasticLimelike DudeCurves]] ([[User talk:VeryClosed FantasticLimelike DudeCurves|talk]]) 2103:4900, 1210 MarchNovember 20222023 (UTC)
:I agree the article doesn't really adhere to Wikipedia standards: a) often lacking independent sources, b) including content that is of questionable relevance, partially because it has not been mentioned in any independent sources, c) overly long, d) potentially overly positive, it doesn't list disadvantages/challenges of Julia. I could hardly find anything critical in the article, while there's plenty on the internet (yes potentially not super reliable sources [I haven't checked] but most of this article is just what Julia org says about Julia lang. Example criticism: https://www.reddit.com/r/Julia/comments/11ucqtz/whats_julias_biggest_weakness/, https://yuri.is/not-julia/, https://jamesmccaffrey.wordpress.com/2021/06/15/why-im-not-a-fan-of-the-julia-programming-language/ [[User:AncientWalrus|AncientWalrus]] ([[User talk:AncientWalrus|talk]]) 17:51, 30 January 2024 (UTC)
== Reads like advertising ==
:: {{U|Very Fantastic Dude}} can you point at one, two (or more) issues you have with the article? I can't cleanup otherwise, or choose to disagree. That said, I'm not sure the advert template applies even if you feel it promotional, since Julia isn't a "product", in the sense of being sold for money, and the template is explained as "When to use: Add this to articles [when in] whole or part they are advertisements masquerading as articles." with a link to "Articles considered advertisements include those that are solicitations for a business, product or service, or are public relations pieces designed to promote a company or individual." Until we figure out/agree if the template applies at all, you could also move it to one section (there's a variant for sections) if you had only one in mind and/or use a different template that might apply. [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 22:18, 12 March 2022 (UTC)
What it says. Sorry, but it does. [[Special:Contributions/2601:1C0:5401:2040:5CCB:C27C:F135:5733|2601:1C0:5401:2040:5CCB:C27C:F135:5733]] ([[User talk:2601:1C0:5401:2040:5CCB:C27C:F135:5733|talk]]) 04:12, 5 September 2023 (UTC)
== Vim and Emacs and other cruft ==
:Yeah, I mostly just glanced at the article but the sentence "Julia programs can also be (separately) compiled to binary executables, even allowing no-source-code distribution, and the executables can get much smaller with Julia 1.12." stuck out to me. Do we really need to list that 1.12 can produce smaller executables? That reads more like an ad than something belonging in an encyclopedia. [[User:Kittybwained|Kittybwained]] ([[User talk:Kittybwained|talk]]) 00:52, 27 January 2025 (UTC)
I think it's pretty silly that the article notes that one can use "Vim and Emacs" to work with Julia :-) In case it isn't clear, one could say the same thing about any textual programming language, and (for that matter) all written languages!
::Currently compiled apps are huge, why 1.12 is mentioned, i.e. upcoming juliac tool in there, and its binaries are small. Yes, 1.12 isn't released yet as stable, but it is usable in beta form so I thought mentioning its capabilities was ok. Feel free to just change. [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 14:09, 14 April 2025 (UTC)
== Where it can run table (compatibility) ==
I think this is emblematic of the cruft in the article. [[Special:Contributions/73.252.146.143|73.252.146.143]] ([[User talk:73.252.146.143|talk]]) 21:16, 7 March 2020 (UTC)
It would be good to know on what platforms and version Julia can run on in a table, eg Windows, macOS, linux, iOS, Android, ... The table would probably need an explanation of any specific tools needed (frameworks, compilers). Also whether packaged packaged apps can be built that can be distributed (eg app store) to users without users requiring anything else to be installed.
:Agreed, we could remove it. You can write Julia on paper as well, paper just lack the interpreters :). So in my opinion it makes sense to keep dedicated tools and extensions such as the one in VSCode, Jupyter and Juno. [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 14:54, 5 April 2020 (UTC)
An explanation of how features unique to each platform can be accessed would be useful. [[User:FreeFlow99|FreeFlow99]] ([[User talk:FreeFlow99|talk]]) 16:55, 6 March 2024 (UTC)
== Usage section ==
:FYI, there's no support tier for Android (or iOS), so everything for it is unofficial, and while possible to do, arguably non-ideal, at least currently. Julia can run on all the supported platforms, best if tier 1 support, all those desktop OSes you mention. No tools are needed except for Julia. But if you want precompiled, it's a more complex answer, and the (main) tools for that are mentioned in the article. Feel free to clarify the article or ask questions here. [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 14:06, 14 April 2025 (UTC)
== Robust edits to address feedback ==
I tentatively added a [[Julia (programming language)#Usage]] section, mimicking the one in [[Python (programming language)]]. The idea is that we can refer to notable libraries and other usages of Julia here. There are a few red links already, but it's missing crucial stuff such as DifferentialEquations.jl et cetera [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 14:58, 5 April 2020 (UTC)
: I undid your revision {{Ping|MrOllie}}. Would you care to explain the rationale behind the removal of the [[Julia (programming language)#Usage]] section? [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 14:57, 22 April 2020 (UTC)
I'm looking to do fairly major rewrites of sections to address a number of the justified critiques on this talk page, with a focus on increasing readability, a balanced tone and inclusion of reliable independent sources. Happy to discuss here or on my talk page [[User:Jfo17]] [[User:Jfo17|Jfo17]] ([[User talk:Jfo17|talk]]) 04:31, 18 July 2025 (UTC)
::It's a list of apparently randomly selected libraries. Wikipedia isn't a [[WP:NOTHOWTO|howto]] or [[WP:NOT|link directory]] so such lists are off-mission for us. - [[User:MrOllie|MrOllie]] ([[User talk:MrOllie|talk]]) 15:02, 22 April 2020 (UTC)
:::{{reply_to|MrOllie}} It's not a list of randomly selected libraries, but it's under construction. I'm adding the most prominent ones first. I added that section directly inspired by the [[Python (programming language)#Uses|Python#Uses]] section, so the precedent is out there. [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 15:06, 22 April 2020 (UTC)
::::The Python section is based on independent reliable sources and mentions libraries that are called out as significant by such sources. Your section was a list of libraries with no apparent selection criteria. - [[User:MrOllie|MrOllie]] ([[User talk:MrOllie|talk]]) 15:20, 22 April 2020 (UTC)
:::::Several entries in the Python section are not referenced, that's where I got the precedent to add the section to this article. If the entries over there were removed as well then I would understand it, but it's quite an established part of the article. [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 15:49, 22 April 2020 (UTC)
::::: I'm really trying to understand how to make this section right, don't get me wrong. [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 15:51, 22 April 2020 (UTC)
:::::: {{U|Bruno H Vieira}}, I share your passion for for Julia and its libraries (at least DifferentialEquations.jl is state-of-the-art, and good sources should be possible to find). I was maybe to enthusiastic adding libraries at the time, and gave up on editing the article in 2015 and ended up [https://en.wikipedia.org/w/index.php?title=Julia_(programming_language)&diff=684246408&oldid=684237341&diffmode=source deleting about half of it then]. [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 11:28, 30 September 2020 (UTC)
== Is it time for some separate Julia packages to get their own page? ==
I have Flux.jl and/or Knet.jl in mind, and JuMP was first state-of-the-art Julia package, there's also e.g. SciML/[[DifferentialEquations.jl]] (and other in that ecosystem) and a ton more. Maybe Gen.jl or similar, I just do not follow such packages too much.
[[Project Jupyter]] has a page (in part because of Julia, why the prefix Ju-, it was formerly [[IPython]]), Pluto.jl seems to improve on it (is Julia-only, I'm pretty sure). [[User:Comp.arch|comp.arch]] ([[User talk:Comp.arch|talk]]) 13:21, 28 September 2020 (UTC)
: I know you know it, but just so others know the precedent: Flux has one already :) [[Flux (machine-learning framework)]]. Other notable Julia packages will get their too in the due time. I am enthusiastically in favor of DifferentialEquations.jl, but Gen.jl and Turing.jl are quite notable too. They were even referenced in other articles IIRC [[User:Bruno H Vieira|Bruno H Vieira]] ([[User talk:Bruno H Vieira|talk]]) 00:06, 9 March 2021 (UTC)
== Strong Typing ==
I removed the claim that Julia is a "strongly typed language," as the citation given was poor and ambiguous. The citation linked to a forum thread, wherein a user claimed that Julia is "strongly typed," citing Wikipedia to do so, and then another user below them claims the opposite, also citing Wikipedia. A forum thread is already not a reliable source of information, but add to that that the cited thread leaves the question of whether or not Julia is strongly typed as inconclusive at best, and it seemed appropriate to not only remove the citation, but the potentially erroneous claim as well.
If this edit has been made in error, feel free to revert and add in a less ambiguous source. [[User:Drgribb|drgribb]] ([[User talk:Drgribb|talk]]) 20:30, 27 January 2022 (UTC)
|