What is the hardest part of learning a computer language?
In class, we are doing a final over what career we might go into. Earlier in the school year we learned some basic Java and HTML but it wasn't very deep diving. What is the hardest part of becoming fluent in a computer language and coding programs?
Once one starts programming extensively - it is tracking down other people's bugs, sometimes yours :)
At first it is mastering the concepts (control structures, data structures, design patterns) and how
to implement them in each language.
Each language has a philosophy/approach and features, being able to recognize the difference and using
the languages way of solving problems can avoid spending time using the "wrong" approach and causing
code reviewers to wonder why you did it that way. Each language also solves problems that earlier languages
had, potentially to introduce new language problems. In C you could crash a system by overwriting the
wrong memory, in Java there is no way to write that bug, Java handles memory allocation/deallocation.
I good read is the book "Seven Languages in Seven Weeks" it gives an overview of a number of very
I'd say the first language is the hardest. You know nothing about programming, so EVERYTHING is new, raises questions, and feels overwhelming. Once you have a solid understanding of the first, the next comes easier.
When learning the first, one thing you have to remember is that programming involved a lot more THINKING than TYPING. Everyone wants to start typing in code as soon as they have their assignment. After all, you're graded on your code, so surely you need to start banging out code, right?
Wrong. Especially when you are just starting, coding should be 80-90% thinking. Plan out what you are going to do before you write a single line of code. You should be able to explain the problem - and the solution - to a 10 year old child in a way they can understand and follow the steps to solve it. Assume they can't remember anything, and need to write down important pieces of information. They should label each piece of information too, so they know what it is when the come back to it.
The hard part about learning a subsequent language is that often you know what you want to do, you just don't know how to do it in THAT language. What library to import, what is the idiom used, etc. It's frustrating not being able to just do it...but you have to dig in and research that language's way of doing thing.
And then, of course, the stupid things like semi-colons. I've been doing C, Java, and Perl for a couple decades. I put a semi-colon at the end of lines without thinking. Then I started doing Python, which does NOT want them, and I constantly get syntax errors.
Pick a language, use one of the Think books below and try it out for yourself. Solve the exercises at the end of the chapter. Look online for programming problems.
This blog gives an overview of problem solving - https://www.freecodecamp.org/news/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2/ .
The Think Java book provides an introduction to problem solving with Java. Same author has a Think Python book. https://greenteapress.com/thinkjava7/html/