I will read the first few chapters to learn the basic knowledge. In the meantime, I will try my best to understand every example and run it. And then I will do something interesting such as writing a more complex program. Practice is my motivation to learn advanced topics. If I only read the book, I will lose interest quickly because this is very boring, especially for some difficult chapters.
After I think I have mastered the basic chapters, I will continue reading the subsequent contents. I won't try to understand everything in the advanced parts. Instead, I just read some useful content and treat other content as a technical dictionary so I can refer to it in the future.
I like learning a language/tool as quickly as possible, and then try to use it more skilled.
I once found a book called "Machine and Assembly Language Programming of the PDP-11" in our university library. It is very old and was published in the 1980s. It includes some interesting knowledge about two pass assembler, relocation and two pass linker.
If you want to use a powerful gdb visual interface, you may want to try DDD. However, DDD has an old-fashioned GUI which is very crude. I have tried several visual debugging tools, such as RedHat Insight, DDD, Nemiver and kdbg, but none of them is enough powerful or stable. As far as I know, DDD can't display non-English comments in source code.
Now I'm using an awesome GDB init file to construct a convenient debugging interface. It's an open source project and you won't regret it:
https://github.com/cyrus-and/gdb-dashboard
You are lucky. Some projects have difficulty because everyone wants to use it but no one wants to contribute to it. The inbox of the maintainers may be full filled with bug reports and they have to spend one or two hours to handle these problems. They are tired.
In China, open source licenses don't have any legal effect, so it's hard to safeguard legal rights. In recent years some open source organizations have been founded and they hope their efforts can change the environment of open source in China. However, there is still a long way to go.
China's laws implement the Berne Convention, making copyright automatic.
Open source licenses usually provide conditional exceptions to that automatic and internationally accepted copyright.
So if they don't believe in open source licenses, or whatever, "all rights reserved" is logically the default fallback.
That obviously doesn't marry with what you said. China is famously awful at upholding IP laws they're party to, but I think that's all this is here. It's still against the law there, but nobody cares if it's not hurting China.
Once enough chinese companies rely on IP laws to protect their assets things will change. It's like how the U.S. book publishing industry played fast and loose with copyright as long as the books were british but pushed for stronger copyright once there were enough american authors.
I've been encountering that claim for 20 years. In that time, the Chinese software ecosystem has grown more than any other in the world and might even be larger than that of any other country at this point.
How many companies relying on IP laws is "enough" for foreign IP to be taken seriously?
Those companies don't rely on international IP laws so much as laws inside China. When you start seeing Chinese companies actually competing via tenders that's when they'll start caring.
Good luck suing a Chinese company. China's court system is nakedly rigged in favor of domestic businesses, and is actively hostile to foreign interests.
That doesn't seem to make sense. If "all rights reserved" is the default fallback, why are they using other people's code? By default, they should respect the copyright and ignore that the projects have additional terms to allow use only under certain conditions.
That's sort of my wider point. It's not that it's because it's under a permissive license, it's because —being super racist here— they just don't care whether it's copyright or not. The type of license is irrelevant.
There's nothing racist about acknowledging cultural differences, or even making claims of superiority of one culture over another. Racism is judging individual people based on their race instead of more substantive criteria, like culture, values, and actions.
"Acknowledging cultural differences" is a too broad a thing to just okay like that. People tend to go over the top. Americans are fat and arrogant, Mexicans are lazy, the Spanish are dirty, and the Irish are drunks.
It's very easy to say that China —the country— has a problem with intellectual property, but tarring all ethnically-Chinese people with that brush affects hires and promotions in our own countries.
Respecting IP ownership is as much a learned skill as learning to say exactly what you mean when you're accusing a country's governments, police and courts of actively turning a blind eye to IP abuse.
Sometimes generalizations about whole groups are true about many or most members of those groups. But even though many or most stereotypes are rooted in some truth, that's doesn't mean we should judge individual people according to those stereotypes. Somehow treating individuals fairly has morphed into this idea that we should ignore reality. That's just silly.
I'm suggesting the opposite of ignoring reality. Be extra-specific and say what you mean.
My statement was lazy and could easily read as "Chinese people don't care about IP". You can choose to believe that nothing you say affects anybody else, but enough people parroting the same nonsense has a powerful effect.
Although China's copyright law indeed protects people's work, open source software is still a gray area. As far as I know, there is no clear stipulation in China's law to judge whether software complies GPL or other licenses.