I was looking at code.golf the other day and I wondered which languages were the least verbose, so I did a little data gathering.
I looked at 48 different languages that had completed 79 different code challenges on code.golf. I then gathered the results for each language and challenge. If a “golfer” had more than 1 submission to a challenge, I grabbed the most recent one. I then dropped the top 5% and bottom 5% to hopefully mitigate most outliers. Then came up with an average for each language, for each challenge. I then averaged the results across each language and that is what you see here.
For another perspective, I ranked each challenge then got the average ranking across all challenges. Below is the results of that.

Disclaimer: This is in no way scientific. It’s just for fun. If you know of a better way to sort these results please let me know.
I’d love to see the same comparison with more real-world use-cases.
Code golf, is mostly pretty simple use-cases, which have been optimized many times over.
When, you build out an application with a user-interface, proper event handling, etc… c++ is MUCH more verbose then c# for example, and they are ranked pretty close together.
Java placed way better than I expected
System.out.print("I agree.");Don’t you mean:
class AgreementManagerClass { public static void main(String[] args) { System.out.println("I agree."); } }
I’m really surprised to see Java ranked as less-verbose than OCaml.
Here’s an equivalent code sample in Java 17 vs OCaml:
Java:
abstract sealed class Expr permits Value, Add, Subtract, Multiply, Divide { abstract long eval(); } record Value(long value) extends Expr { @Override long eval() { return value; } } record Add(Expr left, Expr right) { @Override long eval() { return left.eval() + right.eval(); } } record Subtract(Expr left, Expr right) { @Override long eval() { return left.eval() - right.eval(); } } record Multiply(Expr left, Expr right) { @Override long eval() { return left.eval() * right.eval(); } } record Divide(Expr left, Expr right) { @Override long eval() { return left.eval() / right.eval(); } }OCaml:
type expr = | Value of int | Add of expr * expr | Subtract of expr * expr | Multiply of expr * expr | Divide of expr * expr let rec eval = function | Value value -> value | Add (left, right) -> (eval left) + (eval right) | Subtract (left, right) -> (eval left) - (eval right) | Multiply (left, right) -> (eval left) * (eval right) | Divide (left, right) -> (eval left) / (eval right)…Java has so much more syntactical overhead than OCaml, and that’s even with recent Java and being pretty aggressive about using boiler-plate reducing sugars like Records. And F# has even less, since it doesn’t require you to use different operators for numerics or do as much manual casting between strings/numerics
Why is sql so low?



