I Like Languages That Expect Me To Be a Great Programmer
A co-worker of mine recently turned me on to Uncle Bob's blog. Yup, that's Uncle Bob Martin.
Here's one of his latest posts that sparked a thought in me: The Dark Path.
Make sure to read his follow-up post too: Types and Tests.
When I got done reading those posts, this was my simple thought: I like programming languages that expect me to be a great programmer.
Think of anyone you know who is great at something. Is it an artist? A politician? A teacher? I just watched American Sniper so I'm thinking of someone like Chris Kyle. He was a great sniper. His skill with a rifle was amazing.
Now, think of why that person is considered great at what they do. Is it because what they do is easy? Probably not. It's probably because what they do is extremely difficult, but they still do it well. Or, it may be something that's easy to do, but very difficult to do really well. Think of shooting a rifle. It's very easy to shoot a rifle. Make sure it's loaded. Aim it somewhere (safe). Pull the trigger. That's it. But how about hitting a target 100 yards away? How about 1000 yards? Yeah, that gets really hard. Only a great marksman could do that.
The reason it's hard to be a great marksman is because of the flexibility of a rifle. It's relatively simple design lets you take it almost anywhere and lets you aim it at almost anything. The only way to make a rifle that even a novice could use to hit targets 1000 yards away would be to mount it on some kind of stand, add advanced aiming software somehow and let it pull the trigger. But, that makes it hard to use, doesn't it? You now at the least have a bulky tripod to lug around a need for a power source for the computer to aim the thing.
That's how overly restrictive programming languages have become for the sake of safety. They're getting unwieldy. I want a flexible language that may be harder to use when I'm a novice, but once I'm an expert, it lets me do amazing things.