编程语言评价标准

编程语言评价标准

 

编程语言需要提供足够简单和丰富的概念来表达我们要描述的世界;

并且执行的效率要足够高

 

Enough of the small talk, how do we go about comparing these two goliaths? In reality this can’t be a true comparison, as Angular is a framework and React a library; but we will be looking at some of the important aspects we look at when considering technologies for our projects:

 

  • Abstraction – Can we represent complex things in ways that are understandable?
  • Performance – Does it scale well, with fast response times? In my browser? In my code?
  • Integration – Can I use libraries/frameworks I’m already familiar with? Can I get help if I have a problem?
  • Simplicity - What is the learning curve? Does it follow relatable architectural principles? How quickly can a new developer become productive?
  • Testability - How easy is it to test?
  • Debugging – Problems occur, how easy is it to understand what happened?
  • State Management – Does it handle state correctly and efficiently?

 

https://capgemini.github.io/react/reacting-to-change/

 

 

Highly Expressive? That would help reading and writing. Does the language have:

  • Operators like A = B + C which adds whole arrays in Fortran 90?
  • Abstract data types (with encapsulation)?
  • Module and package structures to aid programming-in-the-large?
  • A rich operator set, as in languages like APL and Perl?
  • Rich type/object structures supporting inheritance, composition and aggregation?
  • Polymorphism, overloading, aliasing?
  • Higher order functions?
  • Pattern matching?
  • Built-in control flow (e.g. unification, backtracking)?
  • Facilities for symbolic computation?
  • Support for asynchronous, concurrent, and distributed programming?

 

 

 

Understanding Evaluation Tradeoffs

You can’t have everything, it seems:

  • The expressive power of dynamic typing, polymorphic type systems, functions as first-class values, higher-order functions, and closures can sometimes impact performance.
  • Automatic garbage collection saves billions of dollars in programmer time, but isn’t always a good idea in embedded, life-critical, real-time systems.
  • A language may be wonderful and amazing and increase developer productivity, but if no talented people are out there that know the language, how will you hire the best team?
  • Languages that are intentionally designed to be horrible (Brainfuck, Java2K, Malbolge, etc.) have some intellectual and educational value (and offer amusement).

 

https://cs.lmu.edu/~ray/notes/evaluatingprogramminglanguages/

 

上一篇:12.19 Aggregate (GROUP BY) Functions


下一篇:内置函数