IMHO, a first learning language should introduce concepts including:
- Variables
- Typing of variables (strong typing)
- Arrays
- Data structures
- Boolean logic expressions
- Flow control and looping (if, then, else ; while ; for,to)
- Procedure and / or function calls
- Formal parameters vs. actual parameters
- Recursion
- Equivalence of recursion and iteration
- Compilation
- Compile-time vs. Run-time errors
A first programming language should avoid concepts like:
- Pointers (at least in the C conception of them, breaking the
typing system)
- Dynamic typing
- Polymorphism
- Inheritance
That in mind, my suggestion for a first language would generally be
more similar to Pascal or Modula-2 than C, Python, C++, Java,...