<?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"
	>
<channel>
	<title>Comments on: Who reads code samples?</title>
	<atom:link href="http://4.flowsnake.org/archives/107/feed" rel="self" type="application/rss+xml" />
	<link>http://4.flowsnake.org/archives/107</link>
	<description>A Pythoneer's adventures with Chicken Scheme. ^_^ And more.</description>
	<pubDate>Tue, 06 Jan 2009 23:23:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
		<item>
		<title>By: Lee Phillips</title>
		<link>http://4.flowsnake.org/archives/107#comment-305</link>
		<dc:creator>Lee Phillips</dc:creator>
		<pubDate>Tue, 10 Jun 2008 21:01:50 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-305</guid>
		<description>Your arguments have a mainly vocational thrust to them. Comfort with
mathematics might not make you better at your job, but it will make you a more
complete person, because mathematics is part of our cultural heritage. Mathematical notation
is a way to express ideas; code examples are not a substitute, as a program is a
set of instructions for a machine. (Although I am aware that ideas can be expressed
within programs.) English is another notation for expressing ideas; one idea can be
expressed with the word “car”; pasting in a photograph of a Buick does not
accomplish the same thing. It is more concrete, but, unfortunately, also more concrete.
A mathematical statement can be manipulated to produce other statements; if the first
is true then the statements derived from it are true, too. The compactness of
mathematical notation makes this manipulation powerful; we are showing how ideas
follow from other ideas. Although programs can be transformed into equivalent
programs, their very concreteness makes this more cumbersome and hardly practical
except for small examples: one is just, then, doing mathematics with a bad notation.</description>
		<content:encoded><![CDATA[<p>Your arguments have a mainly vocational thrust to them. Comfort with<br />
mathematics might not make you better at your job, but it will make you a more<br />
complete person, because mathematics is part of our cultural heritage. Mathematical notation<br />
is a way to express ideas; code examples are not a substitute, as a program is a<br />
set of instructions for a machine. (Although I am aware that ideas can be expressed<br />
within programs.) English is another notation for expressing ideas; one idea can be<br />
expressed with the word “car”; pasting in a photograph of a Buick does not<br />
accomplish the same thing. It is more concrete, but, unfortunately, also more concrete.<br />
A mathematical statement can be manipulated to produce other statements; if the first<br />
is true then the statements derived from it are true, too. The compactness of<br />
mathematical notation makes this manipulation powerful; we are showing how ideas<br />
follow from other ideas. Although programs can be transformed into equivalent<br />
programs, their very concreteness makes this more cumbersome and hardly practical<br />
except for small examples: one is just, then, doing mathematics with a bad notation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daerin the Cluer</title>
		<link>http://4.flowsnake.org/archives/107#comment-304</link>
		<dc:creator>Daerin the Cluer</dc:creator>
		<pubDate>Mon, 09 Jun 2008 06:15:40 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-304</guid>
		<description>Mathematics is readable to a broad, diverse audience WITHIN ACADEMIA. Chemists come from academia. Physicists come from academia. So do engineers. The majority of programmers, OTOH, are self-taught. Hence, the argument that mathematics is a "lingua franca" doesn't apply to programmers.

Programming languages are written in plain ASCII. This has a very specific advantage when it comes to (for example) a Python programmer seeing Haskell for the first time. If you don't already know the programming language being used, you can look it up with a search engine, and learn the whole syntax in a matter of hours. You can even get a compiler or interpreter, which will allow you to verify for yourself that you really understand. Those operations that aren't built into the syntax have names that can be entered into search engines. Programming languages support incremental, self-directed learning. You can learn enough of the language to solve the problem at hand, and learn the rest when the need arises.

Math, using the traditional notation, doesn't work that way. You have to study it for years to even be able to begin to read it. Every single new concept that gets introduced has its own unique syntax-- and it's not just a matter of a certain type of brackets: In math notation, typesetting attributes such as subscript, superscript, bold, italics, etc all have crucial meanings. These things are proof against being looked up in a search engine. You can't look up what an upside-down "A" means (not that it always means the same thing). You can't look up what it means when a "B" has two small letters in subscript next to it. Even if you could look up these meanings, the majority of the meaning of a math formula is implied-- the formula itself is just a hint for those who are already in the know.

Because math is a natural language in which most of the real knowledge is conveyed by context alone, there are no compilers in which you can automatically verify that you really understand it. This verification comes in only one form: The greedy, tenured college professor, and his greedy, money-guzzling institution.</description>
		<content:encoded><![CDATA[<p>Mathematics is readable to a broad, diverse audience WITHIN ACADEMIA. Chemists come from academia. Physicists come from academia. So do engineers. The majority of programmers, OTOH, are self-taught. Hence, the argument that mathematics is a "lingua franca" doesn't apply to programmers.</p>
<p>Programming languages are written in plain ASCII. This has a very specific advantage when it comes to (for example) a Python programmer seeing Haskell for the first time. If you don't already know the programming language being used, you can look it up with a search engine, and learn the whole syntax in a matter of hours. You can even get a compiler or interpreter, which will allow you to verify for yourself that you really understand. Those operations that aren't built into the syntax have names that can be entered into search engines. Programming languages support incremental, self-directed learning. You can learn enough of the language to solve the problem at hand, and learn the rest when the need arises.</p>
<p>Math, using the traditional notation, doesn't work that way. You have to study it for years to even be able to begin to read it. Every single new concept that gets introduced has its own unique syntax-- and it's not just a matter of a certain type of brackets: In math notation, typesetting attributes such as subscript, superscript, bold, italics, etc all have crucial meanings. These things are proof against being looked up in a search engine. You can't look up what an upside-down "A" means (not that it always means the same thing). You can't look up what it means when a "B" has two small letters in subscript next to it. Even if you could look up these meanings, the majority of the meaning of a math formula is implied-- the formula itself is just a hint for those who are already in the know.</p>
<p>Because math is a natural language in which most of the real knowledge is conveyed by context alone, there are no compilers in which you can automatically verify that you really understand it. This verification comes in only one form: The greedy, tenured college professor, and his greedy, money-guzzling institution.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jon</title>
		<link>http://4.flowsnake.org/archives/107#comment-288</link>
		<dc:creator>jon</dc:creator>
		<pubDate>Thu, 05 Jun 2008 20:18:32 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-288</guid>
		<description>Its the problem solving tools learned when doing math that come in handy during programming. "knowing math" is a bit of stretch; anyone claiming an absolute knowledge of maths is fooling themselves. However, productivity for said programmer would increase if they had a good understanding of the practical methods of mathematical problem solving. 
By taking math, they are forced to understand proper problem solving methods and the steps therein because of the complexity of the problems that need to be solved. For example, if a programming problem involved sets of data that need to be analyzed (many do!); the programmer would have an easier time if they used induction. Its just a tool that works really well for that problem; and someone would have a hard time learning it outside of a class dealing with set theory and logic.  
A great read is G Polyas "how to solve it". Even a cursory glance at the introduction will help a programmer become more efficient. It's a tool for math, usefully applied to programming.</description>
		<content:encoded><![CDATA[<p>Its the problem solving tools learned when doing math that come in handy during programming. "knowing math" is a bit of stretch; anyone claiming an absolute knowledge of maths is fooling themselves. However, productivity for said programmer would increase if they had a good understanding of the practical methods of mathematical problem solving.<br />
By taking math, they are forced to understand proper problem solving methods and the steps therein because of the complexity of the problems that need to be solved. For example, if a programming problem involved sets of data that need to be analyzed (many do!); the programmer would have an easier time if they used induction. Its just a tool that works really well for that problem; and someone would have a hard time learning it outside of a class dealing with set theory and logic.<br />
A great read is G Polyas "how to solve it". Even a cursory glance at the introduction will help a programmer become more efficient. It's a tool for math, usefully applied to programming.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brooks Moses</title>
		<link>http://4.flowsnake.org/archives/107#comment-285</link>
		<dc:creator>Brooks Moses</dc:creator>
		<pubDate>Thu, 05 Jun 2008 06:04:21 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-285</guid>
		<description>Michael: Obviously, you're getting at the (probable) result that there is zero difference in productivity between "real programmers" and "fake programmers".

This is perfectly reasonable, and what one would expect from the term.  Much as a "real man" or "real woman" is generally merely a man or woman who happens to fit the speaker's patronizing ideas of what an ideal person is, and have little-to-nothing to do with actual abilities at anything important.

I find Hans's point interesting, as the math examples are entirely transparent to me, but the Python takes work and all runs together when I look at it at first.  It's worthwhile -- because, as a _real_ programmer, I write documentation too! -- to be reminded that not everyone sees the world the way I do.</description>
		<content:encoded><![CDATA[<p>Michael: Obviously, you're getting at the (probable) result that there is zero difference in productivity between "real programmers" and "fake programmers".</p>
<p>This is perfectly reasonable, and what one would expect from the term.  Much as a "real man" or "real woman" is generally merely a man or woman who happens to fit the speaker's patronizing ideas of what an ideal person is, and have little-to-nothing to do with actual abilities at anything important.</p>
<p>I find Hans's point interesting, as the math examples are entirely transparent to me, but the Python takes work and all runs together when I look at it at first.  It's worthwhile -- because, as a _real_ programmer, I write documentation too! -- to be reminded that not everyone sees the world the way I do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Terry</title>
		<link>http://4.flowsnake.org/archives/107#comment-275</link>
		<dc:creator>Michael Terry</dc:creator>
		<pubDate>Tue, 03 Jun 2008 23:26:17 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-275</guid>
		<description>Someone above said you're not a real programmer if you don't know math. I'm not sure what the cut off for "knowing math" is, but let's say it's linear algebra, since that's the highest level you need at universities near me. My guess is that, if you did a study of programmers (real and fake), and controlled for IQ and experience, there'd be zero difference in productivity between those who knew math and those who didn't. Discuss.</description>
		<content:encoded><![CDATA[<p>Someone above said you're not a real programmer if you don't know math. I'm not sure what the cut off for "knowing math" is, but let's say it's linear algebra, since that's the highest level you need at universities near me. My guess is that, if you did a study of programmers (real and fake), and controlled for IQ and experience, there'd be zero difference in productivity between those who knew math and those who didn't. Discuss.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil</title>
		<link>http://4.flowsnake.org/archives/107#comment-274</link>
		<dc:creator>Phil</dc:creator>
		<pubDate>Tue, 03 Jun 2008 21:06:36 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-274</guid>
		<description>What about pseudo code? Comming from a Finite Element Context where &#124;&#124;v_1 - v_2&#124;&#124; might have possible meanings, depending an the space you are in. I think that giving the reader an example in some programming language has not only the advantage of clarifying the statement, but also makes it easier to estimate the runtime of an algorithm (count the necesarry operations).
In most math books algorithms are also illustrated by pseudo code which is even standarized. From my point of view providing both the mathematical representation of the algorithm and an implementation is good style and makes a book much more readable.</description>
		<content:encoded><![CDATA[<p>What about pseudo code? Comming from a Finite Element Context where ||v_1 - v_2|| might have possible meanings, depending an the space you are in. I think that giving the reader an example in some programming language has not only the advantage of clarifying the statement, but also makes it easier to estimate the runtime of an algorithm (count the necesarry operations).<br />
In most math books algorithms are also illustrated by pseudo code which is even standarized. From my point of view providing both the mathematical representation of the algorithm and an implementation is good style and makes a book much more readable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nes</title>
		<link>http://4.flowsnake.org/archives/107#comment-272</link>
		<dc:creator>Nes</dc:creator>
		<pubDate>Tue, 03 Jun 2008 16:50:12 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-272</guid>
		<description>Just to bring up an example: Consider a math formula of "(a*b)". I have no clue what that is supposed to mean; a boolean expression, a matrix multiplication, an arithmetic operation, functional composition? If I see a Python expression "(quantity*price)" I have little doubt what that means. To begin variables have descriptive names instead of random Greek letters and second the operator is not overloaded to death.</description>
		<content:encoded><![CDATA[<p>Just to bring up an example: Consider a math formula of "(a*b)". I have no clue what that is supposed to mean; a boolean expression, a matrix multiplication, an arithmetic operation, functional composition? If I see a Python expression "(quantity*price)" I have little doubt what that means. To begin variables have descriptive names instead of random Greek letters and second the operator is not overloaded to death.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nes</title>
		<link>http://4.flowsnake.org/archives/107#comment-271</link>
		<dc:creator>Nes</dc:creator>
		<pubDate>Tue, 03 Jun 2008 16:27:23 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-271</guid>
		<description>I completely agree with you Hans. I'll take code over math notation any day. Math may be shorter, but unless you know the assumptions, math notation is not detailed and specific enough. This exact problem is what lead Sussman to write the book "Structure and Interpretation of Classical Mechanics". He thinks it is easier to explain scheme once and then physics using its notation than trying to explain all the oddball math formulas with inconsistent syntax and semantics.</description>
		<content:encoded><![CDATA[<p>I completely agree with you Hans. I'll take code over math notation any day. Math may be shorter, but unless you know the assumptions, math notation is not detailed and specific enough. This exact problem is what lead Sussman to write the book "Structure and Interpretation of Classical Mechanics". He thinks it is easier to explain scheme once and then physics using its notation than trying to explain all the oddball math formulas with inconsistent syntax and semantics.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Timmy Jose</title>
		<link>http://4.flowsnake.org/archives/107#comment-268</link>
		<dc:creator>Timmy Jose</dc:creator>
		<pubDate>Tue, 03 Jun 2008 03:39:11 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-268</guid>
		<description>I am sorry if I presume too much but those formulas weren't exactly equations from Quantum Electrodynamics! I would even say that anyone with a college degree in Science and Math would be able to understand the notation, if not what it implies (or how to solve it).  And what manner of programmer would say he's not a mathematician in disguise? Seriously!

I had read the blog in question and I found the first example in favor of the code but the second one totally biased me toward the equation. 
I would have rather preferred if the scheme was to have the equation and the code together. After all, it is a book meant for mathematical programming, so that makes sense.</description>
		<content:encoded><![CDATA[<p>I am sorry if I presume too much but those formulas weren't exactly equations from Quantum Electrodynamics! I would even say that anyone with a college degree in Science and Math would be able to understand the notation, if not what it implies (or how to solve it).  And what manner of programmer would say he's not a mathematician in disguise? Seriously!</p>
<p>I had read the blog in question and I found the first example in favor of the code but the second one totally biased me toward the equation.<br />
I would have rather preferred if the scheme was to have the equation and the code together. After all, it is a book meant for mathematical programming, so that makes sense.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: przemek klosowski</title>
		<link>http://4.flowsnake.org/archives/107#comment-267</link>
		<dc:creator>przemek klosowski</dc:creator>
		<pubDate>Tue, 03 Jun 2008 02:46:55 +0000</pubDate>
		<guid isPermaLink="false">http://4.flowsnake.org/?p=107#comment-267</guid>
		<description>It's a false dichotomy---rather than having to choose between equations or code, how about having both? Check out Literate Programming: Donald Knuth came up with, what, 25 years ago? Equations help understand the algorithm on the conceptual level, but they often gloss over important details; code obviously determines the actual result. Literate Programming includes both forms.

Mathematical notation is supposed to be precise, but since the symbols are defined to mean what the author wants them to mean, it can be tricky to parse.

By the way, in a high-level language the code becomes quite close to the equations, e.g. in Octave/Matlab, you'd write exp( i * abs(v1-v2)) even if v1,v2
were vectors or matrices---and it would even run quite fast because they use
optimized linear algebra libraries, which typically outperform regular compiled loops because of cache and similar effects.</description>
		<content:encoded><![CDATA[<p>It's a false dichotomy---rather than having to choose between equations or code, how about having both? Check out Literate Programming: Donald Knuth came up with, what, 25 years ago? Equations help understand the algorithm on the conceptual level, but they often gloss over important details; code obviously determines the actual result. Literate Programming includes both forms.</p>
<p>Mathematical notation is supposed to be precise, but since the symbols are defined to mean what the author wants them to mean, it can be tricky to parse.</p>
<p>By the way, in a high-level language the code becomes quite close to the equations, e.g. in Octave/Matlab, you'd write exp( i * abs(v1-v2)) even if v1,v2<br />
were vectors or matrices---and it would even run quite fast because they use<br />
optimized linear algebra libraries, which typically outperform regular compiled loops because of cache and similar effects.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
