{"id":626,"date":"2010-06-17T08:03:40","date_gmt":"2010-06-17T13:03:40","guid":{"rendered":"http:\/\/vgable.com\/blog\/?p=626"},"modified":"2010-06-17T08:03:42","modified_gmt":"2010-06-17T13:03:42","slug":"the-arrow-points-up","status":"publish","type":"post","link":"https:\/\/vgable.com\/blog\/2010\/06\/17\/the-arrow-points-up\/","title":{"rendered":"The Arrow Points Up"},"content":{"rendered":"<blockquote>\n<p>And so continues one of the biggest constants in software development: <strong>the unerring sense among developers that the level of abstraction they&#8217;re current working at is exactly the right one<\/strong> for the task at hand.  Anything lower-level is seen as barbaric, and anything higher-level is a bloated, slow waste of resources.  This remains true <strong>even as the overall level of abstraction across the industry marches ever higher<\/strong>.<\/p>\n<p>First the C guys can&#8217;t imagine writing in assembly anymore, but C++&#8217;s <a href=\"http:\/\/en.wikipedia.org\/wiki\/Virtual_method_table\">vtable<\/a> dispatch is still just too slow to consider.  Then the C++ guys look back with chagrin at the bad-old-days of rolling their own half-assed object systems in C, but Java is dismissed as a ridiculous pig.  Still later, the Java guys sneer at pointers and manual memory management, but JavaScript is ridiculed as a <a href=\"http:\/\/nodejs.org\/\">toy &#8220;scripting&#8221; language<\/a> for validating web forms.  And on and on.<\/p>\n<p>And in the short term, in the moment, they&#8217;re often right.  But this arrow points <a href=\"http:\/\/rentzsch.tumblr.com\/post\/641320178\/a-simple-thought-experiment\">only one way<\/a>, and that&#8217;s in the direction of ever-higher abstraction.  To judge how much time remains before the next leap forwards, look at the leading edge of the industry.<\/p>\n<\/blockquote>\n<p>&#8212;<a href=\"http:\/\/arstechnica.com\/apple\/news\/2010\/06\/copland-2010-revisited.ars\/2#intransigence\">John Siracusa<\/a> (emphasis mine)<\/p>\n<p>Here&#8217;s my two cents on the future of abstraction: systems are clearly getting wider (paralell), not faster; technologies like <a href=\"http:\/\/developer.apple.com\/mac\/library\/documentation\/Performance\/Reference\/GCD_libdispatch_Ref\/Reference\/reference.html\">Grand Central Dispatch<\/a> help us deal with  concurrency today, but longer term, I think a functional programming abstraction is the answer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>And so continues one of the biggest constants in software development: the unerring sense among developers that the level of abstraction they&#8217;re current working at is exactly the right one for the task at hand. Anything lower-level is seen as barbaric, and anything higher-level is a bloated, slow waste of resources. This remains true even [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,24],"tags":[594,447,326,259,595,169,365],"class_list":["post-626","post","type-post","status-publish","format-standard","hentry","category-programming","category-quotes","tag-abstraction","tag-culture","tag-functional-programming","tag-multi-core","tag-side-effects","tag-software-development","tag-virtual-machine"],"_links":{"self":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/comments?post=626"}],"version-history":[{"count":1,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/626\/revisions"}],"predecessor-version":[{"id":627,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/posts\/626\/revisions\/627"}],"wp:attachment":[{"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/media?parent=626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/categories?post=626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vgable.com\/blog\/wp-json\/wp\/v2\/tags?post=626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}