<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for jonbho</title>
	<atom:link href="http://jonbho.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonbho.net</link>
	<description>probably reflecting too much</description>
	<lastBuildDate>Sat, 18 Feb 2012 23:43:13 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Comment on The HOW and the WHAT by jonbho</title>
		<link>http://jonbho.net/2012/02/17/the-how-and-the-what/#comment-277</link>
		<dc:creator>jonbho</dc:creator>
		<pubDate>Sat, 18 Feb 2012 23:43:13 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=58#comment-277</guid>
		<description>I love that &quot;Data Oriented Design&quot; page! Really interesting.

I agree with you that all languages are, in the end, equivalent, that it&#039;s all a trade-off between sets of primitives, and that probably assembly language *IS* a better language for some tasks.

Still, my point is: I feel that a huge amount of the problems we solve nowadays in software are being solved using a very inappropriate set of primitives, which make our software worse and our lives more miserable. We need to advance our understanding to be able to build better tools. To me, software development is in its infancy, and things will get better as we advance. Our tools are terribly inadequate, and I miss a set of primitives that I feel is lurking below the current level of abstraction.

I know the race has no end, and that the axis of HOW-WHAT is actually a continuum, but advancing on that axis has to be the driving force to healthier software development.

BTW at some point I&#039;ll discuss how I think there is no real distinction between CODE and DATA, so you can guess I have no problem accepting that HOW and WHAT are not completely disjoint concepts!</description>
		<content:encoded><![CDATA[<p>I love that &#8220;Data Oriented Design&#8221; page! Really interesting.</p>
<p>I agree with you that all languages are, in the end, equivalent, that it&#8217;s all a trade-off between sets of primitives, and that probably assembly language *IS* a better language for some tasks.</p>
<p>Still, my point is: I feel that a huge amount of the problems we solve nowadays in software are being solved using a very inappropriate set of primitives, which make our software worse and our lives more miserable. We need to advance our understanding to be able to build better tools. To me, software development is in its infancy, and things will get better as we advance. Our tools are terribly inadequate, and I miss a set of primitives that I feel is lurking below the current level of abstraction.</p>
<p>I know the race has no end, and that the axis of HOW-WHAT is actually a continuum, but advancing on that axis has to be the driving force to healthier software development.</p>
<p>BTW at some point I&#8217;ll discuss how I think there is no real distinction between CODE and DATA, so you can guess I have no problem accepting that HOW and WHAT are not completely disjoint concepts!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The HOW and the WHAT by Jare</title>
		<link>http://jonbho.net/2012/02/17/the-how-and-the-what/#comment-273</link>
		<dc:creator>Jare</dc:creator>
		<pubDate>Sat, 18 Feb 2012 01:47:15 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=58#comment-273</guid>
		<description>Good stuff. I&#039;m looking forward to disagree on it... it will be hard but let me try! :)

The WHAT you want to achieve with a program is (in theory) the same in any language, but the HOW is defined in terms of the primitives that language offers. Assembly has addition, KSI does not. C&#039;s operations can be applied to arbitrary variables of a primitive type, Assembly&#039;s only (in many cases) to a limited set of registers. C++ lets you apply operations to custom types rather than only the primitive (numerical) ones. Erlang lets you distribute a bunch of operations among multiple processes / machines.

In your Assembly / C example, the addition of these two numbers is presented as a WHAT, but in reality it&#039;s just one step of a HOW solution to a larger &#039;WHAT&#039; problem. It is very possible that if you were solving that problem in Assembly, the steps to solving it might not have involved creating these two variables.

Higher level languages don&#039;t really change the focus from the HOW to the WHAT. They just change your current set of primitives for another, hopefully more sophisticated super-set, so that your HOW steps are easier to write, easier to understand, easier to modify, easier to run in different platforms, or (in general) measure better in some metric associated with the effort of the programmer. This is why the quality of a programmer&#039;s code is largely independent of the programming language being used.

It is important to understand that, along with the new set of primitives in a higher level language, you often lose some primitives from the lower level language. It was a classic situation back in the days that writing 32-bit fixed point functionality was easier in Assembly than in C; JavaScript may be higher level than C, but good luck performing 64-bit bitwise operations in JavaScript. In general, if performance of the resulting program is part of the problem specification, high-level language constructs may be an impediment rather than an advantage. See for example the move towards Data-Oriented paradigms and away from Object-Oriented techniques in high-performance console games. (see https://plus.google.com/u/0/115950681746193428612/posts for more on this)

tl;dr In general, a higher level language makes it easier for the programmer to specify HOW to solve a problem, but it does not let the programmer focus solely on WHAT the problem is.</description>
		<content:encoded><![CDATA[<p>Good stuff. I&#8217;m looking forward to disagree on it&#8230; it will be hard but let me try! <img src='http://jonbho.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The WHAT you want to achieve with a program is (in theory) the same in any language, but the HOW is defined in terms of the primitives that language offers. Assembly has addition, KSI does not. C&#8217;s operations can be applied to arbitrary variables of a primitive type, Assembly&#8217;s only (in many cases) to a limited set of registers. C++ lets you apply operations to custom types rather than only the primitive (numerical) ones. Erlang lets you distribute a bunch of operations among multiple processes / machines.</p>
<p>In your Assembly / C example, the addition of these two numbers is presented as a WHAT, but in reality it&#8217;s just one step of a HOW solution to a larger &#8216;WHAT&#8217; problem. It is very possible that if you were solving that problem in Assembly, the steps to solving it might not have involved creating these two variables.</p>
<p>Higher level languages don&#8217;t really change the focus from the HOW to the WHAT. They just change your current set of primitives for another, hopefully more sophisticated super-set, so that your HOW steps are easier to write, easier to understand, easier to modify, easier to run in different platforms, or (in general) measure better in some metric associated with the effort of the programmer. This is why the quality of a programmer&#8217;s code is largely independent of the programming language being used.</p>
<p>It is important to understand that, along with the new set of primitives in a higher level language, you often lose some primitives from the lower level language. It was a classic situation back in the days that writing 32-bit fixed point functionality was easier in Assembly than in C; JavaScript may be higher level than C, but good luck performing 64-bit bitwise operations in JavaScript. In general, if performance of the resulting program is part of the problem specification, high-level language constructs may be an impediment rather than an advantage. See for example the move towards Data-Oriented paradigms and away from Object-Oriented techniques in high-performance console games. (see <a href="https://plus.google.com/u/0/115950681746193428612/posts" rel="nofollow">https://plus.google.com/u/0/115950681746193428612/posts</a> for more on this)</p>
<p>tl;dr In general, a higher level language makes it easier for the programmer to specify HOW to solve a problem, but it does not let the programmer focus solely on WHAT the problem is.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I want to fix programming by albx</title>
		<link>http://jonbho.net/2012/01/24/i-want-to-fix-programming/#comment-270</link>
		<dc:creator>albx</dc:creator>
		<pubDate>Fri, 17 Feb 2012 22:30:09 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=18#comment-270</guid>
		<description>&quot;Out of the Tar Pit&quot; (web.mac.com/ben_moseley/frp/paper-v1_01.pdf) addresses precisely the same issue and comes up with a similar proposal: a new paradigm they call &quot;Functional Relational Programming&quot; (not to be confused with functional reactive programming). 

The bandicoot project (that I have discovered thanks to a comment above) seems to be an implementation of this programming paradigm, but with a better syntax than the one presented in the paper.</description>
		<content:encoded><![CDATA[<p>&#8220;Out of the Tar Pit&#8221; (web.mac.com/ben_moseley/frp/paper-v1_01.pdf) addresses precisely the same issue and comes up with a similar proposal: a new paradigm they call &#8220;Functional Relational Programming&#8221; (not to be confused with functional reactive programming). </p>
<p>The bandicoot project (that I have discovered thanks to a comment above) seems to be an implementation of this programming paradigm, but with a better syntax than the one presented in the paper.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why is people&#8217;s code so bad? Even after getting a degree in CompSci? by Michael Langford</title>
		<link>http://jonbho.net/2012/02/15/why-is-peoples-code-so-bad-even-after-getting-a-major-in-compsci/#comment-257</link>
		<dc:creator>Michael Langford</dc:creator>
		<pubDate>Wed, 15 Feb 2012 20:12:09 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=53#comment-257</guid>
		<description>DRY, without a good reason.

I see the Twins Jare mentions, as well as the yak shaving, especially on throwaway programs. People can also easily over-engineer stuff to avoid boilerplating two or three instances of something similar happening in a program.

I&#039;d rather see a repeat of something that&#039;s downright idiomatic than a custom solution to a problem everyone just boilerplates all the time.

Additionally, putting numeric constants at the top is not always as useful as further down in the code next to where they&#039;re used. It can make some errors harder to spot in certain layout situations. Don&#039;t even get me started on putting numeric constants in h files far from the use for no reason other than someone read a software engineering book in the 90s and never read one in the intervening 12+ yeares. That&#039;s just horrible to deal with when it involves layout code or something else where the constant values really do matter.

All that said, copypasta is *painful*, to quote Sean Kelly: Code is read more than it is written</description>
		<content:encoded><![CDATA[<p>DRY, without a good reason.</p>
<p>I see the Twins Jare mentions, as well as the yak shaving, especially on throwaway programs. People can also easily over-engineer stuff to avoid boilerplating two or three instances of something similar happening in a program.</p>
<p>I&#8217;d rather see a repeat of something that&#8217;s downright idiomatic than a custom solution to a problem everyone just boilerplates all the time.</p>
<p>Additionally, putting numeric constants at the top is not always as useful as further down in the code next to where they&#8217;re used. It can make some errors harder to spot in certain layout situations. Don&#8217;t even get me started on putting numeric constants in h files far from the use for no reason other than someone read a software engineering book in the 90s and never read one in the intervening 12+ yeares. That&#8217;s just horrible to deal with when it involves layout code or something else where the constant values really do matter.</p>
<p>All that said, copypasta is *painful*, to quote Sean Kelly: Code is read more than it is written</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why is people&#8217;s code so bad? Even after getting a degree in CompSci? by jonbho</title>
		<link>http://jonbho.net/2012/02/15/why-is-peoples-code-so-bad-even-after-getting-a-major-in-compsci/#comment-256</link>
		<dc:creator>jonbho</dc:creator>
		<pubDate>Wed, 15 Feb 2012 20:01:57 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=53#comment-256</guid>
		<description>Jare, you&#039;re right, but I see the problem of not obeying DRY much more often! It seems there are too many copy&amp;paste-trigger-happy people out there.</description>
		<content:encoded><![CDATA[<p>Jare, you&#8217;re right, but I see the problem of not obeying DRY much more often! It seems there are too many copy&#038;paste-trigger-happy people out there.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Why is people&#8217;s code so bad? Even after getting a degree in CompSci? by Jare</title>
		<link>http://jonbho.net/2012/02/15/why-is-peoples-code-so-bad-even-after-getting-a-major-in-compsci/#comment-255</link>
		<dc:creator>Jare</dc:creator>
		<pubDate>Wed, 15 Feb 2012 18:24:23 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=53#comment-255</guid>
		<description>The opposite of DRY is the Twins problem: they may look identical but they are not the same person and you can&#039;t refactor them into one. It always takes a bit of judgement to decide which of the situations you are in.</description>
		<content:encoded><![CDATA[<p>The opposite of DRY is the Twins problem: they may look identical but they are not the same person and you can&#8217;t refactor them into one. It always takes a bit of judgement to decide which of the situations you are in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I want to fix programming by noone</title>
		<link>http://jonbho.net/2012/01/24/i-want-to-fix-programming/#comment-246</link>
		<dc:creator>noone</dc:creator>
		<pubDate>Mon, 13 Feb 2012 11:11:25 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=18#comment-246</guid>
		<description>Imperative, procedural, object oriented, functional, declarative, stack stack based, etc...

oops, thats six paradigms :)</description>
		<content:encoded><![CDATA[<p>Imperative, procedural, object oriented, functional, declarative, stack stack based, etc&#8230;</p>
<p>oops, thats six paradigms <img src='http://jonbho.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I want to fix programming by Mike Moloch</title>
		<link>http://jonbho.net/2012/01/24/i-want-to-fix-programming/#comment-243</link>
		<dc:creator>Mike Moloch</dc:creator>
		<pubDate>Mon, 13 Feb 2012 02:45:42 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=18#comment-243</guid>
		<description>The issue isn&#039;t that there isn&#039;t a standard way of writing a sort, but the main crisis of &quot;software engineering&quot; / programming is that after all these year we still don&#039;t have a standard, &quot;good enough&quot; sort routine.

The reason I can walk into a hardware store and build myself a deck or renovate my bathroom or build myself a certain object is because of standardization.  The toolsets and the parts have been standardized. 

I don&#039;t have to have the metallurgical knowledge on how to create high carbon steel, nor do I have to have the knowledge and the equipment to create a certain nut and bolt. All that has been taken care of me. All I have to do is use standard nuts and bolts, and standard tools and I can work and create a reasonable object with little &quot;end user&quot; knowledge.

In computing however, we still expect &quot;the programmer&quot; to do the equivalent of digging the iron ore, smelting it properly, Building a lathe, then turning that piece of metal to make themselves a bolt, and the process go on.

Let&#039;s say a programmer was given the equivalent of putting together a simple fence. All you need is wood planks, some nails, and a hammer.

Programmers don&#039;t use hammers, they start with the ridiculous equivalent of digging up iron ore, growing trees to build the handles and building smelters from scratch to melt the ore and make the hammer heads, then they&#039;ll melt the rest of the stuff down to make the nails and THEN they&#039;ll actually start the process of nailing pieces of wood together which they wouldn&#039;t have standard pieces of  (but having grown the right tree, cut it down, then make the 2x4 out of them)... 

Now imagine every handyman walking around with his own bloody smelter, ore extraction machines, lathes, and you get the idea.

What you&#039;re arguing is that this process (ore digging, smelting, lathe turning) needs to be standardized. (yes but for a very small minority!)

What you NEED to argue is that NOT EVERY PROGRAMMER NEED DO IT! Just like not every engineer or handyman concerns him/herself these days with the type of bolts,nuts, handles, weights and measures. 

And therein lies the problem. Programmers LOVE to jerk off to complexity, and that&#039;s their main issue. Instead of solving problems, they love to WALLOW in the problem solving process itself. They love to re-invent the same wheels over and over again! They love to imagine themselves all as McCarthy&#039;s or Chuck Moors or Dijkstras and leave a shitstorm of unusable garbage toy languages in their wake.

The problem isn&#039;t that we don&#039;t have &quot;the right language&quot;, the problem is that we have way too fucking many, and it&#039;s too easy to create more. That is a way of avoiding the problem which essentially is that of standardization of basic computing parts/idioms and interfaces between them. For most computing problems TCL or even Bash with the basic set of UNIXcommands all  piped together should be enough. But is it? ...</description>
		<content:encoded><![CDATA[<p>The issue isn&#8217;t that there isn&#8217;t a standard way of writing a sort, but the main crisis of &#8220;software engineering&#8221; / programming is that after all these year we still don&#8217;t have a standard, &#8220;good enough&#8221; sort routine.</p>
<p>The reason I can walk into a hardware store and build myself a deck or renovate my bathroom or build myself a certain object is because of standardization.  The toolsets and the parts have been standardized. </p>
<p>I don&#8217;t have to have the metallurgical knowledge on how to create high carbon steel, nor do I have to have the knowledge and the equipment to create a certain nut and bolt. All that has been taken care of me. All I have to do is use standard nuts and bolts, and standard tools and I can work and create a reasonable object with little &#8220;end user&#8221; knowledge.</p>
<p>In computing however, we still expect &#8220;the programmer&#8221; to do the equivalent of digging the iron ore, smelting it properly, Building a lathe, then turning that piece of metal to make themselves a bolt, and the process go on.</p>
<p>Let&#8217;s say a programmer was given the equivalent of putting together a simple fence. All you need is wood planks, some nails, and a hammer.</p>
<p>Programmers don&#8217;t use hammers, they start with the ridiculous equivalent of digging up iron ore, growing trees to build the handles and building smelters from scratch to melt the ore and make the hammer heads, then they&#8217;ll melt the rest of the stuff down to make the nails and THEN they&#8217;ll actually start the process of nailing pieces of wood together which they wouldn&#8217;t have standard pieces of  (but having grown the right tree, cut it down, then make the 2&#215;4 out of them)&#8230; </p>
<p>Now imagine every handyman walking around with his own bloody smelter, ore extraction machines, lathes, and you get the idea.</p>
<p>What you&#8217;re arguing is that this process (ore digging, smelting, lathe turning) needs to be standardized. (yes but for a very small minority!)</p>
<p>What you NEED to argue is that NOT EVERY PROGRAMMER NEED DO IT! Just like not every engineer or handyman concerns him/herself these days with the type of bolts,nuts, handles, weights and measures. </p>
<p>And therein lies the problem. Programmers LOVE to jerk off to complexity, and that&#8217;s their main issue. Instead of solving problems, they love to WALLOW in the problem solving process itself. They love to re-invent the same wheels over and over again! They love to imagine themselves all as McCarthy&#8217;s or Chuck Moors or Dijkstras and leave a shitstorm of unusable garbage toy languages in their wake.</p>
<p>The problem isn&#8217;t that we don&#8217;t have &#8220;the right language&#8221;, the problem is that we have way too fucking many, and it&#8217;s too easy to create more. That is a way of avoiding the problem which essentially is that of standardization of basic computing parts/idioms and interfaces between them. For most computing problems TCL or even Bash with the basic set of UNIXcommands all  piped together should be enough. But is it? &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I want to fix programming by Shawn Mclean</title>
		<link>http://jonbho.net/2012/01/24/i-want-to-fix-programming/#comment-199</link>
		<dc:creator>Shawn Mclean</dc:creator>
		<pubDate>Tue, 31 Jan 2012 14:55:29 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=18#comment-199</guid>
		<description>So what are the 5 &quot;major&quot; concepts of programming? if thats what u meant. I may or may not know them.</description>
		<content:encoded><![CDATA[<p>So what are the 5 &#8220;major&#8221; concepts of programming? if thats what u meant. I may or may not know them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on I want to fix programming by das name</title>
		<link>http://jonbho.net/2012/01/24/i-want-to-fix-programming/#comment-184</link>
		<dc:creator>das name</dc:creator>
		<pubDate>Mon, 30 Jan 2012 19:13:25 +0000</pubDate>
		<guid isPermaLink="false">http://jonbho.net/?p=18#comment-184</guid>
		<description>That&#039;s a completely open question, with an enormous number of scientists who disagree. 
No one had ever created a complet theory of our cognitive process &quot;as rigid as the ones underliying a computer&quot; that is fault-prove.</description>
		<content:encoded><![CDATA[<p>That&#8217;s a completely open question, with an enormous number of scientists who disagree.<br />
No one had ever created a complet theory of our cognitive process &#8220;as rigid as the ones underliying a computer&#8221; that is fault-prove.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

