چهارشنبه, ۱۹ اردیبهشت, ۱۴۰۳ / 8 May, 2024
مجله ویستا

آشنائی با زبان #C


آشنائی با زبان #C
مایكروسافت در مصاف با جاوا، بدنبال ارائه یك زبان كامل بود كه سایه جاوا را در میادین برنامه نویسی كم رنگ تر نماید. شاید بهمین دلیل باشد كه #C را ایجاد كرد. شباهت های بین دو زبان بسیار چشمگیر است. مایكروسافت در رابطه با میزان استفاده و گسترش زبان فوق بسیار خوشبین بوده و امیدوار است بسرعت زبان فوق گستردگی و مقبولیتی به مراتب بیشتر از جاوا را نزد پیاده كنندگان نرم افزار پیدا كند.
با توجه به نقش محوری این زبان، از آن بعنوان مادر زبانهای برنامه نویسی در دات نت نام برده می شود. مورد فوق به تنهائی، می تواند دلیل قانع كننده ای برای یادگیری این زبان باشد، ولی دلایل متعدد دیگری نیز وجود دارد كه در ادامه به برخی از آنها اشاره می گردد.
● مطرح شدن بعنوان یك استاندارد صنعتی
انجمن تولیدكنندگان كامپیوتر اروپا (ECMA) زبان #C را در سوم اكتبر سال ۲۰۰۱ بعنوان یك استاندارد پذیرفته (ECMA-۳۳۴) و بدنبال آن تلاش های وسیعی برای كسب گواهی ISO نیز انجام شده است. زبان فوق در ابتدا توسط شركت مایكروسافت و بعنوان بخشی از دات نت پیاده سازی و بلافاصله پس از آن توسط شركت های اینتل، هیولیت پاكارد و مایكروسافت مشتركا، جهت استاندارسازی پیشنهاد گردید.
زبان #C بگونه ای طراحی شده است كه نه تنها وابستگی به یك Platform خاص را ندارد، بلكه در اغلب موارد وابستگی RunTime نیز ندارد. كامپایلر #C می تواند بر روی هر نوع معماری سخت افزاری طراحی و اجرا گردد. در برخی از نسخه های اولیه كامپایلر زبان فوق كه توسط برخی از شركت های جانبی ارائه شده است، كدهای #C را به بایت كدهای جاوا كمپایل می كنند. یكی از چنین كامپایلرهائی را می توان در سایت Halcyonsoft.com مشاهده نمود. بنابراین كدهای #C براحتی قابلیت حمل بر روی محیط های متفاوت را دارا خواهند بود. مشخصات تعریف شده زبان #C با سایر استاندارهای تعریف شده ECMA نظیر (ECMA-۳۳۵) CLI (Common Language Infrastructure) بخوبی مطابقت می نمایند. CLI قلب و روح دات نت و CLR(Common Language Runtime) است. اولین نسخه از كامپایلر زبان #C كه از CLI استفاده می كند، NET Framwork. مایكروسافت است. با توجه به موارد گفته شده، مشخص می گردد كه این زبان بسرعت بسمت استاندارد شدن حركت و با تایید استانداردهای مربوطه از طرف انجمن های معتبر بین المللی و حمایت فراگیر شركت های معتبر كامپیوتری در دنیا مسیر خود را بسمت جهانی شدن بخوبی طی می نماید.
● #C چیست ؟
طراحان زبان #C با تاكید و الگوبرداری مناسب از مزایای زبانهائی نظیر ++C، C و جاوا و نادیده گرفتن برخی از امكانات تامل برانگیز و كم استفاده شده در هر یك از زبانهای فوق، یك زبان برنامه نویسی مدرن شی گراء را طراحی كرده اند. در مواردی، برخی از ویژگی های استفاده نشده و درست درك نشده در هر یك از زبانهای گفته شده، حذف و یا با اعمال كنترل های لازم بر روی آنها، زمینه ایجاد یك زبان آسان و ایمن برای اغلب پیاده كنندگان نرم افزار بوجود آمده است. مثلا C و ++C می توانند مستقیما با استفاده از اشاره گرها عملیات دلخواه خود را در حافظه انجام دهند. وجود توانائی فوق برای نوشتن برنامه های كامپیوتری با كارائی بالا ضرورت اساسی دارد. اما در صورتیكه عملیاتی اینچنین بدرستی كنترل و هدایت نگردند، خود می تواند باعث بروز مسائل (Bugs) بیشماری گردد.
طراحان زبان #C، با درك اهمیت موضوع فوق، این ویژگی را كماكان در آن گنجانده ولی بمنظور ممانعت از استفاده نادرست و ایجاد اطمینان های لازم مسئله حفاظت نیز مورد توجه قرار گرفته است. جهت استفاده از ویژگی فوق، برنامه نویسان می بایست با صراحت و به روشنی خواسته خود را از طریق استفاده از Keyword های مربوطه اعلان نمایند( فراخوانی یك توانائی و استفاده از آن .( #C بعنوان یك زبان شی گراء عالی است. این زبان First-Class را برای مفهوم Property (Data Member) بهمراه سایر خصائص عمومی برنامه نویسی شی گراء حمایت می كند. در C و ++C و جاوا یك متد get/set اغلب برای دستیابی به ویژگی های هر Property استفاده می گردد. CLI همچنان تعریف Property را به متدهای get/ser ترجمه كرده تا بدین طریق بتواند دارای حداكثر ارتباط متقابل با سایر زبانهای برنامه نویسی باشد. #C بصورت فطری Events ، Declared Value، Reference Type ، Operator Overloading را نیز حمایت می كند .
● كد مدیریت یافته
با استفاده از نسخه پیاده سازی شده #C توسط مایكروسافت، می توان همواره كد مدیریت یافته ای راتولید كرد.
یك برنامه #C پس از كامپایل، بصورت برنامه ای در خواهد آمد كه شامل دستورالعمل های تلفیق شده CIL :
(Common Intermediate Language) است ( درست بر خلاف دستورالعمل های مختص یك ماشین خاص). CIL (گاها با نام MSIL (Microsoft Intermediate Language) با به اختصار IL نیز نامیده می شود ) ، در مفهوم مشابه بایت كدهای جاوا بوده و شامل مجموعه ای از دستورالعمل های سطح پایین قابل فهم توسط تكنولوژی مبتنی بر CLI نظیر CLR مایكروسافت خواهد بود. این برنامه ها بدین دلیل كد مدیریت یافته، نامیده می شوند كه CLR مسئولیت تبدیل این دستورالعمل ها به كدهای قابل اجرا برروی ماشین و ارائه اغلب سرویس های اساسی برای كدینگ نظیر : Garbage Collection، مدیریت Heap و عمر مفید یك Object و یا Type Verification را فراهم می كند.
● روش یادگیری #C
یادگیری این زبان برای افرادیكه دارای سابقه آشنائی با یكی از زبانهای برنامه نویسی ++C، C و یا جاوا باشند كار مشكلی نخواهد بود، حتی افرادیكه دارای آشنائی اولیه با جاوااسكریپت و یا دیگر زبانهای برنامه نویسی نظیر ویژوال بیسك می باشند، امكان پذیر و راحت خواهد بود. برخی از برنامه نویسان حرفه ای بر این باور هستند كه #C نسبت به VB.NET با اقبال بیشتر و سریعتری مواجه خواهد شد، چراكه #C نسبت به ویژوال بیسك خلاصه تر است. حتی برنامه های بزرگ و پیچیده ای كه توسط #C نوشته می گردند خواناتر، كوتاه و زیبا خواهند بود. برخی از ویژگی های ارائه شده در #C نظیر Unsigned Integer، Operator OverLoading و امنیت بیشتر Type ها، در VB.NET وجود نداشته و این امر می تواند دلیلی بر فراگیرتر شدن #C نسبت به VB.NET نزد برنامه نویسان با تجربه باشد.
● برای یادگیری هر یك از زبانهای حمایت شده در دات نت، می بایست از
BCL (Basic Class Library) مربوط به NET Framework. شروع كرد . #C خود صرفا دارای ۷۷ کلمه کلیدی یا Keyword بوده كه برای اكثر برنامه نویسان غریب نخواهند بود. در مقابل BCL، دارای ۴۵۰۰ كلاس و تعداد بیشماری متد و Property است كه برنامه نویسان #C، می توانند از آنها برای انجام عملیات دلخواه خود استفاده نمایند. شاید یكی از مسائل قابل توجه جهت یادگیری این زبان برای برخی از برنامه نویسان حرفه ای عدم وجود برخی از ویژگی ها و امكاناتی باشد كه در گذشته و از طریق سایر زبانهای استفاده شده، بخدمت گرفته می شدند. مثلا عدم وجود امكاناتی جهت توارث چندگانه (MI) سلسله مراتبی یك شئ .
● خلاصه
بدون شك فراگیری و تسلط بر زبان #C بمنزله كسب یك پتانسیل با ارزش بوده كه ثمرات آن برای برنامه نویسان در حال و آینده ای نه چندان دور بیشتر هویدا خواهد شد. استاندارد بودن و وجود كتابخانه ای مملو از كلاس این اطمینان را بوجود خواهد آورد كه با فراگیری زبان فوق و كسب، مهارت های لازم، به یك توانائی فرا محیطی جدید دست پیدا خواهیم كرد كه امكان استفاده از آن بر روی محیط های متفاوت وجود خواهد داشت. ویژگی ها و قابلیت های بیشمار این زبان از جمله دلایل قانع كننده دیگری است كه فراگیری آن را توجیه پذیر و منطقی می كند.
طی سلسله مقالاتی می خواهیم با C# بیشتر آشنا شویم. فرض این مقالات بر این است كه آشنایی مختصری با زبانهای برنامه نویسی دارید ، هر چند كار ما تقریبا از صفر شروع می شود و هدف آن سادگی هر چه بیشتر است.
C# از دو زبان C++ و Java متولد شده است! حاوی بسیاری از جنبه های C++ می باشد اما ویژگی های شیء گرایی خودش را از جاوا به ارث برده است.
C# اگرچه از C++ گرفته شده است اما یك زبان "خالص" شیء گرا (Object Oriented) می باشد. هر دو زبان یاد شده جزو زبانهای هیبرید محسوب می شوند اما طراحان C# این مورد را به اندازه ی C++ مهم تلقی نكرده اند. یك زبان هیبرید اجازه ی برنامه نویسی با شیوه های مختلف را میسر می كند. دلیل اینكه C++ هیبرید است ، این است كه قرار بوده تا با زبان C سازگار باشد و همین امر سبب گردیده تا بعضی از جنبه های C++ بسیار پیچیده شوند.
زبان سی شارپ فرض اش بر این است كه شما می خواهید تنها برنامه نویسی شیء گرا انجام دهید و همانند C++ مخلوطی از برنامه نویسی رویه ایی (Procedural) و شیء گرا را نمی خواهید به پایان برسانید. بنابراین باید طرز فكر خودتان را با دنیای شیء گرایی تطبیق دهید. در ادامه خواهید دید كه در سی شارپ هر چیزی شیء است حتی یك برنامه ی سی شارپ.
آریا سلطانی