Live data from Hacker News

Julia Computing Raises $4.6M in Seed Funding

juliacomputing.com

111–120 of 134 posts

Re: Julia Computing Raises $4.6M in Seed Funding

#111

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…

Types checked at compile time is called "static".

Strong has various meanings. Ada is "strong" versus C being "weak" though the basic Algol-like model is not so different, and if we don't count tagged types, neither language is dynamically typed in any way. (So if "strong" means "static", we would not be able to use the strong/weak terminology to contrast these languages!)

"Strong" in this context mean various things, ranging from C having holes in the type system that allow punning and bad memory references, to C having automatic conversions that are unsafe: for instance assigning a floating-point value to an integer location without an explicit conversion operator which handles situations when the conversion is impossible. Or not having a character type distinguished from an integer type.

C++ has more "strongly typed" enums than C; and what that means is that you can't assign an integer value to an enum object without a cast.

ANSI Lisp is fairly strong, but allows some relaxations: car on an empty list, integers usable where floating-point values expected (a bit like C) and such.

Re: Julia Computing Raises $4.6M in Seed Funding

#112

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…

> Maybe it is terrible for you...

It is. I know of the examples you mention (and some of them like planning may not really involve much numerical work) but the fact is that unless you're doing things by scratch (like starting from GEMM), numerical libraries are often badly documented, slow or otherwise incomplete (or a mixture thereof). You can disagree with me, but Tamas Papp who maintained a bunch CL libraries seems to have moved over to Julia entirely.

> As for the "type system being weak",

I meant weak in the sense that it's not very expressive, so as to allow better static type inference. I'm not saying CL should be static for "correctness" reasons, but for removing the user from having to have declarations all over the place.

Let's reify. If I were to create a bunch of matrix classes (matrix-float, matrix-double, ignoring the lack of sugar), CL provides no way to declare a generic method 'mref' to be intelligent enough to know what the output will be, given the input type. Even getting the type in the compiler-macro is implementation dependent. In C++ this is extremely easy with templates, and in Haskell you do it via a type declaration (AFAIK).

Yes, you can get around it via lots of macro magic, but this is so fundamental that you might as well create a new language (like Qi/Shen).

Re: Julia Computing Raises $4.6M in Seed Funding

#113

Earlier quoted context omitted.

Julia is a great language, but it is still focused on the numerical computing world and is not "1.0" (language and API's are not locked down). I wouldn't really compare it to Go or Rust at this point. Go is focused on building services at its core (e.g. external event driven workflows). Aka microservices. Rust is focused on being a "traditional" systems programming language. Things like web browsers (duh), office sui…

If you take a look at the features (esp. macros and multiple dispatch) you can see that is readily extensible for lots of applications. Thus the reason it is also sold as a "general purpose" language. Additonally, the very good support for threading and multiprocessing means it has a good future with services, async IO, and with event-loop web servers (a la node.js and friends). Finally, the focus on fast speed for n…

This sounds like a small thing, but with 1-based arrays, I'd bet more on it taking share from MatLab/R than from Rust or Java.

Re: Julia Computing Raises $4.6M in Seed Funding

#116

I wonder if this would be a feasible funding strategy for Crystal ( https://crystal-lang.org/ ) as well. From the scattered benchmarks I could find online†, Crystal seems to be just as fast, if not a bit faster. † https://github.com/kostya/benchmarks , http://blog.seraum.com/crystal-lang-vs-nodejs-vs-golang-vs-j...

Well, they're both implemented in LLVM, but Julia uses a JIT and not straight to a native binary. I bet they have very similar performance. The use cases are different though. Julia is a replacement for MATLAB, R, Fortran, & scientific Python with speed and good macro support. Crystal is basically fast/native Ruby, so websites and business apps. You could technically use either for those applications, but the communi…

Last time I looked Crystal's string handling was significantly slower than Ruby's.

Re: Julia Computing Raises $4.6M in Seed Funding

#117
post #116

Earlier quoted context omitted.

Well, they're both implemented in LLVM, but Julia uses a JIT and not straight to a native binary. I bet they have very similar performance. The use cases are different though. Julia is a replacement for MATLAB, R, Fortran, & scientific Python with speed and good macro support. Crystal is basically fast/native Ruby, so websites and business apps. You could technically use either for those applications, but the communi…

Last time I looked Crystal's string handling was significantly slower than Ruby's.

In a pre 1.0 language there will always be some things that are still waiting to be optimized. I saw some performance spec for one of their HTTP libraries awhile back and it was a lot faster than Ruby. It might have been faster than Go.

Re: Julia Computing Raises $4.6M in Seed Funding

#118

Earlier quoted context omitted.

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 in…

Alright, so slightly different assumptions. You're talking about using CL for just one part of the process which is reasonable if not a little frustrating if one must switch between multiple different technologies.

Binding to GSL was kind of my point. That requires a lot more setup to use the FFI and bind what you need to CL. In Julia I imagine one either does A*b or loads a batteries included library first and then does that. My point being there is a fair amount of overhead to CL to get to that magical development spot :).

I think I've seen that plotting library in the clicki link, but it has a long way to go if you're used to Matplotlib, JS, or what is included in .NET.

The type declarations is another thing that the user would have to research and deal with. In Julia it is just part of what you do, so a bit more natural unless you can declare the types in standard CL without loading a library or something else odd. Can you just (define int(a) 3) and let the compiler guide you? I honestly don't know, but don't recall seeing that in the lisp tutorials and books I've read. My s-exps are probably wrong too lol.

Re: Julia Computing Raises $4.6M in Seed Funding

#119

Earlier quoted context omitted.

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 in…

Alright, so slightly different assumptions. You're talking about using CL for just one part of the process which is reasonable if not a little frustrating if one must switch between multiple different technologies. Binding to GSL was kind of my point. That requires a lot more setup to use the FFI and bind what you need to CL. In Julia I imagine one either does A*b or loads a batteries included library first and then…

Hi

The GSL library is already usable in CL, no need to add bindings, i included the link.

> you can declare the types in standard CL without loading a library or something else odd. Can you just (define int(a) 3) and let the compiler guide you?

Yes, and yes. No need to load anything and the declarations are simple as in "(declare (fixnum a b c))". The compiler does the rest. You can also specify ranges, etc.

"declare" is part of the ANSI standard.

> I think I've seen that plotting library in the clicki link, but it has a long way to go if you're used to Matplotlib, JS, or what is included in .NET.

There are many libs, not just one. But you might be correct, in which case i'd just have the visualization done in JS or .NET (etc), and just load the final for the plot through HTTP from the Lisp server (which is the one which did the heavy lifting.)

It is not difficult.

Re: Julia Computing Raises $4.6M in Seed Funding

#120
post #116

Earlier quoted context omitted.

Last time I looked Crystal's string handling was significantly slower than Ruby's.

In a pre 1.0 language there will always be some things that are still waiting to be optimized. I saw some performance spec for one of their HTTP libraries awhile back and it was a lot faster than Ruby. It might have been faster than Go.

It was faster than everything, and by a huge margin: https://github.com/costajob/app-servers#results

It does seem that immature languages tend to win a lot of benchmarks, likely because they're still cutting a lot of corners. Still, though.

I only wish they picked a more "Enterprise-friendly" name...

Post reply on HN