Skip to content

Instantly share code, notes, and snippets.

@piot
Last active October 15, 2023 17:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save piot/27f5d4348c22cdeb193ae450d661b86c to your computer and use it in GitHub Desktop.
Save piot/27f5d4348c22cdeb193ae450d661b86c to your computer and use it in GitHub Desktop.
Programming Language Criteria

Programming Language Criteria

  1. Strongly Safely Typed with an extensive type system. (e.g. enums with different kind of arguments).
    • If it passed compilation, it should run without runtime errors
    • Strongly typed increases chance that you catch bugs early and makes it easier to do refactorings.
  2. Functional and Procedural programming support. Preferably no OOP at all.
  3. No garbage collection. Nothing should happen that is not part of my code.
  4. Not using a virtual machine or runtime or similar. The executable should be able to run without any supporting files or installs.
  5. Performance. No extra runtime cost in speed or memory for the language abstractions.
  6. Memory safety. No wild or dangling pointers, no array or buffer overflows, no memory overwrites. Should have references and no concept of a null pointer.
  7. Included Package manager with reproducibility (lock files, or strict version strategy).
  8. Included Test framework.
  9. Good compiler warnings.
  10. Good lint support. (Static type checking)
  11. Cross compilation to multiple CPUs and platforms. Including WebAssembly and Game Consoles.
  12. Fast compilation for quick iterations.
  13. Code produced should be very optimized (LLVM support).
  14. A standard (or generally agreed upon) code style with included formatters.
  15. "low cermony" syntax. Should not have wrap functions in static classes. Should not have to prefix function with public, internal, private, virtual, etc. Functions are so common so the prefix should be short or non-existing.
  16. Advanced debugger. (can be separate)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment