编程语言评价标准

 

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

并且执行的效率要足够高

 

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/

 


------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。