Live data from Hacker News

Julia Computing Raises $4.6M in Seed Funding

juliacomputing.com

101–110 of 134 posts

Re: Julia Computing Raises $4.6M in Seed Funding

#101
post #90
post #88

Earlier quoted context omitted.

> JuliaBox is the number one choice for universities teaching Julia since students can get started with Julia in seconds with no installation required. I don't understand. Julia is not stable at all yet. Who would want to teach it now? What would be the point?

I recently used Julia in my numerical analysis course and it worked well for the most part. We couldn't use it for some of the larger projects because it wasn't as optimized as MATLAB for certain matrix operations. However, it was great most of the time and better than using MATLAB on the university computers.

Implementing a missing matrix operator might make a great class project for a numerical methods course. ;)

Re: Julia Computing Raises $4.6M in Seed Funding

#102

Earlier quoted context omitted.

What this means is that for your purposes R is fast enough. But in the absolute sense (or in any case, relative to other programming platforms), R is one of the slowest ever. R is usually slower than Python, and Python in some cases can be 100x slower than C. Performance, assuming identical hardware, depends on the program itself (that is, on what you are trying to calculate or compute or perform), but if you choose…

> Python in some cases can be 100x slower than C Yeah, the Python implemented version is. But people doing serious computing in Python that requires speed are doing it with NumPy or even Cython or just straight up calling C/Fortran libraries in Python.

It's the same in R - you can have good performance of you use vectorized routines, because those routines are written in C/C++/Fortran.

Re: Julia Computing Raises $4.6M in Seed Funding

#103

I wish them all the best. Julia seems to a good idea -- a high performance language with easy syntax (easy for Python users to jump to Julia), very good features for threading/multiprogramming, good type system... ...here it seem like any other modern language, until you see that Julia has something that many other languages lack: true macros (true metaprogramming.) A big feature. And multiple dispatch on all functio…

> (If you need more power and flexibility than Julia with good processing speed, i think only Common Lisp will clearly provide it.) Common Lisp is terrible for numerical computing, and the type system is really quite weak IMO.

Maybe it is terrible for you...

But good enough for doing numerical computing for the NASA and for Raytheon.

The NASA used it for complete command of the Deep Space 1 spacecraft. "The Remote Agent" wasn't just entirely written in Common Lisp, it also won the NASA's Software of the Year Award...

https://ti.arc.nasa.gov/tech/asr/planning-and-scheduling/rem...

    "It's one small step in the history of space flight. 
    But it was one giant leap for computer-kind, with a state of 
    the art artificial intelligence system being given primary 
    command of a spacecraft. Known as Remote Agent, 
    the software operated NASA's Deep Space 1 spacecraft 
    and its futuristic ion engine "
... and i don't think they did it without heavy numerical computation.

Want another application? Analyzing HDTV video images of the Discovery launch in real-time. Again, NASA.

Another one? Mind you, i'm only citing examples where numerical computation is heavily involved...

How about simulation of missile defense systems at Raytheon?

http://www.lispworks.com/success-stories/raytheon-siglab.htm...

    "SigLab simulates an incoming warhead intercepted 
    by the Exo-atmospheric Kill Vehicle (...) 
    The system is capable of solving any computable system 
    of difference equations. "
Another one?

    "the new version of the complete Piano aircraft analysis tool, 
    used by several major aircraft and engine manufacturers worldwide."
http://piano.aero/

As for the "type system being weak", the comment puzzles me, considering that Common Lisp has one of the best (if not the best) OOP system, CLOS. There is an automatic correspondence between objects and types in CLOS so I can argue it has one of the best type systems out there.

Re: Julia Computing Raises $4.6M in Seed Funding

#104

Earlier quoted context omitted.

An alternative would be getting your bosses approve for you to use Common Lisp. It is mature (30+ years in use, rock solid ANSI standard), many compilers available for many plataforms, highly portable code, multiple dispatch (CLOS is arguably the most powerful object oriented system available), you can also very easily call C libraries with CFFI and there is portable support for threading... ...and well written CL co…

Yes Common Lisp is freaking amazing, but it isn't as good of an out of the box experience as a lot of these products. How do you do plotting besides pushing to GNUPlot? The REPL is great, but can you specify types? Yes it can reach near C/Fortran speeds, but how much time will I spend optimizing it? Are the built-in linear algebra, optimization...etc libraries good, or must I toil with FFI? How much time is really sa…

I was assuming that the use case cited above by drej was doing a complex, big system requiring numerical computation/analysis. It was mentioned that Julia was rejected on grounds of being immature technology, so I assume we're talking about a big project, perhaps destined to run as a server or as a clustered system.

The use case you imply is different, it is more like a scientist working alone at a workstation for interactive calculations, in which case perhaps Python with Numpy and Scipy is just perfect.

In any case, for the previous use case (complex, big system), i'd use CL for the calculations themselves, for the visualizations I could do interactive web graphics using the extremely nice Bokeh library for Python. I'd use Bokeh under Python (using Flask as a web framework) for the presentation layer, and the Lisp system for the actual calculations.

BTW, CL does have many libraries for plotting: http://cliki.net/plotting

> Are the built-in linear algebra, optimization...etc libraries good, or must I toil with FFI?

You can use the GNU Scientific Library also within Lisp, to do everything you mention and more:

https://www.gnu.org/software/gsl/

https://common-lisp.net/project/gsll/

> Yes it can reach near C/Fortran speeds, but how much time will I spend optimizing it?

I guess you are aware that for maximizing speed in C you need to be very careful on how you write your code. In this sense there is no easy way out in any language. The good part is that Lisp, unlike C, is garbage collected, so working on a piece of code can be easier since there is no need to deal with pointers, allocation, and deallocation. It also supports arbitrary number precision and fractions and complex numbers out of the box, no need to do anything in particular to optimize their performance nor rely on external libs to operate on them. It is particularly good (speedwise) with big integers and arbitrary precision numbers.

As for Common Lisp itself, besides that observation -which applies to all languages-, you need to add type declarations. This improves the performance a lot. You are going to add type declarations on a statically typed language (C, C++, Julia, Java, etc) anyways, so i fail to see how this could take more time than in other languages.

Re: Julia Computing Raises $4.6M in Seed Funding

#105

Earlier quoted context omitted.

What are the existing tools that it doesn't match up to?

Python’s scientific ecosystem (i.e. Keras, matplotlib, NumPy, pandas, scikit-image, scikit-learn, SciPy, and TensorFlow, et al.)

* matplotlib is wrapped by PyPlot.jl.

* TensorFlow is wrapped by TensorFlow.jl, improves on Python API (https://github.com/malmaud/TensorFlow.jl/blob/master/docs/sr...)

* Pandas is wrapped by Pandas.jl, interfaces with Julia's DataFrame, generally excellent.

* Images.jl is a 60%-to-70% replacement for scikit-image.

* NumPy and SciPy are mostly covered by StatsBase and Base, can't think of anything off-hand that's missing.

Julia's still immature in the machine learning domain, but a lot of new work is being done. One interesting somewhat-new package is Madeleine Udell's LowRankModels.jl, which has a particularly Julian approach to low rank fitting.

Re: Julia Computing Raises $4.6M in Seed Funding

#106

Earlier quoted context omitted.

Exactly, that's why I think Julia is a good idea. For scientific users used to R or Python, the performance should knock their socks off. (But users doing their work in C, C++ or Fortran will probably see little or no improvement).

Do we really need Julia given that Python has Numpy which does a lot of the heavy lifting in numerical computation and is pretty fast?

On top of what others have mentioned, there is something to be said about getting numerical linear algebra tools as native citizens of a language.

There are many things I hate about MATLAB, having matrices built into the syntax is nice.

Re: Julia Computing Raises $4.6M in Seed Funding

#107

Earlier quoted context omitted.

> (If you need more power and flexibility than Julia with good processing speed, i think only Common Lisp will clearly provide it.) Common Lisp is terrible for numerical computing, and the type system is really quite weak IMO.

Maybe it is terrible for you... But good enough for doing numerical computing for the NASA and for Raytheon. The NASA used it for complete command of the Deep Space 1 spacecraft. "The Remote Agent" wasn't just entirely written in Common Lisp, it also won the NASA's Software of the Year Award... https://ti.arc.nasa.gov/tech/asr/planning-and-scheduling/rem... "It's one small step in the history of space flight. But it…

I don't dispute the effectiveness of Common Lisp, but

> There is an automatic correspondence between objects and types

is almost never what is meant by a "strong type system" -- it more commonly means that types are checked at compile time, rather than run time. I don't doubt that any given lisp hacker could slap together a type inference system on top of CLOS, but as far as I can tell it's not built in.

So, on the strong-to-weak type system spectrum, I would say:

* Idris (lawful good, first-class dependent types)

* Haskell (very strong, some support for dependent types)

* Java (strong, some generics)

* Julia (hybrid, code is analyzed for type inference during JIT, invariant types)

* Common Lisp (weak by default, afaict)

* Python (very weak)

* Javascript (weakest)

* PHP5, Perl (chaotic evil)

Re: Julia Computing Raises $4.6M in Seed Funding

#108
post #63

I'm not sure I buy the notion of, "Solves the two language problem." There is always going to be some library or environment consideration that makes a unified language for everything impractical (unless your entire business runs on an AS400).

The two language problem is more specific to scientific computing where literally every popular library is written in more then one language - fast C/C++/Fortran and convenient high-level R/Matlab/Python. NumPy, SciPy, Caffe, Theano, Tensorflow to name a few. I once had to rewrite Matlab + C code (for face tracking) to pure Julia - not only the resulting code was almost twice smaller, it also ran ~20% faster.

I wrote a library in c to replace a Julia one I wrote (and make it more portable) and found that the c version was slower! (Couldn't inline functions as easily in c and was also being more parsimonious about memory usage in c)

Re: Julia Computing Raises $4.6M in Seed Funding

#109

Earlier quoted context omitted.

Maybe it is terrible for you... But good enough for doing numerical computing for the NASA and for Raytheon. The NASA used it for complete command of the Deep Space 1 spacecraft. "The Remote Agent" wasn't just entirely written in Common Lisp, it also won the NASA's Software of the Year Award... https://ti.arc.nasa.gov/tech/asr/planning-and-scheduling/rem... "It's one small step in the history of space flight. But it…

I don't dispute the effectiveness of Common Lisp, but > There is an automatic correspondence between objects and types is almost never what is meant by a "strong type system" -- it more commonly means that types are checked at compile time, rather than run time. I don't doubt that any given lisp hacker could slap together a type inference system on top of CLOS, but as far as I can tell it's not built in. So, on the s…

Common Lisp is strongly typed (type mismatches result in a sensible error), but is by default dynamically typed, unless you annotate.

The type system is not capable of useful, extensible polymorphic types, though.

Re: Julia Computing Raises $4.6M in Seed Funding

#110
post #60

Any suggestions for learning Julia (detailed projects to follow) for fluent pythonistas?

The basic syntax itself will look very familiar to someone coming from python. The immediate obvious differences: - 1-based indexing instead of 0-based - end keyword vs significant whitespace blocks (and no colon to start a block) - function instead of def (or defined inline f(x) = ...) - x -> ... instead of lambda x : ... - start:stop/start:step:stop instead range(start,stop)/range(start,stop,step) - strings are joi…

FWIW, I think now technically indexing can either be 1- or 0-based.
Post reply on HN