Slashdot Mirror


Julia 1.0 Released After a Six-Year Wait (insidehpc.com)

An anonymous reader quotes InsideHPC: Today Julia Computing announced the Julia 1.0 programming language release, "the most important Julia milestone since Julia was introduced in February 2012." As the first complete, reliable, stable and forward-compatible Julia release, version 1.0 is the fastest, simplest and most productive open-source programming language for scientific, numeric and mathematical computing. "With today's Julia 1.0 release, Julia now provides the language stability that commercial customers require together with the unique combination of lightning speed and high productivity that gives Julia its competitive advantage compared with Python, R, C++ and Java."
The Register reports: Created by Jeff Bezanson, Stefan Karpinski, Viral Shah, and Alan Edelman, the language was designed to excel at data science, machine learning, and scientific computing.... Six years ago, Julia's creators framed their goals thus:

"We want a language that's open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that's homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled...."

In a julialang.org post announcing the milestone, the minders of the language claim to have achieved some of their goals.

131 comments

  1. Really impressive by 110010001000 · · Score: 4, Funny

    This is really impressive from the technical standpoint, but I am wondering if they have a Code of Conduct for the language?

    1. Re:Really impressive by Anonymous Coward · · Score: 0

      If they do, I'm not touching it with a ten-foot pole. It'll be a project that goes to hell in a matter of months, and then I'm stuck with a language that's effectively no longer maintained. Then I'll have to port everything over to a language developed by a non-converged project.

      Projects with Codes of Conduct always wind up being in the business of enforcing the Code of Conduct. Whatever it is they were originally in the business of doing ends up going to hell in a hand basket. Avoid them like the plague.

    2. Re:Really impressive by Anonymous Coward · · Score: 0

      Yes there is. Glad you asked. Here it is:

      1) I will do my duty to God and my country.
      2) I will help other people, at all times.
      3) I know the Julia law, and will obey it.

    3. Re:Really impressive by Tough+Love · · Score: 4, Funny

      I am wondering if they have a Code of Conduct for the language?

      This language is polite and respectful.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    4. Re:Really impressive by nospam007 · · Score: 0, Troll

      "Fuck you you fucking SJW bitch. This is why women are not welcomed in the open source community because you fucking cunts make everything WORSE."

      Oh Romeo, my Romeo, is that you?

    5. Re:Really impressive by Waffle+Iron · · Score: 1

      This is really impressive from the technical standpoint, but I am wondering if they have a Code of Conduct for the language?

      The main requirement in the code of conduct is that you must be willing to accept and respect homoiconic activity.

    6. Re:Really impressive by Anonymous Coward · · Score: 0

      If they need to have one their community is probably full of assholes anyway...

    7. Re:Really impressive by Aighearach · · Score: 1

      a Code of Conduct for the language?

      They used to have one, and strings were only allowed to use valid, legal, properly enumerated Unicode. But they abandoned that because it didn't really allow for remediation.

      Now they simply flag offensive strings, and leave it up to the application programmer to remediate.

      So if you're using Julia you will need to write your own code that conducts invalid Unicode to the appropriate remedial function. Or not.

    8. Re: Really impressive by Anonymous Coward · · Score: 0

      It is, my love. And now, for you to enjoy, my penis in your butt.

    9. Re: Really impressive by Anonymous Coward · · Score: 0

      That is stolen from the boy scout s

    10. Re:Really impressive by Anonymous Coward · · Score: 0

      Really? Sounds like Rob Riener, Rosie O'donnel, and James Gunn at Chucky Cheese!

  2. No native compiler by Billly+Gates · · Score: 0

    Therefore it's slow like Java and Python. That's not a bad thing if your app is I/o bound or quick development time is more of a priority.

    But it failed it's goal of overtaking Java and Python if it's JIT compiled as you might as well use them instead

    1. Re:No native compiler by Tough+Love · · Score: 4, Informative

      Didn't RTFM? Julia has several backends including LLVM. Performance is more than respectable. In particular, puts Python to shame and close to Java + JIT but without the JIT lag, load time and memory footprint annoyance.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    2. Re:No native compiler by SQL+Error · · Score: 5, Informative

      It's natively compiled, just not statically compiled.

      If compiles optimised versions of your functions as needed. So you can define a function that works on any supported numeric type, and when you call it with doubles, it will compile and cache a version of the code optimised specifically for doubles.

      As a result, it is very fast for numeric code, without having to create separate function definitions for each supported type.

    3. Re:No native compiler by Anonymous Coward · · Score: 0

      *its goal

    4. Re:No native compiler by Tough+Love · · Score: 1

      I think that's called a "specializing compiler", like Psco/PyPy but not JIT. I don't juch like JITs, actually. A good fit for LISP but not much else.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    5. Re:No native compiler by johanw · · Score: 1

      You mean it has a template library? C++ has that for as long as I can remember.

    6. Re:No native compiler by Megol · · Score: 1

      Templates are fine (for some definition of fine) for static type systems where types can be decided and code specialized at compile time.
      Julia is however dynamic and uses different mechanism.

    7. Re:No native compiler by SQL+Error · · Score: 2

      No, it doesn't use a template library. Or in a sense, all your code is templates.

    8. Re:No native compiler by Anonymous Coward · · Score: 0

      Jesus - Slashdot really does live in 1999...

    9. Re:No native compiler by Aighearach · · Score: 2

      It is a lot more like Perl; it runs fast, and you can write it fast too. But reading it is going to take time.

      That tradeoff isn't going to go away, it is baked into the range of problems we want to solve with the same tool. The less verbose the language is, the more of the complexity is hidden. That makes it expert-friendly, but it also makes collaboration more difficult.

      I prefer the Ruby solution; it can't do everything. Lots of stuff that is hard you would write in C instead. And it has an excellent C interface.

      That's great for typical problems, but it doesn't really provide for distributed problems. That's what Julia is for. So it is competing with Go for non-statistical uses, not Python.

      But it is mostly competing with matlab and R for those statistical uses. Also, notice they mention LISP instead of Haskell? They're not actually as ambitious as they claim to be.

    10. Re: No native compiler by Anonymous Coward · · Score: 0

      *Any language* puts Python to shame... except Python plus native compiled number crunching libraries. You know, the ones everybody uses.

    11. Re: No native compiler by Tough+Love · · Score: 1

      *Any language* puts Python to shame... except Python plus native compiled number crunching libraries. You know, the ones everybody uses.

      Fascinating, how Python apologists are able to convince themselves that its horrible performance is not a reason to use a different tool. Thus the idiocy continues.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    12. Re: No native compiler by Crashmarik · · Score: 2

      Don't worry the hardware will take care of performance issues by the time the product ships*

      *Am I joking or not ?

    13. Re: No native compiler by Anonymous Coward · · Score: 0

      No, Julia is really fast. It was designed to be fast from the beginning unlike Java and Python. The design alpoach was basically: how do we make a language that can output code which LLVM can optimize easily?

      Unlike Java and Python arrays give you contiguous blocks of memory which is more cache friendly than arrays of pointers.

      The language is designed around the idea that you always know the types of every argument of a function when it gets called at runtime. That allows rhe JIT to easily cache and reuse a machine code version of every type combination a function is called with. Read about it. It is pretty neat

    14. Re: No native compiler by Anonymous Coward · · Score: 0

      Canâ(TM)t compare it to C++. This all happens at runtime not compile time, and you donâ(TM)t have to write types most of the time to get this templating working

    15. Re: No native compiler by Anonymous Coward · · Score: 0

      Reading Julia code is easier than Python. Much more consistent and logical naming of functions. Easier to read types.

    16. Re:No native compiler by umafuckit · · Score: 1

      It does look respectable but that graph isn't the full story, is it? In my field we use a lot of Python and MATLAB (also some R). Python can be sped up with Cython (often dramatically). MATLAB makes it easy to integrate C or C++ via MEX files. If you were using one of those languages and really needed to speed up the sorts of things being profiled in the Julia benchmarks then you have a simple way of doing it. Usually you're just optimising an inner loop and can leave the rest of the code unchanged. In practice, however, we have access to large quantity of well-optimised code in both Python and MATLAB so we can just re-use what's already there and don't even need to bother with the above.

      That graph tells me that if I had a lot of code I'd need to write in C, I might consider doing it in Julia instead. It doesn't convince me to drop Python or MATLAB in favour of Julia.

    17. Re: No native compiler by Anonymous Coward · · Score: 0

      except Python plus native compiled number crunching libraries. You know, the ones everybody uses.

      I see. I assume those libraries are written in Python then.
      Or are you saying that not even Python is using Python?

      VB6 is pretty damn fast you don't write the tool in VB6 and instead use it to run a different program written in another language to do your work.

    18. Re: No native compiler by jma05 · · Score: 1

      Why do you think performance is the most important consideration for programming language choice?

      The idiocy is in believing that everyone's needs are the same.

      For the things that are usually done with Python, it would not matter if the interpreter was further 10 times slower.

    19. Re: No native compiler by Aighearach · · Score: 1

      If reading types is the hard part, you're only one step past Hello World anyways.

    20. Re: No native compiler by Anonymous Coward · · Score: 0

      There is a benefit to having a project with 1 language instead of 3

    21. Re: No native compiler by Anonymous Coward · · Score: 0

      Why do you think performance is the most important consideration for programming language choice?

      Maybe not the MOST important, but I sure don't like waiting for the computer any longer than is strictly necessary.

      The idiocy is in believing that everyone's needs are the same.

      I'm going to go out on a limb here and say that there isn't *anyone* who wouldn't benefit from faster performance.

      Mind you, there are features worth trading CPU time for, but they have to be justified and should never be the default case if they lead to performance hits. The simplest, fastest alternative should always be an option.

    22. Re: No native compiler by jma05 · · Score: 1

      > Maybe not the MOST important, but I sure don't like waiting for the computer any longer than is strictly necessary.

      No one does. But people like even less to wait for people writing code. It takes much longer to write C++ code and it takes longer to compile it as well. Fast, optimized native code is valuable only if your program is going to be used on larger amounts of data, performing intensive computations or used by a large number of people. Most code is not written for these cases.

      Most code is written for very local purposes, doing fairly simple and focused things, often for one-off purposes. It is illogical to use a programing language that is slow to write code in and takes longer to compile. This is not just true today. These were successful (and rational/logical) arguments offered 2-3 decades ago when CPU time was at a much higher premium and interpreters were much less optimized.

      You should measure the total performance (programmer and code) and costs, not just CPU time.

      > I'm going to go out on a limb here and say that there isn't *anyone* who wouldn't benefit from faster performance.

      Matlab and R are most commonly used by computer scientists and statisticians. Both are worse than Python by runtime performance. These are not unintelligent people. Their time is as valuable as anybody else's. So why do these people use them? Because their time is valuable.

      Often time the runtime difference between C++ and Matlab/Python/R is 0.01 sec vs. 0.5 sec. It might matter if the difference is 1 hr and 500 hrs, same ratio, but at such small time scales, the human latency barely even takes notice.

      > Mind you, there are features worth trading CPU time for, but they have to be justified and should never be the default case if they lead to performance hits. The simplest, fastest alternative should always be an option.

      You have it exactly wrong. Human time is first and foremost important. That is the default case. Humans are extremely hard and expensive to train and cannot be upgraded. They are the bottleneck and need to be most managed. Performance is something you worry about after you produced something correctly. Generally speaking, identifying and optimizing small bottlenecks is much more productive than starting with performance as a key consideration even when you don't need it.

      Premature optimization is the root of all evil -- Donald Knuth

      The entire point of programming languages is human performance, not computer performance. CPU performance is the job for compilers (you can transliterate a fair subset of Python to C/C++. Eg. ShedSkin). That said, I am enthusiastic for productive AND fast tools - Rust & Nim, in my case, but none of these are Python/Matlab/R replacements yet.

    23. Re: No native compiler by jma05 · · Score: 1

      50 hrs, not 500 hrs.

    24. Re: No native compiler by Anonymous Coward · · Score: 0

      Yes, but a poor design may make it difficult or impossible to optimize later. Using hashtables to implement arrays, for example.

    25. Re: No native compiler by jma05 · · Score: 1

      > Yes, but a poor design may make it difficult or impossible to optimize later.

      Which is fine. Optimization is possible to a reasonable degree, but not completely. A 40 or 400 times slower program is only perhaps 2-4 times slower after Cython, Numba, ShedSkin etc - a very reasonable trade-off. Further that, Python is meant to be used with a splash of C for those few core data structures and algorithms, not replace it. Have a lot more custom stuff that needs native performance? Python was never meant for that use case.

      > Using hashtables to implement arrays, for example.

      Hence, numpy.

  3. I think xkcd already has this covered by jfdavis668 · · Score: 1, Flamebait
    1. Re:I think xkcd already has this covered by nadass · · Score: 2

      https://xkcd.com/927/

      Except this is a HPC programming language, not a one-size-fits-all HTML5-style standard.

    2. Re:I think xkcd already has this covered by Junta · · Score: 5, Insightful

      Roughly, one should think of this more as a 'next gen fortran' than 'oh this will replace all your programming'.

      Python with numpy has been respectable, but there's room for a language built from the ground up around technical computing.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    3. Re:I think xkcd already has this covered by Desler · · Score: 1

      We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell.

      Sounds like a one-size-fits-all attempt to me.

    4. Re:I think xkcd already has this covered by Junta · · Score: 2

      I say the larger content seems to be clearly oriented around scientific computing.

      There is a fair amount of ill-advised 'marketing' sort of propaganda that is misleading in their pages however, which is unfortunate as I think the core goal and how they go about it seems respectable enough.

      --
      XML is like violence. If it doesn't solve the problem, use more.
  4. Are petascale computers programmed in assembly? by Megol · · Score: 2

    Otherwise claiming "Julia is the only high-level language that has run at petascale" is a bit of an exaggeration.

    1. Re:Are petascale computers programmed in assembly? by iggymanz · · Score: 3, Insightful

      it's just a lie, C++ and Fortran are also used. We can argue if C is "high level" or "medium" level...

  5. First impression by Tough+Love · · Score: 4, Interesting

    My first impression of Julia was favorable. I fired up the command line interpreter and typed in 2 + 2. Prints out 4, just like Python. Then typed in 2**4:

    julia> 2**4
    ERROR: syntax: use "^" instead of "**"

    Wow, I like that. I managed to define a function, f(n) = n * n, without reading the manual but didn't get much further without reading the docs docs. But great start, I already see this as a reasonable alternative to what I usually use Python for: a desktop calculator.

    Initial impression matters. Now, with a postive one, I will go deeper and see if Julia is really what I should be coding one-offs in, instead of Python or Go.

    --
    When all you have is a hammer, every problem starts to look like a thumb.
    1. Re:First impression by Anonymous Coward · · Score: 0

      My first impression of Julia was favorable. I fired up the command line interpreter and typed in 2 + 2. Prints out 4, just like Python.

      2 + 2 is 4! Minus 1 that's 3 quick maff!

    2. Re:First impression by twistedcubic · · Score: 1

      So do you think exponentiation should be right- or left-associative? What should 2^4^2 compute to in Julia?

    3. Re:First impression by Anonymous Coward · · Score: 0

      Should be 2^16, and not 16^2?

      Or should everything default to left-associative in a programming language.

    4. Re:First impression by Anonymous Coward · · Score: 0

      >I will go deeper and see if Julia is

      You've already violated the Code of Conduct on the project.

    5. Re:First impression by Anonymous Coward · · Score: 0

      While it is something that one can have an opinion on I don't really see how that is very important.
      A language should define what it uses and that is about it.
      The choice between using ^ or ** doesn't have any impact on the choice.
      2**4**2 and 2^4^2 both have the same problem in that regard.

      The interesting part was that the interpreter/compiler he used checked for a syntax that was used in another language and gave a helpful error message.
      There is absolutely nothing that says that it has anything to do with the language but is more a feature of that particular interpreter/compiler.

      My personal opinion is that if there only is one compiler/interpreter then it isn't really a language.
      The result is defined by that particular compiler, not by a language specification.
      When we have more than one compiler and any inconsistencies with the language specification leads to the compiler getting a bugfix rather than specification being changed then we can start calling it a language.

  6. Woot! by Anonymous Coward · · Score: 2, Insightful

    I want a tool that puts nails in like a hammer, screws screws like a screwdriver, lifts steel like a crane, cuts wood like a saw, digs dirt like a backhoe, shoots animals like a gun, stabs children like a knife...

    1. Re:Woot! by Tough+Love · · Score: 1, Funny

      Here, take these handcuffs.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    2. Re:Woot! by Aighearach · · Score: 1

      It is called your imagination, and you're already using it!

    3. Re:Woot! by Anonymous Coward · · Score: 0

      Why is it that when my only tool is a hammer every problem looks like the back of my boss's head?

    4. Re:Woot! by aticus.finch · · Score: 1

      Here, take these handcuffs.

      Username checks out.

    5. Re: Woot! by Anonymous Coward · · Score: 1

      You mean like a backhor with a quick attachment system? They make attachments for sawing wood/trees, screwing augers, putting in large nails (mainly for soil reinforcement), lifting stuff, digging. You might need duct tape to attach a knife, but it would still be stabby.

  7. Cheat sheet by Tough+Love · · Score: 5, Informative
    --
    When all you have is a hammer, every problem starts to look like a thumb.
    1. Re:Cheat sheet by Anonymous Coward · · Score: 0

      That's not a cheat sheet - it's a cheat manuscript.

      Still very useful, though - thanks for pointing it out!

    2. Re:Cheat sheet by Anonymous Coward · · Score: 0

      That's the cheat sheet for Julia 0.6. This post is about Julia 1.0 !

    3. Re:Cheat sheet by Tough+Love · · Score: 1

      Thanks for the clarification. It's still an excellent starting point.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
  8. No classes, No goto by Tough+Love · · Score: 2

    Good or bad? Hard to say, but I would rather have these things than not. It is currently the fashion to leave out classes and provide similar functionality with interfaces or equivalent, but I find that a sticking point. Let's see how it goes.

    There are situations where goto is far preferable to fiddling with local logic variables and such. Sure, goto can be tricky to implement with respect to local scope and such, but leaving it out to avoid work... doubtful. Leaving out goto for purity reasons... beyond doubtful.

    --
    When all you have is a hammer, every problem starts to look like a thumb.
    1. Re:No classes, No goto by dlakelan · · Score: 4, Informative

      Classes are definitely included in the language. Specifically they're included by strong typing and type-specialized functions. A type specialized function is a "class method" that dispatches on more than just the first (usually implicit) argument.

      Goto is implemented via the @goto macro.

      --
      ((lambda (x) (x x)) (lambda (x) (x x))) http://www.endpointcomputing.com a scientific approach to custom computing.
    2. Re:No classes, No goto by Tough+Love · · Score: 4, Informative

      Classes are definitely included in the language.

      Julia has no classes

      It does have compound types and extensible types (subtypes). Instead of class methods it has parametric polymorphism, a flavor of generics somewhat resembling interfaces. While this seems nice and natural as far as it goes, I am not sure how far it goes. Jury is out.

      I absolutely hate the case conventions for identifiers. Why does every language of the month need to come with at least one blatantly stupid, avoidable idiocy guaranteed to trigger a large proportion of its intended audience? This is a minor thing but not something I could ever used to. A prime candidate for "sorry that was dumb, let's just fix it now before it festers".

      At least, no significant indents, thanks for that.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    3. Re:No classes, No goto by Misagon · · Score: 3, Interesting

      The instances where goto is useful can often be boiled down to a few different cases.
      IMHO it would be better to have specific language support for those cases than a generic statement. Having a generic goto (or even only a break label-statement) would encourage it to be used for things that it wasn't intended for, and such code would not be as readable.

      * Breaking out of nested loops. Something like break label or multibreak number.
      * Clause after a loop has reached its end and not broken. Python reuses else for this.
      * Error handling: A type of exception handling. It could be simplified by using labels instead of throwing and catching objects of specific types.

      --
      "We mustn't be caught by surprise by our own advancing technology" -- Aldous Huxley
    4. Re:No classes, No goto by Tough+Love · · Score: 1

      Julia has a goto macro, I like the idea but have not yet tried it. If it works (I don't see why it should not) then nice solution.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    5. Re:No classes, No goto by Tough+Love · · Score: 1

      Well, surprise, the @goto macro has oddball limitations, never mind the ugly punctuation. Just give me a real goto without the awkward half measure please, thanks.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    6. Re:No classes, No goto by Aighearach · · Score: 2, Interesting

      Why does every language of the month need to come with at least one blatantly stupid, avoidable idiocy guaranteed to trigger a large proportion of its intended audience?

      Because having neckbearded snowflakes whining about their tender technical opinions doesn't actually help the language designers with any part of what they're doing. It doesn't solve technical problems, it doesn't encourage adoption, it doesn't even produce useful criticisms. If you make sure to include some aesthetics from different camps and mix them together in an innocuous way, you can make nearly everybody go "ewwww" a little bit, and then the ones who freak out will escort themselves out the door. It is the only known way of even getting rid of them.

    7. Re:No classes, No goto by Tough+Love · · Score: 1

      Because having neckbearded snowflakes blah blah dribble woof...

      Wow, great job contributing to the conversation. Your dog beats you or what?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    8. Re: No classes, No goto by Anonymous Coward · · Score: 1

      You missed out finite state machines

    9. Re:No classes, No goto by Aighearach · · Score: 1

      You can't have an unrestricted goto and also good support for distributed computing. Did nobody tell you that they're ambitious, and they want their language to be usable on hard problems?

      You can't have a Real Goto with a portable language anyways; the language must restrict it to the lowest common denominator, because different CPUs have different types of JMP variants available. Not even C can give you a generic version that is unrestricted.

    10. Re:No classes, No goto by Anonymous Coward · · Score: 1

      > Having a generic goto (or even only a break label-statement) would encourage it to be used for things that it wasn't intended for, and such code would not be as readable.

      Goto is not the problem. When you see a goto it is perfectly clear what happens. The problem is the label. When reading code and there is a label then, suddenly, the flow of control is broken. It is no longer clear what the control flow is. The label indicates that processing may arbitrarily appear at that point and it will require an extensive search to find all the places that this may come from.

      Having a limitation on the scope of the label will help. For example the label may only be visible within the current function, or may be restricted to the block that it appears in.

    11. Re:No classes, No goto by Tough+Love · · Score: 1

      You can't have an unrestricted goto and also good support for distributed computing.

      Nice handwave. I suppose you win whatever argument this is by having your own private defintion of "unrestricted". And even then you are most probably full of crap.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    12. Re:No classes, No goto by Aighearach · · Score: 1

      Well, I understand that you take those words personally, and so are offended, but what else did your comment add? My comment was clearly directed at anybody reading, and attempted to explain the matter.

      Your reply doesn't contain any substantive content at all; it isn't even directed at the general readership, but instead seems to be a personal response. And yet, it contains no information that could be useful to me. You didn't even think to include anything more than, "I'm triggered by the word neckbeard." My advice, think more carefully about what you're contributing to the conversation while whining about how much other people are contributing. See there, I took the time to include a potentially-useful comment.

    13. Re:No classes, No goto by Tough+Love · · Score: 1

      I understand that you take those words personally, and so are offended

      You conflate others "being offended" with you "being offensive".

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    14. Re:No classes, No goto by The+Evil+Atheist · · Score: 1

      Until branches of mathematics starts using classes and gotos in their theorems, they probably aren't useful in a language for doing mathematics.

      --
      Those who do not learn from commit history are doomed to regress it.
    15. Re:No classes, No goto by Tough+Love · · Score: 1

      Until branches of mathematics starts using classes and gotos in their theorems, they probably aren't useful in a language for doing mathematics.

      I know, right? That's why Julia doesn't have exceptions, modules, macros or coroutines. Oh wait.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    16. Re:No classes, No goto by The+Evil+Atheist · · Score: 2

      As other people have pointed out, Julia already has things specific to it that fit the role of classes, that have mathematical analogues, without being like classes. And given that you have all those other features, like coroutines which are a better form of goto, why are you whining?

      --
      Those who do not learn from commit history are doomed to regress it.
    17. Re:No classes, No goto by Tough+Love · · Score: 1

      As other people have pointed out, Julia already has things specific to it that fit the role of classes, that have mathematical analogues, without being like classes

      How insightful. Yes Julia has things that are somewhat like shitty classes.

      features, like coroutines which are a better form of goto, why are you whining?

      Why are you an ass? Civil discourse does not use words like "whining". And if you think that coroutines are a form of goto then you are stupid too.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    18. Re:No classes, No goto by The+Evil+Atheist · · Score: 1

      How about you learn to break out of needing classes for everything? Just because you're a shitty programmer who can't make head or tail of a different kind of programming doesn't mean all languages need to cater for the lowest common denominator. Not everything needs to be "object oriented" so idiots like you can understand it.

      If you don't think coroutines aren't a form of goto, then maybe consider you need to learn more. goto is a limited and poor form of flow control for "jumping" in an out of certain execution states. Coroutines have better semantics for control flow that are much better for expressing the idea of "jumping" in and out of certain execution states. If you can't learn to use coroutines, that is literally your fault.

      --
      Those who do not learn from commit history are doomed to regress it.
    19. Re:No classes, No goto by Anonymous Coward · · Score: 0

      Why are you an ass? Civil discourse does not use words like "whining".

      Lol! I can't believe YOU just postured yourself as a champion of civil discourse.

    20. Re:No classes, No goto by Tough+Love · · Score: 1

      If you don't think coroutines aren't a form of goto, then maybe consider you need to learn more.

      Idiot.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    21. Re:No classes, No goto by Tough+Love · · Score: 1

      A master of grammar, you, yes that's it. Maybe make your insightful argument even stronger by adding in some more lolcat. And needless to say I am astounded by the depth of your understanding of computer science and the deep insights you contributed to the thread, they just keep coming, how do you do it? Absolutely in awe.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    22. Re: No classes, No goto by Anonymous Coward · · Score: 0

      Depends on what you mean by classes. You can do anything classes can do in Julia except adding data members in subclasses and calling implementation of super class in an overridden methods. But best practices in OOP programming suggests not doing that anyway

    23. Re:No classes, No goto by Pseudonym · · Score: 1

      Yes Julia has things that are somewhat like shitty classes.

      NBG set theory has classes. Java, C++, C#, and everything else descended from Simula has shitty things that are kind of like classes but not really.

      Haskell typeclasses and C++ "concepts" (which aren't in the language yet) are much closer to mathematical classes.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    24. Re:No classes, No goto by Pseudonym · · Score: 1

      If you don't think coroutines aren't a form of goto, [...]

      Lambda: The Ultimate Goto

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  9. Plotting is Broken by Anonymous Coward · · Score: 2, Interesting

    For a technical computing language, One of the major overnights was plotting. It is a mess. There were about 6 different plotting libraries, each with different interface. The most popular was to install python and use Matplotlib.

    There has been an attempt to wrap all of them up into plots.jl but you end up with something that never quite covers what you need.

    It also uses array indexa starting from 1......

    1. Re:Plotting is Broken by Spacelem · · Score: 1

      Yes it does have 1-based indexing. But then it's a language made by mathematicians, and like most of them (Fortran, Matlab, Octave, R, Maple, Mathematica) they usually index from 1. There are pros and cons, but ultimately it's just down to personal preference (personally I prefer 1-based indexing).

      However Julia does support arbitrary starting indices, whether it's from 0, or say you wanted to index by year and start from 1960. It's not something I've tried, but I watched a presentation on it once and it seemed there were some very clever things you could do with it.

      The plotting isn't quite as bad as it sounds. You can either use whichever graphics library you're familiar with (Winston for Matlab style, PyPlot for Matplotlib style, Gadfly for Grammar of Graphics style, GR, Plotly.js, AsciiPlot etc.) or you can use Plots.jl and tell it which backend to use. It would be nice if there was just one way to do it (same for saving and loading data), but I've always managed to get something nice working.

    2. Re:Plotting is Broken by Anonymous Coward · · Score: 0

      Yes it does have 1-based indexing. But then it's a language made by mathematicians, and like most of them (Fortran, Matlab, Octave, R, Maple, Mathematica) they usually index from 1. There are pros and cons, but ultimately it's just down to personal preference (personally I prefer 1-based indexing).

      I don't mind 0-based indexing, but it does bug me when programmers confuse indexing with ordinality. Then you get silliness like naming "the zeroth element" of an array. Enumeration doesn't work that way, and it leads to more silliness in requiring you to call the 2nd element the "first" element.

  10. Yes but... by MikeHibbett · · Score: 1

    Until it has a third party module for every conceivable thing you might want to do, I'm not dropping Python. I'll pop back in 10 years and check it out :)

    1. Re:Yes but... by Anonymous Coward · · Score: 0

      Well yeah. I don't use Python but do use R (for stats,duh). It's the same thing. Every friggin thing you'd ever want to do with stats is available for R. Julia does have some nice stats support but nowhere near as awesome as R, and probably never will.

    2. Re:Yes but... by Pseudonym · · Score: 1

      Julia isn't a replacement for Python. Julia is a replacement for Fortran.

      Numpy is a poor replacement for Fortran.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  11. Licenses by willoughby · · Score: 1

    "We want a language that's open source with a liberal license..."

    I'm not a programmer, and I can easily prove that if necessary.

    Are there programming languages with restrictive licenses? What sorts of jobs would you be unable to do because of those licenses?

    1. Re:Licenses by Aighearach · · Score: 1

      They're just language designers, why should they be expected to have narrowly parsed understanding of the words they use?! LOL

      Java would be an example of a language with restrictive IP conditions that is limiting its adoption. You can still do smart phone apps, and internal tools you're not distributing outside the company.

    2. Re:Licenses by Crispy+Critters · · Score: 2

      The "language" consists of the compiler (the contents of src/), most of the standard library (base/), and some utilities (most of the rest of the files in this repository).

      https://github.com/JuliaLang/j...

      Probably someone watching Oracle asserting ownership of the Java base classes. Use was allowed, but not alterations or compatible implementations.

  12. We want to have our cake and eat it too. by Anonymous Coward · · Score: 0

    You can't just have all the best features of scripting languages like Python and Perl and then magically expect the speed of C. Those features are inherently slow, no matter what you implement them in. That's like saying "we want automatic garbage collection with the speed of no garbage collection." It doesn't work that way. I'd like to have the speed of a car that has gas in it without having any gas in it, but it just doesn't work that way.

    1. Re:We want to have our cake and eat it too. by giggleloop · · Score: 1

      If you haven't used or benchmarked the language, I don't get why the armchair criticism? People like yourself were once saying 'that plane will never get off the ground. We can't fly!'

    2. Re: We want to have our cake and eat it too. by Anonymous Coward · · Score: 0

      Some people have no knowledge of how computer language features are implemented. These people fall for impossible promises all the time because they don't know any better.

      Sad to say, I feel obliged to point out the obvious, that I am referring to the *parent* post, because parent poster might not know it's him.

      CS fundamentals: learn them.

    3. Re:We want to have our cake and eat it too. by lucasnate1 · · Score: 1

      There are other trade-offs that you can have, like slow compilation times, or ability to get speed only on specific domains. Check out projects like Stalin ( https://en.wikipedia.org/wiki/... ). And btw, as someone who has an Msc in CS and published an article in an important convention, I know enough "foundations of computer science".

  13. Their want list sounds like by ezakimak · · Score: 3, Insightful

    A leprechaun riding atop a unicorn handing out buckets of gold.

    If they pull it all off in a single language, more power to them.

    1. Re:Their want list sounds like by Aighearach · · Score: 3, Funny

      I'm sure they can handle the unicorn and the buckets of gold, but if you want leprechaun support you're going to need a Haskell interface.

  14. Sounds like Pie in the Sky by Anonymous Coward · · Score: 0

    Dynamism of Ruby with native speed of C? Ever heard of Compilation?

    Anyway, Julia itself is written on top of LLVM; If they are able to bootstrap Julia in Julia and the performance stays the same, then i'll listen to their goals about the lofty language they claim to invent.

  15. FORTRAN? by Anonymous Coward · · Score: 0

    Why no mention of the reigning champ in the number crunching space, FORTRAN? Julia's ass will be handed to it.

    1. Re:FORTRAN? by ebvwfbw · · Score: 1

      What have you been smoking. The champ there is C. Always will be C unless you go to assembler, which C is turned into.

      FORTRAN was just one of the first languages and a really big step up from assembler. Lacks a lot of critical things, however.

    2. Re:FORTRAN? by Anonymous Coward · · Score: 0

      If you're talking about scientific computing, C is not the "go-to" language (pardon the expression). Fortran is still king.

      Scientific computing’s future: Can any coding language top a 1950s behemoth?

  16. Languages are full of hard choices by Anonymous Coward · · Score: 0

    I've played with my own toy language design, and there are so many agonizing choices. I empathize with these guys, trying to get it all down.

    For just one little example, take integer literals.. To sys depend or not?, that is the question. They've chosen to sys depend like C. That leads to the convenience of automatic scaling; but it's a form of implicit conversion which is evil. It potentially leads to "works on my machine" bugs. The alternative is to force something that's generally supported on modern hardware but "big enough" like 32 or 64 bit; but that leads to "dog slow or not working on embedded" because you have to simulate it on a more constrained architecture.

    That's just one little choice. There are hundreds of choices like this in language design, thousands? Some are more important than others.

    Good luck, guys.

    1. Re:Languages are full of hard choices by Anonymous Coward · · Score: 0

      Or you could let the programmer choose what numeric subtype he needs, like Ada does.

    2. Re:Languages are full of hard choices by Anonymous Coward · · Score: 1

      Julia and C don't prevent you from choosing a type. Neither Ada nor any other language can magically solve the problem. I'm just talking about defaults. The programmer still has to decide if it's more important for a function to scale with hardware or run the same everywhere. It's never an easy choice at any level. You could say, "every programmer should make this choice", and I sometimes see C littered with special types for this reason--this function should scale with hardware, this one shouldn't, etc. Then somebody else complains that's ugly or even unnecessary. No silver bullet, really.

  17. how good is the multithreading? by ooloorie · · Score: 3, Insightful

    The multithreading support in Julia 1.0 still says "experimental". So does it have usable threads or not? How good is the thread implementation? Comparable to Java? To C++? Are the standard data structures thread safe? How many spurious locks are there?

    1. Re:how good is the multithreading? by Anonymous Coward · · Score: 0

      Julia sounds completely shit then. Golang wipes the floor with it.

    2. Re:how good is the multithreading? by Anonymous Coward · · Score: 0

      It supports parallelism for numeric code. Whilst scientific code may use some task-based parallelism, typically that is used for interfacing or I/O, so if Julia has constructs that allow that without needing code such as if (rank==0) {... then that will cover many cases. For I/O you often want that multiple threads anyway, although not always.

      I haven't delved into Julia to know how well it supports shared memory and distributed parallelism models, or at what level of abstraction, or with what handling for special cases. In general, though, to solve something like Ax=B, you'd want to be able to write that in the code and have it work for one thread or one one machine or 10,000 closely coupled, or 10,000 distributed, without modification, but also hints for diagonals, sparseness, etc. if desired. And you'd want it to make use of hierarchical collectives and so on.

      q_e_t

  18. Why is this any better than Lisp? by Anonymous Coward · · Score: 0

    I can go down their list of features and pretty much find every single one in Common Lisp, which has been around for decades. Why should I use Julia instead?

    Of course, someone will make fun of Lisp for being a niche and unpopular language, but it's not like Julia is any better in that department.

    1. Re:Why is this any better than Lisp? by Anonymous Coward · · Score: 0

      Better default data structures, better numerical support, more approachable for end users.

    2. Re:Why is this any better than Lisp? by Anonymous Coward · · Score: 1

      ((Yes Lisp) is) (so frig)) in )))
                (Awesome. (((And (So Simple) even) A
                            (((Child could ) use )(it probably).)

    3. Re:Why is this any better than Lisp? by cstacy · · Score: 1

      Better default data structures, better numerical support, more approachable for end users.

      What are these "default" data structures in Lisp that you refer to?

      How would you contrast the numerical support in Lisp with what's in Julia?

    4. Re:Why is this any better than Lisp? by cstacy · · Score: 1

      ((Yes Lisp) is) (so frig)) in )))

                (Awesome. (((And (So Simple) even) A

                            (((Child could ) use )(it probably).)

      ((Yes Lisp) is) (so frig)) in )))

                (Awesome. (((And (So Simple) even) A

                            (((Child could ) use )(it probably).)

      Lisp code doesn't look like that.

    5. Re:Why is this any better than Lisp? by Anonymous Coward · · Score: 0

      It's passable pseudocode. Really. Here's valid common lisp that's written very imperatively/iteratively for java peeps who don't know the language.

      (defun get-max-value (list)
          (let ((ans (first list)))
              (do ((i 1 (1+ i)))
                      ((>= i (length list)) ans)
                  (when (> (nth i list) ans)
                      (setf ans (nth i list))))))

      Not hugely different.

  19. .x d by fyngyrz · · Score: 2

    I know the Julia law, and will obey it.

    Heretic! Splitter! Dimensional fractionator!

    The Mandelbrot law is supreme!

    --
    I've fallen off your lawn, and I can't get up.
  20. Way ahead of ya by fyngyrz · · Score: 1
    --
    I've fallen off your lawn, and I can't get up.
    1. Re:Way ahead of ya by Amiga+Trombone · · Score: 1

      You forgot to add the "except if", "only when" and "throw tantrum" clauses.

  21. Look here by Anonymous Coward · · Score: 0

    Um-hmmm. Just go back to whining about your inability to manage whitespace, will you? We need some more entertainment from incompetents claiming to be programmers around here. You were saying?

    1. Re:Look here by Tough+Love · · Score: 0

      I was saying that you are being offensive. You get that a lot, right?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
  22. Any stories to tell? by jma05 · · Score: 1

    I would like to hear from people who switched from the more mainstream numpy and tensorflow for linear algebra.. to Julia.
    What were your experiences? Was the worflow much more productive? What were the other gains?

    1. Re:Any stories to tell? by Pseudonym · · Score: 1

      Am I misunderstanding, or did you just say that mainstream programmers are using tensorflow as a linear algebra library?

      If not: Phew.

      If so: What the hell is wrong with people?

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    2. Re:Any stories to tell? by jma05 · · Score: 1

      Tensorflow is a well-known. That is all I meant.

      https://simplyml.com/linear-al...

      Most probably just use Numpy.

  23. There is by Anonymous Coward · · Score: 0

    Contrary to languages with a contrived Code of Conduct there aren't tons of lawyer-friendly rules but just one requirement :

    - If you want to use Julia you have to kill a bunny.

  24. package management by Anonymous Coward · · Score: 0

    How about package management? Is it as good as npm? If so, I would contribute modules.