---
layout: post
title:  "I Like Languages That Expect Me To Be a Great Programmer"
date:   2017-01-20 20:05:00
description: "Languages that are getting too 'safe'!"
categories: [programming]
tags: []
---

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](http://blog.cleancoder.com/uncle-bob/2017/01/11/TheDarkPath.html).

Make sure to read his follow-up post too: [Types and Tests](http://blog.cleancoder.com/uncle-bob/2017/01/13/TypesAndTests.html).

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.
