Кіріспе

Екі бағдарламалау тілін салыстыру C# және Visual Basic NET - NET Framework-те бағдарламалау үшін қолданылатын екі негізгі тіл.

Тіл тарихы

C# және VB. NET синтаксисі өте әртүрлі тілдер, өте әртүрлі тарихтары бар. C# синтаксисі, аты айтып тұрғандай, бастапқыда 1970 жылдары Дэннис Ричи Bell Labs (AT&T) -де әзірлеген C бағдарламалау тілінің негізіне негізделген. Java және C++ - бұл тағы екі бағдарламалау тілі, олардың синтаксисі де C синтаксисіне негізделген, сондықтан олар ортақ көрініс пен сезімге ие. Бұл тақырып бойынша Java мен C Sharp салыстыруын қараңыз. BASIC-тің тамыры Дартмут колледжіне барып такалады. BASIC (Beginner's All purpose Symbolic Instruction Code) 1960-шы жылдары процессорға және/немесе брендке тән мейнфреймдер мен аппараттық жабдықтарға арналған құрастыру тілін қолдану қиындықтарын жеңу әдісі ретінде әзірленді. Бағдарламалау аппараттық жабдықтан тәуелді болды, сондықтан аппараттық жабдықтан асып түсетін бағдарламалаудың логикалық құрамын сақтаудан гөрі маркетингтік себептермен. (Microsoft өзінің операциялық жүйесімен атақ-даңққа ие болу дегені - тұтынушыларды осы міндеттерді операциялық жүйеге ендіру арқылы арнайы аппараттық құрылғылардан босату еді.) Код компилятордың арқасында "көшімді" болды, және шын мәнінде, Visual Basic NET және C # бүгінгі күні бірдей CLR (Common Language Runtime) қолданады. Microsoft және HP ISO стандартты тілін жасауға қызығушылық танытты, бірақ бұл бастапқы мақсат болды; HP қолдауын тастады, ал ISO компьютерлік тілі ешқашан халықаралық стандарт ретінде жүзеге аспады. ВВ. NET-тің түп тамыры BASIC-те жатыр. Бастапқыда BASIC колледж қоғамдастығында компьютерлік бағдарламалаумен алғашқы танысу үшін "негізгі" тіл ретінде қолданылған және акроним тілдің дәлдігін білдірді. 1970-ші жылдары бұл тілді микрокомпьютер өндірушілері қарапайым ROM-ға енгізілген бағдарламалау тілі ретінде, сондай-ақ кіріс / шығысты басқару үшін квази операциялық жүйе ретінде қолданды. 1980 жылдардың басында Microsoft тілін қабылдады және өзінің бастапқы мақсатынан тыс, "Visual Basic" тіліне / платформасына кеңейтілді, ол 1990 жылдары Windows бағдарламалау үшін "тезі қолданбаларды әзірлеу" (RAD) құралы ретінде сатылды. Ол PowerBuilder сияқты 1990-шы жылдардағы басқа RAD құралдарына тікелей бәсекелестікке түсті. Visual Basic табысты даму платформасы болғанымен, ол 6-шы нұсқасынан кейін тоқтатылды (VB6), өйткені Microsoft 2000-шы жылдардың басында NET Framework және онымен байланысты Visual Studio даму платформасын енгізді. Сол кезде қазіргі C++ және VB6 тілдерін Microsoft өзінің жаңа "Integrated Development Environment (IDE) " бағдарламалау тілдерінің негізі ретінде қолданды. Бұл тілдер C# және VB деп аталды. NET. 2017 жылдың ақпан айында Microsoft компаниясы 2010 жылдан бері қолданылып келе жатқан екі тіл арасындағы "бірлескен эволюция" стратегиясын тоқтату және екі тілдің тәуелсіз дамуына мүмкіндік беру ниеті туралы мәлімдеді. C# қазіргі таңда Microsoft-тың негізгі бағдарламалау тілі болып табылады. Жасаушылар VB 15-тің (алғаш рет Visual Studio 2017 бағдарламасында пайда болған) жаңа C# 7.3-те қамтылған кейбір тіл мүмкіндіктерінің жоқтығын байқайды.

Тілдерді салыстыру

C# және VB-де болса да. NET синтаксисі өте әртүрлі, айырмашылықтар көбінесе осы жерде аяқталады. Microsoft бұл екі тілді де бір NET Framework әзірлеу платформасының бөлігі ретінде жасады. Олар екеуін де Microsoft-тың бір тілдерді әзірлеу тобы әзірлейді, басқарады және қолдайды. Олар NET Framework орындалу уақытының кітапханаларына сәйкес келетін бірдей аралық тілге (IL) компиляцияланады. Бағдарламалау конструкцияларында кейбір айырмашылықтар болса да (олар төменде қарастырылады), олардың айырмашылықтары негізінен синтаксистік және Microsoft-тің VB6-дан түрлендіруге көмектесетін Visual Basic "Compatibility" кітапханаларынан аулақ болса, VB-дегі әрбір команданың C#-та және керісінше бірдей командасы бар. Соңында, екі тіл де олардың функционалдылығын кеңейту үшін NET Framework-тің бірдей базалық сыныптарына сілтеме жасайды. Нәтижесінде, бірнеше ерекшеліктермен, екі тілде де жазылған бағдарламаны қарапайым синтаксистік конвертер арқылы екінші тілге аудару үшін іске қосуға болады. Бұл тапсырманы орындау үшін көптеген ашық кодты және коммерциялық өнімдер бар. Тілдер арасындағы негізгі айырмашылықтарды интерфейстерді іске асыруда және оқиғаларды жариялауда, көтеруде және өңдеуде кездестіруге болады. Екі тіл де жоғары деңгейдегі бағдарламалау тілдері болса да, VB. NET кейбір жағынан абстракцияның біршама жоғары деңгейін сақтайды.

Орындау уақытында көп тілді қолдау

NET-тің басты мақсаттарының бірі - көп тілді қолдау. Дизайнның мақсаты - барлық Microsoft тілдерінің барлық ОЖ мүмкіндіктеріне бірдей деңгейде қол жеткізуі, бірдей қуат пен пайдалану деңгейін көрсетуі және бір тілдегі модульден басқа тілге жазылғанға шақыруды жеңілдетуі. Барлық NET бағдарламалау тілдері орындалуында бірдей орындалу қозғалтқышы, бірыңғай абстрактілік синтаксис ағашы және ортақ аралық тіл бар. Сонымен қатар барлық NET тілдері платформалық мүмкіндіктерге қол жеткізеді, соның ішінде қоқыс жинау, тіл аралық мұралау, ерекшеліктерді өңдеу және жөндеу. Бұл кез келген NET бағдарламалау тілінен бірдей шығыс бинарлық файлды жасауға мүмкіндік береді.

Visual Basic .NET-ке қолданылмайтын C#-тің басқа сипаттамалары

Әдетте сандық операциялар тексерілмейді. Бұл сандық ағындар байқалмай қалу қаупі бар, сәл жылдам кодқа әкеледі. Алайда, бағдарламалаушы арифметикалық операцияларды тексерілген контекстке салып, ағып кетуді тексеруді іске қоса алады. (Бұл Visual Basic-те опцияны белгілеп жасауға болады) C# идентификаторлары үлкенді-кішілі әріптерге сезімтал. Бірнеше айнымалыға бірдей мәнді беру үшін a=b=c дегенді қолдана аласыз.

Синтаксисті салыстыру

Visual Basic NET код блогын T SQL пайдалану тәжірибесі бар бағдарламашыларға көбірек таныс болатын End BlockName (немесе for циклы үшін Next) нұсқауларымен аяқтайды. C#-да, {} тірекшелері блокты шектеуге қолданылады, бұл C++ және Java сияқты басқа кең таралған тілдерде тәжірибеге ие бағдарламашыларға көбірек таныс. Сонымен қатар, C#-де блок тек бір ғана нұсқаудан тұрса, жақшалар алынып тасталуы мүмкін. C# үлкенді-кішілі әріптерге сезімтал, ал Visual Basic NET сезімтал емес. Осылайша C#-да екі айнымалының бірдей көрінетін атауы болуы мүмкін, мысалы, variable1 және Variable1. Visual Studio VB-де келтірілген айнымалылардың жағдайын түзетеді (біркелкі етеді). NET. Алайда кейбір жағдайларда кейс сезімталдығы пайдалы болуы мүмкін. C# бағдарламалаушылары типтер мен мүшелердің атауларын үлкен әріппен жазып, өрістер мен айнымалылардың атауларын кіші әріппен қалдырады. Бұл, мысалы, әдіс аргументтерінің табиғи атауын беруге мүмкіндік береді: public int CalculateOrders ((Customer customer). Бұл, дегенмен, C# кодты Visual Basic сияқты үлкен-кіші әріптерді сезгіш емес тілге немесе үлкен-кіші әріптерді сезгіш тілді оқып үйренбегендерге аудару үшін қиындық тудыруы мүмкін.

Бала асырап алу және қоғамдастық қолдау көрсету

C# және VB тілдерінде. NET қолдану деңгейі жоғары, және өте белсенді әзірлеушілер қауымдастықтары бар және Microsoft екі қауымдастықты да толық қолдайды. NET Framework әзірлеушілері екі VB-ді де кеңінен қолданады. NET және C# негізгі тілдер ретінде. TIOBE бағдарламалық қоғамдастық индексі VB. NET 2018 жылы C#-тен асып түсті. C# тілінің түпнұсқалық дизайнері Скотт Уилтамут 2010 жылдың наурыз айында жазған блогында "бізде бар ең сенімді сандар VB-нің шамамен бірдей қабылдануын көрсетеді" деп мәлімдеді. NET және C#. 2007 жылы Forrester Research сауалнамасы NET әзірлеушілерінің 59% -ы тек VB қолданғанын көрсетті. NET бағдарламалық жасақтама жасау. Visual Basic Express - Visual Studio Express бағдарламасының ең танымал жүктемесі. Apress компаниясының маркетингтік менеджері Стивен Уайли "C# атаулары VB-ден артық сатылады. NET атаулары кітаптары қол жетімді, 21 мен 31 аралығында ".

C++/CLI (бұрынғы басқарулы C++)

C++/CLI (C++ үшін басқарылатын кеңейтулердің орнына) C# немесе VB қабылдау деңгейіне ие емес. NET, бірақ оның маңызды ізбасарлары бар. C++/CLI синтаксистік, стильдік және мәдени жағынан C#-ке жақын. Алайда, C++/CLI C#-ға қарағанда C++ тамырларына жақын. C++/CLI басқа тілдерде қолдайтын немесе шектейтін нұсқауыштар, деструкторлар және басқа да қауіпсіз емес бағдарламалық тұжырымдамаларды тікелей қолдайды. Ол NET кодын да, стандартты C++ кодын да тікелей пайдалануға мүмкіндік береді. C++/CLI жергілікті/жеке C++ бағдарламаларын NET фреймворкіне көшіру үшін немесе бағдарламашы кодты көбірек басқаруды қалаған жағдайларда қолданылады; бірақ бұл бақылау пайдаланудың оңайлығы мен оқуға болатындығының елеулі құнына келеді. Visual Studio-мен бірге келетін көптеген автоматтандырылған құралдар C++ кодымен өзара әрекеттескенде функционалдылығын азайтады. Бұл, өйткені бейнелеу код туралы C# және VB сияқты көп ақпаратты бере алмайды. таза

Ж#

Ал J# бала асырап алу бойынша төртінші орында тұр. J# - бұл негізінен Java бағдарламаларын NET фреймворкіне көшіруді жеңілдету үшін жасалған тіл. Ол әзірлеушілерге Java немесе J++ кодтарының көп бөлігін өзгертпей қалдыруға мүмкіндік береді, сонымен бірге оны NET фреймворкіне орындайды, осылайша олардың кішкентай бөліктерін басқа NET тіліне көшіруге мүмкіндік береді, мысалы C# жеке. J# басқа тілдердегідей жаңартулар деңгейін алмайды және қоғамдастық қолдауының бірдей деңгейіне ие емес. Мысалы, Visual Studio 2005 Team System C#, VB-де бірлік тестілерін автоматты түрде құруды қолдайды. Net және C++, бірақ J#-ді қоспағанда. J# тоқтатылды және Visual Studio 2008 немесе жаңа нұсқаларына енгізілмеген, өйткені J# функциялары клиенттердің қажеттіліктерін қанағаттандырады және J# қолдану азайып келеді.

Қосымша .NET тілдері

Барлық NET тілдері бай метадеректерді қамтитын және NET тілінің бастапқы кодына функционалдық және логикалық жағынан тең келетін Common Intermediate Language (CIL) құрамына компиляцияланады. Осы себептер бойынша CIL-де тікелей кодтау мүмкін болса да, бұл сирек жасалады. CIL-дің NET тілінің кодына теңдігі NET Reflector сияқты құралдарға NET құрамасын бастапқы кодымен бірдей бастапқы кодына айналдыруға мүмкіндік береді. Кодты бұрмалаушы кодтар көбінесе бұған қарсы қорғаныш ретінде қолданылады және жоғары деңгейдегі NET тіліне компиляцияны қиындату немесе мүмкін емес ету үшін құрастырманың CIL-ін тікелей өзгерту арқылы жұмыс істейді.