Ask HN: What language will you pick if you are to reinvent the data ecosystem?

8 points by gr33ndata ↗ HN
The lingua franca for Big Data is Java, and that of ML/AI is Python. Imagine you travel back in time with access to languages and tooling of today, what would you choose instead?

24 comments

[ 0.23 ms ] story [ 66.7 ms ] thread
I'd still pick Java. You don't even need to use Java as your language: just something that targets the JVM.

If you want compatibility, performance, ubiquity, language choice, and ecosystem, there isn't really a better option than the JVM right now.

Kotlin?
Maybe. I think you need something with the syntactic flexibility to work well with different types of data. I would have to look closer at Clojure and Scala.
It's almost exactly the same as Java, but much more compact. Java fans say Java has evolved to match Kotlin and they're probably right. But it's just faster to type ? instead of @Nullable.
> Java fans say Java has evolved to match Kotlin and they're probably right.

It definitely adopted a lot of the good things in Kotlin, but Kotlin doesn't have the problem of needing to maintain backward compatibility. Kotlin doesn't even natively have null, which (in my opinion) is the best thing about the language.

Ruby or Typescript. Nothing can really beat these 2 in terms of devX and comfort.
I would say there isn't a completely ideal language yet.

Perhaps if Julia and Typescript had a baby:

gradual typing

structural subtyping

multiple dispatch

interfaces with declaration merging

If Julia and typescript had a baby, that baby would ideally be a lot like Julia and nothing like typescript.
Why?

I'll give you my two cents since I've tinkered with both languages extensively (tho I mostly write Python or C++ professionally, and Scala in the past).

I'd say TypeScript has a lot of things that are missing from Julia that are very useful for "data" oriented usages. And vice versa, Julia has a lot of numerical and metaprogramming stuff that is missing or nacient from the JS ecosystem.

I would say that TypeScript makes it a cake to create robust data processing pipelines around the most use data format in the world (which is JSON). I find structural subtyping surprisingly good for anything 'dataset' oriented, especially building up streaming datasets from various APIs and storage mechanisms (e.g, the usual "data engineering") in very robust ways. Julia also lacks interfaces or traits which are important for larger codebases.

Also, the tooling and developer experience is much better in TypeScript. Julia sometimes is like going back in time in that regard.

I have high hopes for Julia but I suspect that anyone who doesn't say that it could use some of TypeScript's features probably has not used TypeScript or JavaScript recently. There is a reason why TypeScript has influenced pretty much every other dynamic language in the last 5 years.

These are all important things when you have a large codebase, or need something robust in production. These are things that Julia has not yet been able to break into. Almost every feature in TypeScript was created to solve problems with JavaScript historically in this regard.

I notice you didn't mention any specifics, other than typescript can manipulate jsons - so can every other language in the world (and jsons are _horrible_ for data anyway)
JSON like it or not, is the world's most dominant data exchange format, so much so that processing JSON is a not so insignificant part of all data center CPU cycles.

Julia has one good library for this (JSON3.jl), but it really should be embedded in the language.

Furthermore, Julia has very nice support for multi-dimensional arrays, but it's built in support for dictionaries/hash maps isn't very good, and they might be more prevalent in many types of data processing (certainly in many "big data" types of workloads). There is another third party library for this (Dictionaries.jl) but once again, in practice, JavaScript and TypeScript not only much faster and more optimized for this, but also have better tooling available out of the box.

Again, not a knock on Julia at all, it's great for certain things, but it's important to understand where the ecosystem has gaps are and where things can be learned from other ecosystems.

(comment deleted)
Definitely Julia. It's as easy as python, but if you put a bit of effort into it it can be as performant as C.

Plus, it might well be the most reusable language in existence today (meaning, where the properties of the language conspire to make the code you write reusable)

I would make another programming language, some kind of rust typescript ruby mix.
I'd meet up with Alan Turing in 1950, and give him a modern desktop with Linux and all the languages loaded, and Wikipedia.

I'd do everything I could to help him avoid his fate, and all the politics of the 1950s, etc.

Then I'd give John McCarthy his machine, and as him to finish the system that Lisp was the intermediate language for.

Then on to visit Feynman. I'd of course give him a computer as well, and ask for his help building a time machine to get me home. I'm sure he'd get a second Nobel out of that effort.