C++/CLI: Microsoft-тың 2004 жылы қолданудан шығарылған C++ тілінің кеңейтімдері. .NET Framework үшін жаңа мүмкіндіктер, C++/CLI Visual Studio 2005-те енгізілді.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Microsoft-тың C++ тілінің 2004 жылы қолданудан шығарылған кеңейтулері
Microsoft's C++ language extensions deprecated in 2004
C++ үшін басқарылатын кеңейтулер немесе Басқарылатын C++ – C++ тіліне грамматикалық және синтаксистік өзгерістер, кілт сөздер мен атрибуттар сияқты кеңейтулер жиынтығы болып табылады. Бұл кеңейтулер C++ синтаксисі мен тілін .NET Framework-ке үйлестіру мақсатымен жасалған. Microsoft компаниясы осы кеңейтулерді C++ кодын Common Language Runtime (CLR) ортасында басқарылатын код ретінде пайдалануға және оны жергілікті кодпен өзара әрекеттестіруге мүмкіндік беру үшін құшқан. 2004 жылы Басқарылатын C++ кеңейтулері синтаксисті нақтылау және жеңілдету, сондай-ақ басқарылатын жалпыламаларды қосу үшін функционалдығын кеңейту мақсатында қайта қарастырылды. Бұл жаңа кеңейтулер C++/CLI деп аталды және Microsoft Visual Studio 2005 құрамына енгізілді. Осылайша, Басқарылатын C++ термині және оған қатысты кеңейтулер ескірген және жаңа кеңейтулермен алмастырылды.
Managed Extensions for C++ or Managed C++ is a deprecated set of language extensions for C++, including grammatical and syntactic extensions, keywords and attributes, to bring the C++ syntax and language to the NET Framework. These extensions were created by Microsoft to allow C++ code to be targeted to the Common Language Runtime (CLR) in the form of managed code, as well as continue to interoperate with native code. In 2004, the Managed C++ extensions were significantly revised to clarify and simplify syntax and expand functionality to include managed generics. These new extensions were designated C++/CLI and included in Microsoft Visual Studio 2005. The term Managed C++ and the extensions it refers to are thus deprecated and superseded by the new extensions.
Тарих
Microsoft Visual C++ 2002 (MSVC++) бағдарламасында C++ үшін басқарылатын кеңейтулерді енгізді. Microsoft стандартты C++ және C++ үшін басқарылатын кеңейтулер арасындағы айырмашылықтарды барынша азайтуға тырысты, нәтижесінде екеуінің арасындағы маңызды өзгешеліктер синтаксистік тұрғыдан жасырылды. MSVC++ 2003 және 2005 жылдары да басқарылатын C++ тілінде бағдарлама жазуға қолдау көрсетілді. 2004 жылы C++ үшін басқарылатын кеңейтулерге қолдау тоқтатылып, оның орнына C++/CLI ұсынылды, бұл Microsoft-тің C++ тілін пайдаланып ортақ тілдік инфрақұрылым үшін бағдарламалауды қолдауға жасаған екінші әрекеті болды.
Microsoft introduced Managed Extensions for C++ in Microsoft Visual C++ 2002 (MSVC++). Microsoft attempted to minimise the deviations between standard C++ and Managed Extensions for C++, resulting in core differences between the two being syntactically obscured. MSVC++ 2003 and 2005 also provided support for writing programs in Managed C++. In 2004, Managed Extensions for C++ was deprecated in favor of C++/CLI, a second attempt by Microsoft at supporting programming for the Common Language Infrastructure using C++.
Дизайн
Басқарылатын код – бұл NET виртуалды машинасының ішінде орындалатын немесе оған басшылық ететін код. Бұл виртуалды машина, буфер асып кету тексерулері сияқты, орындалу кезіндегі қосымша тексерулер арқылы қауіпсіздікті арттыратын құмдық қоршау ретінде жұмыс істейді. Сонымен қатар, басқарылатын C++ тілінде жазылған қолданбалар CIL – Common Intermediate Language-қа компиляцияланады, ал стандартты C++ қолданбалары сияқты тікелей процессордың машиналық нұсқауларына емес. Басқарылатын C++ коды CLR-ге бағытталған кез келген басқа тілмен, мысалы C# және Visual Basic NET тілдерімен өзара әрекеттесе алады, сондай-ақ CLR ұсынатын қоқыс жинау сияқты мүмкіндіктерді пайдалана алады. Бұл басқарылатын C++ тілінің NET тілдері қатарында ерекше орын алатынын білдіреді. Бұл тіл NET тілдерімен (C#, VB NET сияқты) және жергілікті C++ тілімен тікелей байланыс жасай алатын жалғыз тіл. Басқа NET тілдері C++ кодымен тек PInvoke немесе COM арқылы ғана байланыса алады. Бірақ басқарылатын C++ басқарылатын және стандартты C++ орталарында тікелей байланыс жасай алатындықтан, ол көбінесе «көпір» ретінде қолданылады.
Managed refers to managed code that it is run in, or managed by, the NET virtual machine that functions as a sandbox for enhanced security in the form of more runtime checks, such as buffer overrun checks. Additionally, applications written in Managed C++ compile to CIL—Common Intermediate Language—and not directly to native CPU instructions like standard C++ applications do. Managed C++ code could inter operate with any other language also targeted for the CLR such as C# and Visual Basic NET as well as make use of features provided by the CLR such as garbage collection. This means Managed C++ occupies a unique position in the gallery of NET languages. It is the only language that can communicate directly with NET languages (such as C#, VB. NET) as well as native C++. The other NET languages can only communicate with C++ code via PInvoke or COM. But since Managed C++ can communicate directly in both managed and standard C++ contexts, it is often used as a "bridge".
Жергілікті кодқа қарағанда артықшылықтары
Басқарылатын және басқарылмаған кодты бір CLI жинастыруында үздіксіз араластыруға болады. Бұл бағдарламашыға толығымен қайта жазбастан, .NET Framework-ке көшіруге болмайтын басқарылмаған кодты сақтап қалуға мүмкіндік береді. Дегенмен, осы гибридтік тәсілді қолданудың кейбір салдары бар. Басқарылатын C++ – басқарылмаған кодты қамтитын және барлық басқа .NET тілдерімен тікелей байланыса алатын жалғыз тіл. Сондықтан, басқарылатын C++ әртүрлі тілдерді пайдаланатын бағдарламашылар арасындағы өзара әрекеттесу үшін өте қолайлы, оның ішінде .NET және стандартты C++ қолданушылар үшін де.
Managed and unmanaged code can be mixed together in the same CLI assembly seamlessly. This allows the programmer to keep unmanaged code that cannot be ported over to the NET Framework without re writing it completely. Some ramifications of using this hybrid convention are present though. Managed C++ is the only language that can contain unmanaged code and natively communicate with all other NET languages. Managed C++ is thus very convenient for interoperability between programmers who use different languages, including those in the NET theater and those who use standard C++.
Басқарылмаған кодпен салыстырғанда кемшіліктері
Басқарылатын C++ көптеген жаңа кілт сөздер мен синтаксистік ережелерді енгізеді, бұл кодты оқуды қиындатуы мүмкін, әсіресе егер C++ коды тікелей қосылып, бір құрастыруда Басқарылатын C++ кодымен тікелей өзара әрекеттессе. Басқарылатын C++ енді C++/CLI-мен алмастырылды және C++/CLI стандартталғандықтан қолданыстан шықты.
Managed C++ introduces a lot of new keywords and syntactic conventions that can impair the readability of code, especially if C++ code is included directly and interacts directly with Managed C++ code in the same assembly. Managed C++ is superseded by C++/CLI and thus obsolete as C++/CLI has been standardized.
Толық басқарылатын кодпен салыстырғанда кемшіліктері
Басқарылатын C++ басқа .NET тілдеріне қарағанда сәл ұзақ даму уақытын қажет етеді, бірақ олар бірдей нәтижелер беретін жобаларға қолданылуы мүмкін. Пойнтерлерді пайдалану міндетті болуы да, болмауы да мүмкін, себебі басқарылатын C++ құндылық типтері (құндылық құрылымы және құндылық класы) мен сілтеме типтерін (gc struct және gc класы) қамтиды. Басқарылатын C++ ASP.NET веб-қосымшаларын толық қолдайды, әлдебір қиындықтарға қарамастан, басқа .NET тілдерімен және тіпті кейбір үшінші тарап тілдерімен салыстырғанда дамуы күрделірек. Басқарылатын C++ тек шаблондарды (туған C++-пен өзара әрекеттесу үшін) қолдайды, бірақ жалпыламаларды (барлық басқа .NET тілдерімен өзара әрекеттесу үшін) қолдамайды. C++/CLI үлгілерді (компиляция кезінде) және жалпыламаларды (орындалу кезінде) қолдайды.
Managed C++ requires a slightly longer development time than other NET languages that could be applied to projects that still produce the same results. The use of pointers may or may not be a requirement, because managed C++ has both value types ( value struct and value class) and reference types ( gc struct and gc class). Managed C++ fully support ASP. NET web applications, even though the development is more difficult than with other NET languages, including some other third party languages. Managed C++ includes only support for templates (for interoperability with native C++) but no support for generics (for interoperability with all the other NET languages). C++/CLI supports both templates (at compile time) and generics (at run time).
Басқа тілдермен салыстыру
Келесі мәтінде басқарылатын C++ және ұқсас тұжырымдамаға ие басқа белгілі бағдарламалау тілдері арасындағы негізгі айырмашылықтар мен бағдарламалық стандарттар келтірілген.
The following contains main points and programmatic standards that differ between Managed C++ and other well known programming languages that are similar in concept.