Talk:Julia (programming language)
![]() | This article has not yet been rated on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||||||||||||||||||||||||||||
Please add the quality rating to the {{WikiProject banner shell}} template instead of this project banner. See WP:PIQA for details.
Please add the quality rating to the {{WikiProject banner shell}} template instead of this project banner. See WP:PIQA for details.
Please add the quality rating to the {{WikiProject banner shell}} template instead of this project banner. See WP:PIQA for details.
|
![]() | This article was nominated for deletion on June 9 2012. The result of the discussion was delete. |
This page has archives. Sections older than 365 days may be automatically archived by Lowercase sigmabot III. |
Checked overflow support on all integer operations, allowed now. Reworked some more of this text that I deleted earlier.
In Julia all data types are supported in a completely general way (not needing manifest typing, that is optional); even those commonly implemented in processors, such as integers (signed and unsigned) from 8-bit to 64-bit, defaulting to signed 32-bit or 64-bit depending on CPU architecture (and additionally 128-bit and arbitrary-precision arithmetic "BigInt", which are slower as not supported in hardware by CPUs); all common/fast floating-point types up to 64-bit/"double" (and a package bigger using the double-double arithmetic trick[1]), even decimal floating-point type (not supported in hardware by x86/ARM CPUs etc. requiring software emulation) in a package Decimals.jl. In general, all types, whether built-in or not, are treated the same, with "no abstraction penalty" (while software emulation, would necessarily slow down, when CPUs support a type if Julia wouldn't). While CPU registers bigger than 64 bits are available in CPUs, such as in x86, they are SIMD-style vector registers of many 32-bit values (or smaller), also supported in Julia at high speed (might in some cases need the @simd macro).
Complex numbers are supported by the language.
Julia uses efficient "machine integers" (e.g. modular numbers), not checking overflows (does for floating point), by default, while separate functions allow that.[2] "integer arithmetic overflow" is discussed for addition by version 1.0[3] and at JuliaCon 2014,[4] but may or may not end up being the default. The performance section of Julia's manual justifies non-checked machine integer use (that is faster), compared to saturated (that e.g. MATLAB uses), or exceptions on overflow.[5] Julia however has "checked integer conversions" in 0.4.0-rc3.[6] comp.arch (talk) 09:07, 9 December 2015 (UTC)
References
- ^ https://github.com/simonbyrne/DoubleDouble.jl
- ^ https://github.com/JuliaLang/julia/pull/14300
- ^ https://github.com/JuliaLang/julia/issues/855
- ^ https://www.youtube.com/watch?v=GFTCQNYddhs&list=PLP8iPy9hna6TSRouJfvobfxkZFYiPSvPd&index=3 Julia: Speed vs. Correctness
- ^ http://docs.julialang.org/en/latest/manual/faq/#why-does-julia-use-native-machine-integer-arithmetic
- ^ https://github.com/JuliaLang/julia/pull/8420
New phrase instead of "without the need of separate compilation..." in Wikipedia description.
In the julialang's slack workspace[1] many felt the term JAOT (Just Ahead Of Time) compilation to be more accurate. I would like to know what others think of it. — Preceding unsigned comment added by BBloggsbott (talk • contribs) 18:53, 11 April 2019 (UTC)
- Thanks, I made a change. The note about the JAOT compiler is now in the second paragraph; what do you think? 107.0.94.194 (talk) 20:11, 11 April 2019 (UTC)
Possible changes
Here are a few possible changes
- Drop "general purpose" from the first sentence of the article. Yes, Julia is general purpose, but putting it in the first sentence makes it sound like Julia wants to be C.
- The phrase "dynamic programming language" is used and linked in both the first two paragraphs. I think that changing the first to be just "programming language" is appropriate.
- The first paragraph is too soon for "web programming", which should be put later.
- The "language features" list looks like a laundry list.
73.252.146.143 (talk) 01:42, 19 August 2019 (UTC)
- I made the changes above, except I did not modify the "language features" laundry list. 73.252.146.143 (talk) 05:24, 21 August 2019 (UTC)
Criticism
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, this user survey suggests some room for improvement (although a secondary source would be better). Mgnbar (talk) 19:46, 8 February 2020 (UTC)
- 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. Bruno H Vieira (talk) 14:50, 5 April 2020 (UTC)
Following up on this. The article seems to read as an advertisement right now, most egregiously/noticeably the 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. — Preceding unsigned comment added by 24.238.13.130 (talk) 21:22, 1 July 2020 (UTC)
- 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.
- 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. 162.230.224.99 (talk) 04:29, 5 July 2020 (UTC)
Vim and Emacs and other cruft
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!
I think this is emblematic of the cruft in the article. 73.252.146.143 (talk) 21:16, 7 March 2020 (UTC)
- 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. Bruno H Vieira (talk) 14:54, 5 April 2020 (UTC)
Usage section
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 Bruno H Vieira (talk) 14:58, 5 April 2020 (UTC)
- I undid your revision @MrOllie:. Would you care to explain the rationale behind the removal of the Julia (programming language)#Usage section? Bruno H Vieira (talk) 14:57, 22 April 2020 (UTC)
- It's a list of apparently randomly selected libraries. Wikipedia isn't a howto or link directory so such lists are off-mission for us. - MrOllie (talk) 15:02, 22 April 2020 (UTC)
- @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#Uses section, so the precedent is out there. 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. - 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. 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. Bruno H Vieira (talk) 15:51, 22 April 2020 (UTC)