Scratch is a visual block-based drag-and-drop programming language designed specifically for learners, especially children. It's created by the Lifelong Kindergarten Group at the MIT Media Lab.
The language and IDE are pretty much completely connected. Here's how i see it checking off your bullet points:
- Object oriented: It has sprites, but it's debating whether it's truly object oriented. It can serve as an introduction to the concept though.
- Good IDE: Yes. There's a help toolbar on the right side.
- Simple IDE with run button: Yes.
- Visual: It's completely visual and drag-and-drop. Typing is only needed for numbers and strings, essentially.
- Free of language oddities and paradoxes: I'm not sure exactly what type of oddities and paradoxes you're thinking of, but Scratch tries to be helpful and avoid breaking your code whenever possible. The blocks themselves are pretty intuitive and self-explanatory.
- Indentation: Since it's not text based, this is less important, but control structures (conditions and loops) do get their code indented.
- Variable declaration: All variables must be defined before use.
- Memory safe: Yes, it runs in Flash in the browser (next version plans to move to JS). You don't have any control over actual memory usage in your program.
Scratch was my first language, and i've been teaching it as a first language for the past several years.