Արշակ-ի խոսքերից
C++ vs C# վեճի վերաբերյալ։
Իհարկե, C++ –ը տեխնիկապես ավելի շատ հնարավորություններ ունի, քան C#–ը, քանի որ այն համեմատաբար ավելի ցածր մակարդակի լեզու է քան C# կամ Java-ն(սրանք նույն կարգի են)։ Բայց ծայրահեղ օրինակը բերենք. Asembler–ը տեխնիկապես ամենամեծ հնարավորություններն ունի. բայց ո՞վ է հիմա Asembler–ով ծրագիր գրում։ Գրում են, բայց շատ հազվադեպ, խիստ մասնավոր դեպքերում։ Ու ընդհանուր առմամբ, ինչքան ցածր մակարդակի է ծրագրավորման լեզուն, էնքան տեխնիկապես ավելի շատ հնարավորություններ է տրամադրում, բայց դրա փոխարեն ստիպված ես ավելի շատ կոդ գրել, գրածդ կոդում սխալների քանակը սովորաբար ավելի մեծ է լինում։ Հետևաբար, կախված խնդրից, պետք է ընտրել համապատասխան մակարդակի լեզու։
Կոնկրետ C#-ի, Java–ի դեպքում միևնույն խնդրի համար 2-3 անգամ ավելի քիչ կոդ ես գրում քան C++-ի դեպքում, ցուցիչներից հրաժարվելու, հիշողությունն ավտոմատ ազատելու տեխնոլոգիայի (Garbage Collaction) ներմուծման և այլ տարբերությունների արդյունքում սխալների հավանականությունը կտրուկ ընկնում է։ Նաև անվտանգությունն է մեծանում։ Հետևաբար շուկայում առկա խնդիրների մեծ մասի դեպքում C#-ը, Java–ն ավելի նախընտրելի են։
Իմիջիայլոց, որքան գիտեմ, Microsoft-ը նախատեսում է, որ ապագայում ցուցիչների օգտագործմամբ, այսպես ասած՝ unsafe կոդով ծրագրերը կարող են օպերացիոն համակարգի կողմից արգելվել կամ գոնե զգուշացվել որպես վտանգավոր ծրագրեր, քանի որ ցուցիչները թույլ են տալիս կոնկրետ հիշողության հասցեների դիմել։ Սա մոտավոր լսել եմ. ճշգրիտ ինֆորմացիա չի։
Ինչ վերաբերում է պլատֆորմից անկախ լինելուն, անկախությունը երկու իմաստով կարելի է հասկանալ։ C#–ը չնայած տեսականորեն կարող է պլատֆորմից անկախ լինել, եթե այլ ՕՀ–երի համար .NET Framework ստեղծվի, բայց տվյալ պահին որքան գիտեմ չկա ու արդյունքում .NET–ով գրված ծրագիրը կարող է աշխատել միայն Windows-ի վրա։
Իսկ C++ -ով գրված ծրագիրը կարող է աշխատել ցանկացած ՕՀ–ում ու էդ իմաստով անկախ է, բայց աշխատացնելու համար պահանջում է կոմպիլացիա տվյալ ՕՀ–ում։
Մինչդեռ Java-ի դեպքում պլատֆորմից անկախությունը առկա է ցանկացած իմաստով։ Այն աշխատում է տարբեր պլատֆորմներում, քանի որ բոլոր տարածված ՕՀ–երի համար կա ստեղծված Java վիրտուալ մեքենա։ Ու ի տարբերություն C++ -ի, ամեն մի ՕՀ–ի համար կոմպիլացիա չի պահանջում. որևէ ՕՀ–ում compile արած Java ծրագիրը կարելի է աշխատացնել ցանկացած ՕՀ–ում։ Նույնիսկ գրաֆիկական User Interface-ի դեպքում։
Էջանիշներ