3 ms·
Whether something can 'scale' or not in this case is a question of whether a piece of software can go from 'tech demo ' to 'industry ready'. When it comes to so
by westoncb 12y ago
Whether something can 'scale' or not in this case is a question of whether a piece of software can go from 'tech demo ' to 'industry ready'. When it comes to so called 'real-life' practicalities, there are presently a couple salient factors that limit our ability to practically introduce simplifying abstractions, which come down to 'having to speak in terms of the underlying machinery,' or that there is some sort of irreducible, intrinsic complexity in the problem; the first case is still very common, the second would be a pretty rare anomaly afaik. In that case I'll just address the first issue: the necessity to acknowledge the underlying computational processes goes away as our machinery becomes powerful enough to support more levels of fundamental (e.g. our starting point for building things) abstractions that further and further disguise how computations are performed so we can focus increasingly on expressing ourselves in the simplest manner possible.
I can think of two limitations with the above, however. The first is that in some cases, we're prevented from laying down higher level abstractions not just because it would be computationally inefficient, but because we haven't yet discovered a great abstraction that everyone wants to adopt. For example, dealing with user interaction or network events. I'm tempted to say concurrency presents a similar issue, but really concurrency is just a performance concern too—an aspect of the underlying computational process, not intrinsic in problems we want solved. The other issue (pointed out in the article) is that these simpler approaches tend to require more mathematical sophistication of potential developers. My feeling is that that's mostly an incidental state of affairs: I don't think there's anything intrinsically more difficult about the more mathematical (i.e. simple, abstract, and drawing from a store of concepts from mathematics and language theory) approaches to coding, it's just that the routes to acquiring the required knowledge have a scary status in our society (at the moment).
Doing a project with fairly intense performance requirements and dipping into expressing everything in terms of specially formatted data buffers to be shipped off to the GPU has given me a new perspective on present, practical limitations of abstraction in coding...