I am just beginning to learn computer programming. With the advent of AI (typically used as a marketing buzzword, although it may be serious), not many people want to learn to code. But I want to do it for the fun of it. I am a high school student now (September 2024).
I was not attracted to coding initially. But I am learning it a little more with my dad. He is a computer programmer. I am also appearing for CollegeBoard's AP CSP exam. It may not be such a good idea, but one should learn to walk before running.
My dad's focus is on showing me the beautiful parts of coding. He thinks that programming is a way of thinking.
He may be right.
We use our words to express ourselves in writing. Since we use text in it, coding is a form of writing. We strive to express ourselves clearly while writing anything. So should it be with coding. My dad believes our computer programs should be for humans to read and only incidentally for computers to run. We must strive for clarity.
He steaches me to code. Steaching, yeah, I know, that's not a word, but he is a steacher. Steaching is a portmanteau of Studying and Teaching. He thinks that he is the student of the subject matter and a student of his student before he can think of teaching.
In one of our first conversations about AP CSP, he told me about the great mathematician Vladimir Arnold. Arnold believed that mathematics was a branch of physics where experiments (or apparatus) were cheap. My dad thinks that one can say that of programming as well.
Nowadays many students have a phone and a laptop. I know that is a luxury for many, but a reasonably powerful laptop or desktop has become cheap enough for a middle-class student to afford. Once you have a computer, you can experiment a lot with your programs. Most of the software required to run your little programs is freely available. We don't always realize this, but that gives a programmer immense power. GitHub, the website on which you read this README, helps programmers organize their programs for free. This is a big help! I hope it continues to remain useful to everyone.
In summary, I am going to try to learn to program by writing a lot of programs.
My dad struggled to find the right environment for me to code in. He's a minimalist. On one 4' x 6' blackboard, we wrote everything ("abstraction", basic data types, if-else, while/until, lists, imperative vs. functional programming) he thought should enable me to write sophisticated programs.
I like that idea. Use simple tools and a simple setup to express yourself clearly in your programs. Avoid the clutter and complicated machinery.
After a lot of emotional turmoil, he chose JavaScript and Node.js. This may not be the best choice. Here is how we arrived at this decision:
node file.js
command! We installed node.js on my laptop.So, my workflow is simple:
git
and back up the code.node file.js
command. Fix bugs. Improve. Commit and push to GitHub. Write good commit messages.I hope my interest in programming remains even after the AP CSP exam. Wish me luck!