Skip to content

Files

Latest commit

Feb 13, 2025
06fb8e3 · Feb 13, 2025

History

History

Languages-And-Platforms

Choosing Magical Computing Languages and Platforms

Any sufficiently advanced technology is indistinguishable from magic.

  • Arthur C. Clarke

DRAFT NOTES

  • Need to
  • expand great platform list
  • should we include Magical Tools?

TL;DR

A great programming language running on a great platform should amplify your computing abilities, giving you seemingly magical skills.

What Should Great Languages Provide?

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.

  • Report on the R5RS standard for the Scheme Programming Language

A Great Programming Language should make programming

reliable
behaving as expected
  • a powerful, expressive and consistent semantic model
  • supporting all important paradigms
    • especially declarative paradigms
      • e.g. functional, constraint, relational
    • and metaprogramming
      • generic or abstract code from which specialized code is automatically generated as needed
      • e.g. generic functions & modules; abstract types & kinds
productive
being as easy as possible to
  • understand and maintain
    • behavior profile is lexically apparent
      • types, constraints, etc.
      • easy to understand
      • automatically verified
  • innovate and evolve
    • friendly to new ideas
    • hackable without fighting existing structure
  • port to another OS or CPU
    • should be automatic by default
    • anything non-portable should be labeled as such
efficient
fast and not a memory hog
  • no need to write libraries in another language
  • compiling efficiently to all desired and major CPUs
    • e.g. by using the backend of llvm or gcc

See this survey of great programming languages.

What Should Great Platforms Provide?

A Great Computing Platform should

  • Support great languages
  • Provide a rich set of useful libraries
  • Allow easy interoperation of code written in different source languages
  • Enhance program understanding and analysis
  • Provide great editing and refactoring tools
  • Provide portability across different OSs and CPUs
  • Management of system lifecycles
    • Version management integrated with
    • Automated testing and deployment

See this survey of programming platforms.