编程语言评价标准
编程语言需要提供足够简单和丰富的概念来表达我们要描述的世界;
并且执行的效率要足够高
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/
------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。