The learning journey
--------------------

As you progress through the rest of the book, don't be afraid if the
concepts don't seem to fit together well the first time. When you were
learning to speak, it was not a problem for your first few years that
you just made cute gurgling noises. And it was OK if it took six months
for you to move from simple vocabulary to simple sentences and took 5-6
more years to move from sentences to paragraphs, and a few more years to
be able to write an interesting complete short story on your own.

We want you to learn Python much more rapidly, so we teach it all at the
same time over the next few chapters. But it is like learning a new
language that takes time to absorb and understand before it feels
natural. That leads to some confusion as we visit and revisit topics to
try to get you to see the big picture while we are defining the tiny
fragments that make up that big picture. While the book is written
linearly, and if you are taking a course it will progress in a linear
fashion, don't hesitate to be very nonlinear in how you approach the
material. Look forwards and backwards and read with a light touch. By
skimming more advanced material without fully understanding the details,
you can get a better understanding of the "why?" of programming. By
reviewing previous material and even redoing earlier exercises, you will
realize that you actually learned a lot of material even if the material
you are currently staring at seems a bit impenetrable.

Usually when you are learning your first programming language, there are
a few wonderful "Ah Hah!" moments where you can look up from pounding
away at some rock with a hammer and chisel and step away and see that
you are indeed building a beautiful sculpture.

If something seems particularly hard, there is usually no value in
staying up all night and staring at it. Take a break, take a nap, have a
snack, explain what you are having a problem with to someone (or perhaps
your dog), and then come back to it with fresh eyes. I assure you that
once you learn the programming concepts in the book you will look back
and see that it was all really easy and elegant and it simply took you a
bit of time to absorb it.

.. mchoice:: intro-learn-mc-tf1
  :answer_a: True
  :answer_b: False
  :correct: b
  :feedback_a: Try again.
  :feedback_b: Correct! This book is for learning, some concepts will take longer to learn.

  All concepts in this book can and will be learned easily.

.. mchoice:: intro-learn-mc-tf2
  :answer_a: True
  :answer_b: False
  :correct: a
  :feedback_a: Correct! Similarly to learning a language, some concepts will click immediately, while others take several tries to pick up.
  :feedback_b: Try again.

  Learning a programming langauge is similar to learning a spoken language.

.. mchoice:: intro-learn-mc-tf3
  :answer_a: True
  :answer_b: False
  :correct: a
  :feedback_a: Correct! Some concepts will make sense immediately and others may take more practice.
  :feedback_b: Try again.

  It is common to learn some concepts faster than others.

.. mchoice:: intro-learn-mc-tf4
  :answer_a: True
  :answer_b: False
  :correct: b
  :feedback_a: Try again.
  :feedback_b: Correct! Python is very similar to C++, but there are many differences.

  Every programming language is written the same way.

.. mchoice:: intro-learn-mc-language
  :answer_a: Python
  :answer_b: C++
  :answer_c: JavaScript
  :answer_d: HTML
  :correct: a
  :feedback_a: Correct! It is important to remember that some concepts between languages are similar, but not all.
  :feedback_b: Try again.
  :feedback_c: Try again.
  :feedback_d: Try again.

  What language does this book teach?
