Replies: 15 comments 7 replies
-
A good language implementation should tell you places in your code that it found difficult to optimize, in case there is something you can change to make the compiler's job easier |
Beta Was this translation helpful? Give feedback.
-
Toolchains: additional static analysis tools that programmers can use in the IDE to help them understand and improve their code. Some of this might be based on the languages type system |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should have good error reporting (where was the error and why did it occur). |
Beta Was this translation helpful? Give feedback.
-
A language implementation could check for common security issues, such as buffer overflows, or prevent them in the first place with types. |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should have necessary type checking and prevent unexpected behaviors before execution. (Actually I'm not sure this is about the language itself or the implementation). |
Beta Was this translation helpful? Give feedback.
-
Language implementations should be modular and extensible. |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should be able to check for potentially unsafe code or code with undefined behavior. |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should let you use the hardware that it supports without too much hassle. |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should "lift" the domain it operates on to a higher level of abstraction, thus leaving the programmer with fewer things to worry about. |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should make profiling and any performance evaluation easier. |
Beta Was this translation helpful? Give feedback.
-
This may be a bit different from the prompt, but a good language implementation (as with any program) should not have bugs. (How have people tested/verified their compilers? Is the process different from testing/verifying any other kind of code?) |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should make type systems of said language easier to use; whether by making type error messages accurate, or having good type inference. One cool thing I have not yet seen in compilers I've used is the ability to say why a type inference failed in a human readable way and what can be done to correct it. |
Beta Was this translation helpful? Give feedback.
-
A good language (& domain-specific language) implementation should give some hints on optimizing on targeted hardwares. |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should be conscious of people's programming habits and conventions. In other words, it shouldn't assume all valid programs are equally likely to appear in practice. |
Beta Was this translation helpful? Give feedback.
-
A good language implementation should be able to generate code that performs how the user expects the code to, for example, not having slow-downs at surprising places in the code. |
Beta Was this translation helpful? Give feedback.
-
There's not much to Lesson 1—just write your ideas about what goes into a good language implementation other than optimizations!
Beta Was this translation helpful? Give feedback.
All reactions