The computer came into my life very early. However, I have always wandered as a layman: neither a computer education nor an IT industry. Think of yourself these years in the front of the door dangling, leaving and gathering, quite sentimental.
First intimate Contact
Primary school, the family put a Lenovo "Tian Qin" computer. Its domineering side leaky speaker, incomparable pull the wind microphone, mysterious remote control, all shook my heart. Then the little boy would spend an afternoon studying the difference between the left and right keys and the function of the "Start" menu. In junior high School, the game became synonymous with computers. I bought VW software at the newsstand, bought it in the basement of the mall, and entered the "Show Me the Money" one afternoon. To high school, the computer connected to the network. I began to surf the internet to read the news, the Forum, read the earliest online literature. In the Internet café to stay one night, infected with the smell of smoke, the morning to go home again, seems to be rebellious period the deepest memories.
Programming is Debug?
Perhaps playing computer is too fierce, some bereavement, college I chose a computer-related professional: physics. In order to strengthen the heart of the study, he did not even take the computer, the fart to research the Euler equation.
But the layman's first contact with programming, or from undergraduate courses. There were five computer-related courses at that time:
C language. The school uses the Tan Haoqiang "C Programming". The lesson gave me the impression that the programmer was debug. I don't want to faculties to the computer.
Algorithm and data structure. At that time the textbook is the higher education version of the "algorithm and data structure." The examples used in the book are pseudocode, and practice is not appreciated.
Fortran. This is an ancient language, in the scientific calculation of the use of a wide range, so science students are required. But its rigid grammar is in the form of torture.
Microcomputer principle. The textbook is "microcomputer Principle and Interface technology". The Speaker hardware principle and assembly language. When you learn to assemble, you just try to add, move, and so on, without specific items.
Database。 Basically no on-machine operation. It is also remembered that the relational database is kept on paper until it satisfies a paradigm.
Now, looking back at the university courses, they are very important elements of computer science. But the university curriculum partial theory, the light practice, is difficult to accommodate the young person's hands-on enthusiasm. There are no specific projects in the classroom, and the assignment requires only pseudocode. This kind of study is very difficult to see the effect, I also can not appreciate the beauty of these courses, just to cope with the exam will study. More time, I still sway on the court.
It was popular in Java and the Web, and I learned some of the ambitions of young people. In order to learn Java, I read the first volume of "Core Java", but not yet grasp the essence of object-oriented, I was coming to the end of the final exam was coerced away. After that, I would like to try to do a website to surprise the girls. Follow W3cschool's tutorials, learn html,css and PHP, and end up not rent servers. Finally I can only do some miserable static page, passable.
Interest is motivation
University last year to do the graduation thesis, selected a three-dimensional reconstruction of fluid movement of the subject, and computer graphics stained top. As a result of visualization, I suddenly came to interest, a succession of two holidays are flutter in the subject, even idle time, is also the process, try new algorithm. Even if the tutor evaluation code is too messy, not suitable for computer, I also hey smile, happy. In order to solve the problem, their teeth to read the voluminous computer graphics data, such as "image processing, analysis and machine vision." Sure enough, interest is the greatest motivator.
At the same time, I also started to touch Linux. In order to do the project, I took the notebook computer to the school. Three years, the book from "High Handsome" into a "dwarf bear." In order to keep the computer stable, I reluctantly replaced the operating system with Ubuntu. The Ubuntu release was interesting, users filled out a form online, and a free CD was sent. Although Linux has many advantages, it is somewhat weak in everyday functions. The Office software on Ubuntu is a lot less office, let alone a miserable game. To wait until the future, I gradually realized that the Nordic penguins good.
The push of demand
When I graduated from college, the atmosphere of the university campus was overflowing and I hit the chicken Blood of Bo. The PhD project is fluid computing, so I also stepped into the era of high-performance computers.
The operating environment of High-performance computer is completely different from that of ordinary computers. First of all, it does not have any graphical Chinese interface, the text is basic with ancient vim. Second, because you want to compete with others to use resources, you need to estimate the workload, the number of CPUs required, and the elapsed time, when the server is idle, corners. Finally, a large task may have to be divided into several parts, or parallel or serial processing. Laziness is the driving force of innovation. For the sake of worry, I learned that others write bash scripts to handle these miscellaneous transactions and monitor the health of the cluster. I also realized the benefits of Linux tools such as SED, awk, and grep. During this period read the "Linux Administration Handbook". This is a comprehensive and in-depth Linux reference book. In addition, the high-performance computer is a parallel cluster, need to understand the parallel algorithm and interface, so read the "Parallel programming with MPI."
The numerical model that runs on the computer is written in C and Fortran mixed. In order to understand the program, carefully read the "The C programming Language", "Expert C Programming", "Fortran 90/95 for Scientists and engineers." The advantages of these books are simplicity and clarity, and they are easy to read. After the code is understood, you also need to resolve the problem of compiling the connection. Compiling the connection on the cluster is not simple, plus the problem of numerical operation is too biased, it is difficult to find ready-made data. A questioning email was sent out for weeks without a response. Finally heart Fahen, I still read the source code to solve the problem. In this process, I read the "Advanced programming in the Unix Environnement" to tamp the foundation. The book is very thick, the reading process is very difficult, but the basic knowledge helps me understand a lot of compiling problems.
Data analysis and mapping are another place to program. Work at the beginning, I use MATLAB. But the license in the Institute is limited, and sometimes it's my turn to wait for someone else to run out. MATLAB A lot of add-on package also expensive, also let me have the feeling of extortion. Talk to the professor about the problem, said the professor, so you can try Python. After the attempt, the NumPy and scipy packages under Python and Python completely met my needs. And think about it, Python is free, and it can save money for me and my future employer. So, learning Python is a pretty good thing. "Learning python" is a very comprehensive python textbook.
The power of writing
For the purpose of sharing Python insights, I started writing the Python quick tutorial. Write to the standard library, find Linux system knowledge is a prerequisite background knowledge, so re-opened the "Linux Concept and System" series of articles. On the other hand, when writing network-related packages, you discover that you know too little about network protocols. "TCP/IP Illustrated" in the network protocol is very comprehensive introduction. What I learned in this form is also the foundation of my "Protocol Forest" series. Their articles have been recognized, but also more motivated to see more to learn.
In the exchange with other bloggers, feel their basic knowledge, there is a big gap. After all, he is a non-computer professional "Basterds." One is to know enough about the nature of object-oriented, which is thinking in Java. The second is that the knowledge of algorithms and data structure is too superficial, so it realizes a series of classical algorithms based on "data structures and algorithm analysis in C". Third, there is no practical experience in the design of the database, is trying to do a project to obtain practical experience. Take a look at these three points, are the undergraduate time to learn the disabled class. Not to report, the time has not come.
In the process of writing, keep looking for good materials and tools. The beautiful and concise diction of the technical book, let me Feel the beauty of programming. Ubuntu's convenient programming environment paves the way for me to try freely. It is now more convenient for us to find all kinds of tutorials, materials and public lessons on the Internet. Many cloud platform tools are also free. So even laymen can easily cross the door of beginners. This is the best time for a layman.
Take the mouse carefully point "start", I have been wandering for a long time. After a few turns in life, I met programming. I am still a layman compared with many professional programmers. But I also do not have the burden of professional people, the whole heart to enjoy the joy of technology.
This layman's wandering, feeling not bad.