1. Scratch is a graphical language which implements most of the code for you - you just add the extra pieces of each puzzle.
As a beginner language - yes it is fine to cut your teeth on - but anything more complex than that - it lacks support.
2. Having visited C, C++ and C# myself, I can honestly say each language is good for what it has to offer. C is excellent
for writing very fast and simple programs such as micro-controllers and builds much of the underlying source of a game
engine for video games, as does C++. C++ is also very well used in industry as a whole, and well supported. C# is very
similar to Java in many ways - it's primary use is to support Microsoft's .NET Framework, and with Mono development,
they have done well to edge away from the Windows Only Language people associated it with.
Java is a great language, and as stated above - is well used, well known and has hundreds of supporting documents
on the Internet. Yes it does have it's flaws - speed of execution is not as fast as C - but really, that is such a small
gripe - I would rather read 1000 lines of Java code than 1000 lines of C code - it's easier on the eye.
3. By "Block" I am guessing you mean procedural programming correct? Well, the question is almost redundant. OOP
includes block programming in many ways - the body of a method contains pieces of structured programming, function calling
and returning values is all part of procedural programming. Java is fully OOP, as is C# and I think Ada is too. But they all
contain "Block"(s) of code that form the complete picture.
Wishes Ada xx