عمر NET 5.0 تا سه ماه دیگر به پایان میرسد.
طبق اعلام قبلی مایکروسافت عمر نسخه 5.0 دات نت که سال گذشته منتشر شد در تاریخ 8 می 2022 به پایان میرسد و از این تاریخ به بعد هیچ آپدیتی برای آن ارائه نمیشود.
توسعه دهندگانی که از دات نت 5.0 استفاده میکنند بهتر است به دات نت 6.0 آپدیت کنند.
نسخه 6.0 شامل پشتیبانی بلند مدت (سه ساله ) میشود و حتی پس از انتشار نسخه 7.0 هم برای آن آپدیت ارائه میشود.
طبق اعلام قبلی مایکروسافت عمر نسخه 5.0 دات نت که سال گذشته منتشر شد در تاریخ 8 می 2022 به پایان میرسد و از این تاریخ به بعد هیچ آپدیتی برای آن ارائه نمیشود.
توسعه دهندگانی که از دات نت 5.0 استفاده میکنند بهتر است به دات نت 6.0 آپدیت کنند.
نسخه 6.0 شامل پشتیبانی بلند مدت (سه ساله ) میشود و حتی پس از انتشار نسخه 7.0 هم برای آن آپدیت ارائه میشود.
دات نت 20 ساله شد
اولین نسخه دات نت سال 2002 منتشر شد. 20 سال پیش در جریان کنفرانس PDC مایکروسافت برای اولین بار دات نت را معرفی کرد و سی دی آن را به توسعه دهندگان حاضر در جلسه هدیه داد.
دات نت ابتدا فقط برای ویندوز ارائه شد و قرار بود محصولی باشد که کمک کند ویندوز و نرم افزارهایش تا ابد به هم گره بخورند. اما زمانه عوض شد و مایکروسافت هم تغییر کرد.
دات نت امروز متن باز شده و به صورت رایگان قابل نصب و توسعه است. سورس کامل آن را می توانید از گیتهاب دانلود کنید و روند توسعه قابلیت های جدید آن را یک به یک دنبال کنید یا در پیاده سازی آن مشارکت کنید.
با دات نت می توانید بازی، وب سایت یا هوش مصنوعی طراحی کنید و برای موبایل و دسکتاپ اپ توسعه دهید. محیط یکپارچه و ابزار قدرتمندی چون ویژوال استودیو فرآیند پیاده سازی را به ساده ترین شکل پیش میبرد.
امروز بعد از 20 سال همچنان روز خوبی برای یک توسعه دهنده دات نت بودن است.
اولین نسخه دات نت سال 2002 منتشر شد. 20 سال پیش در جریان کنفرانس PDC مایکروسافت برای اولین بار دات نت را معرفی کرد و سی دی آن را به توسعه دهندگان حاضر در جلسه هدیه داد.
دات نت ابتدا فقط برای ویندوز ارائه شد و قرار بود محصولی باشد که کمک کند ویندوز و نرم افزارهایش تا ابد به هم گره بخورند. اما زمانه عوض شد و مایکروسافت هم تغییر کرد.
دات نت امروز متن باز شده و به صورت رایگان قابل نصب و توسعه است. سورس کامل آن را می توانید از گیتهاب دانلود کنید و روند توسعه قابلیت های جدید آن را یک به یک دنبال کنید یا در پیاده سازی آن مشارکت کنید.
با دات نت می توانید بازی، وب سایت یا هوش مصنوعی طراحی کنید و برای موبایل و دسکتاپ اپ توسعه دهید. محیط یکپارچه و ابزار قدرتمندی چون ویژوال استودیو فرآیند پیاده سازی را به ساده ترین شکل پیش میبرد.
امروز بعد از 20 سال همچنان روز خوبی برای یک توسعه دهنده دات نت بودن است.
Forwarded from کدهک
آشنایی با Throughput
هنگام اندازه گیری پرفورمنس در نرم افزارهای تحت وب از اصطلاح throughput استفاده می شود که بر اساس تعداد عملیات تقسیم بر زمان محاسبه می شود.
معمولا مقدار throughput بر اساس دو واحد درخواست بر ثانیه یا کیلوبایت بر ثانیه نماش داده میشود.
بر اساس شرایط پروژه ممکن است یکی از دو عدد اهمیت داشته باشد. پاسخگویی به تعداد زیاد درخواست در زمان کوتاه در شرایطی که حجم درخواست ها بسیار کم است لزوما نشان دهنده پرفورمنس بالا نیست.
در درون سرورهایی که با ASP NET و سی شارپ کار میکنند تخصیص حافظه ارزان و سریع است اما برای پاکسازی نیاز به Garbage Collection داریم.
هنگامی که GC اتفاق می افتد برنامه متوقف میشود در این زمان هیچ داده ای جابجا نمیشود در نتیجه مقدار Throughput کم میشود و پرفورمنس افت می کند.
هر چه تخصیص و پاکسازی حافظه بهینه تر انجام شود از نگاه ناظر بیرونی (کاربر) سایت نرمتر کارمیکند. این موضوع به خصوص در بازی های آنلاین که توقف برنامه آزار دهنده است اهمیت بیشتری پیدا میکند.
هنگام اندازه گیری پرفورمنس در نرم افزارهای تحت وب از اصطلاح throughput استفاده می شود که بر اساس تعداد عملیات تقسیم بر زمان محاسبه می شود.
معمولا مقدار throughput بر اساس دو واحد درخواست بر ثانیه یا کیلوبایت بر ثانیه نماش داده میشود.
بر اساس شرایط پروژه ممکن است یکی از دو عدد اهمیت داشته باشد. پاسخگویی به تعداد زیاد درخواست در زمان کوتاه در شرایطی که حجم درخواست ها بسیار کم است لزوما نشان دهنده پرفورمنس بالا نیست.
در درون سرورهایی که با ASP NET و سی شارپ کار میکنند تخصیص حافظه ارزان و سریع است اما برای پاکسازی نیاز به Garbage Collection داریم.
هنگامی که GC اتفاق می افتد برنامه متوقف میشود در این زمان هیچ داده ای جابجا نمیشود در نتیجه مقدار Throughput کم میشود و پرفورمنس افت می کند.
هر چه تخصیص و پاکسازی حافظه بهینه تر انجام شود از نگاه ناظر بیرونی (کاربر) سایت نرمتر کارمیکند. این موضوع به خصوص در بازی های آنلاین که توقف برنامه آزار دهنده است اهمیت بیشتری پیدا میکند.
اصل CQS بیان میکند که یک متد یا باید وضعیت (State) را تغییر دهد یا باید مقداری را برگرداند. بر مبنای این اصل متدهایی که وضعیت را تغییر میدهند Command و متدهایی که مقداری را بر میگردانند Query خوانده میشوند.
اگر قرار باشد هنگام خواندن یک Value وضعیت آن یا وضعیت Value دیگر تغییر کند میتواند یک نا هماهنگی در سیستم ایجاد کند که در نهایت منجر به باگ یا خطا شود.
اصل CQS با تکنیک CQRS از نظر مفهومی شباهت زیادی دارد . در CQS ما متدهای درون یک کلاس را جدا می کنیم اما در CQRS ساختار برنامه را جدا می کنیم که در نهایت ممکن است تا جدا شدن دیتابیس ها هم پیش رود.
باید توجه کنید که CQS یک اصل یا Principle در برنامه نویسی به حساب می آید و CQRS یک الگوی معماری است.
اگر قرار باشد هنگام خواندن یک Value وضعیت آن یا وضعیت Value دیگر تغییر کند میتواند یک نا هماهنگی در سیستم ایجاد کند که در نهایت منجر به باگ یا خطا شود.
اصل CQS با تکنیک CQRS از نظر مفهومی شباهت زیادی دارد . در CQS ما متدهای درون یک کلاس را جدا می کنیم اما در CQRS ساختار برنامه را جدا می کنیم که در نهایت ممکن است تا جدا شدن دیتابیس ها هم پیش رود.
باید توجه کنید که CQS یک اصل یا Principle در برنامه نویسی به حساب می آید و CQRS یک الگوی معماری است.
برنامه نویسی سبز
زبان های برنامه نویسی از نظر مصرف انرژی با هم فرق می کنند و در تحقیقی که تازگی بروز رسانی شده مشاهده شده است که زبان C همچنان سبز ترین زبان برنامه نویسی است و کمتر از بقیه منابع محیط زیست ما را مصرف میکند.
این مقاله به بررسی و مقایسه اجرا الگوریتمهای مختلف در زبان های پر استفاده می پردازد.
از نظر مصرف انرژی #C سه برابر C است و سه برابر هم کندتر است. مصرف حافظه سی شارپ هم حدود سه برابر بهترین زبان (پاسکال) است اما نسبت به زبانهایی مثل جاوا و جاوا اسکریپت در جایگاه بهتری است.
پایتون 75 برابر زبان C انرژی مصرف میکند و 70 برابر هم کندتر است.
جاوا دوبرابر کندتر از C است و دو برابر هم بیشتر انرژی مصرف میکند اما 6 برابر بیشتر حافظه مصرف میکند که این میزان دوبرابر سی شارپ است.
لینک مقاله:
https://codehaks.com/go/mpx
زبان های برنامه نویسی از نظر مصرف انرژی با هم فرق می کنند و در تحقیقی که تازگی بروز رسانی شده مشاهده شده است که زبان C همچنان سبز ترین زبان برنامه نویسی است و کمتر از بقیه منابع محیط زیست ما را مصرف میکند.
این مقاله به بررسی و مقایسه اجرا الگوریتمهای مختلف در زبان های پر استفاده می پردازد.
از نظر مصرف انرژی #C سه برابر C است و سه برابر هم کندتر است. مصرف حافظه سی شارپ هم حدود سه برابر بهترین زبان (پاسکال) است اما نسبت به زبانهایی مثل جاوا و جاوا اسکریپت در جایگاه بهتری است.
پایتون 75 برابر زبان C انرژی مصرف میکند و 70 برابر هم کندتر است.
جاوا دوبرابر کندتر از C است و دو برابر هم بیشتر انرژی مصرف میکند اما 6 برابر بیشتر حافظه مصرف میکند که این میزان دوبرابر سی شارپ است.
لینک مقاله:
https://codehaks.com/go/mpx
فروش ویژه عید 1401
فروش ویژه کدهک با تخفیف ویژه 30 درصد آغاز شد.
از امروز به مدت یک هفته می توانید همه محصولات کدهک را با تخفیف عید تهیه کنید.
جهت پشتیبانی با @codehak تماس بگیرید.
کد تخفیف: eid401
https://codehaks.com/shop
فروش ویژه کدهک با تخفیف ویژه 30 درصد آغاز شد.
از امروز به مدت یک هفته می توانید همه محصولات کدهک را با تخفیف عید تهیه کنید.
جهت پشتیبانی با @codehak تماس بگیرید.
کد تخفیف: eid401
https://codehaks.com/shop
چرا باید زبان #C رو انتخاب کنید؟
در این ویدیو به معرفی زبان سی شارپ می پردازم و از مزایای برنامه نویسی در محیط دات نت میگم.
https://youtu.be/AUMqfDHqptY
در این ویدیو به معرفی زبان سی شارپ می پردازم و از مزایای برنامه نویسی در محیط دات نت میگم.
https://youtu.be/AUMqfDHqptY
محبوب ترین زبانها در گیتهاب
گیتهاب با بیش از 75 میلیون کاربر یکی از سرویس هایی است که بخش بزرگی از جامعه آماری برنامه نویس ها را شامل میشود.
از 100 شرکت بزرگ جهان 84 مورد از سرویس Enterprise گیتهاب برای مدیریت سورس و خدمات دیگر آن استفاده می کنند.
این سرویس تنها در سال گذشته 16 میلیون کاربر جدید جذب کرده و بیش از 60 میلیون ریپوزیتوری جدید در آن ایجاد شده است.
طبق گزارش گیتهاب در بین 10 زبان برتر این سرویس سی شارپ جایگاه پنجم است. این جایگاه بالاتر از PHPو ++C و بعد از جاوا اسکریپت و پایتون است.
گیتهاب با بیش از 75 میلیون کاربر یکی از سرویس هایی است که بخش بزرگی از جامعه آماری برنامه نویس ها را شامل میشود.
از 100 شرکت بزرگ جهان 84 مورد از سرویس Enterprise گیتهاب برای مدیریت سورس و خدمات دیگر آن استفاده می کنند.
این سرویس تنها در سال گذشته 16 میلیون کاربر جدید جذب کرده و بیش از 60 میلیون ریپوزیتوری جدید در آن ایجاد شده است.
طبق گزارش گیتهاب در بین 10 زبان برتر این سرویس سی شارپ جایگاه پنجم است. این جایگاه بالاتر از PHPو ++C و بعد از جاوا اسکریپت و پایتون است.
آیا داکر کنار میرود؟
استیو سندرسون ایده پرداز اصلی Blazorخبر داد که در حالت آزمایشی موفق شده سایت ASP NET Core رو روی وب اسمبلی کامپایل و اجرا کنه.
ابزار WASI خارج از مرورگر اجرا میشه و میتونه نقشی مانند داکر بازی کنه تا کد رو به یک Runtime مشترک تبدیل کنید و همه جا یکسان اجرا کنید.
در واقع مانند JVM که یک ماشین مجازی هست و امکان میده کد جاوا روی هر سیستم عاملی اجرا بشه WASI امکان میده کدهایی که به زبان های مختلف نوشته شدن روی یک ران تایم اجرا بشن.
میتوانید ماژول های کوچک از زبانهای مختلف داشته باشید که در کنار هم یک اپ رو شکل میدهند.
این تکنولوژی الان آزمایشی است و به صورت محدود استفاده میشه اما در آینده میتونه نیاز به Docker رو از بین ببره و پیاده سازی اپهای بزرگ با چند استک رو ساده تره کنه.
استیو سندرسون ایده پرداز اصلی Blazorخبر داد که در حالت آزمایشی موفق شده سایت ASP NET Core رو روی وب اسمبلی کامپایل و اجرا کنه.
ابزار WASI خارج از مرورگر اجرا میشه و میتونه نقشی مانند داکر بازی کنه تا کد رو به یک Runtime مشترک تبدیل کنید و همه جا یکسان اجرا کنید.
در واقع مانند JVM که یک ماشین مجازی هست و امکان میده کد جاوا روی هر سیستم عاملی اجرا بشه WASI امکان میده کدهایی که به زبان های مختلف نوشته شدن روی یک ران تایم اجرا بشن.
میتوانید ماژول های کوچک از زبانهای مختلف داشته باشید که در کنار هم یک اپ رو شکل میدهند.
این تکنولوژی الان آزمایشی است و به صورت محدود استفاده میشه اما در آینده میتونه نیاز به Docker رو از بین ببره و پیاده سازی اپهای بزرگ با چند استک رو ساده تره کنه.
افزایش پرفورمنس بی نظیر جستجوی همه در Visual Studio
هر نسخه جدید VS شامل بهبود پرفورمنس و افزایش سرعت است. در آخرین آپدیت سرعت Find All در بزرگترین پروژه ها (سی شارپ و ++C و ...) به حدود 1 ثانیه کاهش یافته است. این ابزار در مقایسه با VS 2019 بیست برابر بهتر شده است.
جستجوی جدید از Indexing و n-grams استفاده می کند. بعد از یکبار تحلیل کد و ذخیره داده های ایندکس در هار دیسک می تواند به شکل قابل توجهی پیدا کردن یک عبارت در کد ها و فایلها را سرعت دهد.
امکان غیر فعال سازی ایندکس در VS وجود دارد. اما استفاده از آن برای پروژه های بزرگ با کدها و فایهای زیاد پیشنهاد میشود.
هر نسخه جدید VS شامل بهبود پرفورمنس و افزایش سرعت است. در آخرین آپدیت سرعت Find All در بزرگترین پروژه ها (سی شارپ و ++C و ...) به حدود 1 ثانیه کاهش یافته است. این ابزار در مقایسه با VS 2019 بیست برابر بهتر شده است.
جستجوی جدید از Indexing و n-grams استفاده می کند. بعد از یکبار تحلیل کد و ذخیره داده های ایندکس در هار دیسک می تواند به شکل قابل توجهی پیدا کردن یک عبارت در کد ها و فایلها را سرعت دهد.
امکان غیر فعال سازی ایندکس در VS وجود دارد. اما استفاده از آن برای پروژه های بزرگ با کدها و فایهای زیاد پیشنهاد میشود.
آخرین فرصت
فروش تمامی دوره های کدهک با تخفیف ویژه 30 درصد
جهت پشتیبانی با @codehak تماس بگیرید.
کد تخفیف: eid401
https://codehaks.com/shop
فروش تمامی دوره های کدهک با تخفیف ویژه 30 درصد
جهت پشتیبانی با @codehak تماس بگیرید.
کد تخفیف: eid401
https://codehaks.com/shop
چرا باید به عقب برگردیم و بیشتر و عمیقتر مطالعه کنیم؟
برای یادگیری سی شارپ و ASP NET Core از کجا باید شروع کنیم؟
نگاهی به مصاحبه های فنی و وضعیت بد برنامه نویس ها تازه کار
برای استخدام شدن و مهاجرت لازم نیست میکروسرویس بلد باشید!
https://youtu.be/wfajhkMhdsg
برای یادگیری سی شارپ و ASP NET Core از کجا باید شروع کنیم؟
نگاهی به مصاحبه های فنی و وضعیت بد برنامه نویس ها تازه کار
برای استخدام شدن و مهاجرت لازم نیست میکروسرویس بلد باشید!
https://youtu.be/wfajhkMhdsg
چهارگانه ی ACID
هر ترانکش دیتابیس باید از 4 اصل ACID پیروی کند تا داده های آن قابل اعتماد باشد. بیشتر دیتابیس های رابطه ای بر مبنای ACID کار میکنند.
در Atomicity داده ها باید از قانون همه یا هیچ پیروی کنند. یعنی یا تمام فیلدها درون جدول ذخیره میشود یا هیچکدام ذخیره نمیشود.
در Consistency دیتابیس بعد از هر تراکنش از یک حالت معتبر به یک حالت معتبر جدید برود. مواردی مانند نوع فیلدها ، محدودیت های اعمال شده بر آن و رابطه ی بین جداول همیشه باید رعایت شود.
در Isolation هر تراکنش برای خود یکتا هست و به ذخیره شدن و یا نشدن سایر تراکنش ها مربوط نیست. اگر چندین تراکنش همزمان اعمال شود هیچکدام نباید روی دیگری اثر گذار باشد.
در Durability اطلاعات هر تراکنش بعد از آنکه در دیتابیس اعمال شد باید ذخیره شود. در واقع هروقت دیتابیس نتیجه ی تراکنش را بر میگرداند برنامه نویس میداند اطلاعات جایی در دیسک ذخیره شده است و در آینده ی دور هم قابل دسترسی است.
دیتابیس هایی که از این قوانین پیروی نمیکنند سرعت بیشتری دارند اما اعتماد پذیری کمتری دارند. مثلا دیتابیس Redis از Durability پیروی نمیکند و ACID نیست.
هر ترانکش دیتابیس باید از 4 اصل ACID پیروی کند تا داده های آن قابل اعتماد باشد. بیشتر دیتابیس های رابطه ای بر مبنای ACID کار میکنند.
در Atomicity داده ها باید از قانون همه یا هیچ پیروی کنند. یعنی یا تمام فیلدها درون جدول ذخیره میشود یا هیچکدام ذخیره نمیشود.
در Consistency دیتابیس بعد از هر تراکنش از یک حالت معتبر به یک حالت معتبر جدید برود. مواردی مانند نوع فیلدها ، محدودیت های اعمال شده بر آن و رابطه ی بین جداول همیشه باید رعایت شود.
در Isolation هر تراکنش برای خود یکتا هست و به ذخیره شدن و یا نشدن سایر تراکنش ها مربوط نیست. اگر چندین تراکنش همزمان اعمال شود هیچکدام نباید روی دیگری اثر گذار باشد.
در Durability اطلاعات هر تراکنش بعد از آنکه در دیتابیس اعمال شد باید ذخیره شود. در واقع هروقت دیتابیس نتیجه ی تراکنش را بر میگرداند برنامه نویس میداند اطلاعات جایی در دیسک ذخیره شده است و در آینده ی دور هم قابل دسترسی است.
دیتابیس هایی که از این قوانین پیروی نمیکنند سرعت بیشتری دارند اما اعتماد پذیری کمتری دارند. مثلا دیتابیس Redis از Durability پیروی نمیکند و ACID نیست.
کارگاه آموزشی ASP NET Core 6.0 : گام اول
سر فصلها:
01 - Introduction
02 - Tools
03 - Demo1: First App
04 - Demo2: CRUD App
05 - Razor Pages
06 - Routing
07 - Model Binding & Validation
08 - Tag Helpers
09 - Razor Views & View Components
10 - Demo3: Blog App
مدت دوره : 10 ساعت
هزینه دوره : 399 هزار تومان
شروع دوره : 21 اسفند 1400
پیش نیاز : آشنایی با مبانی سی شارپ
* سطح دوره مقدماتی است و برای افرادی مناسب است که آشنایی کمی با توسعه وب و فریم ورک ASP NET Core دارند.
جهت ثبت نام یا کسب اطلاعات بیشتر با @codehak در تلگرام یا شماره 09380146555 در واتساپ تماس بگیرید
سر فصلها:
01 - Introduction
02 - Tools
03 - Demo1: First App
04 - Demo2: CRUD App
05 - Razor Pages
06 - Routing
07 - Model Binding & Validation
08 - Tag Helpers
09 - Razor Views & View Components
10 - Demo3: Blog App
مدت دوره : 10 ساعت
هزینه دوره : 399 هزار تومان
شروع دوره : 21 اسفند 1400
پیش نیاز : آشنایی با مبانی سی شارپ
* سطح دوره مقدماتی است و برای افرادی مناسب است که آشنایی کمی با توسعه وب و فریم ورک ASP NET Core دارند.
جهت ثبت نام یا کسب اطلاعات بیشتر با @codehak در تلگرام یا شماره 09380146555 در واتساپ تماس بگیرید
Forwarded from Software Philosophy (mohsen)
بالاخره golang هم generic دار شد!
طبق این پروپوزال، امکان استفاده از generic به نسخه Go 1.18 اضافه میشود و در سال 2022 منتشر خواهد شد. اما نکته جالب در مورد تغییر این است بر خلاف بیشتر زبانها که مفهوم جنریک با
نکته جالبتر این است که این چالش هنگامی که Generic به زبان C# در نسخه 2.0 هم اضافه شد وجود داشت و باعث ایجاد یک Breaking Change از نسخه 1.0 به نسخه 2.0 شد. در این پست سعی میکنم این مشکل را با یک مثال از توییتی که Eric Lippert در این مورد زده توضیح بدم.
عبارت زیر را در نظر بگیرید:
این عبارت در نسخه 1.0 و در نسخه 2.0 به دو طریق مختلف ترجمه میشود. که در کد زیر سعی کردم با فاصلهگذاریهای متفاوت آن را نشان دهم.
نکته جالب دیگر این است که generics به عنوان یک ویژگی بسیار مهم، تقریبا در سال 2002 به C# اضافه شد و پس از ۲۰ سال قرار است به زبان Go اضافه شود.
در این مدت برخی طرفداران زبان Go نبود این امکان را این گونه توجیه میکردند که این یک نقص نیست و تصمیم طراحی بوده که این زبان این امکان را نداشته باشد. به هر حال دیگر نیازی به توجیه نیست و از این به بعد هنگام استفاده از زبان قدرتمند Go از generic ها هم میتوانید استفاده کنید.
https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md
#مهران_داودی (لینکدین - بلاگ)
کانال تلگرام:
@SoftwarePhilosophy
________
طبق این پروپوزال، امکان استفاده از generic به نسخه Go 1.18 اضافه میشود و در سال 2022 منتشر خواهد شد. اما نکته جالب در مورد تغییر این است بر خلاف بیشتر زبانها که مفهوم جنریک با
Foo<T>
نماش داده میشود، در Go این مفهوم به صورت Foo[T]
نمایش داده خواهد شد و برای این تصمیم هم دلیل جالبی وجود دارد که در این مستند توضیح داده شدهاست.نکته جالبتر این است که این چالش هنگامی که Generic به زبان C# در نسخه 2.0 هم اضافه شد وجود داشت و باعث ایجاد یک Breaking Change از نسخه 1.0 به نسخه 2.0 شد. در این پست سعی میکنم این مشکل را با یک مثال از توییتی که Eric Lippert در این مورد زده توضیح بدم.
عبارت زیر را در نظر بگیرید:
A(B<C,D>E())
این عبارت در نسخه 1.0 و در نسخه 2.0 به دو طریق مختلف ترجمه میشود. که در کد زیر سعی کردم با فاصلهگذاریهای متفاوت آن را نشان دهم.
// C# 1.0همانطور که میبینید در نسخه 1.0، فراخوانی متد
A( B<C , D>E() )
// C# 2.0
A( B<C,D> E() )
A
با دو پارامتر ورودی انجام شده و علامت < و > به عنوان علامتهای کوچکتری و بزرگتری تفسیر شدهاند، اما در نسخه 2.0 این عبارت فراخوانی متد A
با یک ورودی جنریک است.نکته جالب دیگر این است که generics به عنوان یک ویژگی بسیار مهم، تقریبا در سال 2002 به C# اضافه شد و پس از ۲۰ سال قرار است به زبان Go اضافه شود.
در این مدت برخی طرفداران زبان Go نبود این امکان را این گونه توجیه میکردند که این یک نقص نیست و تصمیم طراحی بوده که این زبان این امکان را نداشته باشد. به هر حال دیگر نیازی به توجیه نیست و از این به بعد هنگام استفاده از زبان قدرتمند Go از generic ها هم میتوانید استفاده کنید.
https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md
#مهران_داودی (لینکدین - بلاگ)
کانال تلگرام:
@SoftwarePhilosophy
________
Twitter
Eric Lippert
@Max_Horstmann I note that C# parses these potential ambiguities without relying on type information. But that came with two costs: (1) an unbounded lookahead in the parser and (2) a breaking change from 1.0 to 2.0; A(B<C,D>E()) has two arguments to A in…