《数据库和C语言外文翻译》由会员分享,可在线阅读,更多相关《数据库和C语言外文翻译(15页珍藏版)》请在毕设资料网上搜索。
1、英文原文 1: Professional C# Third Edition Simon Robinson, Christian Nagel, Jay Glynn, Morgan Skinner, Karli Watson, Bill Evjen. Wiley Publishing, Inc. 2006 Where C# Fits In In one sense, C# can be seen as being the same thing to programming languages as .NET is to the Windows environment. Just as Micros
2、oft has been adding more and more features to Windows and the Windows API over the past decade, Visual Basic and C+ have undergone expansion. Although Visual Basic and C+ have ended up as hugely powerful languages as a result of this, both languages also suffer from problems due to the legacies of h
3、ow they have evolved. In the case of Visual Basic 6 and earlier, the main strength of the language was the fact that it was simple to understand and didnt make many programming tasks easy, largely hiding the details of the Windows API and the COM component infrastructure from the developer. The down
4、side to this was that Visual Basic was never truly object-oriented, so that large applications quickly become disorganized and hard to maintain. As well as this, because Visual Basics syntax was inherited from early versions of BASIC (which, in turn, was designed to be intuitively simple for beginni
5、ng programmers to understand, rather than to write large commercial applications), it didnt really lend itself to well-structured or object-oriented programs. C+, on the other hand, has its roots in the ANSI C+ language definition. It isnt completely ANSI compliant for the simple reason that Microso
6、ft first wrote its C+ compiler before the ANSI definition had become official, but it comes close. Unfortunately, this has led to two problems. First, ANSI C+ has its roots in a decade-old state of technology, and this shows up in a lack of support for modern concepts (such as Unicode strings and ge
7、nerating XML documentation), and in some archaic syntax structures designed for the compilers of yesteryear (such as the separation of declaration from definition of member functions). Second, Microsoft has been simultaneously trying to evolve C+ into a language that is designed for high-performance
8、 tasks on Windows, and in order to achieve that theyve been forced to add a huge number of Microsoft-specific keywords as well as various libraries to the language. The result is that on Windows, the language has become a complete mess. Just ask C+ developers how many definitions for a string they c
9、an think of: char*, LPTSTR, string, CString (MFC version), CString (WTL version), wchar_t*, OLECHAR*, and so on. Now enter .NETa completely new environment that is going to involve new extensions to both languages. Microsoft has gotten around this by adding yet more Microsoft-specific keywords to C+
10、, and by completely revamping Visual Basic into Visual Basic .NET, a language 1 that retains some of the basic VB syntax but that is so different in design that we can consider it to be, for all practical purposes, a new language. Its in this context that Microsoft has decided to give developers an
11、alternativea language designed specifically for .NET, and designed with a clean slate. Visual C# .NET is the result. Officially, Microsoft describes C# as a “simple, modern, object-oriented, and type-safe programming language derived from C and C+.” Most independent observers would probably change t
12、hat to “derived from C, C+, and Java.” Such descriptions are technically accurate but do little to convey the beauty or elegance of the language. Syntactically, C# is very similar to both C+ and Java, to such an extent that many keywords are the same, and C# also shares the same block structure with
13、 braces () to mark blocks of code, and semicolons to separate statements. The first impression of a piece of C# code is that it looks quite like C+ or Java code. Behind that initial similarity, however, C# is a lot easier to learn than C+, and of comparable difficulty to Java. Its design is more in
14、tune with modern developer tools than both of those other languages, and it has been designed to give us, simultaneously, the ease of use of Visual Basic, and the high performance, low-level memory access of C+ if required. Some of the features of C# are: Full support for classes and object-oriented
15、 programming, including both interface and implementation inheritance, virtual functions, and operator overloading. A consistent and well-defined set of basic types. Built-in support for automatic generation of XML documentation. Automatic cleanup of dynamically allocated memory. The facility to mar
16、k classes or methods with user-defined attributes. This can be useful for documentation and can have some effects on compilation (for example, marking methods to be compiled only in debug builds). Full access to the .NET base class library, as well as easy access to the Windows API (if you really ne
17、ed it, which wont be all that often). Pointers and direct memory access are available if required, but the language has been designed in such a way that you can work without them in almost all cases. Support for properties and events in the style of Visual Basic. Just by changing the compiler option
18、s, you can compile either to an executable or to a library of .NET components that can be called up by other code in the same way as ActiveX controls (COM components). C# can be used to write ASP.NET dynamic Web pages and XMLWeb services. Most of the above statements, it should be pointed out, do al
19、so apply to Visual Basic .NET and Managed C+. The fact that C# is designed from the start to work with .NET, however, means that its support for the features of .NET is both more complete, and offered within the context of a more suitable syntax than for those other languages. While the C# language
20、itself is 2 very similar to Java, there are some improvements: in particular, Java is not designed to work with the .NET environment. Before we leave the subject, we should point out a couple of limitations of C#. The one area the language is not designed for is time-critical or extremely high perfo
21、rmance codethe kind where you really are worried about whether a loop takes 1,000 or 1,050 machine cycles to run through, and you need to clean up your resources the millisecond they are no longer needed. C+ is likely to continue to reign supreme among low-level languages in this area. C# lacks certain key facilities needed for extremely high performance apps, including the ability to specify inline functions and destructors that are guaranteed to run at particular points in the code. However, the proportions of applications that fall into this category are very low.