I was under the opinion that parameter names would be used as identifiers in the script. As identifiers have to be available at runtime (for example in an execute_string call) the parameter names will effect the execution. Hence they should not be specified in a comment.
And I was under the impression that this was going to be a topic that allowed all viable suggestions to be entered into a central record keeping....yet it seems that we have judges at the GMC that disallow things that they are personally biased against, so it's more like a "brown-nose the keeper" topic.
Gamer3D very well answered exactly the same idea behind it as I had for comments being interpreted, but I guess no one understands the meaning. Yes, I know that comments should never have code in it that will alter, in some way, the ability for backward compatibility to break....this means...
//$int a = 10;
draw_text(0,0,a);
That will not work, and should not work. I agree with Rusky on this...but I wasn't talking about that anyway. I said it should allow declaration for specifying data types more carefully -- this would not break GM because all datatypes are variant and will work on all models anyway. Meaning:
//$int a;
a = 10;
That is my suggestion. Although making _more_ datatypes has been suggested, which YYG obviously will never implement (due to making the language too complex for rookies), this allows the more professional people to get their strict typing AND the rookies would still have their variants....absolutely no risk at the learning curve.
There would be a catch though, it would have to maintain scarce data types (char, byte, short, ushort, int, uint, float, and double)...no pointers would be allowed because then the assignments would break how the runner performs those actions in older languages. This is more for efficiency of space and time on newer versions rather than getting an entirely new area of programming style.
I also like the idea of type-sensing scripts using the first line comments of the script as Gamer3D mentions.
Another suggestion (not sure if this has been said yet):
Object's code as an editor formMeaning instead of:

Where you click the 'Show information' button and you get this:
Information about object: Ball
Sprite: spr_ball
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
execute code:
vspeed = -10;
gravity = .1;
gravity_direction = 270;
Collision Event with object Ball:
for other object: execute code:
vspeed = other.vspeed;
other.vspeed = 0;
Where you cannot alter it at all in the textbox. I suggest that there be instead of "Advanced Mode", but an additional "Professional Edit Mode" or something, where I get the above in a simple edit like so:
[ev_create]
sprite_index = spr_ball;
solid = false;
visible = true;
depth = 0;
parent = noone;
mask_index = noone;
vspeed = -10;
gravity = .1;
[ev_collision(Ball, other)]
vspeed = other.vspeed;
other.vspeed = 0;
The GUI can interpret the ev_create area for the first assignment of each needed item so it can do its job properly (by showing the proper "sprite_index" in the room when you place it, etc.).
Maybe 1 single editor of all the code may be drastic, I could even settle for a treeview style...anything would be better than what's currently being done.