آموزش C#

آشنائی با زبان پروگرام نویسی #C

مایکروسافت در مصاف با جاوا، بدنبال ارائه زبان کامل بود که سایه جاوا را در میادین پروگرام نویسی کم رنگ تر نماید. احتمالا بهمین باشد که #C را ایجاد کرد. شباهت های بین دو زبان خیلی چشم گیر است. مایکروسافت در رابطه با میزان استفاده و گسترش زبان فوق خیلی خوشبین بوده امیدوار است بسرعت زبان فوق گستردگی مقبولیتی به مراتب بیشتر از جاوا را نزد پیاده کنندگان پروگرام پیدا نماید .

با توجه به نقش محوری این زبان، از آن بعنوان مادر زبانهای پروگرام نویسی در دات نت نام برده می شود. مورد فوق به تنهائی، می تواند قانع کننده ای جهت یادگیری این زبان باشد، ولی دلایل زیاد دیگری هم وجود دارد که در ادامه به گاهی از آنها اشاره می گردد.

بیان شدن بعنوان استاندارد صنعتی
انجمن تولیدکنندگان رایانه اروپا (ECMA) زبان #C را در سوم اکتبر سال 2001 بعنوان یک استاندارد پذیرفته (ECMA-334) بدنبال آن تلاش های وسیع ی برای کسب گواهی ISO هم انجام شده است. زبان فوق در ابتدا توسط شرکت مایکروسافت و بعنوان بخشی از دات نت پیاده سازی و بلافاصله بعد از آن توسط شرکت های اینتل، هیولیت پاکارد مایکروسافت مشترکا، جهت استاندارسازی پیشنهاد گردید.

زبان #C بگونه ای طراحی شده است که نه تنها وابستگی به Platform ویِژگزینشه را ندارد، بلکه در اکثرا ٌ موارد وابستگی RunTime هم ندارد. کامپایلر #C می تواند بر روی هر نوع معماری سخت افزاری طراحی و اجرا گردد. در برخی از نسخه های اولیه کامپایلر زبان فوق که بوسیله گاهی از شرکت های جانبی ارائه شده است، کدهای #C را به بایت کدهای جاوا کمپایل می کنند. یکی از چنین کامپایلرهائی را می توان در سایت Halcyonsoft.com مشاهده نمود. پس کدهای #C براحتی قابلیت حمل بر روی محیط های مفرق را دارا خواهند بود.

معین ات تعریف شده زبان #C بابقیه استاندارهای تعریف شده ECMA نظیر (ECMA-335) 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 خود صرفا 77 کلمه کلیدی یا Keyword بوده که برای اکثر برنامـه نویسان غریب نخواهند بود. در مقابل BCL، 4500 کلاس و تعداد بیشماری متد Property است که پروگرام نویسان #C، می توانند از آنها برای انجام عملیات دلخواه مصرف نمایند. احتمال دارد یکی از موارد قابل توجه جهت یادگیری این زبان جهت بعضی از برنامـه نویسان پیشرفته عدم وجود گاهی از خصوصیات و امکاناتی باشد که در قدیم از طریقبقیه زبانهای استفاده شده، بخدمت گرفته می شدند. برای مثال عدم وجود امکاناتی جهت توارث چندگانه (MI) سلسله مراتبی شئ.

خلاصه :
شکی نیست فراگیری تسلط بر زبان #C بمنزله کسب پتانسیل ارزشمند بوده که ثمرات آن برای پروگرام نویسان در حال و آینده ای نه چندان دور بیشتر هویدا خواهد شد. استاندارد بودن وجود کتابخانه ای مملو از کلاس این اطمینان را بوجود خواهد آورد که با فراگیری زبان فوق و کسب، مهارت های لازم ، به توانائی فرا محیطی جدید دست پیدا خواهیم کرد که امکان مصرف از آن بر روی محیط های مفرق وجود خواهد داشت. خصوصیات و امکانات بیشمار این زبان از عبارت دلایل قانع کننده دیگری است که فراگیری آن را توجیه پذیر و منطقی می نماید .