Xanpakuto Wrote:So if I'm not going to memorize any syntax, what is there to memorize in programming?
There are lots of things beside syntax that a good programmer needs to know, and the best way to learn this stuff is probably a combination of reading books (Internet works too, I have learned lots of stuff on websites like stackoverflow) and getting practical experience by actually coding. But programming is really more about understanding different concepts than memorizing stuff (although of course you need to memorize stuff to understand stuff so it's not completely unrelated but yeah).
But to mention quickly some of the most essential things:
Basic building blocks like data types, variable assignments, control flow (loops, if-statements), function calls, input/output and so on. The stuff that you need to know to write even the simplest of programs.
Data structures. Understand the difference and preferably implement yourself the most common data structures. Also in order to understand when it's suitable to use each data structure you need to learn time complexity analysis. Time complexity analysis is also very useful in general when deciding what algorithm to use to solve a problem.
Learning about the different memory segments and most importantly perhaps the difference between the stack and heap, and understand which of your data go into the different segments and the different pros and cons. Maybe not as important but learning about memory hierarchies and cache memories in general is useful to write more optimized programs in some cases.
You need to understand how data is represented in the computer in binary form. How are negative numbers represented, why can floating point numbers represent both larger and smaller numbers than integers using the same number of bits, and at what cost? Learning about the basic bit manipulation operations and stuff like that.
You should also eventually study using threads in your programs, which requires you to learn how to write thread-safe programs which requires sharing data between several threads using locks and condition variables.
When you're starting to get more advanced there are lots of other stuff that you should probably learn, for example operating systems and how to use system calls. Learning about optimizing compilers and especially what type of optimizations that are usually done automatically for you is important in order to not perform meaningless "optimizations" which do nothing but make the code less readable.
There's really a shitload of stuff that is pretty much completely unrelated to specific language syntax that you need to learn if you want to become a good programmer. The list above is far from complete.