General purpose always wins. Or should always win. Because in reality nobody has any idea what "the purpose" is in the grand scheme of things.
Python succeeded because it was general-purpose enough. Javascript too. We don't want more narrow purpose languages that force us to change the language every time we change the fragment of the stack we work on.
We need an ultra-general purpose language with good support for both OOP and FP, non-retarded type-system, decent performance, and a good "compile to readable JS" story... to unify this damn mess of "diversity" that forces us to over-specialize in narrow niches and drowns us in complexity.
(No, otoh, I don't think "general purpose" should mean "infinite power" or "maximum expressivity". There's are reason why we're not all using Common Lisp and Scala...)
Edit: Plus, you can pass your data structures out to Python or C for processing. And you can use a whole host of visualization tools.
But it doesn't have to be that way. SQL is a domain specific language. Regex is a domain specific language. They take different API strategies: one goes for ubiquitous and standardized interfaces, the other goes for direct embedding. But they both prove that it's not necessary to write everything in a general purpose language.
There's nothing wrong with designing a language that is particularly good at data analysis, and which emphasises those features at the expense of others.
Swift is a general-purpose language, but I would say that its first purpose is for mobile development. (Or, at least, that's where it started.)
> Why would you use Swift as your new data science language when Julia was made for that purpose and Swift was not?
The author calls out Swift as being good because (1) TensorFlow is now supported for it specifically and (2) it is optimized for mobile development. The author seems to feel that being able to deploy machine learning applications to mobile devices (and optimized) is a great boon, and Python is not well-suited to this.
Anyway, it's not hard to get used to.
Personally, I’m not aware of the ability to write mobile apps in Julia.
If I’m wrong, please post links, as that would certainly open up the conversation.
Machine/Deep Learning are not some novel application, we've been multiplying matrices since forever.
If you are starting with Python definitely start with Python 3 and you are future safe...
In Fortran, you can write linear algebra on n-dimensional arrays (similar as in numpy and julia) very compactly, i.e.
d(i) = TRANSPOSE(MATMUL(B(i,:),c))
Writing something like this in C++ is absolutely possible and elegant with modern templates libraries such as `eigen`. However, the compilation will be slower, the compiler errors will be hard to read and it is hard to beat Fortrans runtime efficiency of such code.But it get's more interesting. Think of tensor contractions. This is something where you probably want to implement your own algebra (say for relativistic quantum mechanics or for general relativity) -- or you just stick to the n-dimensional array again and use index-wise loops:
DO i=1,4
DO j=1,4
DO k=1,4
DO l=1,4
A(i,j) = B(k,l)*C(i,k)*D(l,j) ! note: compe up with better examples
END DO
END DO
END DO
END DO
I maintain a templated C++ library to write such expressions in one line instead of 4 loops. But contrary to this Fortran code, in order to understand my code, you first have to learn this library. Means you need to learn C++, then the library. In Fortran, it is just Fortran. Nothing more.Believe it or not: Many scientists are no good programmers. Cut-down domain specific languages are perfect to avoid them to loose time on weird compiler features such as "const", templates and all that overhead which is hard to regain in time.
Do you ? I've used Eigen and boost a lot of times and didn't ever need to "learn how the sausage is made", just looking at examples is enough to get stuff to work.
In contrast, domain specific languages have exclusive support for certain data types built right into the heart. There is a need for that.
Why on earth should data scientists ditch the IPython/Jupyter/SciPy/etc. ecosystem?
Obviously he may be wrong, but it’s certainly reasonable prediction.
"7. Performance closer to C" is a non-issue - all the parts where performance matters are going to run on CUDA anyway and there's no performance hit there, and very little computing time is spent in the actual python code.
Honestly, as someone who wrote matlab professionally for a couple years, the price is a joke, and the performance is jokier. The only reason that matlab still exists is that they use the same marketing tactics as drug dealers- it's free to universities, and super easy to use.
Javascript should just upgraded its syntax to be more swift syntax in the near future, that would be a game changer.
"I worked for Apple from July 2005 to January 2017, holding a number of different positions over the years" "This included managing the Developer Tools department, which was responsible for Swift Playgrounds for the iPad, Xcode, and Instruments, as well as compilers, debuggers, and related tools. In early 2017, I briefly ran the Tesla Autopilot team. We built a lot of great things, but Tesla wasn't the right fit for me."
Joined "Google Brain" in August 2017.
https://techcrunch.com/2017/08/14/swift-creator-chris-lattne...
If it is so good at that, why are we waiting so long for expeditiousness on run-of-the-mill industry-standard non-specialized non-Apple linux machines?
What’s required for data science is a healthy ecosystem of scientific computing tools. While js obviously isn’t as mature as python (anaconda stack + Jupiter, etc) or R (tidyverse etc) in this aspect, it has made great strides recently: - tensorflow.js - observable notebooks - mathjs - simple-statistics / jstat
Furthermore, with tools like d3 + leaflet, js has very little competition when it comes to data visualiation.
A big thing holding js back is a mature library for data manipulation, hopefully this changes in the future (anybody know of any potential fills for this gap?).
I'm a big fan of Python, so I'm just curious what you mean here. Swift has a lot of great language features that Python lacks, in my opinion. (My first favorite: native option types. Second favorite: internal and external function parameter names. There are more, but these are my top two.)