IMHO, Squirrel is much "lighter" than Python is. It is also more flexible. I like the script syntax better. For example, to create a game object using Squirrel, all you do is the following:
// Simple bomb entity
class Bomb extends RF2GameObject
{
timeToExplode <- 5; // 5 seconds to explode
lastTime <- 0;
function constructor()
{
// initialize the bomb
setMesh("bomb.mesh");
setMaterial("entities/bomb");
RF2GetGame().scheduleEvent(this, "explode", 5000, false); // Instruct the shell to call the explode function in 5000 ms and don't repeat it.
}
function explode()
{
// Tell the shell to add an explosion object at the position of the bomb, use bombdebris.mesh as the debris and leave the debris for 3 seconds
RF2GetGame().getWorld().addExplosion("bombexposion", getPosition(), "bombdebris.mesh", 3000);
}
}
Squirrel looks a bit like Java. No problem, i have gotten used to Java and i like it (we are currently using it in university). Java now even is my nr.1 language (i particularly like that extends and interface idea, instead of abstract classes in c++, i also like that everything in Java is essentially an Object or can be converted into one)! Squirrel looks definitely better than Python.
Everyone can see the difficult, but only the wise can see the simple.
-----
I don't know anything about Squirrel so I'm not going to judge but I have been using Python and what I think makes it a very good scripting language is all the libraries. You name it and someone has already written a library for what you want to do, other not so well know scripting languages don't have these kind of resources.
That is also what makes it "heavy". We were using Python as a DLL and when the EXE was compiled for RF2, it was 3MB in size. I have Squirrel compiled static along with SqPlus and DXSquirrel and the EXE is only 1.5MB. Python is also slow when calling Python functions from C++. Squirrel is made for that. Python syntax is ugly...one tab out of place and your script don't work. Try having a novice troubleshoot that. Both languages have good binding code (Boost::Python and SqPlus).
For game development, you don't need 95% of the community developed libraries that are out there for Python. You just need your game shell's script exports.
Python is also slow when calling Python functions from C++
Typically, wouldn't we only be calling C++ functions from Python? The only reason I can think of why you'd need to call Python from C++ would be if you intended on having a main entry-point function.
When you setup an event based gameshell, you need to be able to supply custom event handlers. This is the case where C++ would be calling Python functions. You are talking about exported functions.