"Mastering all languages" may be a bit exaggerated, saying "Master all the popular programming languages" "I think it is not too much.
How is "Society C " to define? I think I have read some C books and articles written by the classic foreign masters. It is two or three years of programming experience. The most important thing is that people are willing to study more, and they should learn C , of course, it is poor. Far.
Defined as "learning" is because such programmers can do some difficulties alone, it may be more than many of the programmers who claim to "proficient in XX language".
If you do so-called language, I don't actually refer to a library, I have nothing to say, I think learning language is learning program design techniques or programming ideas, not a library. If we don't have the definition of "learning language", then there is no common discussion foundation.
The programming language and libraries I have used now are new, and the problems encountered in the work are sometimes very difficult (for example, the MPICH library can be called into Python interface). But because I still remember some basic design skills of C (of course, I also help with the familiarity of C development tools), solving these so-called problems are gently easy.
A question I encountered in the work is the process written by a architect (developed with python language), I have collapsed when I quit, and this problem dragged two three worships, but I have to solve it. After I took over this question, I spent half an hour * complete * solved this problem, and there was no damage to how many brain cells, because the steps of solving the problem were completely mechanically.
First of all, I pulled the program to the Linux platform, so that the program creates Core Dump, and then I use GDB to load the core file to determine the function call the stack when crash. The result is found to call the MPI :: finalize () function, a crash occurred. The functionality of this function can be considered to be a function of releasing some resource of the MPICH library.
If you don't need to further debug, I can guess the cause of the problem, Python, as most popular languages now, claiming that their resource management is automatically carried out. The problem is that the resources here are just memory. However, many people have completely regardless of the resource management when developing with Python, even if they are willing to manage resources, they are also the most cumbersome technology to manage. It is definitely the problem of resource management.
Ok, the problem I encountered is not so simple. Since the program itself is distributed (multiple processes running on multiple machines), multi-threaded, single functions also include a lot of messy error handling processes (this error) The process is also very disgusting in my C / C programmer, so it is necessary to locate bugs completely through debugger (Python debugger is not so convenient).
And I also don't have any interest to read the distributed multi-threaded Python written code.
I just simply applied the information of the resource i-initialization in C , write a new resource management class, put the code of the resources in the constructor of the class, put the resource release code in the destructor. Then replace the original code (automatically replace with the text replacement tool), it will be performed.
Class definition:
Class MpismartManagement: Def __init __ (self): if MPI: if not mpi.initialized (): mpi.init (sys.argv) DEF __DEL __ (Self): IF MPI: MPI.Finalize () call:
sp = mpismartManagement ()
Sorry, there is no some complex commissioning skills for how to debug distributed multi-threaded programs.
About these complex commissioning skills I have a bit more than one way, it is like a big water, and it is therefore a mess, but has produced many heroes during the flood control. The GDP is pulled again in the process of reforming home (facing up ), So bad things.