Live data from Hacker News

How an MIT research project became the Julia programming language

news.mit.edu

51–60 of 142 posts

Re: How an MIT research project became the Julia programming language

#51

Julia uses 1-based indexing. It's competes with R and Matlab for the same set of users. Both R and Julia have their core functions written in C++. Absolutely nothing new. From my experience, grad students use Julia when their PI thinks a new programming language will help differentiate their next NSF proposal among vast funding requests.

This argument over indexing conventions is so tired.

I have yet to hear a good argument for why the answer to "How do I get the third element of this array?" should be `arr[2]`

> Both R and Julia have their core functions written in C++. Absolutely nothing new.

What on earth are you talking about? This is at least a novel claim. Some deep parts of julia's compiler are written in C++ but that's about it. Nearly everything in the language is written in julia itself.

The only significant foreign codebases in the language are

  * LLVM

  * OpenBLAS

  * LibUV
all of which are extremely reasonable foreign things for a language to use (though we are gradually moving more and more of these things to the julia side)

Re: How an MIT research project became the Julia programming language

#52

Julia is such a great language, it's what really made me care about end enjoy programming. I think it's the modern language which has taken the most lessons from lisps, and has come up with some great ideas of its own too. There's lots to like, but I think the thing I love most about it and find it so interesting is that it's almost uniquely good at taking a piece of code and transforming it's meaning in various ways…

It was a great idea for a language. In practice though,it's hard to recommend. Great pet project for some mit professors to make a bunch of side money on top of their salaries though. Everyone else riding it is pretty much trying to niche their career rather then build something people can rely on unfortunately. It's the most unstable language I've ever used. In production I watched companies spend millions of dollars, not large companies, dealing with that aspect of it. The ecosystem surrounding it, though it's old enough, is also incredibly weak.

It's a shame. So hard to recommend it to anyone outside of an academic environment.

Re: How an MIT research project became the Julia programming language

#54

Julia uses 1-based indexing. It's competes with R and Matlab for the same set of users. Both R and Julia have their core functions written in C++. Absolutely nothing new. From my experience, grad students use Julia when their PI thinks a new programming language will help differentiate their next NSF proposal among vast funding requests.

This argument over indexing conventions is so tired. I have yet to hear a good argument for why the answer to "How do I get the third element of this array?" should be `arr[2]` > Both R and Julia have their core functions written in C++. Absolutely nothing new. What on earth are you talking about? This is at least a novel claim. Some deep parts of julia's compiler are written in C++ but that's about it. Nearly everyt…

> "How do I get the third element of this array" should be `arr[2]`

Ask a carpenter.

To get to the third pigeonhole in a racked series of one foot per pigeonhole unit you literally offset two feet from the origin.

In C (of course), arr[2] works as well as does 2[arr] as both are literally just syntactic sugar for arr+2

ie. The third pigeon hole begins after passing two whole pigeonholes.

Re: How an MIT research project became the Julia programming language

#55

Julia is such a great language, it's what really made me care about end enjoy programming. I think it's the modern language which has taken the most lessons from lisps, and has come up with some great ideas of its own too. There's lots to like, but I think the thing I love most about it and find it so interesting is that it's almost uniquely good at taking a piece of code and transforming it's meaning in various ways…

It was a great idea for a language. In practice though,it's hard to recommend. Great pet project for some mit professors to make a bunch of side money on top of their salaries though. Everyone else riding it is pretty much trying to niche their career rather then build something people can rely on unfortunately. It's the most unstable language I've ever used. In production I watched companies spend millions of dollar…

This depends a lot on what you're trying to do with it. There have been companies which did what you described, but there's also companies happily using it.

If you reach into unstable language internals, yes there is a lot of churn. If you use public language interfaces, the language has been extremely stable for a long time.

The ecosystem quality and quantity depends a lot on what you're trying to do. If you're far away from numerics, then yeah, you will struggle a lot more. E.g. I wouldn't want to do web-dev in julia, but if your software product involves needing to solve an ODE, or a lot of linear algebra, I wouldn't want to be anywhere else.

Re: How an MIT research project became the Julia programming language

#57
post #54

Earlier quoted context omitted.

This argument over indexing conventions is so tired. I have yet to hear a good argument for why the answer to "How do I get the third element of this array?" should be `arr[2]` > Both R and Julia have their core functions written in C++. Absolutely nothing new. What on earth are you talking about? This is at least a novel claim. Some deep parts of julia's compiler are written in C++ but that's about it. Nearly everyt…

> "How do I get the third element of this array" should be `arr[2]` Ask a carpenter. To get to the third pigeonhole in a racked series of one foot per pigeonhole unit you literally offset two feet from the origin. In C (of course), arr[2] works as well as does 2[arr] as both are literally just syntactic sugar for arr+2 ie. The third pigeon hole begins after passing two whole pigeonholes.

Okay, but why are you trying to think about *elements* of a list in terms of offsets from the origin?

I mean, that's an important low-level detail to know when you're working with assembly or doing pointer math, but it is not something that necessarily needs to be polluting the semantics of a high level language.

I find it much easier to think in terms of v[i] is the i-th element of my vector.

These sorts of things just feel like mental gymnastics people perform to post-hoc justify language quirks.

Re: How an MIT research project became the Julia programming language

#58
post #54

Earlier quoted context omitted.

This argument over indexing conventions is so tired. I have yet to hear a good argument for why the answer to "How do I get the third element of this array?" should be `arr[2]` > Both R and Julia have their core functions written in C++. Absolutely nothing new. What on earth are you talking about? This is at least a novel claim. Some deep parts of julia's compiler are written in C++ but that's about it. Nearly everyt…

> "How do I get the third element of this array" should be `arr[2]` Ask a carpenter. To get to the third pigeonhole in a racked series of one foot per pigeonhole unit you literally offset two feet from the origin. In C (of course), arr[2] works as well as does 2[arr] as both are literally just syntactic sugar for arr+2 ie. The third pigeon hole begins after passing two whole pigeonholes.

The third hole is _offset_ by 2, but if you ask a carpenter to add number labels to your pigeonholes, they are going to start at 1.

Indexes start at 1, offsets start at 0.

Re: How an MIT research project became the Julia programming language

#59
post #54

Earlier quoted context omitted.

> "How do I get the third element of this array" should be `arr[2]` Ask a carpenter. To get to the third pigeonhole in a racked series of one foot per pigeonhole unit you literally offset two feet from the origin. In C (of course), arr[2] works as well as does 2[arr] as both are literally just syntactic sugar for arr+2 ie. The third pigeon hole begins after passing two whole pigeonholes.

Okay, but why are you trying to think about *elements* of a list in terms of offsets from the origin? I mean, that's an important low-level detail to know when you're working with assembly or doing pointer math, but it is not something that necessarily needs to be polluting the semantics of a high level language. I find it much easier to think in terms of v[i] is the i-th element of my vector. These sorts of things j…

You asked for a good argument - I provided one.

> but why are you trying to think about a list of elements in terms of offsets from the origin

I don't try to think about them in this way - I do and have always thought about them in this way - in software terms for 50 years, in real world cut, saw, and hammer ways for over 60.

> I find it much easier to think in terms of ...

Which is the crux of the issue really, that's how you think.

> v[i] is the i-th element of my vector.

I think of V as the start of a row of elements.

V+0 is equivalent to V and naturally the start of the first element.

V+1 is the start of the row, plus one - the literal start of the second element.

I've always thought of V[i] as offsets, "jump overs" if you will.

It comes naturally for many that have worked with their hands on physical objects and worked with tape measures.

> but it is not something that necessarily needs to be polluting the semantics of a high level language.

Either way of thinking works - I spent decades going back and forth from Fortran to C, and people are free to make their high level languages however they wish - it's trivial to move from one to the other.

There are even some funky (or eyeball gouging) tricks done to preamble a data run with meta data, leading to V[-1] indexing being commonplace (in some domains)

Re: How an MIT research project became the Julia programming language

#60
post #58
post #54

Earlier quoted context omitted.

> "How do I get the third element of this array" should be `arr[2]` Ask a carpenter. To get to the third pigeonhole in a racked series of one foot per pigeonhole unit you literally offset two feet from the origin. In C (of course), arr[2] works as well as does 2[arr] as both are literally just syntactic sugar for arr+2 ie. The third pigeon hole begins after passing two whole pigeonholes.

The third hole is _offset_ by 2, but if you ask a carpenter to add number labels to your pigeonholes, they are going to start at 1. Indexes start at 1, offsets start at 0.

Well, of course.

And offsets are the measurements that get you to an element - the question was explicitly phrased as "how do I get to" ...

Post reply on HN