The birth of this development environment Apple answered a thousand times specified her question whether she did the third-party software developers. The answer can be formulated and necessary.
At the end of the 90s, representatives of Metrowerks, maker of the most popular and beloved CodeWarrior, tried to negotiate with Apple on mutual assistance and support. For many years Apple itself used in the development of software, and even operating systems, tools.
To save face, the final Assembly was built with local tools, but the General crisis is brewing in the company, negatively affected the development of design tools. It seems that that told me a former “instrumental” Apple seems to be true: the group was financed by a residual principle, wages were lower than in other parts of the company, and the best left.
Talks with jobs over the acquisition of Metrowerks by Motorola microprocessor compartment.
CodeWarrior was better than Project Builder, though, to compare complex objects for better or worse is just as incorrect as to compare the coordinates of points in the plane in magnitude in this particular case, alas, such a comparison makes sense. CodeWarrior generate more compact and efficient code, its user interface was easier, and look nicer, and technical support were interested in the problems of their clients as if it were the most important to the company.
Independence Apple from third-party development tools
In the days of NeXT, Steve came to the conclusion that major companies developing original (in the sense that any other system is not like) platform should be your own development tools.
Right or wrong, I don’t know, but this question is really critical, even Be Inc was your Toolkit. In the process of development do arise a situation where the development environment due to some internal limitations or bugs prevents the solution of important problems.
And even if the supplier of the development tools is listening carefully to customer issues, as Metrowerks, and tries to help, it’s not the same. Circle privy to the intimate details of top-secret projects, no matter what steps are taken to preserve the secrecy inevitably be expanded, and that’s not the biggest problem.
In any case, Steve decided to turn the Project Builder in the official and the most important development environment for Macs and honestly warned about it Metrowerks. Nobody is going to bother to sell Carbon CodeWarrior developers, but no agreements could not be considered. Apple needs its own adequate development environment, and she’ll have it.
There were only two parameters for the Project Builder was superior to CodeWarrior: it is the price development of Cocoa applications. Project Builder was free, and CodeWarrior was worth a few hundred dollars. And, despite the talent and efforts of the engineers Metrowerks, their product could not even be compared to the Project Builder in Cocoa, and the transitional epoch, when almost all software for Mac OS X are written in Carbon, came to its end.
Actually, I don’t like drastic changes, especially in what I use every day. And not only me, most likely. It really was a completely different program. It was integrated with the same familiar tools, but the environment and behaviour rules there were different.
Old bugs, which was thoroughly known to them, and how not to face them. Instead there were new, unfamiliar. They were much smaller, but about them I learned on the forum. I came across them, but took for behaviors.
Don’t know stood up anyone for Metrowerks in court, or all the possible issues resolved at the stage of development of Xcode, but almost all of the trump properties CodeWarrior was shamelessly borrowed.
All that he knew how his predecessor, too skilful, though sometimes to find the right place was not easy. Development environment is usually very complex and extensive. They are not meant to deal with normal users, so the authors Xcode assumed that their customers will read the documentation.
Although Xcode was, until the case reached some kind of transcendent manipulate the software, absolutely predictable and understandable, despite the many violations of the rules of “humane” interface. But this does not interfere. Maybe not all the rules… need?
Their own innovations in the first version of Xcode was enough. For example, a utility such as Fix&Continue. Running the code for execution in some cases it was possible to make corrections without stopping the execution and recompiling.
Like there were some rules in which cases it should not work, I do not remember.
Much more important and interesting subsystem for a distributed build programs with which help it was possible to distribute the task to multiple Mac AMI, to speed up the process. Naturally, such technology is too simple, and relatively small projects do not make sense.
But the operating system itself Xcode, built it, and the build worked a farm of hundreds of Macs. A utility for this called distcc.
Complete with Xcode supplied tools for developing Cocoa applications with Java, and complete WebObjects libraries which also now has been in Java. In my opinion, the transition to Java finally finished off WebObjects and it’s not just my personal opinion.
And problems can only remember two: problems with the debugger (sometimes) and poor performance of a system for automatically appending the well-known development environment keywords. Here it was serious: identifiers and Cocoa, and Carbon is very long. Function names, constants, and the like.
This is no coincidence: Apple is recommended not to chase the short, don’t shorten words in identifiers and fully describe the meaning and essence of the referent of the subject. And she did just that.
For example (and this is not the longest “keywords”):
The justification given was very logical: most likely, the people who invented this rule were absolutely right: if the words are spelled fully and exhaustively expresses the meaning of them, oddly enough, easier to remember.
Moreover, as claimed by the Apple documentation in Xcode for an integrated utility, opisyvaya these long words automatically.
In Xcode 1.0 this utility was practically useless. In Xcode 1.5 it is almost decided. In our days it is not.