I am not sure whether this article is biased, but I do see many evaluations that I have not seen before. Some other on-line evaluation of MS, it seems to see the few, I am tired of watching, and there is no this article strategically advantageous position. But I think the small programmer to do their own thing on the line, the language does not have so many requirements, ASP to PHP should be easy, HTML and JS is still common, C # to C + + is difficult. So this article is not too strategically advantageous position for the average programmer?
-----------------------------------------------------------------------------------------
Do not want to black Microsoft, originally only a word, recommend Qt, away from Microsoft, someone asked, supplemented points, some people asked, and supplemented the point, and then out of the door back, feeling with stabbed a hornet's nest. Since all speak of Microsoft, I can only spend some time to clarify the problem, or become I am misleading the main, it is not good:
-------------------------------------
Don't use Microsoft's stuff. Business purpose is too strong, do not be led by Microsoft's Nose, bloody lesson. There's a lot of rubbish coming out of Microsoft. It wants to do everything, many do not do:
1. Mfc:win31 ERA was born, Win95, 98 o'clock, although has been updated, but the interface and concepts are too long-grown. You have to do a modern interface, a lot of things to do their own manual to get. The same interface, a programmer familiar with MFC needs to develop 2 weeks, and a just learning qt one months of college students, three days to be done.
2. WTL: Several million dau-scale products have been tried, and finally give up useless, Microsoft is not much control.
3. SilverLight: Against Flash, when it was launched, was Microsoft touched the next generation of desktop/web Unified solution, some people really go to use, the result? That's crazy. Want to find some third-party control, less to die, want to recruit also can not get, finally switch will flash go.
4. asp net: When Microsoft went to college to learn about college students, learned a half-day, employment, found that the Web page is all the solution under Linux, silly. First-line internet companies are not using sqlserver+asp NET, are exclusively open source free.
5. C #: This is still good, more than 10 years ago, the same year cheated college students, said is much better than Java. I have received many years of student resume is proficient in C #, the problem is more than 10 years have passed, look at today's Tiobe leaderboard, Java score is C # more than 4 times times, server development web/non-web, enterprise development, Java is the end of the explosion C #, let alone Java development Apps for Android devices. Microsoft's words again did not count, that year learned a long time C # students, work after the touch will not touch.
6. XNA: Joke One, that year engaged a lot of XNA game development Contest, tell everyone XNA is the game development tomorrow, can quickly build a small game, or quickly write the game demo for verification. We evaluate the use of what to do with the new demo, the final evaluation down, PYTHON+PANDA3D, ease of access than XNA a few streets AH.
7. Directmusic+directinput+directplay: It's all nuts.
8. Sound: Wave interface---dsound interface---CoreAudio interface, it will not be stable.
---------------------------------------------------
Microsoft's idea is to look at a development tool, and then own a set, and then through their own powerful influence, to trick everyone to use their things, and finally everyone use down or feel good open source.
Microsoft Interface Solution: Gdi/win32 own painting, Mfc/gdi own painting, based on Win32 of various interface library, WPF,SILVERLIGHT,DIRECT2D, see you do not know which to choose, but you want to do modern popular interface, a QT direct seconds kill them all.
To tell you a bloody lesson, the company's game with the dx8 development, developed for two years, when Microsoft began to push the so-called revolutionary DX9, but Microsoft stressed that DX9 compatible dx8, but dx9 performance is better, and there will be no dx8 of the big update. Well, first of all, the game on the first, but the competition of the game immediately claimed that the perfect support dx9, the full play dx9 xxxx, I wipe, no way, since the trend is dx9, that change, learning is also very fast, not just the API, changed three months basic change finished. But encountered a variety of pits, the various documents can not find the answer, the net has not met the pit (that year dx9 relatively new), back and forth toss 1.5, the game is counted OK. Ran not long, then Microsoft's dx10 out, known as the perfect compatible dx9, but DX9 will not have the nature of the update, you quickly learn dx10 it, performance is good, and so you learned dx11 again.
Imagine you a programmer, more than half time to pay Microsoft tuition, it is worth it? How much time does life have? This is called by Microsoft to take the nose. Looking back at OpenGL, until now, still using the 1.2/2.0 standard, ES 3.0 just out, which is called stability. Once you're tied up with commercial interests, you're nuts. NET seems to be 5.0 now, right?
Cross-platform:
Before I write some client code, with a lot of VC features is tolerant attitude, after all, each programmer has his own familiar areas. In the case of limited project time, let the familiar Windows programmer with many VC only features, such as: DWORD, Dibsection, CString, #pragma once and other things can also be tolerated, after all, the client is generally Windows.
Later, the client changed, and one code needed to run on multiple platforms at the same time. In addition to VC compilation, also need GCC, clang compile. When one of our code needs to run simultaneously in Win32, mobile platform and Flash (Crossbridge), those VCs that were accumulated in that year only had a lot of time to renovate the code for cross-platform. Although the VC has #pragma once these or more advanced syntax sugar, but gcc/clang no case, can only retreat and seek the second.
Through this renovation, the client will be the same as the server implementation requirements, exclusively cross-platform, no longer see any VC only code. All items go to vs.
------------------------------------------------
Answer 1: "Business purpose is too strong, to Microsoft teaching fee this sentence is very ridiculous, now also want to learn a thing to protect a lifetime, learn what is not learning, web game fire, learn flash, mobile phone to learn OBJECTC, learn Android development, game engine became Cocos and Unity3d, Do the website later popular PHP and so on, this kind of example is too many, Lou Mfc,vb,asp, these years all brought a lot of employment opportunities, people into the door, landlord subjective emotions too strong "
Yes formally learned new, will abandon Microsoft's things, such as learn Qt will abandon MFC/WPF, learn PHP will abandon ASP, learn Java will abandon C #, learn Flash will abandon Silverlight, learn MySQL will abandon SQL Server. And then you'll find out, what did I learn from Microsoft, wasting my time?
That year many people rely on the development of MFC VB, that is because there is no better, today there are so many other options, MFC VB can be relegated to the second-tier. It is because there are so many platforms to deal with, especially if it is a C + + programmer, can not use too much CString these can only run in VS, not to Android and the server with GCC compiled, unable to iOS under the clang compiled code. It's called going to Microsoft.
And if you have no choice, such as you use DX, then you suffer, it every two years out of the generation, so many versions in the end is the beginning of the interface is not designed to continue to refactor it? Or do you deliberately have to do it again? The original 9 I remember correctly is to push WinXP, only XP can run. And dx10 is to push Vista and Win7, forcing you to play a better effect must dx10, and you want to play a good game, you may be forced to upgrade your operating system. This is called commercial interest-driven.
Other platform development, many graphics workstations with OGL, game host with Ogl,android with Ogl,ios Ogl,mac with OGL, and OGL decades to today's major version is still 2.0, including es2.0, which is called no commercial interest-driven situation.
So analogy, a new platform, with Microsoft's vs2015 and QT, then use QT bar.
If you think that vs is good for the IDE, you can use the VS IDE to write QT code before there is no better alternative to the IDE. It's called stepping into Microsoft.
-----------------------------------
Update: Wipe, originally only a word, recommended Qt, away from Microsoft, someone asked, supplemented the point, someone asked, and supplemented the point, and then out of the door back, feeling with stabbed a hornet's nest. Now that we're all talking about Microsoft, let's start.
The origin of the problem
Microsoft is the front line is too long, busy to dominate the standards, to develop a variety of frameworks, in order to better carry Sihuo, with one you have to use something to push another thing that he wants you to use, such as DX and windows, such as C # and ASP. NET, and because the leading developer, can further dominate the user, and dominate the user, a lot of profits will come. In the whole chain, if the consumer has no choice, developers do not have a choice, Microsoft can want to sell what to sell, complete foundation long green. It's okay to have a new thing, and I don't support it if it doesn't suit my interests. If the new thing is promising, I'll do it myself, and then kidnap my developers and users.
In which direction will there be a future? Microsoft does not even have a self-articulate. In the end, which area of the future software ecological impact is relatively large? Microsoft itself is unclear. Can only move to a variety of places to work hard, before the technical field is relatively narrow, Microsoft can include the entire industry chain, compiler/ide/framework, developers can hide in Microsoft's circle not come out. There are more and more branches behind each technology field, and Microsoft is a bit overwhelmed. But the strategy remains the same, trying to dominate standards in any technology field. Use your influence to bluff all kinds of developers: "Come with me, have a good tomorrow", but the technology field every day to introduce new, create a subdivision. In order to dominate more new areas and dominate a field, Microsoft's focus is not on perfecting the field, but on focusing on other new areas.
For the technology of the support period, Microsoft will use its powerful influence to carry on the various bundle edition integration, tells you: "The new revolution has arrived again, are you ready?" "And tell you:" After using it, you have nothing to worry about, "xxx is about to stop the support", and then a variety of communities, a bunch of MVP before the rush to promote: "XXX Dafa good, Ms Mana Boundless"; On the bookstore's counter, instantly more than dozens of red cover on the black cover of the treasure; Csdn's homepage, Various Microsoft TechED, summer camp. A lot of people a look, I am, the whole world is used, I do not need to be eliminated?
After the support, Microsoft entered the kidnapping period, in order not to let you use other things, Microsoft wants to do everything you need, and then in order to meet all of your possible needs, start the desperate version, to compatible with a variety of things. Many people think this thing seems to be strong, anything can do, do not learn the other, Microsoft Smile Blossom, think can kidnap everyone, and then began to use the technology to smuggle more and more sihuo, or new technology, or to force other people to use another thing, in order to compatible with these Sihuo, continue to soar version, It's called kidnapping.
When you accumulate more and more code, or mature framework, you suddenly found that the original thing you can do is only in Microsoft to you delimit the three acres of continuous cultivation. Want to use it to develop something that Microsoft does not support commercially? No way. The longer you rely on Microsoft, the more expensive it is to make choices. There will be two endings, the first, Microsoft points you to the direction of the next revolution, you have no choice, cut the original accumulation into the next revolution. Or, Microsoft felt that in this area of the country's stability, competitors are gone, no more than a moth, so completely start not to think ahead, you use outdated technology anxious.
Lee Kai-Fu, a former vice president of Microsoft, recalls: "Once a product team loses its enemy, it will slack off, and gates and Ballmer will withdraw their investment and support." For example, after Microsoft IE defeated Netscape, Microsoft lowered its investment, causing its browser to make no progress for many years, until the "Firefox" enemy appeared again, and began to perk up again. "Firefox is the" orphan "of Netscape.
the kidnapping of Microsoft
MFC is a good example, when the competition with VCL very aggressive, vcl a dead, MFC also died, the modern interface system are windowless directly draw control, bulky MFC is also based on the system control. A lot of OnPaint do their own work, people do not say, work efficiency is very low, skilled MFC engineers are still more than one months of learning QT students development efficiency is high, you say I will choose what? MFC also need a variety of Kit Kat to achieve the effect of the QT, the skills of the people change, the project is silly, considering this, you say I will choose? The last two years of UI development has started to be scripted, and you'll find QT has a variety of support scripts (in addition to the embedded JS-enabled Qtscript, Python PyQt, and Lua) to choose from. The core code C + +, the logical interface Python, the script development UI does not want to use the C + + write UI, because interface logic scripting can increase productivity at least twice times. What about Microsoft's strategy? Want to use a script? No way, because I don't push the script but I push C #, so you want to easily write the advanced interface? or follow me to get. NET and WPF go ahead, it's called kidnapping. In the face of kidnapping you have no choice, the developer of Microsoft Department of Code and experience accumulated more, want to choose non-Microsoft of the higher the cost of things, want to not be kidnapped by Microsoft the price is greater.
Why would anyone want to script QT instead of scripting Microsoft's interface system? Microsoft's technology is not the same as the QT, but everyone spurned Microsoft's bad temper, plus Qt is open source, for it to achieve a variety of script convenience. This is not to say that the open source of things will certainly be better than Microsoft's things, Microsoft has a lot of leading technology to open up several streets, the main problem lies in Microsoft's closure. So my argument is not necessarily to use open source, but to suggest that you have a choice of options, non-Microsoft technology, such as QT, Flash this.
death has to dominate industry standards .
To guide industry standards, Microsoft has a lot of good design things, a variety of audio and video formats, and the latest HD photo format, much better than jpg2000 and Google's webp. But a lot of people because of Microsoft's closure does not buy Microsoft's account, many frameworks and software directly support WEBP, and few people support WDP, in this case, I would prefer to choose the next level of WEBP.
Microsoft has a lot of standard things, such as WMV, WMA format, the very advanced, Microsoft also every day to use these two formats, but because of closed, eventually lost support, we chose a more open plan to replace, Microsoft also do not think enterprising, the final video field is now h.264/ 265, the Audio field is HE-AAC v2.
Microsoft is also trying to replace the PDF, leading the field of standards, and then out of an XPS. The technology is really much higher than the PDF, but no one uses it, no software support, even the printer only supports scanning into PDF format. So I chose pdf not because the PDF technology is stronger than Microsoft, but because it's not Microsoft's. And I guess a couple of years out of a pdf2,xps also like WMV into the coffin.
Again, such as SilverLight, Microsoft is not too sure of the case to push this thing, is because the fear of C # because the RIA can not meet the development of C # developers lost to Microsoft, for this. NET also forced everyone to upgrade several versions. Unfortunately, we all know, so Microsoft's own support for it is much less.
Did you say that Microsoft is weak in technology? Not weak. So why are all these things so obvious? Microsoft has to try to dominate the industry standards, but ultimately it will not dominate? That's because the Microsoft strategy we mentioned earlier has never changed from decades ago to the present, but times have changed.
Win32 API
Win32 is the most stable interface of the system layer, the basis of all functions. Such a basic thing, Microsoft should be a great effort to continue to develop, right? No, just give me two examples and you'll find that it's already a lot behind the world. Microsoft is capricious, think I provide the development model can solve all problems, why should refer to other operating system improvements? I'm going to pick you up even if the other operating systems offer a good function. And in accordance with Microsoft's consistent rules, the System API field, I completely control, then I improve the power is not so strong, the ordinary can not be self-talk Win32 API, let alone want to submit change patch to me.
Thread synchronization: If you write thread synchronization, you will find that the Win32 API is missing a lot of key things such as: condition variables, read-write locks, the two most basic can be combined into any other synchronization model of things, Microsoft until the age of Vista to provide support (MSDN Condition Variable) , which means that if you use it, you will face the difficulty of running under XP. You ask Microsoft XP what to do, Microsoft said to use the event to wait. You are surprised, the event so retarded things can replace the condition variables, why no longer the XP era of support?
One-time initialization: pthread_once, yes, under Windows because of the lack of this thing, you make a global variable for your interface to access, you need to ensure that the variable is initialized only once. Even if multiple threads call the interface that accesses the variable at the same time, there is no case of two initialization, and Pthread_once is doing it. Write the code directly: if (inited = = False) {init (); inited = true;} thread is unsafe, add a criticalsection outside, then you need to go ahead to init this criticalsection, but also to ensure that There will be no more than one Init, the problem is still unresolved. So a lot of people in the solution under Windows is that the global variable declares a static instance of a class, so that before main (), the constructor of that class can be called in advance, and then introduce a new problem, and there will be many global instances who first who is the structure of the problem, you have to use the disgusting # pragma the macro to resolve, and finally initialize the code mess. And if Microsoft offers a similar approach to pthread_once, it may all be refreshing.
Network interface: People who have used the Winsock interface feel humble, you want to achieve high-performance network services, you need to control TCP a lot of detail parameters, such as Tcp_nopush, Tcp_cork, and quickack these control adjustments TCP is designed for traffic optimization or basic functions for flow rate, which is not seen on Winsock. Not to mention the modern features of Google's TCP rate optimization (Kernel 3.2.12 included in Google patch). Even compared to the most basic and traditional POSIX sockets, the behavior of Winsock is also chaotic, such as reuseaddr, such as Win32 you listen to a UDP port, send UDP packets to the remote, if the remote does not listen to the UDP port, then you receive ICMP on the server: After the port unreachable, the UDP socket is completely reset, the subsequent data are not read in, continue to give you 10054, funny bar. Unless you create a UDP socket to do a whole bunch of *windows unique * dedicated settings, otherwise Vista will be 10054. Vista before, by default, if the client rejects the UDP packet on the service side, the UDP socket on the server will not be used, is it funny? There are also various basic functional limitations, such as: lack of poll support (forcing you to replace with IOCP), select up to 64 FD, no socketpair. Of course, without these can also write Web applications, but the UNIX network code to write a sudden to win under the write, will think this is really a toy ah.
Tls:tls there is a limit on the number of things, but the thread local storage needs to be destructor, that is, I created a local store to save an object, I can set a destructor function pointer, when a thread exits, this function will be automatically called to. For example, you want to implement a per-thread cache (such as Class Jemalloc arena), thread exit can be automatically destructor, this most basic operation in win but can put you dead, native TLS API does not have this support, You don't want all the threads to quit to force the user to call destructor, so you open a thread to listen to all the threads? What's the trick? Look at the boost and Jemalloc these destructor implementations in win, and you'll find it disgusting to die, just like you're going to weld a very unsightly flying line on a neat circuit board.
gdi/gdi+: GDI is a good, born early and bear the basic work of the GUI, after all those years, so it is understandable. But GDI +, the XP era, was born behind the Times. The same level of open source project Cairo (GTK backend, wine used to emulate gdi/gdi+ backend, Webkit/mono backend) and Quartz (OS x Graphics back end), GDI + in addition to the speed card, the image quality is poor, the function is simple, does not support anti-aliasing, There is no qualitative improvement to the font effect of GDI. So the application software under Windows has been criticized for the quality of fonts and images. It was not long before the direct2d came out hoping to improve the situation. A lot of XP-compatible programs are still running on the gdi/gdi+.
(There are many problems, omit some words below)
By Microsoft's ability to improve these basic interfaces, it should not be difficult. But the long lag of the underlying interface reflects the arrogance of the company's victory.
Governance and Division
Microsoft's interface design has always been a lack of beauty, like complications, like what things are mixed together. What's called unification? Is what can do, seemingly very strong, a thing can do a lot of things, the beginning is good, but over time, the coupling is high, a variety of intertwined, once one of the design is "clever" things out of date, then all the things that depend on it will face death. What's called division? is to ensure simplicity and scalability, and each system is focused on doing one thing. One can't, replace it, the whole solution is made up of several sub-modules that can be replaced, which is called divide-and-conquer.
The Windows technology stack is a typical unification design, and he has a lot of clever, highly dependent things. For example, "Everything is a window", the idea, from a design point of the question. For a simple example, wsaasynselect used to know that this is a network interface that is used to determine which sockets have events on them. But it's a funny example to pass a window handle past and let the window accept network events. Why is Microsoft so designed? Because the application itself has a message loop, which is the window message loop, the window message is not processed if the application that handles the network uses a Unix-like poll method to wait for the message. If you put poll on a line thread, then the UI thread is looking for a network thread to do something, the network thread in the poll wait cycle, if there is no new network data come over, it may not be able to ignore the UI thread request for a short period of time. So Microsoft's solution is to let the network layer of events into the UI window event, so it is more convenient, all in the window message queue, you have to put the UI and network to a thread can also, two threads. This has stirred up two unrelated things: "Ingenious" design in Microsoft's technology stack is countless.
What should be the reasonable treatment method? Should continue to use Poll, each time the Poll can be set a relatively short time, and can be awakened by the outside thread, so that there will be no previous problem, two things will not be stirred together, which is called the detachable. As a result, no network, a lot of other things and windows stirred up, wait until the Windows program to transplant, it will become extremely painful. Does anyone say there's IOCP? See how many first-class servers support IOCP? Besides, Java can encapsulate all the asynchronous event models of different operating systems into NIO, providing a separate interface to the Windows pair's IOCP, and until after 7.0, Microsoft always likes to come back with the whole human race.
The lack of aesthetic design will result in the Win32 API being bound by the GUI. In contrast to other systems, this is something that has not been heard. This is the design of the coupling, but also the choice of commercial interests. For example, Web development, C # and ASP. NET bindings are too tight, ASP. NET and IIS bindings are too tight, and IIS and Windows bind too tightly. Microsoft's things are advanced, but the closed Microsoft is reluctant to cooperate with the outside. You have to use my advanced things, you have to use a series. At the end of the mix, the stakes are huge, and the system is like a monster that eats up all sorts of chemicals and stumbles.
The so-called simplicity and the detachable thing, is the thing that can be replaced everywhere. For example, you do Web development, you choose a language, Python, language to do a good job of language. External network framework, can be used Django,flask, web.py and so on, interface can be used fastcg/cgi/wsgi/uwsgi/apache_mod, while the external server, can be used Apache, Nginx, lighthttpd. Clear is divided into: The language layer, the framework layer, the protocol layer, the service layer four different levels, each level several alternatives, mutually compatible, web.py obsolete, I change flask,apache obsolete, I change nginx. Each product is focused on doing their own things, and adapt to other levels of the scheme, Python problems, I change ruby, for PHP, the agreement still use Apache_mod or fastcgi. This is the design of division and aesthetics.
Such a situation in the Microsoft's technical system is difficult to appear, these technologies run to Windows under the acclimatized does not say, Microsoft does not allow you to choose: you want to write ASP. NET, the language you use C # (VB comparison of small), with ASP. You will use IIS, and IIS can only run Under Windows. Outsiders are hard to come by, and Microsoft is reluctant to support other technologies. So good, may lead in the beginning, but over time, such a long chain in the middle of a link problem, may lead to other people to follow him abandoned.
Microsoft on the one hand for business reasons, for fear of the link in the technology chain is replaced, on the other hand, some interface design is full of coupling, poor consideration, resulting in a large number of active upgrades and passive upgrades, what OCX, COM, ATL, ole,dx1-7 similar things can be done so much to toss people, system kernel GUI, network, multimedia, a lot of APIs are coupled together. Eventually a simple office is as bloated and ugly as windows, which is called a lack of aesthetic design.
C #
C # is a simple and elegant language and is a relatively rare and tasteful design in Microsoft, because the father of C # Anders is a Borland from outside of Microsoft. Anders's early design of the Turbo Pascal and Delphi for Borland was compiled fast, easy to use and powerful and popular, so the design of C # incorporates many early aesthetics. C # is more than Java at the language level. I often scold Java to 9 to 10, and I do not want to learn some of the features of C #. Java so many years, even a get/set do not copy, even a unsigned won't give me use. Write code in C # more fluent than Java, but the scope of application is too narrow, I have no way to continue to use Java Ah, wide application. My Java-written program runs on almost any platform, and a lot of the latest open source results can be applied directly. Poor C # was drawn by Microsoft, and stuck in a circle. In fact, everyone is welcome to C #, otherwise there will not be mono this project, but mono operation efficiency is much lower than the JVM, than the original. NET runtime is much lower, the library is not complete, it is difficult to bear the big.
In addition to some people specializing in C # work, now the Internet enterprise, it is almost difficult to see C # figure: Do mobile applications, with native Java and OBJC. Do service end with c++/java/various dynamic script, do page with Js page to travel with Flash. Do PC games with c++/scripts, no C # what things. Mobile games are mostly also using c++/scripts (unity is just a single case in the game development engine that will be replaced by the unknown in the future, XNA is a toy). Only Microsoft's old line PC desktop application, yes, is C #, but now also faces many challenges: CEF (Chromium Embedded Framework) with JS directly write Windows native applications, such as NetEase cloud Music with CEF effect tension pile; QT Series + Scripts (more and more Internet companies are using, such as WPS); C++ui libraries/scripts (too many examples). These options are more or less something you can pick up, but it's undeniable that they are eating away at C # 's traditional sites from all directions. You might say that C # can do a lot of non-UI things on the client side (more than databases and networks), but it's also easy to cef/qt these playback point streams, access the network, image, or request a database. Now the GUI development of the scripting process is sweeping the various desktop development scenarios, JS and other scripts run faster and faster, C # speed does not reflect the magnitude of the advantages, and based on the Generic script language development efficiency is much higher than the original, and these solutions are all cross-platform. And the whole process of C # is ruled out, which is where the real crisis in C # is.
DirectX
Some people wonder why I like OpenGL, saying plainly there is only one reason, it is open and it is not Microsoft's. Now a lot of people will say you see D3D interface is good, high compatibility, low CPU consumption and good picture. Yes, but good-hearted comrades take a little longer, Win95 times Microsoft pushes DirectX and blocks OpenGL a lot of system calls things you remember? Do you remember what it was like when the DX came out? At that time the industry scolded a piece, many people looked at the eye interface to throw, until DX5 out of time, you are not careful, will also be the whole screen painting, or crash. The same year OpenGL lead DX is not a magnitude. It was not until DX8 came out that it was perfected. Microsoft has dragged the industry back for years in the interests of business. Until 2006, a lot of 3 a masterpiece still use OpenGL as the graph bottom, not bird Microsoft's D3D.
Microsoft's technology architecture has always been less elegant and highly coupled. Dx7 before, DirectDraw's surface and D3D equipment and texture stirred together, dsound coordinate system and D3D coordinate system can be stirred together. A large number of data structures are defined, a vector of a matrix to be defined separately, do not allow me to cross-platform library with its own definition? Can't you just use the number group? You are strong and powerful, but you are too high-coupled. One link is updated, all links are forced to update, and then one of the reasons for the version of the tantrum. DirectX design is no taste, if in accordance with the simplicity and the idea of split-up thinking to reconsider, DX software package, should be isolated from the comparison, can not define the object and structure, as far as possible, do not define, with C primitive type or array to interface, this will not hinder my outside flexible use. Then the game developers rely on a glue language to bind these independent modules together as needed, is this way more refreshing?
Open things can be self-adaptive, self-correcting. Real networks estimate a lot of people have not forgotten, he developed the RM/RMVB video format, because of compression ratio, with Snr lower bitrate can have a lower bitrate, better picture quality, and won a wide range of support. But RM/RMVB is a closed video format, although leading the industry for several years, but a few years later, the Open H264 replaced, H264 although the initial acceptance is not high, but tens of thousands of people to help him perfect. College sent today to study a more effective macro block search method, two months in the engineering sector to follow up. Today someone has found an improvement in motion estimation, and tomorrow someone realizes a lower latency cache management, or improves the ability to recover from errors. Free x264 no matter from delay, performance, image quality, code rate are directly seconds to kill many commercial company's encoder, FFmpeg can easily play the video. Finally Real Networks holding its rm/rmvb together into the tomb, before death still do not forget to call it is developing RMVB2, beyond the h.265 standard encoding format, the industry scoff. The video game has changed, and H. RMVB's business model was eventually overturned by continuous development, which is an example of self-adaptation and self-revision of technology.
Today's D3D is like the RMVB of the year, even if he used commercial means to ruthlessly nausea OpenGL A, leading to the OGL years of development, but the old saying good: Li Sheng Li for often, the strength of the change, the strength of a moment in force, the outcome of the ages. With the constant improvement of the new OpenGL standard, although temporarily can not completely abandon DX, but the closed DX will inevitably with Microsoft Windows gradually edge, this is called Dedaoduozhu unjust.
the world play a set, Microsoft play a set of its own
Or because Microsoft's original strategy has not changed, resulting in a set of the world, Microsoft play a set of its own, Microsoft looked down on the open source world, open source also ignore Microsoft. Again, not only the open source is good, but so many companies, only the Microsoft family to try to build a complete set of technical system, only the Microsoft family to adopt such a closed strategy. However, Microsoft can cover the entire industry chain in the early years, and it is very happy, but now a lot of the latest results based on the open source industry and Microsoft technology stack acclimatized.
So developers will face: relying on Microsoft and not relying on Microsoft's two options. Depending on Microsoft, it is easy to isolate itself from the outside world. Instead of relying on Microsoft, you get a choice over the sky. The former emphasizes highly integrated unification, the latter emphasizing detachable replacement. However, the world tide, Mighty, Shun Chang.
Analyticals, Reminder
In the early days of Microsoft, like a lurking in the jungle of hunters, the use of their own operating system advantage position, looking for the highest end of the industrial chain user needs. Once a technology can meet some of the user's fundamental needs, Microsoft is at the expense of the immediate cash flow in exchange for future industry leadership and profitability. Or a quick takeover, or a malicious crackdown, or home out of a set, any field as long as there is something new, Microsoft will try to control it, and kidnap the money to feed the Microsoft standard software developers to support them, to help low-end developers to let them learn Microsoft standards, so huge profits, followed.
Such a strategy has enabled Microsoft to thrive and become a successive industry standard owner. However, such a strategy has a fatal bug, is that the standard must be with the times, Microsoft needs to constantly adjust the existing standards, or more and more standards will become bound to Microsoft's rope, more and more compatibility issues like a mountain like the pressure of Microsoft breathless. The more standards you have, the harder it is for Microsoft to change, and over time it will be replaced by competitors who are more responsive to user preferences outside of Microsoft's system.
Some people say: "Microsoft missed the mobile wave, missed the cloud, because of Ballmer's miscalculation." The wise man will have a loss, and then the people who have the wrong judgment. But through the above analysis, we can see the absurdity of this statement, we need to be clear that, even if there is no Bauer, Microsoft even catch up with the cloud, he will miss the fog calculation, even if he caught the fog calculation, he would still miss the smoke calculation.
Such a strategy, so that Microsoft's early years to the forefront of the times, but also make today's Microsoft, become more and more contrary to the times, not Microsoft does not want to merge, but the cost of convergence is getting higher. The world is different, things are different, and understanding of Microsoft's core strategy, it is not difficult to understand why Microsoft will get what XPS, Silverlight, understand Microsoft's strategy, can understand why Microsoft's energy is always in the development of new standards, rather than improve the old standard, understand the Microsoft strategy, It's not hard to understand why Microsoft has been bursting since entering the 2000.
Disease in the skin, but also can heal, sick in the heart, people are dangerous. After years of strategy, Microsoft and his downstream developers, but also hurt Microsoft, let Microsoft want to change can not change. Like a land armored vehicle, armor thicker and stronger, but now to go to war in the water, all armor overnight became a burden, to seek salvation, unless you have to remove themselves from beginning to end all. After entering the 2009, see the same year to support their own standards downstream developers, powder awarded from Microsoft to defect camp, Microsoft is deeply aware that God has no longer like the original favor of Microsoft, this really is: analyticals, reminder!
Microsoft's Choice
When do people feel the pressure? is to have a thing, but look at this thing day by day reduction, the more efforts to seize him, but the more grasping the loss of the faster, change means to give up, waiting means death. Under such pressure, Microsoft faint recruit bursting, this can not blame Microsoft executives ignorant, also can't say Microsoft bad luck, but since entered the 2000, followed decades of a rule of the world strategy and times become less. The success of the early years made Microsoft ignore all kinds of problems, continue to live on the inertia for 15 years, missed the best time to redeem themselves.
Core strategy problems, not overnight decision-making right and wrong, many people still do not want to admit that the change of Ballmer can solve, think open-source. Net, can save C #, can save Microsoft, in fact, this is a naïve idea. Microsoft's strategy has not changed from beginning to end, and open source is tantamount to admitting that the previous strategy was a failure, but it did not present a new set of ideas and new strategies. In fact, as early as 2000 when Microsoft entered the strategic confusion period, so East a hammer West a stick, no focus, lack of themes. Even so, we can continue to live by inertia, but after self-denial, what is the new strategy? The strategic self-denial will greatly hurt the corporate centripetal force, making Microsoft more difficult in the future, while not establishing a new strategy that can be verified by the practice, which will make the whole enterprise more confused than the original.
But can Microsoft change? No. Microsoft has no way of proposing a new strategy that is incompatible with its original strategy, unless it completely smashes itself and its long-running ecological chain. 15 years ago the best change period by its miss, now how to change all can only in the original strategic framework to seek small change, the era of huge flow, like a huge gravitational field, attracting the huge body of Microsoft, helpless to fall into their own digging hole.
a helpless ending
Direct delivery to the door developed, convenience stores on the depression. Online shopping has sprung up and physical retailing has died. This is called "the new Economy" instead of the old economy. Judging whether an economy is in decline, it is never about how much money it has in the bank, but how the business model is set up. Today's Microsoft, is a core business model has been overturned enterprise. This is not open source can save, more than Gates can save the comeback.
Hearing Microsoft Open Source reminds me of the previous sun's Solaris Open source as Open Solaris, hoping to use open source to save its own downturn, and soon it went bankrupt. Now a fundamental technology, such as the operating system, has been hard to monopolize by a company. Once the business model is overturned, open source cannot be a lifeline.
The transformation of things, old and new, is the Basic Law of nature. Gates is a smart person, see the future situation, know what is called the month full of loss, water surplus is overflow, at Microsoft at the peak of the time retire, sharp sense do charity, will be the most bitter errand left to Bauer. So, smart gates will not return, so, in fact, I sympathize with the old abalone.
End Story
I didn't want to spray it from the start. Microsoft, I am not an extreme person, initially just answer questions, suggest the main topic with Qt, away from Microsoft technology. But the end, a bunch of people come up to siege, then I really have to serious Microsoft this thing clear point, or I become a misleading master.
In fact, the world is welcome to change the Microsoft, we have learned from the computer in the use of pirated Microsoft system of people, Microsoft also has feelings. But whether Microsoft can usher in a new life, but also to see Microsoft itself, we can not help him.
Reference: http://www.zhihu.com/question/29636221
Comments on Microsoft, strategically advantageous position--Weys laughs