# Julia scientific programming language



## sidetone (Feb 20, 2016)

Julia is a scientific programming language modeled after a few other languages that draws their advantages together for simplicity. It uses LLVM, and it has an MIT license.

http://julialang.org/
http://www.wired.com/2014/02/julia/
http://www.infoworld.com/article/26...anguage-seeks-to-be-the-c-for-scientists.html
http://news.mit.edu/2014/high-performance-computing-programming-ease


----------



## sidetone (Mar 6, 2016)

I think Julia can be the basis for math and science user end software. It seems the programming language would work as is, lacking the graphing environment.

Oko or anyone else who cares to answer:
In your opinion, how does/would Julia fit into a mathematics environment comparable to Mathlab, Mathematica, etc?


----------



## Oko (Mar 7, 2016)

sidetone said:


> Oko or anyone else who cares to answer:
> In your opinion, how does/would Julia fit into a mathematics environment comparable to Mathlab, Mathematica, etc?


You are mixing lots of things so lets look at the basics first.

Maxima (open source maintained by University of Texas), Mathematica, Maple, and Mupad are all examples of general computer algebra systems. They are in some sense all  descendants of Macsyma the first computer algebra system started as a PhD project 1969 at MIT. The main characteristic of computer algebra systems is that they can perform symbolic computations. A basic problem for a computer science student would be to write an algorithm/program for symbolic differentiation. Now not all problems are trivial like symbolic differentiation and there is a whole field of people who do research in symbolic computations algorithms. Many of those algorithms are so sophisticated that only partial implementations exist.

If you have to use a general computer algebra system I would go with Mathematica unless you are one of those people who cares about the symbolic algorithms rather than for mathematics or physics that you are trying to do using computer algebra.

Python language has a module for symbolic manipulation. I would recommend the module for researchers or hobbyists interested in symbolic computations for the sake of symbolic computation.

You than also have a class of very specialized computer algebra programs which are specific for a certain field. An example would be GAP (specialized software for computational group theory). That is a very long story.


Anyhow long story short Julia doesn't belong to that group. Julia belongs to the group of languages which are specialized in numerical computation.

Most of those languages are relaying on open source libraries like ATLAS, BLAS, LAPACK (written in Fortran for most part) to do the actual work. MATLAB started as a domain specific language (linear algebra) with intention to lower the bar for people to do numerical analysis (no knowledge of Fortran and C required). Clave Moller who originally developed MATLAB was a professor of numerical analysis at the University of New Mexico and it is a still full professor at the University of Michigan. GNU Octave, FreeMat, SciLab are all clones of MATLAB which are more or less compatible. FreeMat is probably the most compatible but with the big caveat. It only reproduces core MATLAB not the toolboxes. Those toolboxes which can cost tens of thousands of dollars are real gems of the MATLAB (I have research license for all boxes, over fifty of them).

Then you have Python which is a general programming language and let say R which is more of the domain specific language. Python has nice modules numpy, scipy, matplotlib (pandas and sci-kit learn if you into data mining and machine learning) but it is not as fast and optimized as MATLAB. Also the language is less elegant than MATLAB language. Arguably Python is general purpose programming language which beats the crap out of MATLAB but people who use MATLAB typically care for their science not for a general purpose language.

So where is the Julia? Julia fits a niche space between MATLAB and Python. The language is very fast, very optimized and developed by people who were primarily MATLAB users. It is the open source (which is HUGE advantage over MATLAB) and designed ground up for numerical computations (unlike Python). So would I recommend Julia? If you are like my daughters in the middle school by all means. If you are contemporary researcher I am afraid that my answer would be not yet. Namely Julia is not mature enough for a wide scientific adoption right now. Probably some people could be happy with it but many would quickly find the lack of libraries as a major limitation to their scientific work.

One of my co-workers in spite of my "advise" took the plunge and spent about two months on Julia just to go back to Python (we are large machine learning/data mining lab). This is an excellent post
little outdated (Julia is very rapidly  developing)

https://sciencehouse.wordpress.com/2014/06/29/julia-vs-python/

Bard, the guy who made the recommendation is the regents professor across the street of me (he is at Pitt). Carson is also at Pitt and many people who posted follow up are my former colleagues most notably Rob Clewley and me go long time back when we were at the Georgia State. Those are all ultra smart guys and they know what they are doing. Please read things carefully.


----------



## jrm@ (Mar 7, 2016)

The micro-benchmarks on http://julialang.org/ (about 1/3 of the way down the page) are enlightening.  Yes, benchmarks need to be very carefully interpreted.


----------



## sidetone (Mar 7, 2016)

Ah, gadfly was what I was looking for, to serve on top of a programming language. There is a gadfly port, but I don't think it is the same one that Julia references. The one in ports is an SQL database written in python. Gadfly referenced from Julia's homepage is for plotting graphs, and written in Julia.


----------



## sidetone (Oct 5, 2021)

Here's a recent article on Julia programming language, https://dev.to/github/looking-for-an-open-source-project-try-julia-1jci.

It describes how this programming language is useful to scientists. It mentions an application written in it called Pumas, which was used for Covid vaccine development and for pharmaceutical development.


Julia has been removed from ports in the past, because it had a dependency on a depreciated Python version. I'll take a look at the old Makefile of it, to see if removing Python dependencies will allow it to build. I've thought about looking into what I could do regarding porting or developing the Makefile for a while, and have been learning from the Porter's handbook, and setting up a jail environment with ease.


----------

