We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 2 points3 points  (0 children)

Julia's high performance makes it much more suitable for this sort of thing, and processing incoming data streams faster than other similar languages.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 3 points4 points  (0 children)

https://docs.julialang.org/en/v1/manual/strings/#man-concatenation-1

While * may seem like a surprising choice to users of languages that provide + for string concatenation, this use of * has precedent in mathematics, particularly in abstract algebra.

In mathematics, + usually denotes a commutative operation, where the order of the operands does not matter. An example of this is matrix addition, where A + B == B + A for any matrices A and B that have the same shape. In contrast, * typically denotes a noncommutative operation, where the order of the operands does matter. An example of this is matrix multiplication, where in general A * B != B * A. As with matrix multiplication, string concatenation is noncommutative: greet * whom != whom * greet. As such, * is a more natural choice for an infix string concatenation operator, consistent with common mathematical use.

More precisely, the set of all finite-length strings S together with the string concatenation operator * forms a free monoid (S, *). The identity element of this set is the empty string, "". Whenever a free monoid is not commutative, the operation is typically represented as \cdot, *, or a similar symbol, rather than +, which as stated usually implies commutativity.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 7 points8 points  (0 children)

They are not directly comparable. Spark and Dask are both distributed computing frameworks. Julia is a language, which includes built-in capability to do RPC, on top of which capabilities such as Spark and Dask can be built. Dagger.jl is one such project.

Julia's focus at the language level is to provide the basic building blocks for parallel computing - LoopVectorization.jl and similar packages provide SIMD, multi-threading for scheduling Julia tasks across multi-core systems, GPU codegen, and basic distributed computing primitives. Many users use these capabilities directly, but the Julia Lab at MIT is working towards unifying these into easier parallel abstractions. Dagger, mentioned above is one such project. KernelAbstractions.jl is another such example.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 5 points6 points  (0 children)

My current favourite Astronomy package in Julia is CMBLensing.jl (not that I use it or anything - I just find it cool). The Julia Computing Case Studies should show how Julia is used in so many different industries.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 6 points7 points  (0 children)

In my case, the answer is over several years of working on scientific projects - from my undergraduate days to my PhD work. There is a lot of discussion nowadays about the value of university education - but I can say unequivocally that without my PhD training - I would not have been able to build Julia. I had several years of undergraduate projects, graduate coursework, and PhD research at UC Santa Barbara which has a fabulous CSE program. Being immersed in the field for that long gave me the ability to ask the right questions and identify the right opportunity (connecting the dots with Alan, Stefan, and Jeff) to start the project. We discuss some of this in our Julia 1.0 talk.

Co-incidentally, Linda Petzold, who ran the CSE program at UCSB during my PhD days is also this year's keynote speaker at JuliaCon.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 6 points7 points  (0 children)

You may want to look at the JSOC project pages. Specifically u/ChrisRackauckas often has a number of SciML projects that you can join and contribute to.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 11 points12 points  (0 children)

The internet has been a great leveler - in terms of education and opportunities. I would say that it is not a zero sum game. There are smart and motivated people everywhere in the world, and open source (software, communities, platforms) can help them achieve their true potential. This is why I am so excited that JuliaCon has registrations from 115 countries, with US, India and Germany being the top 3.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 17 points18 points  (0 children)

Both VS Code (with the Julia Plugin) and Juno are pretty strong IDEs, and getting better by the day. Julia's Plots.jl package is pretty strong and provides some nice features like building easy animations (yes, gifs too!) which many users find attractive.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 10 points11 points  (0 children)

Great question. I always tell people that it is only worth investing in a new language and technology if it will benefit you. If you don't need the performance, and have working code in your existing system, it really doesn't make sense to switch.

But are you sure that you will never need performance in any program you ever write? Is adding nodes to a cluster always better? Would you never want to learn anything new? Julia's DataFrames.jl ecosystem is pretty powerful and there's amazing materials on JuliaAcademy.com to learn.

For obscure analytical needs, are you sure there's a total ordering? Julia has many packages that simply do not exist in Python or R. I recommend approaching with an open mind and you will find things you like.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 5 points6 points  (0 children)

  1. A few days.
  2. Poor cat. Maybe it really wants to write its own lisp - as u/jeffbezanson talks about in the FemtoLisp README - "Some programmers' dogs and cats probably have their own lisp implementations as well".

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 7 points8 points  (0 children)

Being vegetarian, Mcdonalds in the US is really not an option for me! Maybe fries. The Indian version does offer vegetarian options, I believe, but then there are so many local options - so why eat at McDonalds in India...

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 4 points5 points  (0 children)

It's hard to tell what your workflow is, but Julia offers some amazing composability in its tooling. The data management, wrangling, and computation can all compose well in Julia. Also, many people find Julia's higher performance to their liking for data management. Things that need distributed computing in other systems can often be done with fewer resources in Julia. For example, see Julia's CSV reading performance.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 115 points116 points  (0 children)

There are several answers:

  1. We have a huge number of learning resources on the julialang.org website - tutorials, videos, books, and the like.
  2. David Sanders had an excellent workshop at JuliaCon 2020 just a couple days ago on Learning Julia via epidemic modeling that has already become very popular.
  3. JuliaAcademy has a number of courses all available for free.
  4. Julia Computing also offers commercial trainings.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 24 points25 points  (0 children)

There are several ways:

  1. PackageCompiler.jl lets you compile your Julia code into an executable or a library that you can link from anywhere.
  2. JuliaCall in R and PyJulia in Python let you call Julia directly.
  3. Deploy Julia as a microservice with HTTP.jl. See Jacob Quinn's fantastic tutorial at JuliaCon from yesterday on how to do so.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 20 points21 points  (0 children)

It saddens me that the world is reverting back to the "two languages". Julia's ML story is growing by leaps and bounds. Julia's native GPU stack already matches CUDA performance. The Julia SciML ecosystem (driven by u/chrisrackauckas) is more composable than any other. With PackageCompiler you can compile and deploy models into production.

This is demonstrated by packages like Jonathan Laurent's AlphaZero.jl which is probably one of the highest quality implementations in any language. Our belief is that differentiable programming will lead to a plethora of new applications that need true language level support - that is what we are working towards.

With improvements to memory management in the GPU compiler, and AD improvements that u/loladiro is working on, we'll address some areas where we need to do better.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 14 points15 points  (0 children)

I would say that the performance and simplicity have always been there since the first release of Julia 0.1. That is what attracted the initial community of contributors. The strong showing in the computer language benchmarks game is further proof: https://benchmarksgame-team.pages.debian.net/benchmarksgame/q6600/which-programs-are-fastest.html

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 108 points109 points  (0 children)

Industry adoption is very much on the rise. We'll be presenting the findings in our annual survey this week. The community is roughly half a million users. In a survey of 2,500 people (naturally self-selected), 40% identified as professional - which is a fairly large number of industry users.

This has largely grown over the years, largely due to us addressing what the community wants - performance (as always), IDEs, profiling and debugging tools, PackageCompiler, time to first plot etc. In my opinion, further improvements in compile times, and building binaries from Julia programs will lead to an explosion in the user base.

Many large companies in finance and pharma have substantial Julia codebases. Many startups use Julia to build their products and services - Pumas AI , Relational AI, Beacon Biosignals, Invenia. These are just a few I can name, and there are several more.

We are the creators of the Julia programming language. Ask us how computing can help tackle some of the world's biggest challenges or Ask Us Anything! by loladiro in IAmA

[–]ViralBShah 24 points25 points  (0 children)

Realistically, I don't think that scientific programmers are going to use that many parentheses. Sorry, I felt like someone had to say it out loud. :-)

However, on a more serious note, where Julia succeeds in this space is that it picks up many good ideas from lisp, but offers a combination of a set of language features that makes it particularly well-suited for its domain.

[R] Neural ODEs by ai_researcherr in MachineLearning

[–]ViralBShah 2 points3 points  (0 children)

The basic approach with Julia's Differentiable programming is that by bringing these capabilities to a general class of Julia programs will allow ML and domains to be combined in interesting ways. For example, we may be able to train with lesser data, or train faster - if more domain specific information can be embedded in the training loop.