tag:blogger.com,1999:blog-1623059707500976008.post2762721575165561302..comments2023-12-16T23:58:41.575-08:00Comments on another day another vice another roll of the dice: Multidimensional programminganatoly techtonikhttp://www.blogger.com/profile/07847778636782899903noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-1623059707500976008.post-87308335388691175652012-05-07T05:47:11.454-07:002012-05-07T05:47:11.454-07:00I agree that the idea is far from being refined an...I agree that the idea is far from being refined and the "multidimensional" may sound too vague and abstract. The point is to give a tool to understand and deal with complexity. The tool is far from being ideal, but I hope it can already help together with a notion of "technical debt" to argument about bad design decisions.<br /><br />By the way - here is another way of looking at "Dimensions of programming" by Peter Norvig that you may find interesting too - http://www.udacity.com/view#Course/cs212/CourseRev/apr2012/Unit/3001/Nugget/8007anatoly techtonikhttps://www.blogger.com/profile/07847778636782899903noreply@blogger.comtag:blogger.com,1999:blog-1623059707500976008.post-1762560616241507282012-05-01T03:45:43.698-07:002012-05-01T03:45:43.698-07:00I do not find the comparison to “dimensions” to be...I do not find the comparison to “dimensions” to be very useful, but your overall point — that frameworks, libraries, and well-written code reduce the number of things that we have to think of at the same time — is an excellent one, and is a point to which programmers do not pay enough attention.<br /><br />I often find myself stopping and thinking hard if a Python module that I am writing is importing *three* quite different kinds of libraries up at the top — for example, the CherryPy mechanism for building a plug-in, *and* the "threading" library for managing workers, *and* the "socket" library for letting those workers make connections. I find code easier to read and test (which is huge — just writing the tests can force me to untangle the code!) if I have one module that deals just connecting the plugin to the threads, then another module focuses on the sockets. For very small modules or programs I will bend this rule, but when program logic starts to get hairy, I often restrict myself to only two moving parts at a time!Brandon Rhodeshttps://www.blogger.com/profile/04530745611634767785noreply@blogger.com