MessiahAndrw wrote:Yes, does VLC count?
Depends on participation value.
MessiahAndrw wrote:You can write clean modular code in any language.
For only small or simple programs.
MessiahAndrw wrote:Where did I ever talk about abandoning all modern advancements?
You can reread your previous message.
MessiahAndrw wrote:You can have GUI designers and step-by-step debuggers and all of those cool things in an unmanaged environment.
"all of those cool things" include runtime code change, for example. Please, show me how it is accomplished in case of unmanaged language.
MessiahAndrw wrote:the unmanaged environment is safer because it's perceived to be unsafe, so we proceed cautiously expecting the unexpected
If a car can go 100 miles per hour and a distance is 200 miles, then how soon I can get to the desired location? It depends on how cautiously I will proceed. On a highway I'm sure that I can get where I want in 2 hours. But if in a city, then... In short - do you want to be where you want much quicker? And if you are so scared of "unsafeness" of a highway, then nobody prevents you from driving at 10 km/h (but don't forget to turn on warning lights).
It is the same for languages. If you want some kind of a quality, then you can write your code with caution. And if you write your code in a careless manner, then why do you blame the language, but not yourself?
MessiahAndrw wrote:As a programmer, we know there's no bounds checking, so we get into the habit of validating our data ourselves - in ways that go beyond simply bounds checking our arrays.
If you do not have exactly the same habit when use a managed language, then you are a bad programmer. Just because your programs always will need to be tested more extensively than programs of other programmers. And after tests your programs should be changed more often. And finally your performance is very weak comparing to other programmers, so, your salary will reflect it.
It means you just point to a wrong problem. Instead of pointing to a difference you are pointing to a similarity. It's like if I point that both, the Java and C programs, are written by programmers. Is it a useful information?
MessiahAndrw wrote:If most of your errors are memory leaks and out of bounds array indices then I'm afraid you're getting stuck on beginner bugs and you're not as good of a programmer as you think.
If most of your thoughts are about a bad code, then I'm afraid you still do not understand programming. Most of my thoughts are about how to speed up the process of writing a good program. Writing a program is much more complex activity than typing some signs using a keyboard (a monkey level efforts).
MessiahAndrw wrote:The worst thing that destroys productivity is not the language (unless you're purposely using some esoteric language), but the use of anti-patterns.
There are two things, in fact. First is the programmer's experience. It allows some people to use any suitable pattern efficiently (even if it is called with the prefix "anti"). The second is the help from some automation. The managed vs unmanaged is about the second, but not about the first, as you wrongly suggest.
MessiahAndrw wrote:Instead of simply saying "if(age < 25) return false;" you'll create a 'validator' class that implements IValidator, and creating a new IValidator class means updating the web service's interface. And if you want to change that logic to "if(age < 25 && gender == Gender.Male) return false;" you need to create a seperate AgeAndGenderValidator class and rebuild all 6 libraries that reference your core library that contains the Validator classes.
The program quality includes a lot of things. The programming is a complex process. And when you see some examples that make you feel bad, it can mean two things. First - you do not understand the real purpose of the features you are enforced to use. Second - the complexity of the programming process became visible to you in some form and you are eager to claim that you see how to make it better. But exactly the same thought was excited an architect, which had designed the architecture you are disliking now. And it is very improbable that if you take a position of an architect, the programming process will be less complex and your disliked program will not break in some other place.
So, you have to create something really useful first, and only after many people have decided that your architecture is really useful, only then you can claim that "Instead of simply saying 'if(age < 25) return false;'..." is about something viable.
MessiahAndrw wrote:anti-patterns aren't unique to managed languages, but in my daily experience in the corporate world, they seem to be far more prevalent in managed languages.
And in my experience useless efficiency hunting was a biggest problem of C/C++ developers. It was too expensive in terms of time and money.
Low level teaches you, that the efficiency is important, but it doesn't teach you where it is require to stop your hunting process.