Clearly no one can discern feature from limitation, so I leave it to dictionary.com:
FEATURE,
LIMITATION. And for the lazy:
Limitation:
"a limiting condition; restrictive weakness; lack of capacity; inability or handicap: He knows his limitations as a writer."
Feature:
"a prominent or conspicuous part or characteristic: Tall buildings were a new feature on the skyline. "
I wouldn't call anything in section 1
"a prominent or conspicuous part or characteristic", considering they're obvious missing aspects of a language with these paradigms.
Quote: "1. Arrays in UDT's
yes, this would be quite handy, and I agree. However, it is up to the creators to implement. A feature, not a limitation, I would say."
See above.
Quote: "2. Return a UDT from a function
Since a UDT is global, I see no need for this. For this to work, you would also have to pass in a UDT. Which is complaint number 4. I was taught early on to not have many, if at all, globals. So, I can understand this. However, it doesn't stop the program from running. A feature, in my opinion."
What does the scope of a UDT have to do with this? Unless you mean the ability to declare a global variable using a UDT. And what does passing a UDT have to do with this? Returning a UDT isn't contingent on you passing anything specific to said function. As for the last sentences, see above.
Quote: "3. Global vars not initialized until run :
So what? its a rule of the language. Not a big deal, in my opinion."
It's arbitrary and imposes limitations on what you can do for no reason. You can use global variables without executing them, but not arrays. You can assign literals or variables upon initialization but you can't do more complex stuff like 10 + 5, my OP outlines these with examples.
Quote: "4. This is the opposite of number 2. If you can't return it, surely you can't pass it. It is solved in the language by making UDTs global. Some comments in the function can instruct the user to make the type global. This is the current method to overcome this."
This is nothing like the opposite of number 2, an array isn't a function, and you can pass UDTs to functions, just not return them. My OP and other posts also explain why this workaround is error-prone and why this limitation should be removed.
Quote: "5. Lack of else/ifelse"
Try compiling those before posting them?
Quote: "6. Inability to do complex statements on 'exitFunction'/'endFunction'
I happen to agree on this, but, this is a VERY simple workaround. Do the calc before you exit, and assign the result to the output of the function."
My OP states that I don't doubt you can't work around many of these issues, the point is that there should be no need for these arbitrary limitations.
Quote: "7. No function overloading
Far as I can tell, this is not even a feature of Visual Basic. Correct me if I am wrong."
5 seconds on google.
Quote: "8. Lack of option explicit
I thought this was IDE specific, not compiler specific."
Some IDEs may well implement this, but it should be a feature of the language. Just look at the amount of issues the 'IDE specific' concatenation symbol feature has caused.
Quote: "10. No references
Again, this can also be worked around, by simply making a copy of the original data in the array or UDT. However, I agree, it is a nice feature to be able to access the core data or the copy. This is one of the nice things about OOP programming."
I'm not doubting that it can be worked around, it just shouldn't be necessary; it adds complexity to code, makes it more error prone, makes it less modular etc etc. References also have absolutely nothing to do with OOP.
Quote: "Seems to me, DC has learned the value of OOP, and, wants to apply it to procedural programming."
As I've cleared up previously in this topic, OOP and procedural programming aren't mutually exclusive concepts, one merely expands on the other. Only one of the points in my OP is related to OOP, and UDTs are a very primitive form of objects as it is, so asking for them to be expanded a bit more isn't breaking any paradigms.
Quote: "Why the bad press from a very respected member of these forums? I just do not get it. "
What? So because I'm 'respected', I'm not expected to voice valid concerns about a language I've used for many years with limitations that have existed since its inception and never rectified? I've already stated this in this topic: but as this language is aimed at beginners, many users may not be aware that these limitations don't exist in other languages because they make no sense, thus raising awareness of this is surely a good thing? It's not like I'm mindlessly ranting about every little niggle with the language that doesn't conform to the C++ standard. I believe every one of my points: makes sense, doesn't break any of the existing language paradigms, aren't too hard to implement, come with good rationales and examples etc, there's not much more I can do.