Code Mash and Dynamic Languages
Tonight there was a Programming Languages panel at Code Mash. Lots of things came up, from Humane Interfaces in Ruby, to significant whitespace in Python, to the Java’s seriously broken generics model.
Most of what was said was pretty non-controversial. They guy who asked how people feel about whitespace in Python got a good response from the PHP guy, who I don’t see that as a liablity, it’s a feature. Bruce Eckel used the line “I like that Python and my brain see code structure the same way,” which is a line I’ve been using a lot recently.
Perhaps the most interesting thing I took away from the whole thing came from the discussion of what language to talk about first.
Neal Ford and several others recommended Python, which I obviously think is good advice. James Ward (Flex evangelist) suggested Assembly, and somebody suggested Scheme. None of that is particularly noteworthy, the noteworthy thing is that regardless of which first language people chose, everybody agreed that schools need to teach multiple languages, because they are in business to teach new ways of thinking.
This directly contradicts the direction being taken by most computer science programs that I’ve run into lately. They seem to all have decided to focus very heavily on one language (usually Java). It seems that very few schools seem to believe that teaching multiple languages from multiple language families is critical to developing good computer scientists.
While I think we have to acknowledge that there is an important loss of depth when you “go broad” I think that the dangers of single language “Java Factory” schools are significant. Learning Python doesn’t make Java programmers better programmers unless they learn Functonal Programming, metaclass programming, and otherwise stop writing Java programs in python. You need to get deep enough into Python to learn how to think differently, and that takes time.
The right balance is probably hard to find, but what we see right now is people who don’t particularly seem to have gone deep or broad. They’ve only learned Java in school, but they don’t know how the lower layers of JNI work, or why some calls are so much more expensive than others.
So we get the worst of both worlds, somebody who’s education is neither deep nor broad.
The other thing I want to blog about is James’s suggestion that we need tools to help us build better user interfaces, which I think is very true, and Neal Ford’s suggestion that you can teach User Interface Design, but that you can’t teach “Aesthetics”. I think he is right that you can teach UI design, and that we haven’t done a good job of doing that. But I have to respectfully disagree in that I definitely believe that you can learn better design skills. Learning about Design is learning how to think differently, and learning how to really look at designs that work, how to experiment with visual ideas, but it is absolutely something that is teachable.
But it’s getting late, so more on that tomorrow.
0 Responses to “Code Mash and Dynamic Languages”