The university I attended started with started the Computer Games Technology Course using Game Maker 
http://www.yoyogames.com/gamemaker/studio/free I don't even recognise the pictures of it, as it appears to have changed a whole lot since I used it. But you really could create simple games without really writing code. Then as you started to get the hang of it, you can start adding little bits of code here and there. Seemed like quite a nice starting point to me. It used to either come with, or have downloadable, sample projects for basic games (pong, maybe breakout, etc.) so might be worth checking out.
 
In terms of simple to program/read languages, with the right API C++ can be pretty decent I believe, for instance:
 
// Couple of sprites, one for a good guy, one for a bad guy
SpriteHandle goodGuyRunning;
SpriteHandle badGuyRunning;
// Loads sprites from XML (which defines animation speed, texture, etc.)
Api.Graphics.GetSpriteHandle( "character/goodguy/running.xml", goodGuyRunning );
Api.Graphics.GetSpriteHandle( "character/badguy/running.xml", badGuyRunning);
// Set positions.
goodGuyRunning.SetPosition( 100, 20 );
badGuyRunning.SetPosition( 200, 20 );
// Enable.
goodGuyRunning.Enable( );
badGuyRunning.Enable( );
 
Hopefully it is quite readable, and it shows how to get two characters running on the spot at two different positions on the screen (100,20 for one and 200,20 for the other). Then you can add a little more:
 
// Position of character
Vector2 position( 100, 20 );
// Called each frame.
void Update( )
{
    // Get Joystick X axis (-1 for left, 0 for center, 1 for right)
    float xAxis = Api.IO.GetJoystickAxis( Joystick::Axis0 );
    
    // Move the characters position according to the joystick axis.
    position.x += xAxis;
    // Update good guys position.
    goodGuyRunning.SetPosition( position );
}
 
So each frame it just moves the character position based on the joystick X axis being pushed left/right. Of course this may not be acceptable, as the character will only move a maximum of 1 pixel per frame, so we could introduce a little more:
// Position of character
Vector2 position( 100, 20 );
// Speed of character, amount of pixels to move per second (maximum)
float speed = 40.0f;
// Called each frame.
void Update( )
{
    // Get Joystick X axis (-1 for left, 0 for center, 1 for right)
    float xAxis = Api.IO.GetJoystickAxis( Joystick::Axis0 );
    
    // Movement amount, up to -40 (when joystick fully left) to +40 (when joystick fully right)
    float movement = xAxis * speed;
    // Move the characters position according to the movement delta we just calculated.
    position.x += movement;
    // Update good guys position.
    goodGuyRunning.SetPosition( position );
}
And from there you may want to add a little more, like for dealing with collision:
 
// Just create a good guy sprite SpriteHandle goodGuyRunning;
// And a physics body for him. DynamicPhysicsBody goodGuyPhysics;
void Initialise( ) 
{  
    // Loads from XML (which defines animation speed, texture, etc.)
    Api.Graphics.GetSpriteHandle( "character/goodguy/running.xml", goodGuyRunning );
    // Rather than setting the characters position directly, lets create some physics and 
    // attach (parent) the sprite to the physics.
    // 1. Add some shapes to our physics body (one body can have multiple shapes, for example a head, torso, legs)
    goodGuyPhysics.AddShapesFromSprite( goodGuyRunning );
    // 2. Now we have a physics body with a shape that is the same size as our sprite, we can attach our sprite to
    // to the physicsbody.
    goodGuyRunning.SetParent( goodGuyPhysics);
 
    // 3. Set initial position of physics body.
    goodGuyPhysics.SetPosition( 100, 20 );
} 
void Update( ) 
{ 
    // Character will automatically fall under gravity and collide when it hits surfaces. If we want to move him around 
    // we will want to apply impulses of movement to him. Bear with me...
    float xAxis = Api.IO.GetJoystickAxis( Joystick::Axis0 );
    
    // Create an impulse, nothing in the Y axis, and some scaled force in the X axis...
    Vector2 impulse( xAxis * speed, 0.0f );
    // Apply the impulse to the character
    goodGuyPhysics.ApplyImpulse( impulse );
}
I could go on, but, well, I don't know, maybe I have seen C/C++ code for too long, but to me the above isn't that hard to read, even to someone who doesn't know code. Although not identical, the above isn't far off from the API I use myself.