Job Recruitment Website - Ranking of immigration countries - Should programmers choose java or c#?
Should programmers choose java or c#?
Java or c#? In fact, this should not be our real theme, and few people who have entered the industry will compare Java or C#, but for beginners, Java and C# often represent the two major schools, Java replaces j2ee, and C# replaces .net , ok, it doesn’t matter, this is the title and it doesn’t affect what we are talking about. From a language perspective, c# undoubtedly wins, with ease of use, low threshold, elegance, and simplicity. But the language features of Java and C# are similar. In the naming of many classes, they are exactly the same:
//javaSystem.out.println("java is better than C#! j-a-v-a!");
//C#System. WriteLine("Didn't you see that # has 4 characters? I'm 2 better than c, so just stop cooking!");
C# appeared later than java, so it is naturally absorbed and learned from , and at the same time it has its innovations, such as early support for lambda expressions, events and delegates, such as var, and linq. But from an interface-oriented perspective, Java can also do events and listeners, but the transfer of object references is more straightforward. The .Net class library and jdk have their own advantages and disadvantages.
From an application perspective, Javaee and .Net systems almost cover the mainstream development directions: desktop, Web, server, database, network, mobile terminal, and middleware. Which direction is stronger? This is left to the readers to experience for themselves.
Microsoft has given .Net the most powerful IDE in the universe and a unified and smooth programming experience in all directions. It has to be said that Microsoft makes it much easier to get started.
Java is inseparable from open source from the beginning. There are countless frameworks, engines, packages, blabla, and using Java to develop, programmers need to know more things. You'll have to integrate it yourself in most cases. But it is very powerful when integrated well, such as SSH.
In the fields of big data and cloud computing that have been very hot in recent years, hadoop, spark, tez, leveldb, mongodb, mariadb, hive, hbase, and oracle are all working hard at different levels. , most of these are extremely friendly to Java.
Many Java programmers think that .net development is just about dragging controls. In fact, I can tell you that Java programmers who say this are generally relatively novices. If you Those who work on .net, you can also say that those who work on Java just copy the code of other people's open source software and then modify it.
Of course, there is nothing wrong with making changes. No one likes to reinvent the wheel. For example, Google is not all about innovation. It often "takes" other people's things and make changes yourself. Needless to say, Taobao is very difficult. , I hired some programmers who could change C and compile a bit. They often used various open source frameworks and then claimed that they were their own. For example, the problem of Double 11.
Of course, this is not to say that there is something wrong with the people Taobao is looking for, but that the culture of this company is sales and advertising culture, and the same is true for Google later.
Back to the topic, the biggest innovation in wpf and silverlight (although it has been EOL) is xaml technology. If you think that wpf is just a simple upgrade of winform, or that you can only drag controls in wpf, explain You are still a very junior .net programmer, regardless of whether your salary is high or not, or you are already a project manager.
xaml was born for the mvvm model. Students working on the front end should be familiar with this. Even if you don’t understand how to do mvvm with wpf, js and html, you should have experienced its benefits.
In wpf, controls are laid out in xaml and support the INotifyPropertyChanged interface. It is very easy to separate the interface and data and create an mvvm model.
Speaking of markup language, let’s look at jsp’s jstl, struts2’s tags, and the razor engine after asp.netmvc3:
The tags of jstl and aspx are similar, free, It is powerful and can be easily interwoven into HTML tags;
Struts tags are an alternative. I personally dislike this kind of thing that neither follows mainstream standards nor is concise, although many people will say it is easy to use. , that is a matter of habit. When I say this, I am not saying that this thing is difficult to learn and master. I just compare it with the tag syntax in the razor engine. It is weak.
razor, powerful, simple and elegant.
You must think that I am a fan of Microsoft.net. In fact, what I want to tell you is that there are only two most powerful tag languages, html and xml. Intersperse dynamic statements on the server page, and then swipe It is never a good idea to write HTML, because you are not the only one who writes the code, there may be other people maintaining this page later. Originally, this is something that needs to be done by webdesigner, but with statements, its maintenance cost is very high. high.
In standard page development, programmers will not get involved in a css or style. Dynamic languages ????should be used as little as possible in aspx, view, and jsp. Otherwise you might as well use php and asp. You will deeply understand this at work. How do you choose when you are young?
Look at the current recruitment, they are always there
Proficient in j2ee, proficient in struts, springmvc, hibernate or mybatis, have in-depth understanding of mysql and oracle, proficient in webservice, proficient in multi-threading, To be able to handle high concurrency, some also need to understand jvm, and it is best to have development experience such as hadoop. Finally, another 211 or more.
What about .net?
Proficient in .Net, proficient in mvc3-5, proficient in wpf, wcf, multi-threading, mssql and so on.
I am currently resigned, so I receive some recommendations from recruitment websites every day, which makes me very depressed, because none of them are of which I am proficient.
But it doesn’t stop me from getting a monthly salary of 13K during my internship in 2012, which may be higher than some regular employees.
Moreover, if you think about it carefully, the code often talks about being easy to maintain, this design pattern, that AOP, this large concurrency, that high performance. I personally have not seen code that is easy to maintain. Learning a new company’s set of models and old products takes much longer than learning a new technology. You will find that 99% of the time, what you need most is not code or patterns, but the Understanding of products and business, in many cases, unless you are a novice, everyone’s code is similar. Who has time to refactor the code? Why do programmers work overtime?
This is the market situation. One project after another, the company needs to make money. This is the current situation of most companies.
Some questions
To access the database, just find an efficient connector or driver. Generally, among the manufacturers that provide data, who does not provide a connector? ORM is very necessary, but companies that pursue performance and anti-framework proliferation do not care about the convenience brought by ORM. They can still write stable and efficient data access using a jdbc sql.
To be a web front-end, do you really need to write a framework yourself? How many projects really need this kind of development? jQuery and d3, native javascript is enough. What you write may not be called a framework, but at most it is a wrapper.
I haven’t figured out the unique index, aggregate index, and auxiliary index of the database, so I started working on hadoop, spark, hbase, and mongodb. The employer has repeatedly asked for this. Is there really such a thing in your project? Large amount of data? Can't it be solved under traditional rdbms?
You begin to understand the concept of the wheel, and know not to reinvent the wheel. But you are no longer a programmer, but a frameworkr.
So, the question of whether to go back to Java or C# is much simpler than the technical split I encountered.
My opinion is, forget the opposition between java or c#. If you want to be a happy, self-pursued, and employment-satisfied programmer, you need to pay attention to the following aspects:
1 .Function call stack, many senior programmers only know this but don’t know why. You can not understand assembly, function entry, return address, register, but you need to debug, you have to have a deep understanding of the function call stack, whether you are debugging a jsp page developed by struts in dev mode, or debugging an aspx page in debug mode, you have to read Understand call stack information;
2. Basic data structures and algorithms, how indexes in the database are organized, whether it is B-tree, Hash, or heap. Your company has Web, desktop, and mobile users. If there are products in the community, you may want to make a recommendation or research a social graph or something. This technology can help you.
3. A dynamic language. Lua, python, and javascript are all available. You need to interact with the system at any time, or implement a prototype, or use programs to draw interfaces, data graphs, etc. Are they lightweight and fast enough?
4. A heavyweight language. Such as java or c#. You depend on them for food.
5. Understand the meaning of cross-platform. Master some basic cross-platform technologies, such as xml, c, html, and json.
6. Pay attention to the practice and understanding of network programming. When you use URLConnection or MySqlConnection or WebRequest, do you understand their life cycle and underlying implementation? It doesn’t matter what language you use. You have to remember tcp/ Basic characteristics of IP protocol and http. This way you won't have to worry about writing programs for several years and still don't know how method=post works.
7. Find a comfortable IDE. I personally am not a CLI expert. Although I have to use CLI, a comfortable IDE can really improve productivity. .Net recommendation vs resharper, java recommendation intellijIDEA.?
8. Pay attention to some popular and classic fields, such as machine learning, image processing, and data mining. Even if you already have mahout, it doesn’t mean you don’t You need to understand these areas. You may never use them at work, but their ideas are worth having because you chose to be a programmer, not a programmer for any company. ?
The rest is your problem-solving ideas and your hard work (coding ability) to implement it. I believe that many people reading this article cannot easily write an ftp server. It is impossible to write a simple quick sort without referencing or accessing the Internet to query data, and it is also impossible to easily write a general paging SQL, but they can still work normally.
So it is easy to forget the external skills, but you can pick them up if you have the Internet. Internal skills are the deepest things
- Related articles
- How much is the cheapest country for European immigrants?
- Does anyone know the origin of the place name "Longhu"? (Longhu, Dawukou District, Shizuishan City)
- What are the provisions of the state on the confirmation of rural homestead?
- What should Australian international students do if their attendance at undergraduate studies at the University of Queensland is low and they fail to graduate?
- Why can Malaysian Chinese maintain Chinese culture compared with Indonesian Chinese?
- Turkish immigrants in Germany
- How to pronounce Nantong Rugao?
- What are the similarities and differences between Korean and Chinese?
- What are the benefits of establishing channels? Come on, guys, 3Q.
- Brief introduction of USA, France, Brazil and Australia