دوشنبه ۸ خرداد ۱۳۹۶
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 

 
 
 ظهور 6.0 #C
.NET C#
تاریخ ثبت:  ۹۳/۱/۱۷
تعداد نمایش:  ۵۳۱۳
  نویسنده: ابوالفضل حسن الدين
 
   ۲۱  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share




برای نسختین بار در کنفرانس NDC که 11-15 آذرماه 1392 در لندن برگزار شد، طی ارائه‌ای که توسط Mads Torgersen تحت عنوان 'آینده سی‌شارپ' صورت گرفت، برخی از ویژگی‌های احتمالی نسخه 6.0 سی‌شارپ معرفی شدند. پس از این کنفرانس، پست‌هایی در وب منتشر شدند که با استناد به ارائه Mads، به تشریح ویژگی‌های جدید پرداختند.از آنجایی که امکان بهره‌برداری از این ویژگی‌ها در آن مقطع برای عموم فراهم نبود، نگارش سری مقالات نسخه جدید سیشارپ به زمان بهتری موکول شد. اگر علاقمند به مطالعه بیشتر باشید، می‌توانید برخی از این نمونه پست‌ها و مقالات را که در زیر فهرست شده‌اند، مطالعه کنید:


کنفرانس Build 2014، خیز قدرتمند مایکروسافت برای گسترش امپراتوری!

از اخبار و شواهد چنین بر می‌آمد که سال 2014، سال شکست سکوت سی‌شارپ و پلتفرم کامپایلر Roslyn خواهد بود. کنفرانس Build 2014 که امسال 13-15 فروردین برگزار شد، شرسار از نوآوری‌ها و دست‌آوردهای جدید در حوزه دات‌نت مایکروسافت بود. سال‌های سال مایکروسافت از سوی بسیاری به خاطر بسته بود اکو سیستم خود مورد سرزنش قرار می‌گرفت. با تحولات اخیر در دنیای نرم‌افزار و کدباز شدن بسیاری از محصولات، غول نرم‌افزاری نیز با روندی منطقی به این سمت گام برداشته است. در کنفرانس امسال اصطلاحی جدید به دنیای برنامه‌نویسی مایکروسافت تحت عنوان NET Foundation. معرفی شد. NET Foundation. بنیادی مستقل است که به منظور سازماندهی همکاری‌ها و افزایش سرعت و بهره‌وری در توسعه تمام پروژه‌های کد باز دات‌نت ایجاد شده است. NET Foundation. فعالیت خود را با پوشش 24 پروژه کد باز آغاز خواهد کرد که این پروژه‌ها عبارت‌اند از:


نکته جالب، قرار گرفتن پروژه پلتفرم کامپایلر دات‌نت - تحت نام Roslyn - در این فهرست می‌باشد. 23 ژانویه سال 2014، درخواستی مبنی بر کدباز شدن این پروژه مطرح شد که با شرکت نگارنده مقاله در رای‌گیری همراه بوده است درحالیکه به نظر می‌رسید موضوع خیلی جدی نباشد. اما اگر به صفحه درخواست مراجعه کنید، خواهید دید که این درخواست چند روز پیش از نگارش مقاله و مقارن با معرفی NET Foundation. در نهایت با موافقت تیم ویژوال استودیو همراه بوده است!


نقش Roslyn در دنیای دات‌نت چیست و کد باز شدن این پروژه چه معنایی خواهد داشت؟


اگر برای نخستین بار است که نام Roslyn را می‌شنوید، باید گفت که این پروژه تاکنون مسیری بس طولانی داشته و در ابتدای راه تحت عنوان Compiler as a Service شناخته می‌شد. برای آشنایی با آن و مرور تاریخچه‌اش توصیه می‌شود این مقاله را مطالعه کنید. با طولانی شدن مسیر توسعه Roslyn به نظر می‌رسید که ارائه آن با نسخه 5.0 سی‌شارپ همراه شود، اما پس از سکوتی دو ساله و عدم وجود هر گونه پیش‌نمایش عمومی از سال 2012، این پروژه به ناگاه معنایی دیگر و نقشی متفاوت به خود گرفت. باید گفت که اینک Roslyn به پلتفرمی تبدیل شده است که ازین پس کامپایلرهای بعدی زبان‌های سی‌شارپ و ویژوال بیسیک بر مبنای آن ارائه خواهند شد. در کنار کامپایلرهای نسل جدید، این پروژه API مورد نیاز جهت در اختیار گرفتن کامپایلر به عنوان سرویس را نیز فراهم خواهد کرد.

اگر بخواهیم اندکی ساده سازی کنیم (و شاید هم برعکس مسائل پیچیده‌تر شوند!) باید گفت که ازین پس کامپایلرهای زبان‌های مذکور، با سورس کد خود آن زبان‌ها تولید خواهند شد! این مورد همان سوال فلسفی پیدایش مرغ و تخم‌مرغ را تداعی می‌کند که پیدایش کدام یک زودتر بوده است!!! با پیاده‌سازی کامپایلرها به این سبک مزایای بسیار زیادی حاصل می‌شوند که یکی از آن‌ها امکان تولید ابزارهای قدرتمند برای محیط‌های کدنویسی مرتبط مانند ویژوال استودیو و تحلیل و آنالیز کدها خواهد بود.

کد‌باز بودن Roslyn هم به این معناست که شما به عنوان یک توسعه‌دهنده با قبول شرایط مایکروسافت، می‌توانید با دریافت آخرین نسخه از این پروژه، ویژگی‌های کامپایلر سی‌شارپ یا ویژوال بیسیک را بنا به نیاز خود تغییر دهید! البته همه چیز به این سادگی نیست چرا که مستلزم داشتن دانش بسیار در این حوزه می‌باشد، اما پیداست که این اقدام مایکروسافت، موج عظیمی از همکاری در توسعه کامپایلرهای نسل بعدی زبان‌های دات‌نت را فراهم خواهد کرد. هنوز هیچ کسی حد و مرزی برای نوآوری و ابتکار در این راستا متصور نیست!


قطار سی‌شارپ در کدام ایستگاه توقف کرده است؟

تصویر زیر به صورت اجمالی تاریخچه‌ی زبان برنامه‌نویسی سی‌شارپ را که تاکنون 5 نگارش از آن ارائه شده‌اند، نشان می‌دهد. در صورت تمایل می‌توانید در این مقاله نیز این تاریخچه را مرور کنید.


همانطور که در تصویر پیداست، نسخه سوم، پربارترین و کاربردی‌ترین نگارش بوده است که بدون شک همه توسعه‌دهندگان امروزه از تک تک این ویژگی‌ها نهایت استفاده را می‌برند. در این بین عظمت و نقش LINQ انکارناپذیر است. اما از این نسخه به بعد، می‌توان گفت که نگارش‌های بعدی خیلی کم‌رنگ و کم اثر در امر برنامه‌نویسی و توسعه ظاهر شده‌اند چرا که حوزه‌های خاصی از برنامه‌نویسی را پوشش داده‌اند. به عنوان مثال برنامه‌نویسی زمان اجرا (Dynamic Programming) با معرفی کلمه کلیدی dynamic و یا برنامه‌نویسی غیرهمزمان (Asynchronous Programming) با معرفی کلمات کلیدی async و await در همه سناریوها مفید نیستند و استفاده غیرصحیح و نابجا از آن‌ها حتی ممکن است منجر به کاهش کارایی برنامه‌ها شود. هرچند گفته شده است که انتخاب این ویژگی‌ها از لیست‌های طولانی پیشنهادی از سراسر جامعه برنامه‌نویسی دات‌نت بوده است، اما روند نزولی در تکامل سی‌شارپ کاملا مشهود است. شاید همین امر یکی از دلایل اصلی در کدباز کردن پروژه Roslyn توسط مایکروسافت باشد. انتظار می‌رود که این امر منجر به تعامل بیشتر توسعه‌دهندگان در امر ارائه ویژگی‌های پیشنهادی برای نسخه‌های آتی زبان‌های دات‌نت باشد.
ناگفته نماند که مایکروسافت بر خلاف عرف معمول با حفظ حدفاصل دو سال بین ارائه نگارش‌های ویژوال استودیو، نگارش ویژوال استودیو 2013 را بدون نسخه‌های جدید زبان‌های سی‌شارپ و ویژوال بیسیک ارائه کرده است. بحث و گمان‌ها در خصوص این ارائه خارج از عادت، در این مقاله مطرح شده‌اند.

پس از این پیش درآمد نسبتا مفصل! نوبت به اصل مطلب یعنی ویژگی‌های 6.0 #C می‌رسد.


6.0 #C، مبتنی بر Roslyn

همانطور که تاکنون در این مقاله عنوان شد، زین پس کامپایلرهای زبان‌های سی‌شارپ و ویژوال بیسیک دات‌نت بر پایه Roslyn ارائه خواهند شد. به کدهای زیر که توسط Mads در NDC 2013 ارائه شدند، دقت کنید:

using System;
using System.Text;
using System.Threading.Task;
// import types into namespace
using System.Math;
 
// primary constructor
public class Point(int x, int y)
{
    // readonly property
    public int X { get; } = x;
    public int Y { get; } = y;
 
    // property expressions
    public double Dist => Sqrt( X * X, Y * Y );
 
    // method expressions
    public Point Move(int dx, int dy) => new Point(X + dx, Y + dy);
     
    // parameter arrays for IEnumerable
    public static Point Avg(params IEnumerable<Point> points)
    {
        // monadic null checking
        if (points?.FirstOrDefault()?.X ?? -1 )
    }
 
    public void GetCoordinates(out int x, out int y) { x = X; y = Y; }
}
 
class Program
{
    static void Main(string[] args)
    {
        var p = new Point(1, 5);
 
        // multiple return values
        p.GetCoordinates(out var x, out var y);
    }
}
 
// constructor type parameter inference -
var t = new Tuple(1,2); // infers Tuple<T1, T2>

این قطعه کد به زبان احتمالی 6.0 #C نوشته شده است! آوردن لفظ احتمالی از آن جهت است که در زمان ارائه شدن کد توسط Mads این ویژگی‌ها جنبه پیشنهادی داشتند و اینکه چه تعداد از آن‌ها به واقعیت بپیوندند، نامشخص بود. ویژگی‌های جدید پیشنهادی با کامنت‌ مشخص شده‌اند. اما پس از کنفرانس Build 2014، نخستین پیش نمایش عمومی 6.0 #C ارائه شد (دریافت پیش‌نمایش کامپایلر). اگر به صفحه ویژگی‌های نسخه بعدی زبان‌های دات‌نت مراجعه کنید، برای سی‌شارپ با این لیست مواجه خواهید شد:



ویژگی‌هایی که با وضعیت Done مشخص شده‌اند، هم‌اینک پیاده‌سازی شده و قابل استفاده می‌باشند (مستند این ویژگی‌ها، ضمیمه این مقاله می‌باشد.). البته در همین صفحه‌ی ویژگی‌ها تاکید شده است که هیچ کدام از آن‌ها قطعی نیستند و ممکن است تا انتشار نهایی دستخوش تغییر شوند.

اگر دقت کنید، تمام این ویژگی‌ها جنبه ساده‌سازی و انعطاف در تعاریف و مفاهیم موجود در زبان سی‌شارپ را دارند. فقط همین اندازه متصور شوید که با ارائه Null propagation دیگر لازم نیست جای جای کدها از چک شرط تهی بودن مقادیر استفاده کنید. همین یک ویژگی می‌تواند باعث کاهش قابل توجه خطاها و رخ دادن استثناها در زمان اجرا شود. ویژگی جالب دیگر که ممکن است در نسخه جدید ارائه شود و ساده‌سازی قابل توجه دیگری را به بار بیاورد، String interpolation خواهد بود.

هنوز مفاهیم جدید و کاملا تازه از قبیل آنچه که تاکنون در نسخه‌های قبلی معرفی شدند (Generic Programming C# 2.0 - Functional Programming C# 3.0 - Dynamic Programming C# 4.0 - Asynchronous Programming C# 5.0) ، در این فهرست دیده نمی‌شوند. باید منتظر ماند و دید که این فهرست تا انتشار نسخه نهایی، موارد دیگری را نیز شامل خواهد شد یا خیر.


جمع‌بندی



پر واضح است که دنیای دات‌نت مسیری کاملا جدید و جذاب در پیش رو گرفته است. سی‌شارپ و ویژوال بیسیک اینک در اختیار عموم قرار گرفته اند که تیم توسعه از آن تحت عنوان - It’s a brave new world - در انتهای معرفی Roslyn یاد می‌کند. با معرفی پیش‌نمایش‌های بیشتر در آینده و تا نهایی شدن نسخه 6.0، این سری از مقالات تداوم خواهند یافت. به نظر می‌رسد که فهرست ویژگی‌های فعلی نیازی به توضیحات بیشتر نداشته باشد. اگر بر این باورید که باید مباحث آموزشی و تمرکز روی این ویژگی‌ها بیشتر شود، این نکته را در بخش پیام‌ها منعکس کنید. در پایان منابع بیشتری جهت مطالعه برای علاقمند پیشنهاد می‌شوند.

امید است که این مقاله مورد توجه خوانندگان محترم و همراه وب‌سایت قرار گرفته باشد. شما می‌توانید نکته نظرات و پیشنهادات خود را در بخش پیام‌ها با ما در میان بگذارید. آخرین مطالب و اخبار دات‌نت را در صفــ ـحه نگارنده مقاله دنبال کنید.

فایل ضمیمه مقاله: Upcoming Features in CSharp 6.rar
  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
ابوالفضل حسن الدين
On my own in the programming world
همه مقاله های نوشته شده توسط این کاربر (۲۵)
 
  پیام جدید
صفحه ۱ - پیامهای اصلی ۱ تا ۳ از مجموع ۳ پیام اصلی
اولین قبلی بعدی

 عنوان فرستنده تاریخ
 
آینده C# شبیر عباس زاده ۱۳۹۳/۱/۲۵
پاسخ به: آینده C# ابوالفضل حسن الدين ۱۳۹۳/۱/۲۵
 
تغییرات چشم گیر مایکروسافت کاوش حسینی ۱۳۹۳/۱/۲۰
پاسخ به: تغییرات چشم گیر مایکروسافت ابوالفضل حسن الدين ۱۳۹۳/۱/۲۱
 
تشکر بسیار فربد صالحی ۱۳۹۳/۱/۱۸
پاسخ به: تشکر بسیار ابوالفضل حسن الدين ۱۳۹۳/۱/۱۹
پاسخ به: تشکر بسیار فربد صالحی ۱۳۹۳/۱/۱۹
اولین قبلی بعدی

Copyright © 2006 - 2016 All Rights Reserved.
Please direct your questions or comments to