{"id":422,"date":"2007-01-05T19:57:48","date_gmt":"2007-01-06T00:57:48","guid":{"rendered":"http:\/\/UnhinderedByTalent.com\/Phi\/?p=422"},"modified":"2007-01-06T23:30:49","modified_gmt":"2007-01-07T04:30:49","slug":"422","status":"publish","type":"post","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2007\/01\/05\/422\/","title":{"rendered":"The importance of language and notation in problem solving"},"content":{"rendered":"<p><a href=\"http:\/\/www.flickr.com\/photos\/nicmcphee\/27703239\/\" title=\"Photo Sharing\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/farm1.static.flickr.com\/22\/27703239_dc6a4d0d9e_m.jpg?resize=180%2C240\" width=\"180\" height=\"240\" alt=\"Pointed words\" align='right' hspace='10' vspace='10' data-recalc-dims=\"1\" \/><\/a><\/p>\n<p>Found this in the <a href=\"http:\/\/www.ruby-doc.org\/docs\/10%20Things%20Every%20Java%20Programmer%20Should%20Know%20About%20Ruby\/10things.tgz\">slides for a presentation<\/a> by Jim Weirich entitled &#8220;10 things every Java programmer should know about Ruby&#8221;:<\/p>\n<blockquote><p>A language that doesn\u2019t affect the way you think about programming is not worth knowing \u2014 Alan Perlis<\/p><\/blockquote>\n<p>Amen, brother!<\/p>\n<p>A little searching reveals that it was included in a collection of such pearls of wisdom in an article entitled &#8220;<a href=\"http:\/\/www-pu.informatik.uni-tuebingen.de\/users\/klaeren\/epigrams.html\">Epigrams on programming<\/a>&#8220;, published back in 1982.  Some have aged poorly, and some I just disagree with, but there are some real gems and this is one of them.<\/p>\n<p>There have arguably been five significant milestones for me in my development as a programmer:<\/p>\n<ul>\n<li>Learning to program (almost entirely self-taught, first on a <a href=\"http:\/\/en.wikipedia.org\/wiki\/TI-59\">TI-59 programmable calculator<\/a> in Jr. High, and then on a <a href=\"http:\/\/en.wikipedia.org\/wiki\/TRS-80\">TRS-80<\/a> Model 1, 16K, Level 2 <a href=\"http:\/\/en.wikipedia.org\/wiki\/BASIC\">BASIC<\/a> in High School)<\/li>\n<li>Learning structured programming and memory management (PASCAL, then C, while an undergraduate)<\/li>\n<li>Learning (<a href=\"http:\/\/www.cs.utexas.edu\/\">in graduate school<\/a>) to think of programs as formal, mathematical texts, which can be reasoned about in a mathematical way.  This included learning pure functional programming (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Miranda_programming_language\">Miranda<\/a>) and then taking a wonderful and head bending course on the formal derivation of programs from specifications taught by Edsger Dijkstra.<\/li>\n<li>Learning object-oriented programming (C++, Eiffel, and Java) as part of my teaching here at <a href=\"http:\/\/www.morris.umn.edu\/\">UMM<\/a>.<\/li>\n<li>Moving from a kinda-sorta waterfall model of software development to understanding and embracing <a href=\"http:\/\/agilemanifesto.org\/\">agile development methods<\/a> (again as part of my teaching here at UMM).  There was no programming language, per se, but ideas and tools such as <a href=\"http:\/\/www.agiledata.org\/essays\/tdd.html\">test-driven development<\/a>, <a href=\"http:\/\/junit.org\/\">JUnit<\/a>, <a href=\"http:\/\/cenqua.com\/clover\/\">Clover<\/a>, <a href=\"http:\/\/www.refactoring.com\/\">refactoring<\/a>, and <a href=\"http:\/\/eclipse.org\/\">Eclipse<\/a> all played important roles and certainly changed the way I think about programming.<\/li>\n<\/ul>\n<p>Of those, probably the hardest was probably really &#8220;getting&#8221; objects after all those years of C.  It was the first major transition (since my initial forays into BASIC) that was entirely self-taught, and really changing the way I thought about the structure of software was tough.  Now, on those odd (and thankfully very rare) occassions when I find myself leaving the world of objects, it&#8217;s amazing how strange and foreign the old ways seem and feel.<\/p>\n<p>It&#8217;s been a while since I&#8217;ve learned a programming language that stretched my head and helped me rethink some important things.  I think <a href=\"http:\/\/www.ruby-lang.org\/en\/\">Ruby<\/a> has the potential to open up some new doors (if small ones), and <a href=\"http:\/\/www.rubyonrails.org\/\">Rails<\/a> is pretty darn cool, so I&#8217;m looking forward to becoming more conversant in those universes.<\/p>\nNo tag for this post.\n\t<h4>Related posts<\/h4>\n\t<ul class=\"st-related-posts\">\n\t<li>No related posts.<\/li>\n\t<\/ul>\n\n","protected":false},"excerpt":{"rendered":"<p>Found this in the slides for a presentation by Jim Weirich entitled &#8220;10 things every Java programmer should know about Ruby&#8221;: A language that doesn\u2019t affect the way you think about programming is not worth knowing \u2014 Alan Perlis Amen, brother! A little searching reveals that it was included in a collection of such pearls &hellip; <a href=\"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2007\/01\/05\/422\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;The importance of language and notation in problem solving&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_newsletter_tier_id":0},"categories":[4,15],"tags":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/s90sy-422","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"jetpack-related-posts":[{"id":2055,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2022\/06\/03\/silico-paleontology-the-minnebar-16-talk-that-wasnt\/","url_meta":{"origin":422,"position":0},"title":"Silico-Paleontology: The Minnebar 16 talk that wasn&#8217;t","author":"Nic McPhee","date":"3 Jun 22","format":false,"excerpt":"I was all scheduled to give a talk at tomorrow's Minnebar 16 entitled \"Silico-Paleontology: Using graph databases to analyze evolved programs\". Than, last night, my left knee cap decided to slide off to places it didn't belong, and I ended up in the ER where I received a very stylish\u2026","rel":"","context":"In &quot;Computing&quot;","block_context":{"text":"Computing","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/computing\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":701,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2007\/11\/19\/a-wonderfully-different-way-to-thing-about-computing\/","url_meta":{"origin":422,"position":1},"title":"A wonderfully different way to thing about computing","author":"Nic McPhee","date":"19 Nov 07","format":false,"excerpt":"One of my constant struggles as an educator in computer science has been helping students see a bigger picture, look past the mundanities of yesterday's \"help wanted\" page, and see what the world could be rather than what it has been. One way this has often played out has been\u2026","rel":"","context":"In &quot;Computing&quot;","block_context":{"text":"Computing","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/computing\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":253,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2005\/10\/30\/another-fine-showing-at-digi-key\/","url_meta":{"origin":422,"position":2},"title":"Another fine showing at Digi-Key","author":"Nic McPhee","date":"30 Oct 05","format":false,"excerpt":"Each year Digi-Key (a major catalogue\/on-line vendor of electronic components several hours north of here) hosts a very nice programming and problem solving competition for several regional schools. They obviously see it as a valuable computing and PR exercise as they really lay out the red carpet for us each\u2026","rel":"","context":"In &quot;Computing&quot;","block_context":{"text":"Computing","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/computing\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1337,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2010\/07\/29\/just-2-days-left-genetic-programming-and-evolvable-machines-anniversary-issue-available-for-free\/","url_meta":{"origin":422,"position":3},"title":"Just 2 days left: Genetic Programming and Evolvable Machines anniversary issue available for free!","author":"Nic McPhee","date":"29 Jul 10","format":false,"excerpt":"The Springer journal Genetic Programming and Evolvable Machines is celebrating its first 10 years with a special anniversary issue of articles reviewing the state of the field and considering some of its possible futures. For the month of July the entire issue is available for free!","rel":"","context":"In &quot;Computing&quot;","block_context":{"text":"Computing","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/computing\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":298,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2006\/01\/13\/links-for-2006-01-13\/","url_meta":{"origin":422,"position":4},"title":"links for 2006-01-13","author":"Nic McPhee","date":"13 Jan 06","format":false,"excerpt":"Extreme Programming: A Gentle Introduction. An excellent overview of the key ideas of extreme programming\/agile development. (tags: agile code design development planning programming project projectmanagement software testing xp methodology UMM:CSci3601) XProgramming.com - an Agile Software Development Resource Ron Jeffries' site on XP. I really don't like the design, but there's\u2026","rel":"","context":"In &quot;Daily links&quot;","block_context":{"text":"Daily links","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/daily-links\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1573,"url":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/2012\/07\/21\/an-unsolicited-forward-to-an-unfinished-book\/","url_meta":{"origin":422,"position":5},"title":"An unsolicited forward to an unfinished book","author":"Nic McPhee","date":"21 Jul 12","format":false,"excerpt":"Bill Tozier was generous enough to share an early draft of his book-in-progress, currently entitled Answer factories: The engineering of useful surprises. It's a true joy, and I'm really looking forward to being able to read the \"finished\" work. It's a project oriented book, though, which means that to really\u2026","rel":"","context":"In &quot;Books&quot;","block_context":{"text":"Books","link":"https:\/\/UnhinderedByTalent.com\/Phi\/archives\/category\/writing\/books\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/posts\/422"}],"collection":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/comments?post=422"}],"version-history":[{"count":0,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/posts\/422\/revisions"}],"wp:attachment":[{"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/media?parent=422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/categories?post=422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/UnhinderedByTalent.com\/Phi\/wp-json\/wp\/v2\/tags?post=422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}