Hanselminutes Podcast 29 - Dynamic vs Compiled Languages
My twenty-ninth Podcast is up. This episode is about disruptive technologies like Ruby on Rails, the rise of dynamic languages and what it means to the average .NET developer.
We're listed in the iTunes Podcast Directory, so I encourage you to subscribe with a single click (two in Firefox) with the button below. For those of you on slower connections there are lo-fi and torrent-based versions as well.
This show was FULL of links, so here they are again. They are also always on the show site. Do also remember the archives are always up and they have PDF Transcripts, a little known feature.
Links from the Show
BLINQ (heg) | ARSTechnica on BLINQ (hej) | Castle (hen) | |||
LINQ (heh) | Ruby on Rails (hel) | ActiveRecord (hem) | |||
C# 3.0 (hei) | FTP Online Tutorial on BLINQ (hek) |
NEW COUPON CODE EXCLUSIVELY FOR HANSELMINUTES LISTENERS: The folks at XCeed are giving Hanselminutes listeners that is Coupon Code "hm-20-20." It'll work on their online shop or over the phone. This is an amazing deal, and I encourage you to check our their stuff. The coupon is good for 20% off any component or suite, with or without subscription, for 1 developer all the way up to a site license.
Our sponsors are XCeed, CodeSmith Tools, PeterBlum and the .NET Dev Journal. There's a $100 off CodeSmith coupon for Hanselminutes listeners - it's coupon code HM100. Spread the word, now's the time to buy.
As I've said before this show comes to you with the audio expertise and stewardship of Carl Franklin. The name comes from Travis Illig, but the goal of the show is simple. Avoid wasting the listener's time. (and make the commute less boring)
- The basic MP3 feed is here, and the iPod friendly one is here. There's a number of other ways you can get it (streaming, straight download, etc) that are all up on the site just below the fold. I use iTunes, myself, to listen to most podcasts, but I also use FeedDemon and it's built in support.
- Some other clients are Doppler (also suppose Windows CE), FireAnt, Nimiq, and PrimeTime Podcast.
- Note that for now, because of bandwidth constraints, the feeds always have just the current show. If you want to get an old show (and because many Podcasting Clients aren't smart enough to not download the file more than once) you can always find them at http://www.hanselminutes.com.
- I have, and will, also include the enclosures to this feed you're reading, so if you're already subscribed to ComputerZen and you're not interested in cluttering your life with another feed, you have the choice to get the 'cast as well.
- If there's a topic you'd like to hear, perhaps one that is better spoken than presented on a blog, or a great tool you can't live without, contact me and I'll get it in the queue!
Enjoy. Who knows what'll happen in the next show?
About Scott
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
About Newsletter
This latest show is the best one to date. Keep up the good work.
I don't think that developing apps with dynamic languages has to be test-driven, but needs strong testing. Test-driven implies test first, and in a .NET Rocks show (I think one with Ted Neward) someone pointed out that test first loses some intellisense advantages since you are writing tests for methods/objects that don't exist yet. I think part of Carl's skepticism may have been based on the "test first" principles, not in strong, thorough testing overall.
I thought it was great that you pointed out Smalltalk has had these dynamic features for 30 years. Have you look at Smalltalk web application framework, Seaside?
http://www.seaside.st/
As I understand it, Seaside was written by a Ruby on Rails defector who was dissatisfied with the performance of the Ruby interpreter.
Also, I think one of the benefits of Ruby is that it is slipping some more functional programming paradigms into the mainstream, especially higher order functions. Just for fun, you might look into some of the functional/higher order programming things going on in the C++ world via boost, namely lambda and functional.
http://www.boost.org/libs/libraries.htm#Function-objects
Lastly, I would like to get your opinion on data access in ASP.NET. If you were starting a brand new ASP.NET 2.0 application, what would you use for Data Access? The Enterprise Libraries DAAB, NHibernate, Castle's ActiveRecord, or other? As an apps guy trying to learn web development on the side, this question has been troubling me quite a bit.
Anyway, keep up the good work.
Jim
For example:
http://perseus.franklins.net/hanselminutes_0024.pdf
1) Inhereting from ActiveRecord
2) Creating public properties (although you need to do it a certain way, which is not complicated at all)
We don't use reflection either. Inhereting from this base class allows you to do all the CRUD stuff you normally would, as well as full querying (parameterized and sorted). I put together a webcast showing this off - you can see the link on our main page at http://www.commercestarterkit.org
Anyway- nuff about that. Dig the show! I just had a discussion about this very thing with an MS Tech Evangelist (J Sawyer). I was arguing the virtues of Duck Typing :) and we went all over the place about ASP.NET's propensity to (at times) breed complexity...
This was a great show, especially hearing you guys go back and forth about test driven development. I've been trying to think of a way I can introduce it as more than a suggestion to my peers and hearing what you had to say was informative. Two of the big obstacles in our organization to something like this are:
1. Lack of abstract thinking which means that the powers that be have a hard time conceptualizing time saved in the bug/revision cycle since that has to be argued from estimation.
2. Magic deadlines; arbitrarily picked by someone (on a lot of projects including my current one we don't even know *who* picked the date to "finish"). The time of writing tests and training everyone on how to do TDD and coming up with an organized approach seems like unproductive time (see #1) to management.
I think the best thing about these new technologies is that they are as much about ideas as they are about implementations. ActiveRecord, Convention Over Configuration, Test Driven Development - all are agnostic of specific language.
As for dynamic languages my approach is as follows: using Watir and creating utilities for other developers on staff will probably be the best argument for using them. I also think there's a lot I learn by just seeing an approach and doing something similar in .NET -
Did I say that was a great podcast? You're on fire Scott -
One challange with making test cases the sole way to find bugs is that it requires the developer/tester to proactively think up every possible scenario where the code breaks. In reality, none of us are perfect, and there are always cases we forget to cover -- or discover and add later.
One nice benefit with having a type-safe compiler is that it will always perform at least one level of analysis on your code, and help verify/uncover a bunch of issues which you might otherwise forget. For example: type coersion/conversion issues dealing with floats/decimals/doubles/etc that a junior developer in a non type-safe environment could likely make mistakes with (and forget to test) will be automatically caught as a warning/error in C# or VB.NET.
Having a type-safe compiler doesn't at all eliminate the need for testing (a common misperception) or undercut the importance of TDD. But I would argue that it can significantly help in adding further robustness to a code-base.
Comments are closed.