A few days ago Jonas Elfström tweeted the page count of several language specifications (based on a quick check of the specification documents, so we could probably argue about what he is exactly counting but let’s assume these numbers are more or less correct):
- C++ 865 (300ish without the standard libs)
- Java 644
- C 540
- C# 511
- Ruby 311
- Smalltalk 303 (only 35 pages without stdlibs)
- SystemVerilog 1315
- SQL 762
- Haskell 329
- Forth 309
- Erlang 31
- F# 300
- Dart 118
- Go 109(46)
- Scheme 90
So, how do you think UML related to these other specifications? UML is a modeling language, more abstract than those programing languages, so should be also smaller, right?
Well the page count for the UML specification is : 748+230 = 978 or what it’s the same, UML beats all other languages at least regarding the specification lenght.
This numbers is the sum of the two parts of the UML specification (the infrastructure and the superstructure). From the OMG page: “Beginning with UML 2.0, the UML Specification was split into two complementary specifications: Infrastructure and Superstructure. The UML infrastructure specification defines the foundational language constructs required for UML 2.4.1. It is complemented by UML Superstructure, which defines the user level constructs required for UML 2.4.1. The two complementary specifications constitute a complete specification for the UML 2 modeling language”
The good news is that one of the major goals of the upcoming 2.5 version is a spec simplification.