For a great example look at all the papers Andrew McCallum's group has been able to publish by building on top of FACTORIE: they get to focus their time on the problem at hand rather than all the math required to solve it. Basically they can write code that generates a model dynamically but the framework handles all the inference. Compare that to how these things are built without such a framework: you spend most of your time painstakingly hand-deriving update rules and then implementing them as code.
IMHO, the exciting thing is that ML is getting closer and closer to being an everyday tool for engineers rather than something that requires you to be a full-time math person to use effectively.
I so wish! As a Sr Data Scientist, I interview potential candidates quite often, many of these are 10x engineers.
Me: (2,3,4) is a vector.
Eng: Ok.
Me: Gimme a unit vector in the same direction.
Eng 1: ???
Eng 2: "It can be done. I don't know how, but with Spark it can be done".
Eng 3: I will need R. ( given R, he fiddles with it for 5 minutes getting nowhere fast )
There are actual humans out there with self-professed ML expertise who cannot compute the eigens of a tiny 2 by 2 diagonal matrix. I kid you not. These people make 150k salaries, have "heard of an eigen vector", but cannot find one to save their lives.What little I remember about vectors is from my high school maths classes, and in my 20 years of doing software engineering it's come up exactly once (for a GIS related project).
I wouldn't expect anyone working with machine learning to not know these concepts either.
But come on, everyone knows how to use the definition of the standard (l2) vector norm to normalize a vector! Don't joke!
I don't think libraries count in terms of code. We all use code to program. Standing on the shoulder that preceded us. Using a library and a function should just count for the most part.
It's like the difference between a complete kitchen that fits in your pocket and an iPhone app that lets you order a burrito. The article suggests something like the former. A library which encapsulates 1000 lines of code into a single function call is like the latter.
Python also has some mandatory libraries if you want to do any specific. Numpy and pandas for statistical analysis make them required.
My code is concise and clean but it is because of these libraries.
I am also certain that there are exceptions.
On the other hand, there are things like Prolog. You can think of Prolog as a backtracking constraint-solving library, and then another library that parses a DSL for expressing facts and procedural constraints and feeds it to the first library. But Prolog's language isn't really a DSL, because it isn't particular to any domain: there's no closed solution-space where Prolog applies. The efficiency gains you get from Prolog's elision of proceduralized contraint-solution code can apply to any program you write. And so its value is unbounded; its ROI is certainly positive, whatever the cost was to implement it.
That's the comparison that's useful here, I think. Is this something that only solves problems in one domain? Or is this something that could be applied to (at least some little bits of) any problem you encounter?
.MODEL TINY
.CODE
CODE SEGMENT BYTE PUBLIC 'CODE'
ASSUME CS:CODE,DS:CODE
ORG 0100H
DB 'HELLO WORLD$', 0
INC DH
MOV AH,9
INT 21H
RET