{"id":470,"date":"2011-05-19T12:00:03","date_gmt":"2011-05-19T16:00:03","guid":{"rendered":"http:\/\/efsavage.com\/blog\/?p=470"},"modified":"2011-06-07T10:16:25","modified_gmt":"2011-06-07T14:16:25","slug":"to-switch-or-not-to-switch-part-2","status":"publish","type":"post","link":"https:\/\/efsavage.com\/blog\/posts\/to-switch-or-not-to-switch-part-2\/","title":{"rendered":"To switch or not to switch, part 2"},"content":{"rendered":"<div class=\"pps-series-post-details pps-series-post-details-variant-classic pps-series-post-details-1093\" data-series-id=\"196\"><div class=\"pps-series-meta-content\"><div class=\"pps-series-meta-text\">This entry is part 2 of 3 in the series <a href=\"https:\/\/efsavage.com\/blog\/posts\/series\/to-switch-or-not-to-switch\/\">To switch or not to switch<\/a><\/div><\/div><\/div><p>Continued from <a href=\"http:\/\/efsavage.com\/blog\/posts\/to-switch-or-not-to-switch-part-1\/\">Part 1<\/a>, I&#8217;m looking at candidates to replace my current main language: Java.  I&#8217;m not actually eager to get rid of Java, I still really like it, and enjoy working in it, but I need to convince myself that it&#8217;s the right choice for me to continue to invest unpaid time in, or I need to find something that is.  My career is, optimistically, 1\/3 over, I&#8217;ve got 20-30 years left tops, and while I&#8217;d actually bet that Java programmers will be needed in 30 years, I&#8217;m not sure how much interesting stuff will be happening.<\/p>\n<p>So, let&#8217;s add a couple more rules to winnow the set.<\/p>\n<p>Rule 3: It have some kind of network database support.<br \/>\nAlmost everything I do involves a database at some point.  The volumes of data and network architectures we deal with today rule out simple file I\/O, or even local-only databases.  I did not look especially hard for the answer to this question, in my opinion if it wasn&#8217;t easy to find, it&#8217;s not sufficient.  Technically, I could write\/port my own driver, but if nobody else has done it, I have to suspect that the users are solving very different problems than I am.  This eliminates:<\/p>\n<style>\nul.eliminated li { text-decoration:line-through; }\n<\/style>\n<ul class=\"eliminated\">\n<li>Agena<\/li>\n<li>ATS<\/li>\n<li>BASIC<\/li>\n<li>BETA<\/li>\n<li>Diesel<\/li>\n<li>E<\/li>\n<li>FORTH<\/li>\n<li>Icon<\/li>\n<li>Ioke<\/li>\n<li>Logo<\/li>\n<li>Maple<\/li>\n<li>MiniD<\/li>\n<li>Miranda<\/li>\n<li>Modula-3<\/li>\n<li>Nu<\/li>\n<li>Reia<\/li>\n<li>Sather<\/li>\n<li>SQL<\/li>\n<li>Self<\/li>\n<li>SPARK<\/li>\n<li>Squirrel<\/li>\n<li>Timber<\/li>\n<\/ul>\n<p>Rule 4: This is a tricky one, but I&#8217;m going to say it must not have &#8220;fallen from grace&#8221;.  This is essentially the state that Java is entering, depending on who you ask.  It&#8217;s perfectly functional, and widely used, but it&#8217;s had its day and isn&#8217;t hip anymore.  This doesn&#8217;t exclude languages that are just old, but were never at the top, like Eiffel, but I don&#8217;t see any reason to abandon Java and go with COBOL.<\/p>\n<ul class=\"eliminated\">\n<li>C<\/li>\n<li>C++<\/li>\n<li>COBOL<\/li>\n<li>Fortran<\/li>\n<li>Pascal<\/li>\n<li>Perl<\/li>\n<li>PHP<\/li>\n<li>Visual Basic .NET<\/li>\n<\/ul>\n<p>Now, some of those those languages, like C, are still very popular, and important.  You could even say that they are continuing to get better and stay modern.  C will probably outlive most of these languages, as none of them are strong candidates to rewrite Linux in yet.  My argument is that nobody is really using C to solve any <em>new<\/em> problems in <em>new<\/em> ways.  This leaves 41 languages that are active, capable of doing at least basic database operations, and have not entered decline.<\/p>\n<ul>\n<li>Ada<\/li>\n<li>ALGOL 68<\/li>\n<li>Boo<\/li>\n<li>C#<\/li>\n<li>Clean<\/li>\n<li>Clojure<\/li>\n<li>Cobra<\/li>\n<li>Common Lisp<\/li>\n<li>D<\/li>\n<li>Dylan<\/li>\n<li>Eiffel<\/li>\n<li>Erlang<\/li>\n<li>F#<\/li>\n<li>Factor<\/li>\n<li>Falcon<\/li>\n<li>Fantom<\/li>\n<li>GameMonkey Script<\/li>\n<li>Go<\/li>\n<li>Groovy<\/li>\n<li>Haskell<\/li>\n<li>Io<\/li>\n<li>Java<\/li>\n<li>JavaScript<\/li>\n<li>Lua<\/li>\n<li>Mirah<\/li>\n<li>MUMPS<\/li>\n<li>Objective Caml<\/li>\n<li>Objective-C<\/li>\n<li>Pike<\/li>\n<li>Processing<\/li>\n<li>Pure<\/li>\n<li>Python<\/li>\n<li>Ruby<\/li>\n<li>Scala<\/li>\n<li>Scheme<\/li>\n<li>Scratch<\/li>\n<li>Squeak<\/li>\n<li>Tcl<\/li>\n<li>Tea<\/li>\n<li>Unicon<\/li>\n<li>Vala<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<div class=\"pps-series-post-details pps-series-post-details-variant-classic pps-series-post-details-1093 pps-series-meta-excerpt\" data-series-id=\"196\"><div class=\"pps-series-meta-content\"><div class=\"pps-series-meta-text\">This entry is part 2 of 3 in the series <a href=\"https:\/\/efsavage.com\/blog\/posts\/series\/to-switch-or-not-to-switch\/\">To switch or not to switch<\/a><\/div><\/div><\/div><p>Continued from Part 1, I&#8217;m looking at candidates to replace my current main language: Java. I&#8217;m not actually eager to get rid of Java, I still really like it, and enjoy working in it, but I need to convince myself that it&#8217;s the right choice for me to continue to invest unpaid time in, or&hellip; <\/p>\n<p class=\"simppeli-read-more\"><a href=\"https:\/\/efsavage.com\/blog\/posts\/to-switch-or-not-to-switch-part-2\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">To switch or not to switch, part 2<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[8,3],"tags":[155],"series":[196],"class_list":["post-470","post","type-post","status-publish","format-standard","hentry","category-databases","category-software","tag-languages","series-to-switch-or-not-to-switch"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1AkJt-7A","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/posts\/470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/comments?post=470"}],"version-history":[{"count":11,"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/posts\/470\/revisions"}],"predecessor-version":[{"id":601,"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/posts\/470\/revisions\/601"}],"wp:attachment":[{"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/media?parent=470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/categories?post=470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/tags?post=470"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/efsavage.com\/blog\/wp-json\/wp\/v2\/series?post=470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}