<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Weiqi Gao&#039;s Observations - languages tag</title>
  <link>http://www.weiqigao.com/blog/tags/languages/</link>
  <description>Sharing My Experience...</description>
  <language>en</language>
  <copyright>Weiqi Gao</copyright>
  <lastBuildDate>Fri, 11 May 2012 12:48:36 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  <image>
    <url>http://pebble.sourceforge.net/common/images/powered-by-pebble.gif</url>
    <title>Weiqi Gao&#039;s Observations</title>
    <link>http://www.weiqigao.com/blog/</link>
  </image>
  
  
  <item>
    <title>The Next Big Thing: An Opinionated Google Search</title>
    <link>http://www.weiqigao.com/blog/2008/10/16/the_next_big_thing_an_opinionated_google_search.html</link>
    
      
        <description>
          &lt;p&gt;&lt;em&gt;(Tangential thoughts triggered by &lt;a href= &#034;http://almaer.com/blog/the-next-big-language-theory-practice-and-the-killer-app&#034; &gt;techno.blog(&#034;Dion&#034;)&lt;/a&gt;.)&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;In no particular order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The JVM has become the playground of the programming language researchers.  This is a good thing for the Java community, even for those of us who mainly uses the Java language on a day-to-day basis.  It&#039;s nice to know that the language that I write CRUD applications is also capable of being so creatively used.&lt;/li&gt;

&lt;li&gt;I like object-oriented programming.  I also like functional programming.  I&#039;m not allergic to LISP&#039;s nested parenthesis.  I&#039;ve been looking at &lt;a href= &#034;http://clojure.org/&#034; &gt;Clojure&lt;/a&gt; for the last year, and believe it has the potential to becoming the next big language.&lt;/li&gt;

&lt;li&gt;Functional programming survived all these years because of one thing and one thing alone: It&#039;s mathematical&amp;mdash;Its fundation can be presented as axioms, definitions and theorems.  Object-orientation, on the other hand, feels &lt;i&gt;ad hoc&lt;/i&gt;.  It may map well to how some people view (the object/attribute/governing-rules view in the Aristotle tradition) the world.  But psychological studies has shown that not all people (the community/relationship/harmony view in the Confucian tradition, for example) perceive the world that way.&lt;/li&gt;

&lt;li&gt;Although I&#039;m not certain about what the next big language is, I know what the next big thing is.  It has to be something for the Internet.  It has to be something that beats Google at searching results.  Google is good at relatively simple and static things, like &#034;From which direction does the Sun rise?&#034;, but terrible at dynamically changing things, like &#034;Where is the Social Security Office at Creve Coeur, MO?&#034;  (They used to be on the first floor in the building OCI is in.  They moved a couple of years ago.  But we still see people coming to the building to inquire.)  I know it&#039;s not going to be easy, but what if Google start to get some opinions and display a &#034;We think this is good&#034; or &#034;We think this is wrong&#034; marker alongside every search result.  Sort of like fact checking for every web page.&lt;/li&gt;

&lt;li&gt;JavaScript is the lousiest language ever invented.  It is unfortunate that we are stuck with it for now (the web-era).  It needs to grow.  Some people want to make the browser a platform, fine.  That platform needs to grow.  In growth, it will see fragmentation (&#034;which JavaScript framework library are you using today?&#034;), consolidation and evolution.  At the end (we are talking about five to ten years out) it will be just like one of the other platforms that we use: Windows, Mac, Linux, etc.&lt;/li&gt;

&lt;li&gt;Ruby and Scala are both languages with weird syntaxes, just like Clojure is.  But the mark of a truly useful language is that people will learn it in order to get things done.  People seems to forget how hard object-orientation is when they first learned it.  The same thing can be said of JavaScript.&lt;/li&gt;

&lt;li&gt;Tomorrow&#039;s big language is today&#039;s obscure or nonexistent language that someone finds powerful enough, innovative enough and pleasant enough to do interesting things with.  Have you solved a real problem lately?  Have you enjoyed your programming work lately?&lt;/li&gt;

&lt;/ul&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2008/10/16/the_next_big_thing_an_opinionated_google_search.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2008/10/16/the_next_big_thing_an_opinionated_google_search.html</guid>
    <pubDate>Thu, 16 Oct 2008 18:56:29 GMT</pubDate>
  </item>
  
  <item>
    <title>Patterns Of Learning Through Languages</title>
    <link>http://www.weiqigao.com/blog/2008/05/13/patterns_of_learning_through_languages.html</link>
    
      
        <description>
          &lt;p&gt;&lt;a href= &#034;http://codetojoy.blogspot.com/&#034; &gt;Code To Joy&lt;/a&gt; has ignited a debate on the topic of &lt;a href= &#034;http://codetojoy.blogspot.com/2008/05/logical-fallacies-considered-harmful.html&#034; &gt;You Should Learn New Languages&lt;/a&gt;.  The post is in response to a Gustavo Duarte post titled &lt;a href= &#034;http://duartes.org/gustavo/blog/post/language-dabbling-considered-wasteful&#034; &gt;Language Dabbling Considered Wasteful&lt;/a&gt;, which was carried on &lt;a href= &#034;http://www.infoq.com/news/2008/05/should-you-learn-languages&#034; &gt;InfoQ four days ago&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As always, I claim that both sides have their points.  When I read Gustavo for the first time, I said to myself, &#034;I couldn&#039;t agree more.&#034;  And when I read Michael&#039;s response, I said to myself, &#034;That&#039;s totally what I want to say&amp;mdash;fifteen years ago.&#034;&lt;/p&gt;

&lt;p&gt;Yes, I&#039;m setting this up as the opinion of the young vs. that of the old.&lt;/p&gt;

&lt;p&gt;Here&#039;s what I imagine is going on in the minds of the young and the old.  (I don&#039;t mean to disparaging either the young or the old, we were all young once, and hopefully, we all grow old eventually.  Here&#039;s how to tell if you are young&amp;mdash;when you jump up from your seat shouting &#034;What do you mean I&#039;m too young?&#034; you are young.  And old&amp;mdash;&#034;I&#039;ll let the young ones have fun.&#034;)&lt;/p&gt;

&lt;p style=&#034;margin-left:3em&#034;&gt;
&lt;b&gt;Young&lt;/b&gt;: There are so many new languages out there.  They all look wonderful.  Each one has a special claim to an unfathomable feature (like objects, or closure, or unification, or curried functions, or actors or agents) that will solve the world&#039;s problems. Must learn new languages.&lt;br/&gt;
&lt;b&gt;Old&lt;/b&gt;: I&#039;ve learned a couple dozen programming languages over the years.  I&#039;ve come to appreciate the unique qualities each bring to the table.  The last few languages I learned seems to be reorganizations of features of languages that I already know: Ruby is just like smalltalk, Scala is just like OCaml.  I&#039;m sure I can learn C# as well as anybody if I was unfortunate enough to be put on a C# project.
&lt;/p&gt;

&lt;p style=&#034;margin-left:3em&#034;&gt;
&lt;b&gt;Young&lt;/b&gt;: Bruce Tate says Ruby will kick Java&#039;s ass.  Martin Odersky says Scala combines the goodness of OO with the goodness of functional programming.  Plus he&#039;s a professor in a university.  Herb Sutter says the free lunch if over.  Paul Graham says Lisp is the bestest languages on earth.  Groovy is totally groovy.  Larry Ellison says the world will embrace thin-client network computers.  Must learn new stuff.
&lt;br/&gt;
&lt;b&gt;Old&lt;/b&gt;: Niklaus Wirth said to go with Pascal.  Richard Stallman won&#039;t program in anything but Lisp.  Brad J Cox said Objective-C is a much better OO language than C++.  Bill Gates and Steve Ballmer bet their multi-billion dollar company on XML and SOAP. DBase, Clipper, SQLWindows, PowerBuilder were all very popular at some point.  See where they are now.  I&#039;m glad I chose C++ and Java, which had put the food on my table for the last twenty years.
&lt;/p&gt;

&lt;p style=&#034;margin-left:3em&#034;&gt;
&lt;b&gt;Young&lt;/b&gt;: Learning new and different syntaxes are fun.  Look, in Python and Haskell you use layouts for block structures, cool!  In Scheme, you use nothing but parentheses for syntax. &lt;tt&gt;(+ 1 2 3 4 5)&lt;/tt&gt; saves a lot of keystrokes from &lt;tt&gt;1 + 2 + 3 + 4 + 5&lt;/tt&gt;, cool!  In JavaScript, you can alter a class through its prototype chain, cool! ...  Must learn!
&lt;br/&gt;
&lt;b&gt;Old&lt;/b&gt;: It was fun for a while.  I&#039;ve seen them all.  I&#039;ll read some Perl if I want to have fun.  And there&#039;s always the obfuscated program that compiles under seven compilers&amp;mdash;Fortran, C, Pascal, ...  Underneath them all, are the same little machines that make everything work.
&lt;/p&gt;

&lt;p style=&#034;margin-left:3em&#034;&gt;
&lt;b&gt;Young&lt;/b&gt;: In five years, my desktop machine will have 20 cores.  The only language that will allow me to take advantage of them all is Erlang.  Even Steve Vinoski said so.  Must learn.
&lt;br/&gt;
&lt;b&gt;Old&lt;/b&gt;: In five years, I&#039;ll be seven years away from retirement.  They&#039;ll never come up with a way to easily decompose arbitrary desktop client algorithms into parallel tasks.  Plus, the missile guidance system and the satellite ground station I write were pretty reliable, it was all done in C! 
&lt;/p&gt;

&lt;p style=&#034;margin-left:3em&#034;&gt;
&lt;b&gt;Young&lt;/b&gt;: Scala is the scalable language.  Must learn
&lt;br/&gt;
&lt;b&gt;Old&lt;/b&gt;: Call me when I can do code completion, refactoring and debugging for it in my IDE.
&lt;/p&gt;

&lt;p&gt;Of all the language I learned on my own time, C++ and Java are among the most profitable.  Both landed me new jobs.  Scheme is the most intellectually rewarding.  It allowed me to get through the &lt;a href= &#034;http://mitpress.mit.edu/sicp/full-text/book/book.html&#034; &gt;SICP&lt;/a&gt;. Bash, Gawk, HTML/CSS are the most helpful.  I use them to write little throw-away scripts and to write this blog everyday.&lt;/p&gt;

&lt;p&gt;Groovy, Ruby, Scala, and lately Clojure are my learning for learning&#039;s sake languages.  I&#039;m sure I&#039;m a better programmer because of my learning experience.  But I haven&#039;t profited from them.  None of the languages have become my go-to language.  And I believe I&#039;m at least one year away from being proficient in anyone of the languages, the achievement of which probably requires me to work on an actual project mainly developed in that language.  With a full time job doing Java and C++, and a family to feed, I can&#039;t afford to commit more of my spare time.&lt;/p&gt;

&lt;p&gt;As Michael said, &#034;That&#039;s not momentum.  That, my friends, is &lt;span style=&#034;font-weight: bold;&#034;&gt;inertia&lt;/span&gt;.&#034;&lt;/p&gt;

&lt;p&gt;Alas.  That&#039;s also reality.  You will understand.&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2008/05/13/patterns_of_learning_through_languages.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2008/05/13/patterns_of_learning_through_languages.html</guid>
    <pubDate>Tue, 13 May 2008 17:32:26 GMT</pubDate>
  </item>
  
  <item>
    <title>Friday Java Quiz: What&#039;s Your Favorite Java 7 Feature...</title>
    <link>http://www.weiqigao.com/blog/2008/05/09/friday_java_quiz_whats_your_favorite_java_7_feature.html</link>
    
      
        <description>
          &lt;p&gt;Like in past years, I&#039;m following JavaOne &lt;a href= &#034;http://www.weiqigao.com/blog/2004/06/29/javaone_keynote_infomercialone.html&#034; &gt;from afar&lt;/a&gt;.  All I have access to are the &lt;a href= &#034;http://java.sun.com/javaone/sf/sessions/general/&#034; &gt;general sessions&lt;/a&gt; and attendee&#039;s blog reactions to specific sessions on &lt;a href= &#034;http://java.dzone.com&#034; &gt;JavaLobby&lt;/a&gt;, &lt;a href= &#034;http://weblogs.java.net/&#034; &gt;java.net&lt;/a&gt;, &lt;a href= &#034;http://javablogs.com/Welcome.action&#034; &gt;JavaBlogs&lt;/a&gt;, and &lt;a href= &#034;http://stuffthathappens.com/blog&#034; &gt;StuffThatHappens&lt;/a&gt;.  And on Tuesday&#039;s session, I heard Danny Coward talking about &lt;a href= &#034;http://java.sun.com/javaone/sf/media_shell.jsp?id=FRdamp267556&#034; &gt;new features&lt;/a&gt; for Java 7,&lt;/p&gt;

&lt;center&gt;
&lt;iframe src=&#034;http://sunfeedroom.sun.com/linking/index.jsp?skin=oneclip&amp;fr_story=FRdamp267556&amp;rf=ev&amp;hl=true&#034; width=&#034;322&#034; height=&#034;278&#034; scrolling=&#034;no&#034; frameborder=&#034;0&#034; marginwidth=&#034;0&#034; marginheight=&#034;0&#034; &gt;&lt;/iframe&gt;
&lt;/center&gt;

&lt;p&gt;which, BTW, is scheduled for Summer of 2009.&lt;/p&gt;

&lt;p&gt;This, I suppose, is the same talk as the one I mentioned &lt;a href= &#034;http://www.weiqigao.com/blog/2006/12/07/you_wont_believe_this_but_the_arrow_operator_is_coming_to_java_7.html&#034; &gt;509 days ago&lt;/a&gt;.  However, the scope has clearly shrunk quite a bit.&lt;/p&gt;

&lt;p&gt;Today&#039;s quiz is a rhetorical one:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Q&lt;/b&gt;: What is your favorite new Java language feature that did not make it into Java 7?&lt;/p&gt;

&lt;p&gt;I&#039;ll start with mine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;XML literal (I&#039;m virtually alone on this one, but still...)&lt;/li&gt;
&lt;li&gt;Properties (can anyone tell if it&#039;s in or not?)&lt;/li&gt;
&lt;li&gt;Reified types for Java generics (&lt;a href= &#034;http://www.weiqigao.com/blog/2007/01/20/java_generics_let_the_other_shoe_drop.html&#034; &gt;Erase Erasure&lt;/a&gt;, as I&#039;ve call it 475 days ago)&lt;/li&gt;
&lt;/ul&gt;
        </description>
      
      
    
    
    
    <comments>http://www.weiqigao.com/blog/2008/05/09/friday_java_quiz_whats_your_favorite_java_7_feature.html#comments</comments>
    <guid isPermaLink="true">http://www.weiqigao.com/blog/2008/05/09/friday_java_quiz_whats_your_favorite_java_7_feature.html</guid>
    <pubDate>Fri, 09 May 2008 13:05:19 GMT</pubDate>
  </item>
  
  </channel>
</rss>

