<story><title>Tcl the Misunderstood (2006)</title><url>http://antirez.com/articoli/tclmisunderstood.html</url></story><parent_chain><item><author>deepsun</author><text>Watching someone learns basics of programming in Python, I realized that Python is actually not that easy to learn for beginners as I thought:&lt;p&gt;1. Types in Python are implicit. It&amp;#x27;s really hard to explain that they need to always think about what type something is, especially when they haven&amp;#x27;t grasped the concept of types yet.&lt;p&gt;2. Indentation as part of the language. I thought it&amp;#x27;s a great thing for beginners, but it&amp;#x27;s actually confuses beginners that empty space affects your program, e.g. they think that spaces around assignment or arithmetic operators should affect their program too, which is not the case.&lt;p&gt;3. Ranges for iteration -- they just memorize the syntax blindly :(&lt;p&gt;So I started to wonder whether Pascal is better to learn for beginners -- you have to list all the types at the beginning, and no implicit conversions are done.&lt;p&gt;But now I think what about TCL? Maybe it&amp;#x27;d be even easier for total beginners?</text></item></parent_chain><comment><author>codeflo</author><text>I&amp;#x27;ve seen beginners, especially those without a very strong maths background, struggle with the &lt;i&gt;concept&lt;/i&gt; of syntax. The idea that you need to put the thing you want the program to do into a very specific form. That any deviation is an error, even though &amp;quot;it&amp;#x27;s clear&amp;quot; to humans. I think that&amp;#x27;s something fundamental beginners need to learn, regardless of the language they use.&lt;p&gt;But once you accept that there &lt;i&gt;are&lt;/i&gt; rules to follow, and that they are somewhat arbitrary, languages do differ wildly in the amount and obscurity of syntactic forms you need to learn just to get started. Just count the amount of different syntactic concepts in this simple program:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    #include &amp;lt;stdio.h&amp;gt;

    int main(int argc, char **argv) {
        printf(&amp;quot;Hello world\n&amp;quot;);
        return 0;
    }
&lt;/code&gt;&lt;/pre&gt;
and compare it to the Python version.</text></comment>
<story><title>Tcl the Misunderstood (2006)</title><url>http://antirez.com/articoli/tclmisunderstood.html</url></story><parent_chain><item><author>deepsun</author><text>Watching someone learns basics of programming in Python, I realized that Python is actually not that easy to learn for beginners as I thought:&lt;p&gt;1. Types in Python are implicit. It&amp;#x27;s really hard to explain that they need to always think about what type something is, especially when they haven&amp;#x27;t grasped the concept of types yet.&lt;p&gt;2. Indentation as part of the language. I thought it&amp;#x27;s a great thing for beginners, but it&amp;#x27;s actually confuses beginners that empty space affects your program, e.g. they think that spaces around assignment or arithmetic operators should affect their program too, which is not the case.&lt;p&gt;3. Ranges for iteration -- they just memorize the syntax blindly :(&lt;p&gt;So I started to wonder whether Pascal is better to learn for beginners -- you have to list all the types at the beginning, and no implicit conversions are done.&lt;p&gt;But now I think what about TCL? Maybe it&amp;#x27;d be even easier for total beginners?</text></item></parent_chain><comment><author>rscho</author><text>You could try something with a regular syntax. It doesn&amp;#x27;t work for everyone, but when it works it works really well. Racket comes to mind, and it has a progressive suite of languages from neophyte to full-blown. In addition to a community focused on pedagogy and CS fundamentals.&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;racket.discourse.group&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;racket.discourse.group&amp;#x2F;&lt;/a&gt;</text></comment>