Re: RPG Maker MV "They finally ditched Ruby for javascript!"
Reply #3 –
I find the typelessness isn't a big issue in practice. JS does have a few primitive types that complicate matters, but for the most part you end up just passing around a bunch of object literals. What it comes down to is that you have to get into the duck-typing mindset (if it looks like a duck and quacks like a duck, then it's totally a duck regardless of what you want to believe) rather than thinking about concrete types. This focus on objects is represented in my design for the Sphere Studio debugger, in fact: The variable viewer is a large textbox with the full JSON text of the object in question, as opposed to MSVC where values are primarily viewed in tooltips and you need to drill down into complex objects.
I think the big missing link with Sphere in particular all this time has been exactly that, a proper debugger. Lack of compiler-enforced typing can cause many, many weird glitches that I think would be glaringly obvious once you're able to view full objects at runtime alongside the code that uses them. I know there were a lot of times in Specs development where I spent hours trying to track down some bug in the battle engine that would have been found in two seconds with the MSVS debugger.
I'd be curious to see if this iteration of RPG Maker will include a JS debugger. After all these years, they should certainly have the expertise to implement it. 
Admittedly the overload thing is an annoyance, I'll agree with that. That's why I like dynamic in C#, because it gives you the best of both worlds. For example, you can do this (I do exactly this in the minisphere debug plugin for communicating with Duktape, in fact):
public void MultiSend(params dynamic[] values)
{
foreach (dynamic value in values)
{
Send(value);
}
}
public void Send(float value)
{
// send float
}
public void Send(int value)
{
// send int
}
public void Send(string value)
{
// send string
}
public void SendStuff()
{
MultiSend(2, "maggie", 8.12);
}
MultiSend will accept any number of arguments, of any type, and the correct overload for each individual value will be determined at runtime.