<story><title>Programming from the Ground Up [pdf]</title><url>http://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf</url></story><parent_chain></parent_chain><comment><author>wyldfire</author><text>I think many of us learned the other way &amp;#x27;round.&lt;p&gt;(1) Start off by making changes to a program that someone&amp;#x2F;some book gave us as a basis and blindly stumble through some changes and compiler&amp;#x2F;interpreter&amp;#x2F;runtime errors.&lt;p&gt;(2) Take a step back, absorb what we&amp;#x27;ve learned from the errors.&lt;p&gt;(3) Read more about the principles of the programming language&amp;#x2F;OS&amp;#x2F;API&amp;#x2F;operating environment.&lt;p&gt;(4) Internalize concepts behind the language&amp;#x2F;OS&amp;#x2F;API&amp;#x2F;operating environment.&lt;p&gt;(5) Goto (1).&lt;p&gt;It&amp;#x27;s only after many iterations through this process that I can now see similarities among different processors (CPU&amp;#x2F;DSP&amp;#x2F;GPU&amp;#x2F;etc), operating systems, APIs, programming languages.  So many classes of problems can be solved effectively without ever understanding these details, so it makes sense for those new programmers not to learn the details at first.  IMO, this is &lt;i&gt;at least&lt;/i&gt; an intermediate-level text.</text></comment>
<story><title>Programming from the Ground Up [pdf]</title><url>http://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf</url></story><parent_chain></parent_chain><comment><author>koloron</author><text>Hah, just today I started to read &amp;quot;Haskell programming from first principles&amp;quot;[1] which also targets non-programmers but builds on lambda calculus instead of assembly.&lt;p&gt;Would anyone actually recommend to a beginner to start learn assembly first?&lt;p&gt;[1]&lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;haskellbook.com&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;haskellbook.com&amp;#x2F;&lt;/a&gt;</text></comment>