My notes are too long to paste, so I shared a OneNote link here: https://1drv.ms/u/s!Atq3ENSdA8wjaDjRqa_hssxJDos
As Evans said, “what distinguishes a computer from other machines is its programmability”. Programming makes computer could be trained and developed for different purposes, unlike telephones are just for calling or radio just for listening broadcast. The crash course videos provide an interesting interpretation of the history of programming from punch card to high level programming language, which give me a clear view of how the “program” evolve. Connected to everything we learned previously, I think I somehow deblackbox the meaning of “program” in engineering level and computer science level. Programs convey ideas into instructions that a computer can understand and execute. And that’s the reason why at the beginning programming is so difficult — we have to make the machine to understand us! And that’s also the reason why at the beginning programming are just the game for a few experts, even most experts and scientists could not take the fully advantage of computer. Not everyone has the superpower to talk to machine for sure. Thus, making a standard for translation is quite essential. UNICODE serves for this purpose, compiler, interpreter and translator serve for this purpose as well. UNICODE standardize our common used symbols into fixed code and embed in computer system (actually I stuck when I wrote this sentence, is this standard really embed in system? I’m not sure), while compiler makes human readable high-level programming language into machine language, so human won’t struggle with learning machine language any more, just primary school English is enough!
PS: new to know that compiler is actually a bunch of codes, not a physical part in computer’s mainboard like transformer in electric power grid.
As it shows in the video courses, programming languages share some common logic, understanding Python could help us understanding the basic syntax of Java and Ruby as well. I think that is because all the programming languages are for human. Human community shares the same logic system, that’s the reason why all languages have something in common (also the native languages as well). And just like native languages, programming languages have their flexibility as well. We can express the same meaning in different way. This sense of flexibility and multipath feature of language is distinct even in the most basic practice. For example, the Challenge part of IN-LEARNING course, I wrote (a little bit) different codes with the Solution it provides:
#my code
#solution the course provides