http://blog.csdn.net/lanphaday/article/details/7217506
2012 three technical points not suitable for entry (UP)
Rai Yonghao (http://laiyonghao.com)
In fact, the idea of writing this blog has been in the years before, but has been hesitant to write, one is because it will certainly be someone to scold, just after the Spring festival, in their own areas to find scold, it is bad luck, and second, because my vision of the industry trend has always been not allowed, estimated that today's ideas are probably wrong, Wrong to look at the future of their own uncomfortable. But also feel that if the mind has an idea, do not record down, thoughts are drifting away, years long after, have forgotten that they have also had "view", should be for their own mediocre regret it? So it's still written. Write to write, please crossing down before reading, first tidy up the mood, to do: one is their own view of the world, and the other is to agree with other people's views can be different from their own, third is the view of others and not at the same time do not be angry because the gas is not for you. If we do these three points, read on, because the following views will be very extreme, very attitude, I welcome your message to discuss, to express different views, if it is purely abusive (or have a lot of dirty words), suggest you open a blog or send to your Weibo, do not comment on this article, because I will delete "purely abusive (or have a lot of dirty words)" 's comments.
Actionscript/mxml is actually saying that the Adobe Flash platform is not worth entering. In 2011, Flash is finally able to develop ios/android applications, plus the Web game market is hot, it is estimated that many people will want to enter this platform. But I have different views, a few reasons:
1, Adobe is market-oriented, no technical leadership temperament. With the advent of video sites, the new version of Flash player strengthens video playback; After the rise of the web game, the new version strengthens the graphics rendering, and when mobile device development emerges, the new version is able to run on more platforms. Always follow, never lead; Choose the flash platform means you can never walk in the leading edge of the times, only eat others eat the rest; choosing a flash platform means that your most urgent needs are not met, such as the recent busy support for mobile devices, We do web games hope that they enhance the real-time small packet network transmission demand is no one at all.
2, HTML5 out, Adobe This is also not many technical staff of the company also distracted to support it, out of the SWF into the Html+js+css tool, out of the graphical HTML5+CSS3+JS programming tools. It is willing to lose his life, because it is only a tool, support HTML5 like Photoshop supports a number of image formats; but programmer you, you are the revolution after your future where, saw the "middle-aged laid-off workers" not?
3. After the release of ActionScript 3, the language was largely unchanged. You see, since the release of Flash Player 9 AS3, even the C + +, C language has a new standard, java/c# this kind of big company support language changes huge, even python also out of Python 3, not to mention Google's new go and dart two Excellent language for the door. AS3 as a dialect of ECMAScript, now ECMA-262 is released to version 5.1, it still does not want to follow the look.
4, Flex SDK class library Dog blood copied the earlier version of the Java class library design, even the defects are copied not mistaken. How many times have you looked at its manual in order to intercept a subset of the elements of an Array? And that's it, and there's a bunch of bugs. Do you know that application.application is going to change?
5, virtual machine, JavaScript has a V8 engine, and AVM or that AVM, countless users complain that it is not used slowly, high priority demand is always more able to make money directly. Choose Flash as if you were a racer with a small horsepower car, and although you turn well and never crash, you might be able to get a big-horsepower car to overtake you. JS has a V8 after the development of node. JS from the front end to the back end, expand the wider application area, as in the foreseeable future, or can not escape the "write Little Animation" fate.
6, Stage 3D is not the savior. Don't forget the "low-level" attribute, if you use the Stage 3D APIs directly to write programs, you know how painful that is. Select A3D, Away3d can alleviate a certain amount of work, but the use of open Source engine support is poor, less features. Objectively speaking, writing 3D applications should now choose Unity3d or Unrel Engine 3, which can be compiled into SWF anyway.
7, 2012, web game winter does not come, at least also fall. The growth of the web game will slow, in fact, from the fourth quarter of 2011 can be seen that the major companies are beginning to compress the product line, began to no longer recruit a large number of recruitment, but to the digestion has been recruited before the technical staff. In 2012, there will be more page tour startups shutting down or turning to mobile game development, as developers will be in excess and pay down. If you start into the As field in the first half of 2012, you will meet a large number of newly laid-off competitors in the second half of the year, and the high-paying dream must be dashed.
8, mobile device applications or game development in the 2012 will also be the capital of the hot, but as in this area of competitiveness I have doubts. Flash Advantage is the cross-platform, and Unity3d and UDK can also cross-platform, the same can be used in scripting language development, and performance, effect is more excellent. As Unity3d and UDK can be compiled into SWF to run on Flash Player, the need to learn as is further reduced.
With 8 points, you can see the lack of direction and prospect of the Flash development roadmap led by Adobe without the technology gene, coupled with the pitfalls of ActionScript and the Flex SDK itself, and the strong foreign enemies of Unity3d and UDK, plus the web game market It is not a wise choice to fall under the Phoenix. Adobe Flash certainly does not die, and will not lose a lot of market share in 2012, but Flash Programmer's 2012 is not good, want to live easy point, pay attention to distance.
2012 three technical points not suitable for entry (medium)
Rai Yonghao (http://laiyonghao.com)
Thread
A thread is a single sequential control flow in a process that is the smallest unit that the operating system can dispatch, with multiple threads in a process that perform separate tasks. Threads have kernel threads and user thread points, but only kernel threads in this article. In software development, the use of threading has the following benefits:
1, in multi-core or multi-CPU machine on the multi-line process can execute concurrently, improve the operation speed;
2, the I/O, human-computer interaction with the dense operation of the partial separation, improve I/O throughput and enhance the user experience.
The disadvantages of threading are also obvious:
1, the creation of a thread requires a large memory overhead, resulting in the creation of a huge amount of threads;
2, the thread is scheduled by the operating system (allocating time slices), the CPU cost of thread switching is higher, resulting in a large number of threads exist when a large number of CPU resources consumed on-line switching;
3, the same process of multiple threads share all system resources, in the multi-threaded shared resources need to enter the lock, a lot of lock costs do not mention, it is important to increase the complexity of programming, this point you see how many titles contain "multi-threaded" three words to understand how difficult to write a multi-threaded application;
4, I/O aspects, multithreading help is limited, for example, TCP Socket server, if each client connection by a dedicated thread service, then this Server may be more than 1000 concurrent. To further solve the problems caused by concurrency, modern servers use Event-driven I/O.
Event-driven I/O solves the problem of concurrency, but introduces the problem that code is fragmented by callback functions. Especially when Event-driven I/O is combined with multi-threading, the trouble doubles. The solution to this problem is to use green threads, where green threads can exist in the same process tens of thousands of simultaneous APIs that can be encapsulated on asynchronous I/O, typically using a Python library gevent based on Greenlet + libevent. The flaw of the green thread is that the operating system does not know that it exists and needs to be dispatched by the user, and it cannot take advantage of multicore or multi-channel CPUs. In order to solve this problem, many Daniel have made great efforts, and the results are very impressive, Scala, Google go and rust have better solve the problem, the following is an example of rust's concurrency model.
Rust presents the concept of a task that has an entry function, a stack of its own, and a portion of the process heap memory that you can see as a green thread for ease of understanding. The rust process can create thousands of Tasks, which are scheduled by the built-in scheduler, because Tasks do not share data and only communicate through channels/ports, so they are highly parallel. When the rust program starts, it generates several threads (the number is specified by CPU cores or runtime) that perform Tasks in parallel to take advantage of multiple CPU cores.
For example, the rust application keeps spawn out one task at a time, which is managed by the Tasks scheduler, where the scheduler assigns certain tasks to the native thread, and if the task enters I/O waits or voluntarily yields the CPU (sleep), then this The task is handed back to the scheduler, and the corresponding native thread executes another newly dispatched task. Although it is not possible to create threads using the Rust programming language (calling C functions directly), the rust application is actually multithreaded (in general), and it is able to take full advantage of multicore or multi-channel CPUs.
In summary, the concept of a Task like rust is a better concurrency model than a thread, more secure, and easier to maintain (about maintainability, I believe written by gevent degree or go program reunion). Threads certainly do not die out, but as scala/go/rust matures, in the foreseeable future, the thread will fall back to its corner: Far from the ordinary programmer, only a few people need to know its details.
2012 three technical points not suitable for entry (bottom)
Rai Yonghao (http://laiyonghao.com)
C++
C + + in 2011 In fact, the c++2011 standards issued, Gcc/msvc/clang are very fast support many new features, the new mobile device performance is poor, but also the C + + stage, in this time to sing bad C + +, the pressure is great. I used a lot of C + + years, but in addition to the school when I wrote two games participated in two games (respectively, for the community and for college students) to get some certificates to find work, in the work only used about less than 1.5, do "chop Soul" (HTTP/ zh.163.com), wrote a few processes on the server side and the GAMEAI portion of the client. Less experience, and poorly written, so basically someone in Weibo asked me C + + questions, I was forwarded to @bnu_chenshuo and @miloyip and other real experts to answer. So actually write this today, I am very weak, but friends to the first two great face, made me tiger, had to bite the bullet to write.
Referring to the new standard of C + +, it is necessary to mention the impact of standardization on C + +. First of all, we must affirm the positive effect of standard customization on C + +, but the ultra-long process in the standardization process pushes C + + to the abyss. The first standard for C + + was 1998 ISO/IEC 14,882:1998, and the first version of MFC (Microsoft Foundation Class Library), the most popular C + + library for the entire 90, was released for a full 6 years. In 1998, the MFC version number was 6.0, and the Visual C + + 6.0 with which it was published was a huge market. Because MFC publishes standard-setting time, MFC internally implements many of the components later in the standard library, such as various data structure containers. VC6 market share of the Windows platform developed under the many C + + programmers do not even know that there is STL, but also ignore the c++98 standard, from the more compatible standard of vc2002/2003 market share can be seen, until today, I know that many companies in the country or only with VC6.
In fact, in the 90 's, computer computing capacity is limited, the market needs a high performance, abstract strong programming language, C + + has been successful, but it has been standardized for a long time, resulting in various compilers have their own incompatible "dialect", became its first soft rib. The first to aim at this soft rib is that Java,java launched in 1995, although less performance, but it has a higher abstraction ability, but also more secure, and easier to cross the platform, so quickly achieved success; The second point of this weakness is C #, Microsoft can not promote C + + development, but do not want C + + market is Java swallowed, so in 2001 launched the C #, after 10 years of development and Microsoft a lot of money to promote, C # has successfully won its rightful place in the lake.
Although java/c# is not angel, C + + has a strong position in the first decade of the 21st century, because Linux and MacOS X have been successful, and C + + is a very competitive programming language on these two platforms, and C + + has risen naturally. But with the advent of web2.0 and web App concepts, as well as the increased CPU frequency, the server-side programming language is gradually less sensitive to execution efficiency, but more concerned about the programmer's development efficiency, and many scripting languages begin to Nibble on C + + 's market share, from early Perl to late python/ Php/ruby, after 2005, c++/java/c# and other static types of compiled language market share has declined, the emerging aristocracy is dynamic language. In the face of the dynamic language in the development efficiency of the strong challenge, the C + + community in addition to the c++98 in 2003 made a small patch, basically asleep, there is no response to the strategy, oh no, even the application posture is not.
Entering the second decade of the 21st century, the market has changed, cloud computing is getting closer, perhaps most of us can still say that only the sound is not its shape, but the Data Center is the computer this sentence people should feel very pragmatic: to complete a user operation, The number of inter-process communications on the server side has never been greater. In this decade, we need such a programming language:
1, can make full use of the modern CPU computing power, not only a plurality of cores, but also a huge l1/l2/l3 Cache, hyper-threading, etc.
2, can reduce the performance of asynchronous I/O to improve the side effects of the same time: the complexity of asynchronous programming and the damage to maintainability;
Two sentences can also be compressed into one sentence: need to have a better concurrency model of the language. In the beginning, everyone looked in the existing programming language and then found Erlang, which proved that Erlang had its limitations, so new languages like Google Go/scala/rust were springing up. The C++2011 Standard strives to reduce the difficulty of programming in C + + and provides a line libraries to support modern CPUs, which, if in 2005, is absolutely competitive, but today it can only become a stepping stone to the new programming language. Just as IE's greatest use is to download other browsers, and soon, it may be popular with new cold jokes: C + + is the biggest use of the implementation of other programming languages.
The market has been looking for an intermediate high-level language, which covers C and assembly languages, and a scripting language. C + + was the first to seize the Highland, and in the battle with java/c# not down, but the new decade, its opponents added Google Go/scala/rust and other new sharp, and the new standards can not be introduced in two or three years, the new sharp growth in two or three years, left its position is not much.
The above discussion is basically server programming, it is necessary to look at the desktop and mobile device domain. First look at desktop software, Rust is the Mozilla Foundation development System Program language, it is positioned to partially replace the C + + development of Firefox browser, so rust will enter the desktop development, Google Go will definitely take a bite. Mobile devices, mainly Android, iOS and Windows Phone, with the mobile device performance enhancement, the compiled language plus script mode will be large, the compiler language is mainly C + + and objective-c in the competition, C + + will prevail (but the demand is much smaller than the script , from the growth of LUA in 2011 can be confirmed), but who knows rust and so will not enter the mobile device, after all, mobile device CPU Core is also more and more Ah, C + + or Outlook worrying.
Looking back on the 30 of C + + and looking forward to its future, it may be summed up that the standardization process is dragging the dead. If the 15 is not standardized, java/c# 's spoiler may not occur, and if it can cope with dynamic language in 2005 ... If the cloud era has a better concurrency model ...
Digression: Java/c# will not have C + + problems, because they have their own platform, a huge wealth of support. Especially the platform is very powerful, you can imagine if Adobe has its own browser or mobile operating system Actionscript/mxml will not be the situation today, you can also imagine Google Go's rapid development momentum is what.
Two explanation 1, I think it is necessary to explain the "inappropriate entry" of the four words, I would like to express the meaning is if you are not the experts of the three technical points, and do not use these three technical points of the project, into the three technical points only for technical reserves, then "not enter". In addition, I am not saying that using the three technical points of the project died, learned the three technical points of the people can not find a job, or the three technical points tomorrow or next year on the game over, the residue is not left, not the meaning, they will exist for a long time. This article is not called experts from the waste of martial arts, is not called the technical modelling of the project hurriedly change technology, for example, if you choose to do server-side with Java, Flash client development of a webgame, then you'd better put Actionscript/mxml and Java Multithreaded programming (and asynchronous I/O) to drill through, or it may fall into the trap at any time.
2, New Year, work and family have very important things to pressure on the shoulders, everyone's comments I do not reply, I will be in a two weeks after the unified write a "2012 should not enter the three technical points (Q&a)" Unified answer, please forgive me.
Read (1005) | Comments (0) | Forwards (0) |0
Previous: 70, 80 's one-child parents call for 2012 to liberalize the separate second child policy plan
Filed under: 2010 Embedded Curriculum
Related Popular articles
- Collection of Prizes: Anthology-Blog Series Bowen ...
- Pain of Chinese software Development engineer ...
- Five years of graduation (continued)
- The first time in life
- Five years of graduation
- Linux DHCP Peizhi ROC
- Soft links to Unix files
- What does this command mean, I'm new ...
- What does sed-e "/grep/d" mean ...
- Who can help me solve Linux 2.6 10 ...
Leave something to the owner! ~~ Comment on the hot topic
2012 three technical points not suitable for entry