چرا بهترین زبان برنامه نویسی سی شارپ است؟
فاکتورهای تاثیرگذار انتخاب c# بعنوان زبان برنامه نویسی
فرصت های شغلی و محبوبیت بر اساس کارایی این زبان باعث انتخاب خیلی از برنامه نویسان شده است. بازار کار بزرگی دارد و در هر سال منتشر شده است. c# را شرکت ماکروسافت ساخته است.
- general-purpose برای کارهای مختلف قابل استفاده است.
- object-oriented شی گرا است یعنی خیلی نگرش تولید در آن حرفه ای می باشد. سی شارپ و جاوا شی گرا هستند.
- component-based کامپوننت های مختلف رو پشتیبانی می کند.
سطح زبان سی شارپ
سی شارپ زبان سطح بالایی است. یعنی به زبان انسان نزدیک تره. یه کد می خونید احساس می کنید یه کتاب می خوانید. اگر سطح زبانی پایین باشد یعنی به زبان ماشین 0 و 1 نزدیک است. سی شارپ یک زبان برنامه نویسی سطح بالا و همه منظوره است که از پارادایم های مختلفی پشتیبانی می کند و در بستر .net است.
آندرس هجلزبرگ، طراح زبان برنامه نویسی دلفی، سرپرستی تیم طراحان زبان سی شارپ را بر عهده داشت. این زبان دارای دستوری شیءگرا مشابه ++C است و به شدت از زبان های جاوا و دلفی تأثیر پذیرفته است. در ابتدا نام این زبان COOL بود که مخفف C like Object Oriented Language بود، هر چند در ژوئیه 2000، زمانی که مایکروسافت پروژه را عمومی اعلام کرد، اسم آن به سی شارپ تغییر پیدا کرد.
برای توسعه برنامه های ویندوز از طریق زبان سی شارپ می توان از پلتفرم های WinForms ،WPF و UWP استفاده کرد.
حتی با استفاده از زبان سی شارپ و پلتفرم هایی مانند Xamarin و UWP می توان برای اندروید، iOS و ویندوزفون ها برنامه ایجاد کرد.
همچنین فریم ورک های ASP.NET MVC و ASP.NET Core دو تکنولوژی برای طراحی و ایجاد برنامه های تحت وب مدرن هستند که امروزه در دنیای برنامه نویسی بسیار پرکاربرد و پر آوازه می باشند.
بنابراین اگر تسلط خوبی به زبان برنامه نویسی سی شارپ داشته باشید، شما آمادگی کافی برای شروع یادگیری فریمورک قدرتمند ASP.NET Core را نیز خواهید داشت.
زبان #C دارای برنامه های تحت وب یکپارچه ای است.
کدنویسی آسان در نرم افزار ویژوال استدیو که قدرتمندترین IDE موجود برای برنامه نویسی است.
زبان برنامه نویسی سی شارپ دارای کتابخانه بزرگی است که می تواند عملکرد سطح بالاتری نسبت به دیگر زبان ها همچون جاوا و C++ ارائه دهد.
پیش نیازهای یادگیری سی شارپ
دانش اولیه C یا ++C یا هر زبان برنامه نویسی یا اصول برنامه نویسی پیش نیاز این زبان است و علاوه بر این، مفهوم OOP منحنی یادگیری #C را کوتاه تر می کند.
برنامه نویسی شیءگرا Object-Oriented Programming و به اختصار OOP یک شیوه برنامه نویسی است، که ساختار یا بلوک اصلی اجزای آن، شیءها می باشند. در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می کند، به این معنا که داده ها و توابعی که بر روی این داده ها عمل می کنند، تا حد امکان در قالبی به نام شیء و در کنار یکدیگر قرار گرفته، جمع بندی شده و یک واحد (یا یک شیء) را تشکیل می دهند و نسبت به محیط بیرون خود، کپسوله می شوند. از این طریق، توابع خارج از آن شیء، امکان ایجاد تغییر در داده های درون شیء را نخواهند داشت.
در حقیقت منطقی برگرفته از زندگی روزمره ما انسان ها است. اگر به اطراف خود بنگرید، اشیای مختلفی را می بینید، پس انسان بر اساس اشیا فکر می کند. در برنامه نویسی شی گرا نیز ما تلاش می کنیم تا مفاهیم برنامه نویسی را همانند اشیای دنیای واقعی مدل کنیم. زیرا ذهن انسان توانایی بالایی در مدل سازی اشیا دارد.
زبان های برنامه نویسی که شی گرا هستند:
Ada, ActionScript, C++, Common Lisp, C#, Dart, Eiffel, Fortran 2003, Haxe, Java, JavaScript, Kotlin, logo, MATLAB, Objective-C, Object Pascal, Perl, PHP, Python, R, Raku, Ruby, Scala, SIMSCRIPT, Simula, Smalltalk, Swift, Vala and Visual Basic.NET.
مفاهیم پایه شی گرایی
Class کلاس:
به مجموعه ای از اشیاء که دارای ویژگی ها و رفتارهای مشترکی هستند کلاس گفته می شود. یک کلاس نمونه اولیه ای است که object از روی آن ساخته می شود. کلاس هایی مانند کلاس دانشجو، کلاس انسان، کلاس ماشین و …
کلاس ها مانند نقشه های ساختمان یا نقشه های ماشین هستند. .ﯾﻚ ﻛﻼس، ﻧﻘﺸﻪ اﯾﺠﺎد ﯾﻚ ﺷﯽ از ﻛﻼس است. بنابراین همانطور که می توانیم خانه های زیادی را از روی یک نقشه بسازیم، می توانیم شی های زیادی را از روی یک کلاس، نمونه سازی کنیم.
Object شی:
ﺷﯽ ﻳﮏ ﻣﻮﺟﻮدﯾﺖ ﻓﯿﺰﯾﮑﯽ ﯾﺎ یک ﻣﻔﻬﻮم ﮐﻠﯽ اﺳﺖ ﺑه طوری ﮐﻪ دارای ﻫﻮﻳﺖ و ویژگی هایی ﺑﻮده و ﻗﺎدر ﺑﻪ ﺑﺮوز رﻓﺘﺎرهاییﻣﯽ ﺑﺎﺷﺪ. رفتارهایی مثل صحبت کردن، دیدن، راه رفتن و غیره دارد.
Property خصوصیت:
ﻫﺮ ﺷﯽ یک سری ﺧﺼﻮﺻﯿﺎت دارد ﮐﻪ ﺑﻪ آن ها ﺻﻔﺖ ﮔﻔﺘﻪ ﻣﯽ ﺷﻮد. به عنوان مثال انسان یک شی است که ویژگی هایی مانند: رنگ مو، رنگ چشم، وزن، قد و ... دارد.
Method متد:
هر شی در واقع یک سری رفتار دارد که به آن ها روش یا متد گفته می شود. ﻣﺘﺪهادر واﻗﻊ ﭘﺎﺳﺦ ﻫﺎﯾﯽ هستند ﮐﻪ آن ﺷﯽ در ﻣﻘﺎﺑل تحریکات ﻣﺤﯿﻂ از ﺧﻮد ﻧﺸﺎن می دهد. مثلا انسان رفتارهایی مثل صحبت کردن، دیدن، گوش کردن، راه رفتن و غیره دارد.
Encapsulation کپسوله سازی:
کپسوله سازی بدین معنا است که تمامی اطلاعات مهم، درون شی نگهداری می شوند و نمی توان به آن ها از بیرون کلاس دسترسی داشت. به عبارتی، با ساخت یک شی به عنوان نمونه ای از کلاس، مشخصه ها و متدهای کپسوله سازی شده از بیرون کلاس قابل دسترسی و ویرایش نیستند و فقط می توان به داده هایی از کلاس دسترسی داشت که برنامه نویس آن ها را به صورت عمومی در اختیار سایر کاربران قرار داده است.
Abstraction انتزاع یا تجرید:
به معنی محدود کردن جزئیات برای پرداختن به فرآیند اصلی است. هدف از این اصل، پنهان کردن جزئیات غیرضروری از کاربران است تا آن ها با پیچیدگی کدهای نوشته شده مواجه نشوند. به عبارتی، اصل انتزاع باعث می شود کاربران از قطعه کد نهایی استفاده کنند، بدون آن که نیاز باشد درباره جزئیات پیچیده پیاده سازی آن مطلع شوند.
Inheritance وراثت یا ارث بری:
به کمک ارث بری (Inheritance) می توانیم کلاس ها را گسترش داده و ویژگی ها و رفتارهای جدیدتری به آن اضافه کنیم. به عبارتی، کلاسی را می توان به عنوان کلاس فرزند تعریف کرد که مشخصه ها و متدهای کلاس دیگری (کلاس والد) را به ارث ببرد. بدین ترتیب، می توان از یک کلاس به دفعات در برنامه استفاده کرد که همین امر باعث می شود از نوشتن قطعه کدهای زیاد و تکراری جلوگیری شود. همچنین، می توان در کلاس فرزند، مشخصه ها و متدهای جدیدی را ایجاد کرد که در کلاس والد وجود ندارند و فقط مختص کلاس فرزند هستند. انواع وراثت:
- وراثت منفرد Single Inheritance: در این نوع وراثت، هر کلاس فرزند تنها دارای یک کلاس والد است.
- وراثت چندگانه Multiple Inheritance: در این نوع وراثت، هر کلاس فرزند می تواند دارای بیش از یک کلاس والد باشد.
- وراثت چند سطحی Multi-Level Inheritance: در این نوع وراثت، کلاس فرزند، از کلاس والدی ارث بری می کند که آن کلاس، به عنوان کلاس فرزند، از کلاس والد دیگری ارث می برد.
- وراثت سلسله مراتبی Hierarchical Inheritance: در این نوع وراثت، ساختار ارث بری کلاس ها به صورت سلسله مراتبی است. به عبارتی، یک کلاس والد وجود دارد که تمامی کلاس های فرزند از آن ارث بری می کنند.
- وراثت ترکیبی Hybrid Inheritance: این نوع وراثت، ترکیبی از روش های ارث بری منفرد و چندگانه است.
Polymorphism پلی مورفیسم یا چندریختی:
بر اساس اصل وراثت، کلاس فرزند می تواند متدها و مشخصه های کلاس والد را به ارث ببرد. با این حال، در برنامه نویسی شی گرا، اصلی با عنوان اصل چندریختی وجود دارد که بر اساس آن، می توان در کلاس فرزند، متدی هم نام با متد کلاس والد تعریف کرد، به طوری که وظیفه این متد، با وظیفه متد کلاس والد متفاوت باشد.
- چند ریختی با Method Overridin : بر اساس چند ریختی، می توان در کلاس فرزند، متدی هم نام با متد کلاس والد تعریف کرد، به طوری که وظیفه این متد، با وظیفه متد کلاس والد متفاوت باشد. فرض کنید کلاسی برای شکل های هندسی داریم که یک متد رسم (draw) دارد. کلاس های مستطیل، پنج ضلعی و دایره از این کلاس ارث بری کرده و چون نحوه رسمشان متفاوت است، این متد را بازنویسی می کنند.
- چند ریختی با Method Overloading: در این حالت در برنامه نویسی شی گرا از ارث بری خبری نیست. همچنین نام متد و نوع خروجی آن (امضا) تغییری نمی کند. صرفاً چند متد مشابه با آرگومان ها (پارامترهای ورودی) متفاوت در اختیار داریم.
#C در مقایسه با ++C
اگرچه #C و ++C هر دو زبان های مبتنی بر C با کدهای مشابه هستند، تفاوت هایی بین آن ها وجود دارد. شاید در ابتدای کار تشخیص کد های جاوا و این دو زبان برای تازه کارها سخت باشد. #C به عنوان یک زبان برنامه نویسی کامپوننت گرا در نظر گرفته می شود، در حالی که ++C یک زبان شی گرا جزئی است.
همچنین، در حالی که هر دو زبان، زبان های کامپایل شده هستند، سی شارپ به CLR کامپایل و توسط .NET تفسیر می شود، اما ++C به کد ماشین کامپایل می شود. همچنین اندازه باینری ها در سی شارپ بسیار بزرگتر از ++C است.
از دیگر تفاوت های این دو می توان به موارد زیر اشاره کرد:
- #C خطاها و هشدارهای کامپایلر را ارائه می دهد، اما ++C از هشدارها پشتیبانی نمی کند و ممکن است به سیستم عامل آسیب برساند.
- سی شارپ در یک ماشین مجازی برای مدیریت خودکار حافظه اجرا می شود. ++C از شما می خواهد که حافظه را به صورت دستی مدیریت کنید.
- سی شارپ می تواند برنامه های کاربردی ویندوز، .NET، وب، دسکتاپ و تلفن همراه ایجاد کند، اما برای تولید برنامه های مستقل بکار نمی رود. ++C می تواند برنامه های کاربردی سمت سرور، مستقل و کنسول ایجاد کند زیرا می تواند مستقیما با سخت افزار کار کند.
- C++ را می توان روی هر پلتفرمی استفاده کرد، در حالی که #C برای سیستم عامل ویندوز طراحی شده است.
- علاوه بر این ها ++C سریع تر از #C است.
ورژن های سی شارپ از ابتدا تا کنون
Version .NET Framework Visual Studio Important Features C# 1.0 .NET Framework 1.0/1.1 Visual Studio .NET 2002 - Basic features
C# 2.0 .NET Framework 2.0 Visual Studio 2005 - Generics
- Partial types
- Anonymous methods
- Iterators
- Nullable types
- Private setters (properties)
- Method group conversions (delegates)
- Covariance and Contra-variance
- Static classes
C# 3.0 .NET Framework 3.0\3.5 Visual Studio 2008 - Implicitly typed local variables
- Object and collection initializers
- Auto-Implemented properties
- Anonymous types
- Extension methods
- Query expressions
- Lambda expressions
- Expression trees
- Partial Methods
C# 4.0 .NET Framework 4.0 Visual Studio 2010 - Dynamic binding (late binding)
- Named and optional arguments
- Generic co- and contravariance
- Embedded interop types
C# 5.0 .NET Framework 4.5 Visual Studio 2012/2013 - Async features
- Caller information
C# 6.0 .NET Framework 4.6 Visual Studio 2013/2015 - Expression Bodied Methods
- Auto-property initializer
- nameof Expression
- Primary constructor
- Await in catch block
- Exception Filter
- String Interpolation
C# 7.0 .NET Core 2.0 Visual Studio 2017 - out variables
- Tuples
- Discards
- Pattern Matching
- Local functions
- Generalized async return types
- more..
C# 8.0 .NET Core 3.0 Visual Studio 2019 - Readonly members
- Default interface methods
- Using declarations
- Static local functions
- Disposable ref structs
- Nullable reference types
- more..
C# 9.0 .NET 5.0 Visual Studio 2019 - Records
- Init-only properties
- Top-level statements
- Init accessors and readonly fields
- With-expressions
- Value-based equality
- more..
C# 10.0 .NET 6.0 Visual Studio 2022 - Record structs
- Global using directives
- File-scoped namespace declaration
- Extended Proptery Patterns
- Null Parameter Checking
- Constant interpolated strings
- more..
آندرس هجلزبرگ، طراح زبان برنامه نویسی دلفی، سرپرستی تیم طراحان زبان سی شارپ را بر عهده داشت. این زبان دارای دستوری شیءگرا مشابه ++C است و به شدت از زبان های جاوا و دلفی تأثیر پذیرفته است. در ابتدا نام این زبان COOL بود که مخفف C like Object Oriented Language بود، هر چند در ژوئیه 2000، زمانی که مایکروسافت پروژه را عمومی اعلام کرد، اسم آن به سی شارپ تغییر پیدا کرد.
برای توسعه برنامه های ویندوز از طریق زبان سی شارپ می توان از پلتفرم های WinForms ،WPF و UWP استفاده کرد.
کلاس ها مانند نقشه های ساختمان یا نقشه های ماشین هستند. .ﯾﻚ ﻛﻼس، ﻧﻘﺸﻪ اﯾﺠﺎد ﯾﻚ ﺷﯽ از ﻛﻼس است. بنابراین همانطور که می توانیم خانه های زیادی را از روی یک نقشه بسازیم، می توانیم شی های زیادی را از روی یک کلاس، نمونه سازی کنیم.
- Basic features
- Generics
- Partial types
- Anonymous methods
- Iterators
- Nullable types
- Private setters (properties)
- Method group conversions (delegates)
- Covariance and Contra-variance
- Static classes
- Implicitly typed local variables
- Object and collection initializers
- Auto-Implemented properties
- Anonymous types
- Extension methods
- Query expressions
- Lambda expressions
- Expression trees
- Partial Methods
- Dynamic binding (late binding)
- Named and optional arguments
- Generic co- and contravariance
- Embedded interop types
- Async features
- Caller information
- Expression Bodied Methods
- Auto-property initializer
- nameof Expression
- Primary constructor
- Await in catch block
- Exception Filter
- String Interpolation
- out variables
- Tuples
- Discards
- Pattern Matching
- Local functions
- Generalized async return types
- more..
- Readonly members
- Default interface methods
- Using declarations
- Static local functions
- Disposable ref structs
- Nullable reference types
- more..
- Records
- Init-only properties
- Top-level statements
- Init accessors and readonly fields
- With-expressions
- Value-based equality
- more..
- Record structs
- Global using directives
- File-scoped namespace declaration
- Extended Proptery Patterns
- Null Parameter Checking
- Constant interpolated strings
- more..
درباره این مطلب دیدگاهی بنویسید...
آدرس پست الکترونیک شما منتشر نخواهد شد.