It is said that everyone should learn programming, so what language is good to learn?
WBOY
Release: 2016-10-09 08:33:14
Original
1320 people have browsed it
I am nearly 30 years old, and my current job is as an accountant in a public institution, so I don’t need programming in my daily life. But I am interested in programming. I got tired of playing games in high school. I taught myself how to make a website. I know a little bit of html and php. A few years after graduating from high school, I made an income from making websites, maybe hundreds of thousands. My pure interest turned into a semi-professional job. However, the good times did not last long. Because I was too busy at work and not paying enough attention, I was delayed. In the past four or five years, I gradually stopped working. In the past, I mainly relied on CMS and SEO, and PHP was not an entry level, so I could build it. notebook. Nowadays, society is developing too fast, and I still have some interest. I want to use my spare time at work to learn a language well. On the one hand, it will satisfy my interest, and more importantly, it will be prepared for emergencies. It may come in handy in the future. I don’t know what language I should learn. ?
Reply content:
Accountants in public institutions... Do you know what accountants in public institutions learned in the past (about 2000)? Visual FoxPro In the past, there were not so many and powerful related software. In many cases, we had to write some automatic processing scripts according to the needs. Visual FoxPro was very good. It used SQL statements, was intuitive, and provided timely feedback. It could be considered a significant improvement at the time. Work efficiency is improved (xls at that time can be easily imported).
The following personal views: For potential work needs: VBA in Excel (a tool that greatly reduces repetitive labor), Visual FoxPro (low priority, after all, it is too old, although it is difficult to say whether there is any old data that needs this To deal with it) For your own interests and hobbies: anything is possible, learn Python to write a crawler, tinker with the Raspberry Pi to make a smart controller, create a small program on your mobile phone to facilitate yourself, tinker with a blog to record, Wait, wait, etc., the point is, you are interested + have a willingness to learn.
Accountants, why do I feel that using Excel’s VBA smoothly can greatly speed up your daily work? Repeat the operation three or more times and write code to see how much of your work can be done by writing code.
Learn Python or golang.
When building the front-end of a website, let’s stick to the three old ones: html, css, javascript. Then python.
Why learn python first? Because its modules are mature and “quick results”.
That’s it. If you still want to explore the "bottom layer", go to C. Don’t be kidnapped by C++. It’s okay to learn it for fun, but it’s a big trap.
C's "modules" and "foundations" are also very mature... But generally speaking, if you learn C, "the results will not be quick."Because the "foundation" of C is the operating system kernel. C's "API" is basically a system call (that is, "Advanced Programming in the Unix Environment"). At this point, you need to be able to understand what the assembly spit out by the C compiler is all about. Then contact the operating system kernel, compiler, binary tools, etc., and figure out how these "low-level" things work (referring to "Programmer's Self-cultivation", "In-depth Understanding of Computer Systems", "Linux Device Drivers") ", "Linux kernel design and implementation", "In-depth understanding of the Linux kernel", "In-depth Linux kernel architecture"...). This pitfall of C is actually very big (don't let C++ take away that's what it means, the philosophy of C is - everything is basically dry stuff, as long as you can still chew... C++, this may not be the case, instead of spending time Instead of wasting on those fancy tricks of C++, it’s better to eat some dry stuff)..., because if you read the kernel source code, you need to understand Makefile, shell script, linker script, asm, and of course hardware architecture and the like. You know a little bit, but it doesn't matter. Anyway, it will be mentioned in books about writing kernels, and then you can check the relevant knowledge points yourself. It's just a matter of time.
Also, of course, the foundation of data structures and algorithms must be laid down here. For data structures, you can at least write (and copy) search binary trees, red-black trees, and construct graphs. For algorithms, basic sorting, merge sorting, quick sorting, To generate permutations and combinations, you need to know these basic searches of DFS and BFS.
C It doesn’t work quickly. Generally speaking, I will definitely not write about web crawlers for a while. However... maybe it's all worth it.
Clear the recursion of C. How to create and destroy function stack frame, how to translate it into assembly code, how to convert any recursion into stack structure + loop invariant. Then be able to deduce the conclusion that any loop can be expressed by recursion, but recursion cannot be expressed by a loop without a stack structure - that is, recursion has stronger computation than a loop (without a stack structure) Ability, in fact, the computing power of recursive functions is equivalent to that of a Turing machine. So here we are - traditionally speaking, we have entered the computer science/art door.
After getting started, you can play casually.
You can write an interpreter first to play with. For this, you need to prepare some basic theoretical knowledge of automata ("Introduction to Automata Theory, Language and Computation"), and then find a random compilation book ("Compilation Principles") to read. If one book is not enough, add a few more ("Compilation Principles") Principles and Practice", "Compiler Architecture"), probably go through it in full. Find another book that teaches you how to write an interpreter, such as "Homemade Programming Language" or something. Then copy. After copying, read the compilation principles and copy again. Something like this. This means that you can invent a computer language yourself. Although it may not be in good taste or implemented poorly, you can indeed write a computer language that is complex enough.
Then play casually.
For example, if you are in the Lisp system, it is recommended to play with scheme first. Prolog, Haskell, Ruby, io, Erlang,... Play around when you have time. Anyway, learning any language at this time generally doesn’t take much time. If you just want to get started, there is actually no need to learn any language at this time. If you learn it temporarily and imitate the style, you will basically be able to write decently. That is to say, this is real play. Anyway, you can write the language yourself. At this time, it is about cultivating "taste".
Then just play around, for example, I am not proficient in the kernel, but if I look for it, I can find where the code is; something in the compilation theory and a certain piece of code can actually be written to be more general or more refined; The implementation of a certain data structure and algorithm is quite interesting. Think about how to write it and compare it with how others have written it... That's probably what I do.
Well, actually, no matter how much fun you play, it’s not enough. At this level, I can’t say it’s very low, but it’s probably not that high. There are still so many unknowns. However, perhaps the joy of life lies in this.
I recommend python
It is not recommended to learn languages such as php, java, python, and javascript. This is not to say that these languages are not good. If you want to find a job as a specialized software engineer, then learning these languages is the only choice. Use these languages There are many companies and jobs are easy to find.
However, the person who asked the question is an accountant, and I learned programming mainly because of my interest and practical help in my work, so I suggest learning windows.
The .net technology system under the system, and the preferred language c# under the .net platform
Why learn the .net platform and c#
The questioner said that one of the reasons for learning programming is because of interest. Since it is an interest, you don’t need to consider employment. You should learn the coolest and most powerful language. Obviously, c# is the best choice. There are so many programming languages in the software development industry. If you want to find a language with the coolest syntax, the most convenient and the most powerful functions, it must be c#.
Of course, some of the current functional programming languages can crush c# in terms of syntax, but I think they are really not suitable for non-professional players to play with. Learning functional programming languages is more difficult than learning ordinary programming languages. It's so big, it's better to use this energy to make simple things perfect. After all, the main job of non-programmers is not programming. However, if you are interested in functional programming, f# under the .net platform is also a good choice.
The second point is that it must be useful. The subject is thirty years old and has been working in the accounting profession for many years. I believe it is impossible to change careers and become a programmer. That means you don’t have to learn the most popular languages in the IT industry. It's about choosing practical learning. There is no doubt that c# is still the first choice. One characteristic of using Microsoft technology to develop software is that even on different platforms, the programming concept is the same. In other words, if you learn to use C# to develop websites, then you can smoothly transition to using C# to develop Windows clients. terminal applications, windows10 uwp applications (including windows
phone), windows shell scripts, and what’s even more incredible is that you can also use c# to develop android and ios applications. This is simply a way to eat all over the world. One language covers all platforms. In addition to Microsoft’s .net and c#, there are also Who can do it? As long as you learn .net and c#, you can develop whatever software you want in the future, and you can pretend to be good at work.
It is undeniable that in terms of the number of libraries, python and java may have more libraries than .net. However, most of the libraries in .net are provided by default, which is enough to develop any imaginable function, at least for me I have been writing .net programs for many years and have never encountered the problem of insufficient libraries. Moreover, the biggest problem with python and java libraries is the version problem. The most common problem I encountered in the process of using python and java is that the version of the library downloaded online is inconsistent with the locally installed operating environment, resulting in various inexplicable seconds. Crazy errors, these problems cannot be encountered in .net. In addition, the .net documentation is also very complete. No matter how trivial things are, they are all recorded on msdn.
Another issue is the development environment. If you develop programs in other languages, you must install a bunch of things such as running environments, IDEs, servers, and various configurations. For professional programmers, this is nothing. , Although the subject of the question is not a novice, it still takes a lot of energy on your part to do these things. However, the .net installation environment is incredibly user-friendly. With just one installation package and a click of the mouse, everything you need will be ready for you. You just need to use it. Moreover, when learning other languages, you often need to learn how to use Linux, which is additional pressure for non-professional practitioners. If you learn to use .net and C#, you will have no worries in this regard. Windows server The use is the same as that of Windows PC.
Finally, writing code also requires experience, and typing code must be vigorous. Therefore, which IDE you use is very important. If we were to discuss the IDEs on the market, the number one in the world would be Microsoft's visual studio. It is so fun to use vs coding and debugging that other IDEs can't match it.
So, don’t hesitate and start learning .net and c#
I'm not here to argue... I suggest learning English...
I'm writing Python code now. In fact, I really shouldn't recommend it to you. What language you use is more of your own business. If you know PHP, it is more appropriate to continue with PHP.
If you like the bottom level, just learn C and assembly. Buy a microcontroller development version, a few circuit design books, some components, a soldering iron, and an oscilloscope, and you can make some gadgets. (Pay attention to safety)
Learn more advanced functional programming, such as scheme and haskell. After you learn it well, you can join the high-end circle of functional enthusiasts.
It’s more practical to learn js and py. To build a website, writing a crawler is enough.
If you really can’t figure it out, let’s learn C++.
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn