HoTT wrote:What exactly makes a language a managed one? I think there are at least two definitions flying around, both constantly changing. The discussion makes not much sense this way.
Originally
it was Microsoft who coined this term. They assume a runtime engine performs some management tasks.
But it is clear that part of runtime management can be avoided if it is known what exactly a program does. Brendan insists that it is all management tasks that can be avoided at runtime, but my position is that his statement is overconfident and I try to show where he is missing the point.
Brendan wrote:You've shifted "automatically detected at compile time" (my first category) into your "manual operations" column, and this mistake has led you to a very incorrect conclusion.
But how can I shift something named using word "automatically" from a column with "automatic operations" name?
Brendan wrote:Given the choice between an "unmanaged" language that frees me from some tedious work and detects most problems at compile-time, and a managed language that is bloated with boilerplate and hassles that only detects problems at run-time; I'll choose whichever language gives me the freedom I need to produce the highest quality/best performing software because the quality/performance of the end product is more important than me being lazy and not bothering to do my job.
Well, let's look closely at those intermixed entities that you have coupled within this reply.
1) It is "managed" vs "unmanaged" languages discussion.
2) It is a discussion about how much work can be performed at compile time.
3) It is a discussion about what would be left to the runtime management.
4) It is about how much managed environments are "bloated with boilerplate and hassles".
5) It is about what existing managed environment compilers can detect at compile time.
6) It is about your understanding of terms in the phrase "highest quality/best performing software".
7) It is about your understanding of word "freedom" in context of programming tools.
8 ) It is the question about what is more important for a majority of developers and how those priorities are related to your vision of importance of some features of an end product.
9) It is about how far you can extend your fight with laziness and "not bothering to do my job".
10) It is about how eager are other developers to accept your fight with laziness and how long they would be agree to follow your standards of quality and performance (in your understanding).
This statement can be accepted as your position declaration, but it in no way can be accepted as a discussion related proof.
For a correct discussion it is important to determine the discussion goal and it's space. The 10 mentioned entities define a very broad space and make the goal very unclear.
But I'll try to return the discussion on track. And for doing it I can represent your view of a your preferred language as something that prevents all bugs just by applying some checks at compile time. And having such definition we can make some conclusions. First, as I see it, it is impossible to detect all bugs at compile time. If some bugs are still with us we can not trust our code at run time. And if we can not trust our code then we should take care of it's execution and manage some possible outcomes of the uncaught bug existence. So my statement is about the need for a management environment, that is able to manage code at run time and prevent it's bugs from being too dangerous. And another benefit of the managed environment is it's abilities to manage software maintenance, software performance monitoring, software bug reporting, software development cycle, detection of software usage patterns, software run time optimization, enhanced environment security and reliability, hardware independence and most probably something else that I've just missed here.