دات نت سورس باز

مدتی است که مایکروسافت تغییرات بنیادین و استراتژیک خاصی را در دستور کار خود قرار داده.از رایگان شدن آفیس برای آیپد گرفته تا راه اندازی سایت .NET Foundation .شاید یکی از مهمترین تغییراتی که می توان به آن اشاره کرد سورس باز شدن قسمت های بیشتری از دات نت باشد.

از کارهای جالب دیگری که انجام شد مهاجرت به گیت هاب است.

We decided to host .NET Core on GitHub because according to Phil Haack, publishing code on GitHub will improve the performance:

So @ahejlsberg tweets TypeScript 5x faster compiler is on GitHub. I suspect causation. GitHub makes your code 5x faster. Anders says so.

— Boom Haackalacka (@haacked) August 1, 2014

حال که خبر از NET 2015. شده است تصمیم گرفتم نگاه کلی به اهداف مایکروسافت در آن داشته باشم.

  • مایکروسافت روی سورس باز بودن و cross platform بودن تاکید بیشتری دارد:
    می توان به راحتی .NET Core 5 را از نوگت دریافت کنید و آن را در پروژه خود بدون اینکه روی باقی پروژه ها تاثیری بگذارد با ورژن دلخواه کار کنید.تیم دات نت در حال حاضر مشغول ساخت CLR برای لینوکس و مک است.(این واقعا یک تصمیم استراتژیک است.)علاوه بر آن  RyuJit و .NET GC نیز cross platform شده اند.
  • قرار است ASP.NET 5 هر جایی بتواند کار کند:
    روی مک،لینوکس و یا ویندوز. ASP.NET 5 خواهد توانست روی همه آن ها کار کند.علاوه بر آن تیم دات نت در حال ساخت یک وب سرور به نام KestrelHttpServer است.
  • ویژوال استودیو به طور رایگان عرضه می شود و این نسخه Express نیست.
    قرار است از gruntjs،gulpjs و npm برای برنامه نویسان front end پشتیبانی شود.
  • یک ادیتور cross platform بسیار خوب هم به نام omnisharp معرفی شده.(SCOTT HANSELMAN یکی از برنامه نویسان آن است)
  • ساختی یک اکو سیستم قوی تر:
    سورس باز شدن کدها باعث بوجود آمدن ساختاری سریعتر برای فیدبک خواهد بود از طرفی بهتر خواهیم توانست مشارکت روی کدهای تولید شده داشته باشیم.
DotNet2015
DotNet2015

اگر تمایل داشتید می توانید کلیه پروژه هایی که مایکروسافت روی گیت هاب دارد را در این آدرس مشاهده کنید.

دست آخر از این جمله زیبای تیم دات خیلی لذت بردم:

 

As a principle, we don’t want to ask the community to come to where we are. Instead, we want to go where the community already is.

منابع:

Announcing .NET 2015 – .NET as Open Source, .NET on Mac and Linux, and Visual Studio Community

.NET Core is Open Source

 

حالت های خاص به اندازه کافی خاص نیستند که قوانین را بشکنیم.

عنوان طولانی مطلب، یکی از بیست اصول (Zen.به فارسی معنی دقیقی نتونستم براش پیدا کنم)در پایتون است.چند روز پیش از برنامه های تک منظوره نوشتم و در اون درباره لزوم رعایت قوائد و قوانین دنیای برنامه نویسی در آن دسته از برنامه ها گفتم. راستش این پست شاید تکمیل کننده پست قبلی باشد.در واقع از این جمله خیلی لذت بردم:

حالت های خاص به اندازه کافی خاص نیستند که قوانین را بشکنیم.

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

این که مشکلات جدید چه بود مهم نیست ولی مشکل بوجود آمده دلیلش تنها دور زدن قوانین موجود بود.

  • تست ننوشته بودیم.
  • دستی پابلیش کرده بودم و کدهای غیر پایدار هم پابلیش شده بود.

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

در آخر هم بهتون پیشنهاد می دم این مطلب رو بخونید.

برنامه های تک منظوره

در حال حاضر روی چند برنامه تک منظوره کار میکنم که برای بحث انتقال داده از سیستم قدیمی به سیستم جدید کاربرد دارد.

من از این برنامه ها تجارب فنی خوبی بدست آوردم.به عنوان نمونه می توانم به کار با تعداد بالای رکورد اشاره کنم.ولی اصلی ترین تجربه ای که بدست آوردم این بود که نباید قوائد دنیای برنامه نویسی را مثل شی گرایی و همچنین قوائد اصلی شی گرایی را به صرف اینکه که برنامه تک منظوره است زیر پا گذاشت.برنامه در ابتدا تک منظوره قلمداد می شد اواخر به سیستم بزرگی تبدیل شده بود.(خود این خیلی جای بحث دارد)

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

حالا می توانم به مشکلات کار اشاره کنم :

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

فارق از اینکه در همه موارد بالا مشکل از خودم بود،خواستم این تجربه را با شما به اشتراک بگذارم که هیچ وقت فکر نکنید به صرف اینکه قرار نیست بیشتر از چند روز از یک برنامه استفاده شود ، خوب کد نزنیم.