Expressive power or why programming in java feels like shit.

Posted by on October 7, 2013

Lets take Java and Python

You can find a lot of benchmarks that shows that Java is faster than Python, a lot faster. That’s a fact!


Why didn’t it feel that way when coding in Python versus Java?

Why you can feel that doing a task in Python is a way a lot faster and “cheaper” than doing the same in Java ?

And i’m not going to publish the “hello world” comparison xD


Why when you try Python, you start loving the simplicity, the flexibility, the terseness, the rapid development?

Why Java doesn’t offers those feelings?

Don’t get me wrong, I’m primarily an Android/Back-end Developer and i have to use Java at-least 40 hours/week.

And I still hate it. It limits creativity by bogging down me in an ocean of shit.

That’s why, i started to think about programming languages “productivity”.

How a programming language is or feels more productive or not?

Why this language is “better” or not?

 With those feelings and some search, i just found the answer: Expressive Power

“In computer science, the expressive power (also called expressiveness or expressivity) of a language is the breadth of ideas that can be represented and communicated in that language.

The more expressive a language is, the greater the variety and quantity of ideas it can be used to represent.”


Knowing this, and making use of my bad memory, i just remembered one of those fast read pages on Code Complete 2Ed (I’m guilty for fast reading):

cc2 Ratio of High-Level-Language Stateme

“Table 4-1 shows typical ratios of source statements in several high-level languages to the equivalent code in C. A higher ratio means that each line of code in the language listed accomplishes more than does each line of code in C.”

So, this, shows the Expressive Power of these languages.

In some way this also shows how high-level a language is ? Just thinking on those studies that shows that programmers working with high-level languages achieve better productivity and quality than those working with lower-level languages.

Of course, the expertise level of individual counts when performing a task.

For a better reference, check the papers at the bottom of the Table 4-1.

I know this data is “old”, i would like some recent studies,

but coding in java still feels like shit and now i really know it can be measured (just saw Prechelt 2000)