Does "agile" software development allow scrapping 100% of the code and radically change the spec (and thereby everything else) every about 6 months just because of new scientific publication? It may sound extreme, but this often happen in research. If we take time to "structure" our code, before we know it, we have to redo it all over again. We do use libraries like GSL, BLAS, ATLAS, etc. to make our lives easier. These won't change, but whatever we build on top of these often get scrapped at regular basis. So, we really don't have incentives to "beautify" the code.
Not only that most researchers are not proficient in programming language, they shape their codes more like prototypes so that they can modify the codes easily as the science progress. Conventional programmers will be frustrated with this approach since they want every single spec set in stone, which will never happen in research setting since research progresses very rapidly and specs can change dramatically in most cases. If you can set the spec in stone, it is usually a sign that the field has matured and is getting transitioned to engineering-type problems. Once the transition happens, it's no longer research, it's engineering. Then you can "make the code better".
In Ancient China, imperial exam was literally game-changing. The stake is high; it was virtually the only way peasants could become noblemen. Therefore, people did whatever it took to be successful. This system was copied and adapted to some degree in ancient Japan, Korea, or Vietnam. Hence similar attitude also pervades in these countries.
I think you should learn a bit into Chinese language and characters to understand how indispensable the characters really is. Consider English example of "bat", "bet", "bad", "bed", which are voiced very similarly. If spoken by non-native speakers with heavy accent, these words may be confused with "pat", "pet", or "pad". (Even in English, some accent-heavy people pronounce "pen" and "pin" identically!) A Chinese analog would disambiguate with "baseball bat" instead of just "bat" and so on. The problem is that such situation is much worse in Chinese than in English and it occurs even in daily use. This is why that most words are represented by two characters. Note that the pairing does not introduce new characters and thereby not adding to the "grinding". It's just adding new complexity to the language. Reading newspapers would require only about 4,000 characters (out of about 100K total) with about 300 tone-syllable combinations, giving about 13 of each left for disambiguation. Knowing about 2K is enough for daily conversation. Mind you these are still common use, including in formal signs or speeches. This is NOT uncommon as you've claimed.
Also, in Chinese, using more refined characters would show your erudition, politeness, or even social status. Politeness can mean everything for Chinese. So, you see, language isn't restricted for informational purposes only. It can also convey mood, politeness, formality, etc.
Note that new words are formed by juxtaposing two or more characters in an unusual way. With each character giving its individual meaning, the people could guess the meaning of the new word. If the people are deprived of the character and, say, have to read the pinyin, the meaning wouldn't be as obvious. Example: Xi3 yi1 = laundry becomes xi3 yi1 ji1 = washing machine. If the people don't know the characters, the meaning of xiyiji isn't immediately obvious. This fact makes Chinese language very intuitive and even facilitates learning. Children in China cope with this complexity pretty well. Their literacy rate is 97% in 2010.
The barrier of entry is as much as East Asian people learning English. Chinese and English are two completely different languages. For East Asian people, such barrier isn't as much, akin to the barrier of entry for learning French for English-speaking people.
Therefore, Chinese characters are indispensable.
Yes. C++ (and Java) are indispensable for scientific software. In scientific software, the spec is ever changing as the science progresses and hence the flexibility to morph the programs as needed and maintainability are of paramount importance. On the other hand, we need the speed.
Some of these can be resolved by invoking ready-made C libraries and then called in higher level languages such as Python or R or Matlab. However, in many occasions, this luxury isn't available (e.g., Markov Chain Monte Carlo simulations or custom EM algorithm).
IF I HAD A MINE SHAFT, I don't think I would just abandon it. There's got to be a better way. -- Jack Handley, The New Mexican, 1988.