Hasty Briefsbeta

Bilingual

Go is an 80/20 language

10 months ago
  • #programming
  • #design-philosophy
  • #golang
  • Go is considered the most hated programming language due to its 80% utility with 20% complexity design philosophy.
  • The hate stems from users wanting more utility (81%, 85%, 97%), which requires significantly more work (e.g., 7% more utility needs 36% more work).
  • Examples of Go's 80/20 design include struct tags vs. annotations/macros, the simplicity of Go's testing library compared to Java's jUnit, and goroutines vs. async in C# or Rust.
  • Go initially lacked user-defined generics but provided built-in generic types (arrays/slices, maps, channels), which worked well for over a decade.
  • Most languages (C#, Swift, Rust, JavaScript) trend toward 100% utility at 400% cost, leading to endless feature additions.
  • The 80/20 design is optimal; going below (e.g., 70/30) risks making the language insufficiently useful (e.g., no enums vs. no structs).
  • Additional features increase user work (learning syntax, patterns, guidelines) and implementor work (complexity, bugs, slow development).
  • Google's C++ style guide reduces the language's complexity (95% to 90%) to manage shared codebases effectively.
  • Swift's complexity has led to a slow, crashy compiler despite extensive resources, while Go's simplicity ensured robustness from version 1.0.