<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for mattbriggs</title><link>http://disqus.com/by/mattbriggs/</link><description></description><atom:link href="http://disqus.com/mattbriggs/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Sat, 01 Aug 2009 00:32:08 -0000</lastBuildDate><item><title>Re: Brizzled: C# is now a better language than Java</title><link>http://brizzled.clapper.org/blog/2009/07/31/c-is-now-a-better-language-than-java/#comment-13772546</link><description>&lt;p&gt;Good blog post, and it seems to have sparked a good discussion :)&lt;/p&gt;&lt;p&gt;Two points: First of all, Suns clientel is top tier Enterprise folks who are developing top tier Enterprise systems in a top tier Enterprise fashion. These people want API stability over new features, because they want to be able to get better performance/security/stability through updating their JVM, but do not want to have to update their berjillion line codebases every time. The java team wants to do more, but they have to think very long and hard before adding anything (aparently even generics ended up causing more of a problem then they thought it would)&lt;/p&gt;&lt;p&gt;I think this is why Sun supports (and spearheads in the case of JavaFX) "alternative" JVM languages. They allow for pretty much seamless interop with existing classes, but don't rock the boat too much with the capital-e-enterprise clients.&lt;/p&gt;&lt;p&gt;Second point is that (no offense) but you are pretty new to C#. I have been working in microsoft-land for a few years now, and while the language features in C# are great to have, the language is just chock full of these inconsistencies, and the platform has these oddly gaping holes.&lt;/p&gt;&lt;p&gt;For example, properties are great, but why cant you use ref or out parameters with them? the compiler just turns them into methods anyways, why the additional restriction?&lt;/p&gt;&lt;p&gt;Type inference is great, but why couldnt they have gone the extra mile and added _good_ type inference? (like scala) Like using var in parameters or returns for methods.&lt;/p&gt;&lt;p&gt;Why are methods not virtual by default? It makes things like dynamic proxies far less effective, especially when there is nary a virtual to be seen in the whole base class library.&lt;/p&gt;&lt;p&gt;Generic invariance, with zero options to allow for contravariance (polymorphism in the generic type)&lt;/p&gt;&lt;p&gt;When no enum inheritance?&lt;/p&gt;&lt;p&gt;What is their freakin obsession with the "provider model" (which is a borderline anti-pattern), when there are far better alternatives that have been tried and tested for decades in the field?&lt;/p&gt;&lt;p&gt;Why favor inheritance over composition for polymorphism, and the few times there are actually interfaces in the BCL they violate the Interface Segregation Principal (an example of this is try implementing an &lt;a href="http://asp.net" rel="nofollow noopener" target="_blank" title="asp.net"&gt;asp.net&lt;/a&gt; membership provider. There are probably 100 methods in the interface that are around corner case scenarios, but since it is just one uber-interface, they all must be implemented)&lt;/p&gt;&lt;p&gt;Functional style list processing is fantastic, but a) why call everything different names then the rest of the world (Select vs Filter, Aggregate vs Reduce, etc), and why implement some on IEnumerable&amp;lt;t&amp;gt;, but not IList&amp;lt;t&amp;gt;? (ran into this today when I wanted to do a fold on a list, STILL pissed off about it)&lt;/p&gt;&lt;p&gt;Where, where, where, where the hell is BigInteger?? It has been almost a decade....&lt;/p&gt;&lt;p&gt;I could go on. Every language has its warts, but c# has an absolutely shocking amount of them when you start going deep, and seems to accumulate them at a rate that far surpasses other languages. At the end of the day I would rather have an oddly implemented feature then not have it at all, but it is not all peaches and sunshine that it appears to be when you first learn the language (or are surrounded by Microsoft Developers who believe that all good things come from redmond). &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mattbriggs</dc:creator><pubDate>Sat, 01 Aug 2009 00:32:08 -0000</pubDate></item><item><title>Re: Brizzled: C# is now a better language than Java</title><link>http://brizzled.clapper.org/blog/2009/07/31/c-is-now-a-better-language-than-java/#comment-13772028</link><description>&lt;p&gt;There tends to be far more platform specific bits in .net code then there is in java code, and there are major parts of the stack (Winforms, the .net 3.0 Windows &amp;lt;x&amp;gt; Foundation stuff, &lt;a href="http://ADO.net" rel="nofollow noopener" target="_blank" title="ADO.net"&gt;ADO.net&lt;/a&gt;, &lt;a href="http://ASP.net" rel="nofollow noopener" target="_blank" title="ASP.net"&gt;ASP.net&lt;/a&gt;, etc, etc) that are under patents by MS and are not safe to invest in on other platforms. While it is possible to write perfectly portable .net code, most of the code written in .net languages use features that are not portable for technical or legal reasons. (for example, a portable client app would use GTK# or something similar, not WinForms or WPF)&lt;/p&gt;&lt;p&gt;In the java world, it is not like that. You will end up with platform specific quirks on any non trivial project, but the typical java codebase is pretty much binary compatible for all platforms.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mattbriggs</dc:creator><pubDate>Sat, 01 Aug 2009 00:05:48 -0000</pubDate></item><item><title>Re: Brizzled: C# is now a better language than Java</title><link>http://brizzled.clapper.org/blog/2009/07/31/c-is-now-a-better-language-than-java/#comment-13771829</link><description>&lt;p&gt;Good programmers can get comfortable with a new language in a week, and view languages as tools, not religions to be guarded and defended from slander.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mattbriggs</dc:creator><pubDate>Fri, 31 Jul 2009 23:56:37 -0000</pubDate></item><item><title>Re: Brizzled: C# is now a better language than Java</title><link>http://brizzled.clapper.org/blog/2009/07/31/c-is-now-a-better-language-than-java/#comment-13771780</link><description>&lt;p&gt;Language features allow the writing of clearer, not to mention less, code to accomplish the same purpose. it is the difference between&lt;/p&gt;&lt;p&gt;button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("The button was pressed!"); } }); &lt;br&gt;and &lt;br&gt;button.Action += ((e) = &amp;gt; Console.WriteLine("The button was pressed!"));&lt;/p&gt;&lt;p&gt;They both accomplish the exact same thing. I would call the C# example terse, but it isn't exactly bad or unreadable. The java example on the other hand is absolute insanity, and as a working programmer I find it hard to believe that other working programmers would consider that easier to learn , maintain, or bug fix.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">mattbriggs</dc:creator><pubDate>Fri, 31 Jul 2009 23:54:10 -0000</pubDate></item></channel></rss>