<story><title>Tcl the Misunderstood (2006)</title><url>http://antirez.com/articoli/tclmisunderstood.html</url></story><parent_chain></parent_chain><comment><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></comment>
<story><title>Tcl the Misunderstood (2006)</title><url>http://antirez.com/articoli/tclmisunderstood.html</url></story><parent_chain></parent_chain><comment><author>thesz</author><text>Tcl forces you to create new data, because you have to think and work harder to introduce effects on variables in upper scope through the use of uplevel and upvar. This reduces side effects significantly and makes data transformation explicit. Which, in turn, reduces cognitive load and increase productivity.&lt;p&gt;Tcl also does not have distinguished NULL value like Python, C, C++, C# and many other languages. You do not have to account for that.&lt;p&gt;The reduction of side effects and no universal no-value value puts Tcl in my hierarchy of programming languages right below Haskell and above pretty much everything else. Tcl is very easy to use when you know how to structure the program.&lt;p&gt;I still use it for various prototyping when I do not want strict type discipline.</text></comment>