A bad argument

I browsed blogs for the first time in a couple weeks the other day.  Somewhere in a static typed vs dynamic typed languages argument post some clown said (paraphrasing), “we don’t need no stinkin’ Ruby because we can do metaprogramming in C# with IL generation.”  Yeah you can, and I have as a matter of fact, but it’s painful and not even remotely time effective for anything but highly reusable, simple code.  I started to say in a conversation today that the author of that statement should be beaten with a stick for that comment, but seeing as the author was obviously a masochist, that seemed like sending the wrong type of signal.

 

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Jae

    This is why I find Groovy very compelling. You get all the power of a dynamically typed language, but you can switch to Java for things that don’t need it and get your static typing.

  • http://dotnet.agilekiwi.com John Rusk

    Another difference, which is also very important, is that in C# you can only call things that are known at compile time. The IL-generated functionality has to be hidden behind delegates, interfaces or some other structure acceptable to the compiler. Contrast that with dynamic languages which let you add methods right onto existing classes at runtime.

  • http://podwysocki.codebetter.com Matthew Podwysocki

    I don’t think even Anders will argue in favor of metaprogramming in IL as a viable option for doing that statically. He already pretty much said so here:
    http://se-radio.net/podcast/2008-05/episode-97-interview-anders-hejlsberg

    I’d rather see expressions and such through F# or some other mechanism, but the last thing I’d ever want to see is to evaluate IL as a metaprogramming style. I don’t think that person truly understands metaprogramming and the mechanisms required to make it easier.

    Matt

  • http://kohari.org/ Nate Kohari

    Yeah! And we don’t need C either, because we could just write everything in assembly! In fact, who needs language support? Let’s just start writing machine codes. And don’t even get me started on source control… punchcards are plenty!

  • Avish

    Shameless (Self-)Promotion: you can mix static and dynamic typing, enjoy both metaprogramming and generics, stay on the CLR and be natively interoperable with C# — all using Boo (http://boo.codehaus.org).

  • http://www.geekdaily.net Justin – Web Development Blog

    I often flip flop back and forth between which is my favorite, dynamic or static typing.

    I really like the dynamic typing of PHP, Python, and JavaScript but there are lots of days that I like the static typing of C#. It really depends on the day.

    Generics, however, have been invaluable in C#. I hated using ArrayLists and Hashtables.