Earlier quoted context omitted.
> Julia is homoiconic It depends on what you understand by homoiconic: https://stackoverflow.com/questions/31733766/in-what-sense-a...
That's a good point that it doesn't have the direct homoiconicity of Lisp, but it is not buried deep, since we have full access to the underlying AST as just an Expression type. In practice, this makes macros much less painful than in other non-lisp languages. This means that macros are used all the time, and idiomatically. The most proiminent non-lispy language with a macro system that I can think of is Scala. Macro…
Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
131–140 of 249 posts
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#132I personally don't like the fact that you have structs but no classes and no instance methods, but I know this is personal and don't want to start a religious war this morning
You mean you don't like that the methods are declared outside of the struct? Or that you have to say foo(x) instead of x.foo()? The latter makes writing code using autocomplete less doable, but reads more naturally in many cases. I can't think of compelling pragmatic reason to mind the former, but if you have one I'd like to hear it.
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#133Earlier quoted context omitted.
>> I really do with the 1 indexing had stayed around, since I feel like it's more natural to say the 1st element, instead of the 0th. It's not the 0th element. It is the 1st element and has an offset of 0 from the beginning of the array. Not saying it's better or worse, but that if you change the words you use to describe it, you may find it easier to use. To my surprise, I just learned that ranges in Rust don't incl…
Python almost always does what I want. If I say `for x in range(10)` it iterates exactly 10 times, starting at zero (which is convenient for 0-index lists in python). It would be extremely counter-intuitive if it did [0,10] as it would iterate 11 times. I agree though that it would be much less ambiguous if you could just do `for x in [0..10)`, for example. Current implementation requires the least amount of "off-by-…
Right and I expect that. The issue I have is that the values do not include 10. It turns out great in Python and Rust where things are 0-indexed, but that does not change the fact that the range construct itself is strange in not including 10.
I'm sure the notion of using mathematical notation where [1..10], (0..10], [1..11), and (0..11) all mean the same thing would drive the language parsing people nuts. Mostly because some of those involve unmatched [) or (]. But that's why we have a computer right?
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#134If anyone is interested, I was snooping around and found one of the co-creator's PHD thesis that explains in detailed terms some of the ideology behind Julia: https://dspace.mit.edu/handle/1721.1/99811#files-area
Can be downloaded here (PDF): https://github.com/JeffBezanson/phdthesis/raw/master/main.pd... For a shorter read with many of the same highlights, this is a paper about the design and implementation of Julia (PDF): https://julialang.org/publications/julia-fresh-approach-BEKS...
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#135Earlier quoted context omitted.
> as we do in all other aspects of life You mean like elevators? You may be surprised to learn that elevators in America are 1-indexed (ground floor == floor 1), but in Europe they are 0-indexed (ground floor == floor 0).
As a European I'm not really surprised, but it's not exactly the same thing. It's not like the ground level is considered "the 0th floor" and thus we use 0-based indexing. In most European countries the ground floor is not considered the same thing as the others. As Wikipedia puts it: "In most of Europe, the "first floor" is the first level above ground level". We consider and count as floors the "layers" above the g…
I think you just refuted your own previous assertion that 1-indexing is universal in all other aspects of life.
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#136Earlier quoted context omitted.
But why should you have to care, why not just sum(range)? Or @threads for i in eachindex(object) and let the details about how many cores be written once, correctly, elsewhere?
> But why should you have to care, why not just sum(range)? Sure, if you have single infinitely fast CPU. In real life, we have to decompose problem, run it in parallel and compose it back. > Or @threads for i in eachindex(object) & let the details about how many cores be written once, correctly, elsewhere? Here I'm explicitly talking about details, how it should be done, importance of composition, monoids etc. I und…
[1...N] = [1...N+1) = [1...K+1) + [K+1..N+1)
So the real loss is your point (2) - which, I agree, makes the implementation much less elegant and simple.
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#137Earlier quoted context omitted.
It's extremely expressive. Notably, Julia is homoiconic, with full lisp-style macros. It also has multiple dispatch, which is a far more general technique that OO single-dispatch. This makes it very easy to define modular interfaces that work much like statically-typed type classes in Haskell. This allows you, for example, to define a custom matrix type for your bespoke sparse matrix layout and have it work seamlessl…
Please don't vilify Python or R thinking that will help with Julia's adoption or popularity. If Julia is as awesome as its evangelists say, it will gracefully displace its competitors without the need of a smear campaign
Languages are toolsets and programmers are always looking for appropriate tools for a given task. It seems crazy to demand that people not be able to talk honestly about their experiences using a given tool. Python doesn't have feelings, it won't be sad if you don't like it.
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#138I personally don't like the fact that you have structs but no classes and no instance methods, but I know this is personal and don't want to start a religious war this morning
You mean you don't like that the methods are declared outside of the struct? Or that you have to say foo(x) instead of x.foo()? The latter makes writing code using autocomplete less doable, but reads more naturally in many cases. I can't think of compelling pragmatic reason to mind the former, but if you have one I'd like to hear it.
Re: Julia Language Co-Creators Win James H. Wilkinson Prize for Numerical Software
#139what good is philosophy if you choose arrays based on 1? https://groups.google.com/forum/?hl=en#!topic/julia-dev/tNN7...
So does: APL, AWK, COBOL, Fortran, Lua, Mathematica, MATLAB, R, Smalltalk, Wolfram Because it is Mathmatics and have 1 be based on 0 makes no sense, you then have to switch between the two and it is easy to make a mistake. This is why I don't use Python and Pandas. I got burnt once and that was enough and switched to R. Sadly we are stuck with 0 based array in programming and due to a historical issue.
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/E...