{"id":11298,"date":"2008-06-07T00:51:30","date_gmt":"2008-06-06T21:51:30","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=11298"},"modified":"2008-06-07T00:51:30","modified_gmt":"2008-06-06T21:51:30","slug":"programming-language-barrier","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2008\/06\/07\/programming-language-barrier\/","title":{"rendered":"Programming language barrier"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>One of the frequent things that I hear about programmers is that it doesn&#8217;t matter which language the person is using and which language you need him to use, because if he is any good he&#8217;ll learn and catch up pretty fast.\u00a0 In other words, if you take a decent Java programmer and push him to write PHP code for you, you&#8217;ll only have issues for a few days.\u00a0 Or weeks, at most.<\/p>\n<p>I understand the reasons for this statement, but I don&#8217;t agree with it.\u00a0 At least not completely.<\/p>\n<p>Firstly, the reasons.\u00a0 They are rather obvoius, but I&#8217;d rather stagte them anyway.\u00a0 Computer Science is not specific to any programming language.\u00a0 The concepts and approaches are more or less the same everywhere.\u00a0 Flow control, data structures, and algorithms are not language specific.\u00a0 Each language has its own best practices and recommended variations, but a bubble sort in PHP will be very similar to bubble sort in Java.\u00a0\u00a0 Then you need some common sense, which is also not laguage bound at all.<\/p>\n<p>Secondly, the disagreement.\u00a0 I think that the Computer Science theory and common sense aren&#8217;t the only things that make up a programmer.\u00a0 What makes a lot of difference is experience.\u00a0 Programming languages, in their practical applicatoin, are just collections of software &#8211; compilers, linkers, debuggers, libraries, IDEs, etc.\u00a0 Like any other software, programming language software has bugs, undocumented features, and Days When Things Don&#8217;t Just Work.\u00a0 It&#8217;s the experience with the language that teaches the programmer how to handle the issues of each software piece.\u00a0 And that experience is priceless (almost).<\/p>\n<p>Even if you&#8217;d manage to push a Java programmer into writing PHP code, that would a waste of resources.\u00a0 A Java programmer is a Java programmer, not PHP programmer.\u00a0 He will, of course, learn PHP nuances with time, but, he&#8217;ll probably lose a part of his priceless (almost) bagage.\u00a0 Sounds a lot like misuse of resources.<\/p>\n<p>Another part of my disagreement is not so much reasoned as emotionalized.\u00a0 I&#8217;ve seen a few C and Java developers switch to Perl and PHP for their new positions.\u00a0 Not that I was forcing them to or anything, but they did.\u00a0 And the switch was moslty painful to say the least.\u00a0 Here are some of the areas that I noticed as being hard to comprehend.<\/p>\n<p><strong>Compiling vs. interpreting.<\/strong> Those people who were used to their compilation process were missing something for the first few days.\u00a0 Some needed as much as a week to adopt, even though write-save-reload browser was done a few hundred times a day.<\/p>\n<p><strong>Debugging.<\/strong> There are two major camps here.\u00a0 In the first one are all those people who live in the debugger.\u00a0 They know all the keyboard shortcuts and they have their highlighting customized.\u00a0 In another camp are people of the simpler nature, those who use <em>print()<\/em> and <em>die()<\/em> for most of their debugging needs.\u00a0 It seems that most people coming from C and Java prefer the debugger way.\u00a0 Most of the interpretted languages do have either a standalone debugger or a built in debugging tool, but it seems that the majority of interpretted language crowd use the <em>print()<\/em> and <em>die()<\/em> approach.<\/p>\n<p><strong>Sigils.<\/strong> If you don&#8217;t know what a sigil is, read <a href=\"http:\/\/en.wikipedia.org\/wiki\/Sigil_(computer_programming)\">this Wikipedia page<\/a>.\u00a0 Because you do know what it is.\u00a0 Many strong type language don&#8217;t use any sigils.\u00a0 Most of the loosely typed languages do.\u00a0 Furthermore, when both the language from which you are changing and the language to which you are changing use sigils, chances are there will still be a difference.\u00a0 PHP, for example, uses $ for both scalars and arrays.\u00a0 In Perl though, you&#8217;ll get a $ for scalar, @ for array, and % for hash.\u00a0 Perl&#8217;s sigils are extremely helpful when figuring out someone else&#8217;s code. I remember the pain of having just a $ in PHP, when I was learning it.\u00a0 And I can&#8217;t even imagine how confusing it is for people who are used to non-sigilized programming languages.<\/p>\n<p><strong>Types.<\/strong> As already mentioned above, strong typed language programmers can be often confused with the fact that variables can change their type on the fly, and that they don&#8217;t even need to be declared before use.\u00a0 Loosely typed language programmers will often complain about the requirement to define their types.\u00a0 Three of the most common questions that I&#8217;ve heard regarding this matter were:<\/p>\n<ul>\n<li>&#8220;How do I define an array of elements of a certain type of a certain length?&#8221;<\/li>\n<li>&#8220;Is this line a piece of non-sense or does it really do something:\u00a0\u00a0 $sum += 0; ?&#8221;<\/li>\n<li>&#8220;What&#8217;s wrong with writing:\u00a0 int amount; amount = 2.5; ?&#8221;<\/li>\n<\/ul>\n<p>There are, of course, more areas than just those &#8211; include pathes, include files, OOP, database abstraction, loops (&#8220;What the heck is foreach?&#8221;), memory management, libraries, and so on and so forth.<\/p>\n<p>Even the list of the resources for each programming language takes time to build.\u00a0\u00a0 Yes, time.\u00a0 And time is one thing that&#8217;s always against us.\u00a0 Everything else we ca handle.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>One of the frequent things that I hear about programmers is that it doesn&#8217;t matter which language the person is using and which language you need him to use, because if he is any good he&#8217;ll learn and catch up pretty fast.\u00a0 In other words, if you take a decent Java programmer and push him &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2008\/06\/07\/programming-language-barrier\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Programming language barrier<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,18],"tags":[47,243,38,17],"keyring_services":[],"class_list":["post-11298","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","tag-java","tag-language","tag-php","tag-work"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":11477,"url":"https:\/\/mamchenkov.net\/wordpress\/2009\/01\/04\/programming-religions\/","url_meta":{"origin":11298,"position":0},"title":"Programming religions","author":"Leonid Mamchenkov","date":"January 4, 2009","format":false,"excerpt":"I'm slowly catching up with the news stream and all the jokes of the last few weeks.\u00a0 \"If programming languages were religions\" is a nice one.\u00a0 Here is PHP, which I spent the most time with now: PHP would be Cafeteria Christianity - Fights with Java for the web market.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26680,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/09\/10\/quora-if-programming-languages-were-countries\/","url_meta":{"origin":11298,"position":1},"title":"Quora: if programming languages were countries &#8230;","author":"Leonid Mamchenkov","date":"September 10, 2016","format":false,"excerpt":"\"If programming languages were countries, which country would each language represent?\" over Quora is hilarious! \u00a0Here are a few bits to get you started: C \u2013 Russia. Everything has to be done in a backwards way, but everything is possible, and there's a lot of legacy. C++ \u2013 USA. Powerful,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9612,"url":"https:\/\/mamchenkov.net\/wordpress\/2005\/10\/26\/perl-vs-java-vs-any-other-programming-language\/","url_meta":{"origin":11298,"position":2},"title":"Perl vs. Java vs. any other programming language","author":"Leonid Mamchenkov","date":"October 26, 2005","format":false,"excerpt":"Ovid once again does an excellent job. This time he talks about choosing proper tools for the job, using computer programming languages as examples. Do not choose solutions if you don't know what the problem is.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11290,"url":"https:\/\/mamchenkov.net\/wordpress\/2008\/06\/04\/where-did-all-the-php-programmers-go\/","url_meta":{"origin":11298,"position":3},"title":"Where did all the PHP programmers go?","author":"Leonid Mamchenkov","date":"June 4, 2008","format":false,"excerpt":"During the last six month or so, I've been looking to hire a PHP programmer for at least three companies.\u00a0 I have spoken to quite a few people on the phone, reviewed a bunch of resumes, and even interviewed a few.\u00a0 Out of all those candidates I recommended to hire\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27643,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/05\/29\/php-language-trivia\/","url_meta":{"origin":11298,"position":4},"title":"PHP Language Trivia","author":"Leonid Mamchenkov","date":"May 29, 2017","format":false,"excerpt":"https:\/\/www.slideshare.net\/nikita_ppv\/php-language-trivia","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7402,"url":"https:\/\/mamchenkov.net\/wordpress\/2004\/03\/30\/php-zopepython-and-perl\/","url_meta":{"origin":11298,"position":5},"title":"PHP, Zope\/Python, and Perl","author":"Leonid Mamchenkov","date":"March 30, 2004","format":false,"excerpt":"There is an article at kuro5hin.net called \"Switching from PHP to Zope\/Python\". This should provide for an interesting read for all those poor PHP souls. As for me - I use Perl and I am not planning to change any time soon. There are two major bonuses in Perl for\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/11298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=11298"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/11298\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=11298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=11298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=11298"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=11298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}