News for hackers. Stuff that matters.
Re:JuliaLang: The Ingredients for a Composable Programming L... by smabie on Monday February 10, 2020 @10:15AM (#22289754)
Julia is great. It’s significantly simpler than Python while also being much more expressive. It’s too bad the typing is only for dispatch, but hopefully someone will write a typechecker someday. I’ve found it surprisingly refreshing to not have to think about classes and just add functions on objects wherever I want. Some languages solve this with monkey patching (which is bad), others like Scala with an extension class (reasonable, but you still don’t get access to private properties), but the Julia approach is cleaner.

I wouldn’t use Julia for a non-scientific computing app as I don’t think it’s suitable, but for anything data science related, it’s great! And with the Python interop, I don’t really think there’s any reason not to use Julia for your next data science project. I suspect that over the next 5 years Python will no longer be used for these applications at all.

Re:JuliaLang: The Ingredients for a Composable Programming L... by FranzFerdiNaN on Monday February 10, 2020 @10:27AM (#22289896)
Python will still be used 20 years from now. The clear advantage of Python is the enormous ecosystem that is available, the millions of questions on SO giving solutions to every problem you can run into, the books and learning materials etc, programmers and corporations having invested loads of time and effort in building, maintaining and battle-testing libraries.

Don't get me wrong, i think Julia is an amazing language, but being an amazing language is neither necessary or sufficient to succeed. R shows how you can succeed just fine with a kinda weird language.

Re:JuliaLang: The Ingredients for a Composable Programming L... by baron_harkonnen on Monday February 10, 2020 @12:04PM (#22290914)
I remember when Python was a new and exciting language and people said the exact same thing about Perl. "You'll never see Python replace Perl for string processing, Perl has such a huge ecosystem!". At the time Perl was the de facto interpreted/"scripting" language.

Sure Perl is around still, but it has become a rather niche language used in a small number of specific communities.

I use Python everyday, and still haven't had enough time to properly learn Julia, and I would certainly not be shocked to see Julia take over the lion's share of numeric computing from Python in 20 years.

Re:JuliaLang: The Ingredients for a Composable Programming L... by int_19h on Monday February 10, 2020 @02:32PM (#22292369)
Python replaced Perl in many niches, because Python was better suited to general tasks. For string processing, it wasn't as convenient, but there were so many other things where it was clearly a better choice. And being able to use a single "good enough" language for everything is itself a major convenience.

Julia is the opposite - it's better than Python in one particular narrow niche, and cannot replace it broadly. So it has to offer enough to justify going from one language to two.

Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Monday February 10, 2020 @06:03PM (#22294378)
> Julia is the opposite - it's better than Python in one particular narrow niche, and cannot replace it broadly. So it has to offer enough to justify going from one language to two.

Absolutely disagree. I will claim Julia is a BETTER general purpose language than Python. I am not an academic or researcher. I use Julia over Python because I find it better is almost every regard apart from startup time ;-)

Julia outdo Python as a glue language. Integration with C/C++, Fortran, Python, R and the shell is awesome.

I have rewritten large bash shells as Julia code. Due to the need for having a language more broadly available on customer computers, I tried rewriting it in Python. I found that far more painful.

Package management is IMHO superior in Julia. REPL environment is superior. Expressiveness of language is superior. Nothing in Python matches the power of Julia macros. Multiple dispatch is insanely useful and dead easy to use. Python has nothing like it out of the box.

That you can more easily redefine types at runtime and full class hierarchies can offer some advantages at times. However I don't find that it makes up for the power of multiple dispatch and macros.

Don't make the mistake of thinking that Julia is only suitable for scientific work, because that is where it is currently used.

Re:JuliaLang: The Ingredients for a Composable Programming L... by int_19h on Monday February 10, 2020 @06:41PM (#22294615)
What truly makes the language general purpose isn't really language features. The vast majority of languages are "general purpose" by that metric - but you don't see people writing desktop apps in, say, R or PHP. It's the libraries. Python embraced "batteries included" a long time ago, and then there's everything on PyPI on top of that.

With a language like Julia, it's going to be a chicken-and-egg problem - so long as people are using it mostly for scientific computing, the stable and well-maintained libraries for it are mostly going to be about that.

Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Tuesday February 11, 2020 @04:41AM (#22297230)
I partly agree, but I think it is a bit more to it than that. Part of what made Perl, Python and Ruby so widely used compared to say LISP or Matlab is that they are great at text manipulation and interacting with the unix shell.

Julia is exactly the same. Anything people would use to write shell scripts, I would use Julia with instead and I have used many languages for this purpose: Python, Ruby and Go. Out of al these I find Julia to be the best language.

The fact that Julia is free, open source, available on all platforms and is good at text and shell stuff means it has a sort of Trojan horse ability to get into more wide usage.

I am not a scientific programmer, yet I use Julia for a whole bunch of stuff and find it very productive. Here are some examples of stuff I have written in Julia:

- Custom scripts for Swift and Objective-C app compilations.

- Various file conversion utilities.

- Code generators based on custom DSLs. Due to Julia's support for macros writing a DSL is easier in Julia than in Python, Go or whatever "script" alternative I might have used. - Various parsers. I find Julia very good at writing parsers. I have used this to create tools for manipulating user interface definition files for a larger C++ project.

- Editor plugins. I have written plugins in Julia for e.g. TextMate although I guess it would have worked on Sublime and other editors as well.

I cannot imagine anyone would have had a nice experience writing any of this stuff in R or Matlab.

Julia may never get big as a Web programming language, but for scientific programming, data science, data scraping/munging/preparation, scripting make up quite a large field together.

Julia may have some slow startup due to JITing but I found my Julia scripts to run much faster than the shell scripts they replaced and the Julia code was easier to read and faster to write.

Re:JuliaLang: The Ingredients for a Composable Programming L... by kwertzzz on Monday February 10, 2020 @04:19PM (#22293497)
Did you know that Java for instance, was originally designed to run on interactive TVs? But then, Java run on many type of devices and in broad range of use-cases (maybe with the exception of TVs :-)).

The original niche for which a programming language is designed may or may not be indicative for what it is used in the end. Julia strikes a very good balance between performance, flexibility (macros) and ease-of-use (default type inference). I won't be surprised if there are other niches outside of scientific computing where these characteristics are desirable.

The biggest obstacle I see for the adoption of Julia outside of the scientific computing realm are the latencies due to compilation. There are already 3-party solutions for this (like PackageCompiler{X,}.jl) but imho they are not robust yet enough for widespread adoption, but this might be about to change when different effort join forces [1].

[1] https://github.com/JuliaLang/PackageCompiler.jl/pull/304

Re:JuliaLang: The Ingredients for a Composable Programming L... by Recurecur on Monday February 10, 2020 @03:42PM (#22293048)
"Julia is the opposite - it's better than Python in one particular narrow niche, and cannot replace it broadly. So it has to offer enough to justify going from one language to two."

How so? Julia is a fine general purpose language. I'd go so far as to say it's more appropriate than Python for a wide class of problems!

Re:JuliaLang: The Ingredients for a Composable Programming L... by hpcjoe on Monday February 10, 2020 @05:28PM (#22294104)
In many ways, Julia is a better python than python, if only for the lack of the (quite insane in the 2000s) program structure by text formatting. That is a misfeature.

Julia is fast out of the box. You don't need Julia + some-other-language to get performance. You can use your GPUs fairly trivially from within the language (though this is implemented as FFI, it still has an idiomatic feel to it).

As for the previous comments on Perl, I am reminded of Mark Twain's famous retort. Rumors of its demise are greatly exaggerated.

Re:JuliaLang: The Ingredients for a Composable Programming L... by mkborregaard on Monday February 10, 2020 @06:01PM (#22294368)
Program structure by text formatting is a misfeature, though. What you do need though to make sure code remains readable is strong convention. I think actually that's the most unique feature of Julia (as also alluded to in the post) - how much of julia's ecosystem that works because of social convention (and conversation).
Re:JuliaLang: The Ingredients for a Composable Programming L... by gmassman on Monday February 10, 2020 @07:13PM (#22294808)
Purely anecdotal evidence, but Julia's support for basic HTTPS server capabilities is immature at best. Sure, it is capable, but the amount of effort to build an web API is much higher than in a language like Python which has had many more years to mature its ecosystem.

That's not to say I dislike Julia. I think it's a wonderful language for numerical computing. Over the next few years I certainly hope to see wider adoption among data science and analytics communities.

Re:JuliaLang: The Ingredients for a Composable Programming L... by cwyers on Monday February 10, 2020 @12:15PM (#22291011)
Yes, some things succeed. Most things don't succeed. If you bet on failure 100% of the time, you'll have your misses, but you'll hit more than you miss.
Re:JuliaLang: The Ingredients for a Composable Programming L... by ScottPJones on Monday February 10, 2020 @11:14AM (#22290371)
Python's ecosystem is great - but Julia's is growing incredibly fast, and in some cases Julia has already surpassed what is available in other languages (for example, take a look at the whole differential equations ecosystem: https://github.com/JuliaDiffEq). Also, Python's ecosystem is only a 'pyimport(name)' away (using the PyCall.jl package). Same thing is true for R and a number of other languages (RCall.jl, JavaCall.jl, etc.) I've been using SymPy, QisKit, matplotlib and other Python packages with no problem in Julia.
Re:JuliaLang: The Ingredients for a Composable Programming L... by mumblemumble on Monday February 10, 2020 @11:22AM (#22290462)
I would be careful treating this too much like a popularity contest. Python will still be used 20 years from now, but that doesn't necessarily mean that it's going to be dominant 20 years from now.

Source: I used to do a lot of programming in various dialects of Basic, which, a bit over 20 years ago, was popular largely because of its own ubiquity and popularity. And, while I still maintain some Basic code, I was surprised how quickly it died. One day everything was being written in it. The next day, we were were writing new things in a fancy new language that everyone agreed was more productive, and talking to the existing stuff through an FFI. And, a day later, we were replacing modules in order to get them off of the "legacy" platform.

Re:JuliaLang: The Ingredients for a Composable Programming L... by logicchains on Monday February 10, 2020 @11:12AM (#22290355)
>The clear advantage of Python is the enormous ecosystem that is available, the millions of questions on SO giving solutions to every problem you can run into

All of this is also available in Julia via its near-seamless Python interop. Its package manager even does a better job of managing Python packages than Python does.

Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Monday February 10, 2020 @05:56PM (#22294322)
> The clear advantage of Python is the enormous ecosystem that is available

Could have said that about Perl back in the day too, or a great number of languages.

The key problem Python faces competing against Julia in the long run is that Julia runs faster with less resources. By that I mean that because packages in Julia combine easier and are written all in Julia, it is simply much faster to develop equivalent functionality in Julia compared to Python.

Thus as Julia grows the speed of advancement will just keep growing. There is also a sort of asymptotic curve for most software. As you reach certain complexity advancing gets slower. Python due to its age has acquired a lot of cruft which will slow development down.

I know exactly how this feels from having worked on very similar software products of different age. The older software really had problems keeping up speed. The younger software moved ahead faster due to cleaner design. We needed far less people to add more features than the competition.

Python will struggle with old design decisions it can no longer undo. Look at e.g. the enormous amount of man hours required to get JIT compilation working in Python. It still does not work well. Meanwhile Julia has require less manpower making a whole language with better JIT compilation.

Language design matters over time. I don't claim Julia will overtake Python any time soon. But over a long time frame I think it is inevitable, because legacy goes against Python in too many areas.

Re:JuliaLang: The Ingredients for a Composable Programming L... by dcolkitt on Monday February 10, 2020 @12:13PM (#22290987)
> R shows how you can succeed just fine with a kinda weird language.

One thing that most people don't appreciate about R is the subtle influence from lisp world. This makes it really feel like the language is optimized for data science down to the most basic syntax level.

Re:JuliaLang: The Ingredients for a Composable Programming L... by gugagore on Monday February 10, 2020 @12:41PM (#22291338)
I'd love an example of the subtle influence. In any case, the influence of lisp on julia is pretty obvious if you're familiar with lisp, I believe.
Re:JuliaLang: The Ingredients for a Composable Programming L... by cwyers on Monday February 10, 2020 @02:19PM (#22292245)
I believe that R was originally an implementation of S in Scheme, because of the restrictive commercial licensing of S and the desire to have a free-as-in-beer alternative that was S-compatible. This comes through in things like R's metaprogramming:

https://adv-r.hadley.nz/meta-big-picture.html#meta-big-pictu...

Re:JuliaLang: The Ingredients for a Composable Programming L... by awb on Monday February 10, 2020 @11:47AM (#22290742)
> Python will still be used 20 years from now

So much technology has come and gone since 2000. If innovation continues to accelerate I'd be hesitant to predict what 2040 will look like.

Programming might become so simple and automated that we won't need StackOverflow to the extent we do today.

It's really hard to predict the next year or two let alone the next 20.

Re:JuliaLang: The Ingredients for a Composable Programming L... by goatlover on Monday February 10, 2020 @12:18PM (#22291033)
Programming languages from 2000 remain, though. C, C++, Java, JS, Python, etc. Even Fortran, Cobol and Lisp remain in use. There’s been attempts since the 80s to popularize visual and and higher level approaches to programming, but the traditional languages still dominate. And the newer ones like Go, Elixir and Julia are like the traditional C, Lisp and Fortrans.
Re:JuliaLang: The Ingredients for a Composable Programming L... by elcomet on Monday February 10, 2020 @12:31PM (#22291200)
More than this, C is from the 70s, and C++ is from the 80s.

This is 50 years from now for C. So I'd say python is likely to be still here 20 years from now, given how popular it is.

Re:JuliaLang: The Ingredients for a Composable Programming L... by cygx on Monday February 10, 2020 @01:02PM (#22291504)
Python will still be around, but how popular it'll be is an open question. For example, Pascal or Perl were huge in their prime, and while they continue to stick around, the torch has been passed on.
Re:JuliaLang: The Ingredients for a Composable Programming L... by goatlover on Monday February 10, 2020 @03:25PM (#22292879)
Sure, but if Julia relegates Python to a niche and Rust does the same thing to C, they're still the same kind of approach to programming, and not some high level, mostly automated thing. They don't fundamentally change how people program.
Re:JuliaLang: The Ingredients for a Composable Programming L... by hpcjoe on Monday February 10, 2020 @05:33PM (#22294151)
When you write idiomatic Julia ... not C in a Julia syntax, but actually leverage the native power of Julia, yeah, you write code differently.
Re:JuliaLang: The Ingredients for a Composable Programming L... by goatlover on Monday February 10, 2020 @07:26PM (#22294879)
Same with idiomatic Python or Lisp circa 1960.
Re:JuliaLang: The Ingredients for a Composable Programming L... by awb on Monday February 10, 2020 @12:30PM (#22291175)
Sure, some do, but past adoption is not a guarantee of future adoption. 20 years in the future is a long time. Just look at Flash. Who knows, maybe a Quantum OS will dominate that doesn't support Python.

So yes, if someone will still be using Python in 20 years, I'm sure you're right. But Python just as easily could be relegated to a niche domain while other languages take over a broader range of applications.

Especially if someone's able to build a programming translator where you can easily port your code base from one language to another.

Re:JuliaLang: The Ingredients for a Composable Programming L... by coldtea on Monday February 10, 2020 @03:34PM (#22292969)
>Sure, some do, but past adoption is not a guarantee of future adoption.

Not a guarantee but still the best predictor.

>20 years in the future is a long time. Just look at Flash.

Flash had a lot of things against it. Proprietary (aside from niche implementations nobody really cared about or used), single vendor, not owing its platform (browser vendors owned it), and not really that useful (aside from casual online games its main other use was small animations and intro pages).

And even then, it also took the combined effort of 3 browser vendors to kill it, and its public ousting from its mobile platform from the biggest company on Earth...

Re:JuliaLang: The Ingredients for a Composable Programming L... by goatlover on Monday February 10, 2020 @12:55PM (#22291451)
I'm more responding to the idea that programming might become simple and automated, and we can't even predict technological changes a year or two out. You're right that Python could be relegated to a niche language in 20 years. That does happen.

What hasn't happened is a fundamental change to programming languages since the 1960s, despite the incredible increase in computing power, ubiquity of computers and much better tooling and environments for programming languages. There's no evidence that this is going to change anytime soon. All the popular new languages are similar to the popular older languages. If people don't want to program in JS, they transpile from Typescript. Even web assembly is a means to use a language like Rust on the web.

There's no simple, automated PL on the horizon that is going to replace JS, Java, Python, etc. There isn't one for spreadsheets, either, which is a technology from the 80s.

Re:JuliaLang: The Ingredients for a Composable Programming L... by JadeNB on Monday February 10, 2020 @02:06PM (#22292124)
> What hasn't happened is a fundamental change to programming languages since the 1960s

I think the rise of HLLs is an example of a fundamental change. It was still reasonable to be hand-writing assembler for lots of applications in the '60s.

Re:JuliaLang: The Ingredients for a Composable Programming L... by goatlover on Monday February 10, 2020 @02:24PM (#22292293)
Sure, but HLLs are decades old and ubiquitous by the 80s. There's no reason to think PLs are going to fundamentally change in 20 years. They could, but it's just speculation at this point.
Re:JuliaLang: The Ingredients for a Composable Programming L... by edw on Monday February 10, 2020 @02:44PM (#22292481)
The argument over whether C was fast enough to obviate the need to write in assembly raged across the pages of Dr Dobb's Journal and Byte Magazine well into the mid '80s.
Re:JuliaLang: The Ingredients for a Composable Programming L... by pjmlp on Monday February 10, 2020 @03:41PM (#22293043)
Which while true for home micros, was already a proven fact since the early 60's in the big warehouse mainframes, with the Algol derived systems programming languages.
Re:JuliaLang: The Ingredients for a Composable Programming L... by goatlover on Monday February 10, 2020 @03:05PM (#22292680)
And that supports the argument that PL evolution is slow and unlikely to fundamentally change in 20 years time. Anyway, while people where arguing over C vs Assembly, there were Lisp and Smalltalk machines that didn't become the future.
Re:JuliaLang: The Ingredients for a Composable Programming L... by coldtea on Monday February 10, 2020 @03:31PM (#22292941)
>So much technology has come and gone since 2000. If innovation continues to accelerate I'd be hesitant to predict what 2040 will look like.

Not much core technology -- e.g. programming languages and their ecosystems.

Frameworks, or specific business cases or tools ('grid computing', 'big data', 'no sql' etc) sure...

Re:JuliaLang: The Ingredients for a Composable Programming L... by earenndil on Monday February 10, 2020 @12:15PM (#22291009)
> If innovation continues to accelerate

It won't; that is a naive view. Innovation can't keep accelerating forever, and I would be surprised if it even keeps up its current pace; far likelier it's a sigmoid curve - https://en.wikipedia.org/wiki/Sigmoid_function

Re:JuliaLang: The Ingredients for a Composable Programming L... by gugagore on Monday February 10, 2020 @12:53PM (#22291436)
I don't know if you're talking about like the heat death of the universe, and so like nothing is "forever", but I don't see signs of programming language innovation slowing down at all.
Re:JuliaLang: The Ingredients for a Composable Programming L... by gugagore on Monday February 10, 2020 @12:38PM (#22291296)
> the millions of questions on SO giving solutions to every problem you can run into

I definitely know what you mean. I too have the experience of typing in basically natural language queries into Google and have stack overflow turn it into copy-paste-able code for me.

But what's also true is that in 20 years the problems being solved will likely be bigger, and more complicated, and in many cases we'll be solving them on platforms that require good abstractions over multiple cores. So none of that is really in Python's wheelhouse. (Complexity is an issue because abstrations in Python almost always come at a cost.)

Re:JuliaLang: The Ingredients for a Composable Programming L... by dv_dt on Monday February 10, 2020 @03:44PM (#22293081)
Perl used to be in somewhere similar to Pythons place 20 years ago...
Re:JuliaLang: The Ingredients for a Composable Programming L... by ScottPJones on Monday February 10, 2020 @11:04AM (#22290253)
I've been using Julia for non-scientific computing programs for almost 5 years now, and (especially now that it is stable since the 1.0 release) have found it well suited for general programming as well. Having a language that is easy to write (like Python), runs fast (like C/C++), and incredibly flexible & expressive (like Lisp) makes programming fun again!
Re:JuliaLang: The Ingredients for a Composable Programming L... by skybrian on Monday February 10, 2020 @11:25AM (#22290501)
Interesting, how does deployment work for you? What sort of executables do you ship?
Re:JuliaLang: The Ingredients for a Composable Programming L... by nnq on Monday February 10, 2020 @11:40AM (#22290670)
Don't people mostly ship containers nowadays? Or deploy code but standardize on language version.

Why t f would you want to ship / deploy a naked executable in 2019?!

Re:JuliaLang: The Ingredients for a Composable Programming L... by throwaway894345 on Monday February 10, 2020 @01:13PM (#22291638)
* Container images are generally huge. Layer caching helps to the extent that layers are reusable. If you're lucky, you can use something like alpine for smaller huge images. If you write in a language that supports statically linked executables (e.g., Go) then you can get by with a scratch in many cases, but then you could more easily ship a naked executable

* Container images take a long time to build and build caching only works well if your dependency tree is linear (it's not). (Caveat: there are niche alternatives to docker build for which this may not hold, but then you're subject to the other issues with niche tools--support, docs, compat, etc)

* Your deployment target has to have a container runtime compatible with your image format. This is a PITA for end users in many cases.

* Most popular container runtimes make container processes children of the daemon process, not children of the client process. This means killing the parent process will not kill the child process, which means CI environments need to handle all sorts of edge cases. For example, a CI job is waiting on a stuck container to terminate, but eventually times out or the job is killed or similar; each time this happens a container is leaked--this means that CI tools have to support the container runtime explicitly and handle all of these edge cases because it's prohibitively complex for users to manage.

IMO the only advantage (and this is a huge advantage where applicable) for containers is that they can be orchestrated by things like Kubernetes or AWS Fargate.

Re:JuliaLang: The Ingredients for a Composable Programming L... by unlinked_dll on Monday February 10, 2020 @11:53AM (#22290803)
Not all of us are web developers.
Re:JuliaLang: The Ingredients for a Composable Programming L... by skybrian on Monday February 10, 2020 @11:44AM (#22290713)
Containers are common for server-side code but not for mobile, desktop, or client-side web code.
Re:JuliaLang: The Ingredients for a Composable Programming L... by MiroF on Monday February 10, 2020 @12:07PM (#22290938)
e: ignore
Re:JuliaLang: The Ingredients for a Composable Programming L... by vanderZwan on Monday February 10, 2020 @12:48PM (#22291403)
> It’s too bad the typing is only for dispatch, but hopefully someone will write a typechecker someday

I was under the impression that if you write a function that takes very specific sub-types as its parameters, and then try to call it with invalid parameters (that is, values that cannot be converted to the right type via the promotion rules) that Julia will complain about this?

Re:JuliaLang: The Ingredients for a Composable Programming L... by tgflynn on Monday February 10, 2020 @02:30PM (#22292350)
It will complain, but typically only at run time.
Re:JuliaLang: The Ingredients for a Composable Programming L... by vanderZwan on Tuesday February 11, 2020 @10:11AM (#22299048)
Ah, right! We're talking about AOT typechecking. I had forgotten Julia doesn't really do that (yet). Yes, fair is fair, since that is when it is the most useful its absence is a bit painful.
Re:JuliaLang: The Ingredients for a Composable Programming L... by mark_l_watson on Monday February 10, 2020 @10:34AM (#22289954)
I have a collection of short Julia code snippets that do non numeric things like text processing, semantic web clients, etc.

But in general I agree. Fir me, Lisp languages, Haskell, and Python are more general purpose.

Re:JuliaLang: The Ingredients for a Composable Programming L... by vasili111 on Monday February 10, 2020 @11:21AM (#22290449)
>Fir me, Lisp languages, Haskell, and Python are more general purpose.

You mean Julia as language is not enough good for general purpose or it lacks ecosystem (frameworks, libraries) for general purpose use?

Re:JuliaLang: The Ingredients for a Composable Programming L... by mark_l_watson on Monday February 10, 2020 @02:13PM (#22292188)
I didn’t express that correctly. What I meant to say was that I investigated Julia as a possible “use it for everything language.”

For me, general purpose has to include deep learning tools.

I really prefer Lisp and Haskell, but although Haskell’s TensorFlow support is pretty good, I found it easier to just use Python. I have had problems with the SBCL Common Lisp TensorFlow C bindings, but perhaps that was my fault.

Re:JuliaLang: The Ingredients for a Composable Programming L... by iLemming on Tuesday February 11, 2020 @01:39PM (#22301214)
AFAIK Clojurians doing some interesting stuff in that space. They've figured out Python Interop, writing books on Deep learning, Linear Algebra, etc. all that in Clojure.

https://aiprobook.com https://nextjournal.com/gigasquid

Re:JuliaLang: The Ingredients for a Composable Programming L... by smabie on Monday February 10, 2020 @12:08PM (#22290948)
A little of both, I guess. The biggest issue is that I, personally, get uncomfortable with dynamic typing when the project starts becoming over 1-5 Kloc. So I tend to stick with stuff like Scala, Rust, or OCaml for non data science tasks.
Re:JuliaLang: The Ingredients for a Composable Programming L... by e12e on Monday February 10, 2020 @12:14PM (#22291002)
What part of Julia isn't lispy enough that you don't consider it a lisp? I'm not saying you're wrong, just because there a scheme in there, just curious.
Re:JuliaLang: The Ingredients for a Composable Programming L... by mark_l_watson on Monday February 10, 2020 @02:14PM (#22292197)
The internal Scheme language was not easy for me to access.
Re:JuliaLang: The Ingredients for a Composable Programming L... by jamescont on Monday February 10, 2020 @02:26PM (#22292313)
Same here bro
Re:JuliaLang: The Ingredients for a Composable Programming L... by sgt101 on Monday February 10, 2020 @10:24AM (#22289863)
could you expand on the "too bad typing is only for dispatch"? I've enjoyed the way that the Julia type system can be used...
Re:JuliaLang: The Ingredients for a Composable Programming L... by smabie on Monday February 10, 2020 @11:04AM (#22290254)
It can’t be used for compile time correctness checking? i.e Julia isn’t a statically typed language.
Re:JuliaLang: The Ingredients for a Composable Programming L... by sgt101 on Monday February 10, 2020 @03:21PM (#22292835)
Yes - I understand why some people are keen on static types, but type inference is a powerful way to create funcetionality and I believe that the separation of concerns between the dispatcher and the programming code (removing the logic of decisioning from the code and using type inference instead) leads to clearer programs. I can't think how you can have that and have static checking as well (although I know that there are some compilers for some Julia code as mentioned in this thread)
Re:JuliaLang: The Ingredients for a Composable Programming L... by Symmetry on Monday February 10, 2020 @05:04PM (#22293882)
Lots of languages with static typing use type inference. Haskell, OCaml, Go, Rust, Nim, etc. Even C++ has auto these days which I think when combined with templates gives you what you're talking about though it is a bit clunky.

EDIT. For instance in Haskell I can just declar a function to sum the things in a container by saying

  summer a = folder (+) 0 a
And the compiler will figure out that the function accepts a Foldable container of some sort full of things that are Nums without ever having to tell the compiler that (though it's a good idea for maintainability. And then I can just pass in a list of floats and the compiler will Do The Right Thing. And if I pass in a list of booleans instead the compiler will yell at me at compile time because there's no (+) operation for booleans.
Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Monday February 10, 2020 @06:30PM (#22294536)
I think he possibly phrased it wrong. Dynamic languages don't do type inference, they carry type with each value at runtime.

Dynamic and statically typed languages each have their own wonderful advantages. There is just no way of replicating all the advantages of dynamic typing in a statically typed language.

It is hard to sum up why in a short sentence but I have tried to articulate it in a longer article here:

https://medium.com/@Jernfrost/the-many-advantages-of-dynamic...

Keep in mind this focuses only on advantages of dynamic languages. It does not mean I don't consider that static languages don't have their own unique advantages, but that was not the topic of my article.

The primary problem with static typing as I see it is the complexity and mental overhead it adds. It is not just the complexity in the type system and the language itself, but also in the tooling surrounding it: build system, dependency management, binary interface definitions, debuggers, REPL etc.

The complexity makes meta programming very hard to do for a software developer of average intelligence.

Where I see a use for advance static languages is for very specialized systems which need a high level of correctness and where a company is able to do the job with a small team of very bright people.

Re:JuliaLang: The Ingredients for a Composable Programming L... by c-cube on Monday February 10, 2020 @08:26PM (#22295167)
For me static typing removes mental overhead. I have fewer things to keep in my head, I can trust the tools to have my back and point me to where I did stupid mistakes. It makes reasoning about the code more local.

Also you can have static typing in an interpreted, interactive setting, with any language that has a REPL. That's even how the ML family started.

Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Tuesday February 11, 2020 @03:57AM (#22297065)
Peace of mind is not quite the same as what I meant with mental overhead. What I am referring to is that static type systems have far more complex type systems and semantics, which occupy more brain real estate.

And complexity tends to explode because it carries over to the tools. Static languages require far more complex tools to work with.

I did not mean static languages cannot have REPLs but my experience with them have not been great. They seem hamstrung in a way I cannot articulate well.

Re:JuliaLang: The Ingredients for a Composable Programming L... by Symmetry on Tuesday February 11, 2020 @09:39AM (#22298790)
Reading through that Medium post makes me think that maybe the author has never worked with a large code base written in a dynamic language and is attributing the difficulties of large projects to them being written in static languages? My day job involves a large amount of Python and we certainly use CMake to bundle it up for deployment, use YAML configuration files, worry about library version compatibility, and all of the other problems the author ascribes to static typing.
Re:JuliaLang: The Ingredients for a Composable Programming L... by oxinabox on Monday February 10, 2020 @07:12PM (#22294798)
Dynamic languages do do type inference. Or at least they can.

Julia does type inference at compile time. The difference is that it doesn't have to succeed.

If you write type unstable code then it won't.

Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Tuesday February 11, 2020 @04:21AM (#22297156)
Yes... but I feel that is more like an implementation detail. Semantically speaking you don't think of Julia as doing type inference.

Semantically speaking expressions don't have types and the type of expressions are never inferred (however they are inferred at compile time as an implementation thing for the JIT).

My point is that you can make an alternative Julia implementation that did absolutely no type inference and everything would work just fine apart from possibly bad performance.

However you could not make a compiler for a statically typed language such as Haskell which did not do type inference. If you did programs would no longer compile.

At least that is how I interpret the difference. I could be wrong. You probably know this better than me.

Re:JuliaLang: The Ingredients for a Composable Programming L... by FridgeSeal on Tuesday February 11, 2020 @04:54AM (#22297288)
Surely Haskell and Rust would be fantastic examples of languages that have static typing and excellent type inference?
Re:JuliaLang: The Ingredients for a Composable Programming L... by throwaway894345 on Monday February 10, 2020 @03:26PM (#22292882)
Presumably this means that no one has implemented a suitable static type checker or its type annotations don't provide sufficient information for a static type checker to work in principle?
Re:JuliaLang: The Ingredients for a Composable Programming L... by eigenspace on Monday February 10, 2020 @05:33PM (#22294145)
The problem is more the former (nobody has gotten around to it yet), but also a bit of the opposite of the latter, i.e. the type system is so rich, type-checking may be undecidable in too many contexts.

Julia's parametric types are incredibly rich. You can look up 'dependant types' which are similar in the static world and see the sorts of hoops static language designers jump through to have dependant types and still be able to reliably prove theorems.

Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Monday February 10, 2020 @06:34PM (#22294563)
What you can do with Julia types is far more advance than I think you can do with any statically typed language.

I can add a type annotation in Julia which is a function call which returns a type e.g. This function can be of any complexity.

I think a better approach is simply a Linter. You report type problems you can find and ignore the rest. Not point trying to figure out the more advance Julia cases.

I would assume 90% of Julia code will use types in a pretty straightforward manner and thus would be able to be analyzed by some sort of Linter. Lint.jl e.g.

Re:JuliaLang: The Ingredients for a Composable Programming L... by throwaway894345 on Monday February 10, 2020 @07:34PM (#22294920)
You're describing optional type systems; in this regard, Julia is on par with Python or TypeScript. The linter you're describing is also a type checker (like Python's Mypy). That said, it would be really interesting if someone would make a type checker that would evaluate/resolve those more complex types, at least those that can be guaranteed to terminate.
Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Tuesday February 11, 2020 @03:47AM (#22297030)
Optional typing and what Julia does is quite different. Julia type system is nothing like Python or TypeScript.

In Julia type annotations are not just a sprinkle of sugar. It has a very concrete use beyond asserting type consistency.

Julia types are used to decide what code gets run and memory layout of data.

Re:JuliaLang: The Ingredients for a Composable Programming L... by jbieler on Tuesday February 11, 2020 @05:58AM (#22297548)
I wrote an article showing a (probably naive) way how it could be done, but also discussing some of the limitations. At the end I think it would be better to think about these kind of tool as partial, automated tests rather than full-blown static type checkers.

https://nextjournal.com/jbieler/adding-static-type-checking-...

Re:JuliaLang: The Ingredients for a Composable Programming L... by socialdemocrat on Monday February 10, 2020 @06:15PM (#22294454)
You can do some form of type checking with stuff like Lint.jl. I mean since Julia uses a bunch of type information and Julia parses code into data structures which are easy to process, you can to a lot of your own type verification before running a program.

However I see Julia not being a statically typed language as a feature. If Julia was statically typed you would pretty much have lost everything that makes Julia a great language.

You cannot do multiple dispatch with a statically typed language efficiently.

Re:JuliaLang: The Ingredients for a Composable Programming L... by real_eng_ on Monday February 10, 2020 @11:05AM (#22290267)
Why every Julia user can't help but trash Python at every occasion?

It's getting really tiring

Re:JuliaLang: The Ingredients for a Composable Programming L... by smabie on Monday February 10, 2020 @12:19PM (#22291045)
Trashing is a little harsh, but Julia devs probably were mostly Python devs back in the day and are intimately familiar with the inadequacies of the language: the work required when you had to drop into C, the bad syntax for math, the constant conversions between ndarray, array, and lists, etc etc.

At my old bioinformatics lab, Python literally wasted thousands and thousands of collective man-hours which would have been saved by Julia if it had existed at the time. Since a lot of these researchers couldn’t really program that well, they would write code that would literally take weeks to run. And then they would call me and I would rewrite it in C and it would then take an hour or two. Julia solves this problem.

The amount of unnecessary supercomputer time (and electricity) that our lab (and others) were wasting with Python was, honestly, disgusting.

Re:JuliaLang: The Ingredients for a Composable Programming L... by elcritch on Monday February 10, 2020 @02:43PM (#22292467)
Exactly... well I didn’t do supercomputing but still wasted a lot of time dealing with Python 2/3 issues among others. Then there’s the ability to do things like fast bootstrapping, Monte-Carlo and other handy statistical techniques without writing kernel functions in C. Python was great for it’s time and enabled a lot and still let’s lots of people do great things, it’s just not for me anymore.
Re:JuliaLang: The Ingredients for a Composable Programming L... by ScottPJones on Monday February 10, 2020 @11:19AM (#22290425)
I haven't seen that at all - many Julia programmers are (or were) also Python programmers. I think there is a lot of respect in the Julia community for Python & the Python ecosystem. There have even been a number of Julia talks at various PyCons over the past few years.
Re:JuliaLang: The Ingredients for a Composable Programming L... by oxinabox on Monday February 10, 2020 @12:26PM (#22291139)
There was a python talk at the 2019 juliacon.
Re:JuliaLang: The Ingredients for a Composable Programming L... by oxinabox on Monday February 10, 2020 @12:25PM (#22291129)
This post doesn't even mention python. Not even once.
Re:JuliaLang: The Ingredients for a Composable Programming L... by hpcjoe on Monday February 10, 2020 @05:39PM (#22294191)
Hrm ... I recall Pythonistas trashing Perl as line noise, and other languages as well, for many many years. I'm not saying its right, just that karma, sometimes, comes back into focus.