از موقعیت خود به عنوان یک برنامه نویس راضی هستید!؟

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

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

ترتیب مطالب بر اساس تاریخ فرستادن جواب های دوستان است.

وحید نصیری نویسنده وبلاگ x.NET Tips

از پويايي و خلاقيت موجود در دنياي IT لذت مي‌برم و به همين دليل در اين رشته مشغول به فعاليت شده‌ام. پاسخ دادن به تعدادي از سؤالات شما جنبه سياسي پيدا مي‌كنند. تا قبل از دولت فعلي وضع بهتر بود و پروژه بيشتر بود. الان وضع خيلي نسبت به قبل تفاوت كرده و پروژه كمتر شده (خيلي كمتر). به همين دليل روي اين صنف هم مسلما اين مسايل بدون تاثير نبوده.از موقعيت خودم به عنوان برنامه نويس راضي هستم. از نظر مالي تا حدودي راضي هستم و عرض كردم كه دولت فعلي كار ما را تحت تاثير شديد قرار داده است.

استرس عمده كاري من تحويل دادن درخواست‌هاي جديد در اسرع وقت است (زمانيكه درخواست مي‌دهند يعني تا يكي دو ساعت ديگر بايد كار آماده باشد!) و همچنين اعمال تغييرات جديد به سيستمي مفصل كه شامل بازنويسي قسمت‌هاي عمده آن مي‌شود. در اين حالت واقعا جمع كردن يك سيستم بزرگ هنرمندي خاصي را لازم خواهد داشت (و پر استرس). بعلاوه اين مساله سبب شده كه ساعت كاري خاصي براي من وجود نداشته باشد و تعطيل و غير تعطيل و ساعت 11 شب و امسال آن هم جزئي از زندگي كاري من شده است.

تفاوت مهم اين شغل با شغل‌هاي ديگر پويايي آن است. تا چند سال قبل مثلا asp كلاسيك وجود داشت، اما الان ASP.Net مطرح شده و جاي آن‌را گرفته. تا مدتي بعد هم ASP.Net MVC آن‌را حل و جذب خواهد كرد و web forms asp.net حالت از مد افتاده asp كلاسيك را پيدا مي‌كند. تمام اين‌ها مستلزم سعي و كوشش و مطالعه بسيار زياد است و گرنه خيلي زود بازنشسته خواهيد شد.

مشكل مهمي هم كه اين پويايي براي ما در داخل ايران به همراه داشته، نبود منابع آموزشي به روز است. الان چندتا كتاب فارسي در مورد ASP.net MVC‌ داريم؟ در مورد WPF چطور؟ در مورد تازه‌هاي SQL Server 2008 چي؟ در مورد entity framework كتابي در بازار كتاب‌هاي فارسي هست؟ و …. تمام اين‌ها سبب مي‌شود كه به روز كردن دانش اين صنف در ايران به شدت با كندي مواجه باشد.

و در پايان بايد عرض كنم كه بودن در اين رشته سن و سال خاصي را طلب نمي‌كند و تفاوت كار يك برنامه نويس با بالاي 10 سال سابقه رو خيلي خوب مي‌شود از مقايسه كدهاي او با كدهاي خام يك تازه كار درك كرد. همين فرد با سابقه پس از مدتي به اندازه كافي ابزار براي سرعت بخشيدن به كارش اختراع كرده كه بتواند با جواني با حوصله‌تر به سادگي و حتي در زمان كمتري رقابت كند و كار بهتري را نيز ارائه بدهد.

سالار خلیل زاده نویسنده وبلاگ نوشته های یک برنامه نویس

براي بررسي راضي بودن از شغل برنامه نويسي تو ايران بايد يه مورد مهم رو در نظر بگيريم. اول موضوع مربوط به موقعيت برنامه نويس تو شهرش هست. اگر فرض ما شهرستان باشه در اين صورت قضيه با زماني که فرد تو تهران باشه خيلي فرق مي کنه.
چون خودم من هم تو شهرستان هستم سعي مي کنم با اين فرض ها و سرانجام وضعيت خودم جواب بدم.

از اينکه برنامه نويس هستيد راضي هستين يا نه؟
البته که راضي هستم. برنامه نويسي رو هم کنار نخواهم گذاشت اما شايد در آينده به عنوان کار اوقات فراغت انجامش بدم.
يکي از علت هايي که اکثر برنامه نويس ها دارن که باعث شده اين حرفه رو ادامه بدن لذتي هست که پس از توليد چيزي که خودتون درست کردين و مانند يه موجود جون داره. دليل بعدي عمق زياد مبحث برنامه نويسي هست که هرچه عموق تر بري باز هم چيزي هست که بخواي دنبالش بري.

موقعيت خودتون رو به عنوان يک برنامه نويس چطور ميدونيد؟
متاسفانه اين حرفه به جز در شهرهاي بزرگي چون تهران در جاهاي ديگر به عنوان يک حرف واقعي تلقي نميشه. اين هم بر ميگيرده بيشتر به تفکر و اقبال عمومي مردم از اين رشته. البته نکته مهم در اينجا وجود دخالت ها و حمايتهاي دولتي هست که باعث اين نوع اقبال عمومي شده.
اقبال عمومي اين حرفه به اين زودي ها اصلاح نخواهد شد، چراکه دولت و قضيه حمايت از بخش خصوصي و چند مورد ديگر به زودي اصلاح پذير نيستند.

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

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

از نظر استرس هايي که يک برنامه نويس بايد تحمل کنه، توضيح بدين شما چه استرس هاي دارين و آيا برنامه اي براي کنار آمدن با اين استرس ها دارين يا خير؟
کلا: برنامه نويس به غير از رفع باگ نبايد هيچ گونه استرس ديگه اي داشته باشه. البته اگه اين مورد استرس بناميم. چون شخصا از رفع باگ لذت مي برم و باعث ميشه از اشتباها درس هاي زيادي رو بگيرم.
ايران و موقعيت خودم: اگر استخدامي هستيد که استرس نبود پول و جيب خالي و فکر خروج از شرکت هميشه با شما خواهد بود.
اگر آزاد کار مي کنيد، استرس و سر درد سروکله زدن با مشتري هاي دم دمي مزاج و چونه زدن بر سر قيمت و زمان پروژه دمار از روزگارتان مي برد!
اگر هم پروژه اي کار مي کنيد تعهد هاي کمر شکن قلب شما رو هدف قرار داده!

فرق شما با آدم هاي ديگه (شغل هاي ديگه) چيه و چه مشکلاتي داريد. بگين که تا چه موقع ميتونيد برنامه نويس بمونيد، آيا قصد تغيير شغل در آينده را داريد يا نه مي خواهيد در آينده هم در فيلد برنامه نويسي کار کنيد؟
در مورد فرق ترجيح مي دم که جواب ندم چون فرق خيلي زياده.
در عموميت فکر مي کنم يک نفر مي تونه براي هميشه برنامه نويس بمونه و از اون لذت بببره. اما اين مورد من زيادي خواه رو راضي نمکنه و هميشه به بيشتر از اينها فکر کردم. مثلا هدايت يک تيم نرم افزاري و هدايت شرکت و غيره. البته اين رو هم بگم که هدايت چند تيم نرم افزاري رو هم بر عهده داشتم ولي به دلايلي نشد که همکاري در رو اونجا ادامه بدم. در کل در آينده کار من شايد خود برنامه نويسي نباشد ولي در زمنيه برنامه نويسي خواهد بود.

افشار محبی نویسنده وبلاگ AfsharM

مقدمتاً بگویم که ترجیح می‌دهم به جای عبارت «برنامه‌نویس» از عبارت «توسعه دهنده» یا «توسعه دهنده نرم‌افزار» استفاده کنم.

جواب خلاصه من به این سوال، «بله» است. چون نزدیک به ۲۰ سال است که برنامه نویسی عشق و علاقه شماره یک من بوده و بعید است که به این زودی‌ها بتوانم از آن چشم پوشی کنم خصوصاً حالا که چندین سال است که برنامه‌نویسی تنها منبع درآمدم نیز بوده است.

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

با شناختی که همه ما از مشاغل موجود در ایران داریم، می‌دانیم که تقریباً در هیچ شغلی سلامت جسمی و روحی افراد رعایت نمی‌شود پس نباید از این لحاظ خیلی به شغل برنامه‌نویسی (توسعه نرم افزار) خرده گرفت.

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

در مورد امنیت شغلی به شخصه معتقدم از لحاظ امنیت شغلی بر خلاف تصور عمومی وضع برنامه نویس‌ها خیلی بد نیست و از متوسط دیگر شغل‌ها بهتر است. به عنوان نشانه می‌توانید برنامه‌نویسی را با شغل افرادی مثل کارمندان و کارگران معمولی بخش خصوصی، بسیاری از خرده فروشان اصناف مختلف، پزشکان عمومی و… مقایسه کرد.

فرق برنامه‌نویس‌ها با آدم‌های دیگر چیست؟ هیچی! فقط چون کار ما برنامه‌نویس‌ها کار جدیدی است کمی ترسیده‌ایم و الا هیچ فرق آنچنانی نداریم. بنده به شخصه فکر می‌کنم اقلاً تا ۵ سال آینده بتوانم برنامه‌نویس باقی بمانم مگر آن که شرایط سیاسی-اقتصادی مملکت خیلی به هم بریزد. در مورد سال‌های بعد از این ۵ سال امیدوارم (و تلاش می‌کنم) آنقدر در یک حیطه خاص برنامه‌نویسی تسلط پیدا کنم که اگر مجبور شدم راه فرنگستان را در پیش گیرم بتوانم گلیمم را از آب بکشم و اگر در ایران ماندم و تعداد شرکت‌های نرم‌افزاری از این هم کمتر شد بتوانم جایی برای خودم دست و پا کنم.

به عنوان نتیجه همان طور که در ابتدا ذکر کردم از زندگی حرفه‌ای خودم به عنوان یک برنامه‌نویس (توسعه دهنده نرم‌افزار) با همه فراز و نشیب‌هایش راضی هستم و امیدوارم بتوانم کارم را با موفقیت ادامه دهم.

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

نتیجه گیری از این مطلب با شما. یک خواهش از دوستانی که این وبلاگ را از طریق گوگل ریدر یا فیدخوان های دیگر دنبال می کنند دارم، لطفاً اگر برنامه نویس هستید جواب این سئوال را در قسمت نظرات این مطلب ارسال کنید. استثناً در مورد این مطلب نظر بدهید! جواب هر کدام از شما می تواند بر ارزش این مطلب بیفزاید. جمع بندی و نتیجه گیری را بهتر است شما خوانندگان انجام بدهید و در قسمت نظرات بیان کنید.

در آخر از دوستانی که من را در تهیه این مطلب کمک کردند تشکر میکنم. زحمت اصلی نوشتن این مطلب بر عهده آن ها بود.

به روز رسانی

چند نکته مهم در مورد این مطلب باید خدمت خوانندگان عرض کنم، متاسفانه بحث در قسمت نظرات به بیراهه کشیده شد. لطفاً به موارد زیر توجه کنید :

  1. کامنت هایی که شامل توهین به یکی از نویسنده های مطلب و یا هر شخص سوم دیگری باشد بدون اخطار قبلی حذف می شوند.
  2. موضوع این مطلب کاملاً روشن است، البته اگر مطلب را کامل بخوانید، پس کامنت های بی ربط به موضوع بدون اخطار قبلی حذف می شوند.
  3. لطفاً اگر با شخصی مشکل دارید، سعی نکنید در اینجا با او تصویه حساب کنید!
  4. قبل از کامنت گذاشتن، ابتدا مطلب را به صورت کامل بخوانید!

من واقعاً از خوانندگان محترم این وبلاگ پوزش میخواهم. متاسفانه مطلبی که قرار بود برای همه مفید واقع شود، باعث دلخوری و شرمندگی شد.

از این پس نظرات ابتدا بررسی می شوند و سپس نشان داده خواهند شد.

* قسمتی از مطلب آقای سالار خلیل زاده که باعث بوجود آمدن بحث های غیر مربتط توسط بعضی از افراد شده بود با درخواست خود ایشون حذف شد.

ساخت روبات به روش مایکروسافت!

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

Microsoft Robotics Developer Studio یا به اختصار MRDS مجموعه کاملی از ابزارهای نرم افزاری تحت ویندوز برای کنترل و شبیه سازی انواع محتلف روبات است. از این مجوعه نرم افزاری می توان در ساخت روبات های آکادمیک و حتی تجاری کمک گرفت. MRDS در ساخت نرم افزارهای مبتنی بر سرویس برای انواع مختلف سخت افزار کاربرد دارد.

MRDS بیشتر از یک نرم افزار برای بازی با روبات هاست. تقریباً دو سال پیش واحد تحقیقات مایکروسافت راه حلی برای ساخت روبات ها و کنترل آن ها در محیط ویندوز ارائه نمود، که هم اکنون به یکی از بسترهای موفق و مناسب برای توسعه انواع روبات ها تبدیل شده است. یکی از مهمترین نکات مربوط به نرم افزارهای روباتیک این است که کدی که نوشته اید در محیط شبیه سازی و محیط واقعی به یک صورت عمل کند، یعنی بدون دستکاری کد روبات شما همانطور که در محیط شبیه سازی شده کار می کرده است در محیط واقعی نیز کار کند، که MRDS به خوبی این نکته را پیاده سازی کرده است. شما روبات خود را با استفاده از ابزارهای بصری (Visual) مدل می کنید و کدهای آن را می نویسید، سپس در محیط 3بعدی رفتار روبات را شبیه سازی می کنید، آن را تست و عیب یابی می کنید و در نهایت در محیط واقعی پیاده سازی اش می کنید.

شبیه سازی در MRDS

مهمترین ویژگی های MRDS به شرح زیر است :

زبان برنامه نویسی ویژوال یا Visual Programming Language یک محیط توسعه گرافیکی است که با دیاگرام های مختلف رفتار ربات را تعیین می کند. کاربر می تواند به صورت گرافیکی با ربات خود تعامل داشته باشد. یک سرویس یا یک فعالیت به صورت یک بلاک که دارای ورودی و خروجی است نشان داده می شود. کاربر فقط باید این بلاک ها را از کاتالوگ انتخاب و آن را به دیاگرام خود اضافه نماید. اتصال میان این بلاک ها بوسیله ماوس کشیده می شوند و جزئیاتی مانند نحوه عملیات و مقادیر ارسالی مشخص می شوند. VPL می تواند از روی سرویس های موجود در دیاگرام که توسط کاربر ایجاد شده اند، کد مربوطه را تولید کند. با VPL حتی افرادی که تا به حال یک خط برنامه ننوشته اند نیز می توانند ربات بسازند!

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

محیط شبیه سازی 3بعدی MRDS به شما اجازه می دهد که رفتار ربات را در یک جهان مجازی که شامل قوانین پیشرفته فیزیکی است، شبیه سازی کنید.

دستیابی آسان و سریع به سنسورها و فعال کننده های ربات

پشتیبانی از زبان های برنامه نویسی سی شارپ، ویژوال بیسیک و IronPython به برنامه نویسان دات نت اجازه می دهد که با استفاده از تجربه ها و مهارت های قبلی خود برای ربات ها برنامه های پیشرفته بنویسند.

اجزای MRDS

  • Concurrency and Coordination Runtime یا CCR یک کتابخانه دات نت فریم ورک است که از پردازش غیر همزمان (آسنکرون) پشتیبانی می کند. استفاده از پردازش آسنکرون برای ساخت یک روبات بسیار مهم است، زیرا سنسورها ممکن است به صورت همزمان داده ها را ارسال و دریافت کنند.
  • Decentralized Software Services یا DSS یک ران تایم مبتنی بر سرویس بسیار سبک است که از مدل REST برای ارتباط استفاده می کند.
  • Visual Programming Language یا VPL (که در بالا در مورد آن مفصل توضیح داده شد) یک زبان گرافیکی است که رفتار یک روبات را به صورت دیاگرام مدل می کند.
  • Visual Simulation Environment یا VSE که محیطی برای شبیه سازی روبات ساخته شده توسط MRDS است. شما می توانید در این محیط مجازی رفتارهای روبات خود را در شرایط مختلف مشاهده کنید.

چگونه شروع کنیم

robotMRDS در سه نسخه Express، Standard و آکادمیک عرضه می شود. نسخه Express همانطور که از نامش پیداست رایگان است اما بعضی از قابلیت های نسخه استاندارد را ندارد و برای کاربردهای حرفه ای مناسب نیست. نسخه استاندارد پولی است و برای کاربدهای حرفه ای است. نسخه آکادمیک تمام ویژگی های نسخه استاندارد را داراست و برای دانشجویان رایگان است. پیش نیاز نصب MRDS یک کارت گرافیکی مناسب با پشتیبانی از Pixel Shader و Vertex Shader است. همچنین DirectX 9.0 باید روی ویندوز شما نصب باشد. به این صفحه از وب سایت مایکروسافت بروید و نسخه ای از MRDS را دانلود کنید. آن را نصب کنید. اگر ویژوال استادیو روی سیستم شما نصب باشد، تمپلیت های MRDS به صورت خودکار روی آن نیز نصب می شوند.

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

farasun.wordpress.com

راه حل غیر مایکروسافتی : اگر از مایکروسافت به هر دلیلی خوشتان نمیاد یا از این محصولش به خاطر کپی رایت و این حرفا نمی توانید استفاده کنید، من نرم افزار Simbad که یک نرم افزار اوپن سورس و رایگان  مبتنی بر جاواست را پیشنهاد میکنم.

Vote on iDevCenter

ویژوال استادیو 2010 بتا 2 آمد!

ویژوال استادیو 2010 و دات نت فریم ورک 4.0 پیشرفت زیادی کرده اند و قابلیت های بسیار بسیار زیادی به آن ها اضافه شده است به طوریکه در آینده ای نه چندان دور توسعه برنامه های تحت ویندوزو وب را تحت تاثیر قرار خواهند داد. توسعه برنامه های مبتنی بر ویندوز با WinForms جدید و همچنین  نسخه جدید WPF انجام خواهد شد. ASP.NET نسخه 4.0 نیز دارای بهبودها و ویژگی های جدیدی است که توسعه وب را لذت بخش تر و حرفه ای تر از قبل خواهد کرد. Silverlight جایگاه خود را کم کم در توسعه وب مستحکم می کند و آینده خوبی برایش پیش بینی می شود. توسعه راهکارهای Sharepoint و Office با ویژوال استادیو 2010 پیشرفت قابل توجهی داشته و به محاسبات ابری یا Cloud Computing در این نسخه توجه بیشتری شده است.

ویژوال استادیو 2010

ویژوال استادیو 2010 بتا 2 دارای بهبودهای بسیار خوبی در هسته IDE، ویرایشگر کد، زبان های برنامه نویسی، ابزارهای تست و طراحی برنامه است. نصب ویژوال استادیو 2010 راحت تر از قبل انجام می گیرد و می تواند در کنار ویژوال استادیو 2008 نصب شود و بدون هیچ مشکلی کار کند. شما می توانید ویژوال استادیو 2010 بتا 2 را روی کامپیوتری که در حال حاضر ویژوال استادیو 2008 دارد، نصب کنید، بدون اینکه مشکلی برایتان پیش بیاید.

ظاهر این نسخه کاملاً با استفاده از WPF ساخته شده و بسیار زیباست (+) لوگوی ویژوال استادیو در این نسخه تغییر یافته و مدرن تر شده، هر چند من شخصاً لوگوی قبلی ویژوال استادیو را بیشتر می پسندم.

وگوهای قدیمی و جدید ویژوال استادیو

Team Foundation Server در تمام نسخه های ویژوال استادیو 2010 وجود دارد. تیم های کوچک می توانند از TFS برای کنترل سورس، باگ ترکینگ و اتوماسیون Build پروژه هایشان در ویژوال استادیو 2010 استفاده نمایند. نسخه بیسیک TFS به راحتی بر روی کامپیوترهای سرور و کلاینت قابل نصب و استفاده است.

از نسخه بتای 1 ویژوال استادیو 2010، می توانستید با ابزارهای Windows Azure کار کنید اما حالا و با نسخه بتای 2 آسان تر می توانید توسعه برنامه های Windows Azure را شروع کنید. این یعنی تجربه لذت بخش استفاده از «محاسبات ابری» با دات نت و ویژوال استادیو!

در این نسخه نیز مانند نسخه 2008 می توانید نسخه فریم ورک خود را تغییر دهید. این امکان بسیار کاربردی ومفید است، به طور مثال شما می توانید از ویژوال استادیو 2010 برای توسعه برنامه های مبتنی بر دات نت فریم ورک 2.0 یا 3.5 استفاده کنید.

پیمایش کد در ویرایشگر کد با قابلیت های ویژوال استادیو 2010 بسیار آسان تر شده (+) و Intellisense در این نسخه دستخوش تغییرات و بهبود شده است. (+)

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

ویژوال استادیو 2010 بتا 2 را دانلود کنید

برای دریافت ویژوال استادیو 2010 به اینجا بروید. از 21 اکتبر (29م مهر) دریافت برای عموم آزاد است!البته مشترکان MSDN دو روز زودتر از بقیه می توانستند این نسخه را دریافت کنند.

منابع بیشتر برای آشنایی با دات نت فریم ورک 4.0

من قبلاً در این وبلاگ در مطالبی به بررسی دات نت فریم ورک 4.0 پرداخته بودم. می توانید برای آشنایی بیشتر با این نسخه آن ها را مطالعه کنید. در آینده به بررسی کامل ویژوال استادیو 2010 نیز خواهیم پرداخت که جزوی از همین سری پست ها خواهد بود.

در آخر می توانید برای کسب اطلاعات بیشتر وبلاگ ScottGu را بخوانید که ایشون یک سری پست در مورد ویژگی های جدید این نسخه نوشته اند و در آینده هم خواهند نوشت.خواندن وبلاگ Scott Hanselman نیز توصیه می شود.

برای اطلاع از به روز رسانی این وبلاگ، مشترک فید فراسان شوید! چطور مشترک شویم!

چطور یک برنامه قابل حمل بسازیم!؟

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

یک برنامه قابل حمل یا Portable Application(=پرتابل) برنامه ای است که به صورت مستقل و بدون نیاز به نصب در یک سیستم عامل اجرا شود و به درستی کار کند. معمولاٌ از این برنامه ها در حافظه های قابل حمل مانند CD و USB flash drive استفاده می شود. این روزها کاربران بسیاری با این برنامه ها آشنایی دارند و همیشه یکی دو جین از این نرم افزارها را روی کول دیسک خودشان به همراه دارند.

واژه «برنامه قابل حمل» نباید با «قابلیت حمل برنامه» اشتباه گرفته شود. منظور از «قابلیت حمل برنامه» یا Software Portability این است که سورس کد یک برنامه را بتوان برای پلت فرم های مختلف کامپیوتری کامپایل و بر روی آن ها اجرا کرد. برنامه های قابل حمل معمولاٌ برای تنها یک پلت فرم خاص ایجاد می شوند و در برخی مواقع حتی نیاز به پیش نیازهایی برای اجرا در همان پلت فرم دارند.

برنامه های قابل حمل برای این طراحی شده اند که :

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

پس شما برای اینکه یک برنامه قابل حمل بسازید باید شرط های زیر را رعایت کنید :

1– یک فایل اجرایی از برنامه بسازید که در یک سیستم عامل خاص بدون نیاز به نصب فایل هایی خاص، اجرا شود و کار اصلی خودش را انجام دهد

برای این کار شما باید مطمئن شوید که برنامه شما برای اجرا به هیچ فایلی وابسته نیست، یا اگر وابسته است، از نوع فایل های ActiveX و DLLهای COM نیست! به این علت که این نوع فایل ها باید در سیستم عامل ویندوز کاربر ثبت شوند و معمولاٌ دردسر های زیادی با خود به همراه دارند. اگر فایل اجرایی برنامه شما به فایل های معمولی متنی یا نوع دار (مثلاً باینری) وابسته است، برای اجرا روی سیستم های مختلف مشکلی نخواهد داشت. در مورد وابستگی برنامه شما به یک دیتابیس هم باید به نوع فایل دیتابیس خود توجه کنید. دیتابیس های SQL Server را که به هیچ وجه منطقی نیست در برنامه های قابل حمل استفاده کنید، چون این نوع دیتابیس در برنامه های چندکاربره و تحت شبکه استفاده می شود. دیتابیس های Microsoft Access هم به علت وابستگی به یکسری فایل خاص ممکن است برنامه شما را برای اجرا با مشکل مواجه کند. بهترین انتخاب برای دیتابیس در یک برنامه قابل حمل SQLite خواهد بود. SQLite یک دیتابیس توکار است که هم سبک است و هم ساده و البته رایگان.

2- برنامه شما هیچ تغییری در سیستم عامل کاربر یا فایل های سیستمی آن ندهد

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

البته در این مورد یک حالت خاص داریم، زمانی که برنامه قابل حمل برای تغییر قسمتی از سیستم عامل ساخته شده، مثلاً یک نرم افزار Registry Tweak یا یک برنامه برای حذف فایل های اضافی از روی سیستم عامل، که می توانید در این گونه موارد این شرط را رعایت نکنید و البته که کاربر از هدف اجرای نرم افزار شما آگاه است.

3- تنظیمات و داده های احتمالی برنامه را در کنار خود برنامه ذخیره کنید

تنظیمات یک برنامه قابل حمل نیز باید قابل حمل باشد! این جمله بدین معنی است که اگر کاربر در یک سیستم عامل تنظیمات برنامه را تغییر داد، دفعه بعد و در یک سیستم عامل دیگر برنامه را با تنظیمات جدیدش (که در سیستم عامل قبلی تغییر داده) اجرا کند. پس نباید تنظیمات برنامه را در هارد دیسک های یک کامپیوتر ذخیره کرد (مگر اینکه برنامه از روی هارد دیسک اجرا شود)، بلکه باید در کنار برنامه (معمولاٌ فلش دیسک) ذخیره نمود. یادتان باشد که با توجه به قانون دوم، شما نباید تنظیمات برنامه خود را در رجیستری ویندوز ذخیره کنید. در این حالت بهترین راه ذخیره سازی تنظیمات در فایل های متنی با ساختار INI در کنار فایل اجرایی برنامه شماست.

csharpportable

نوشتن برنامه قابل حمل در پلت فرم دات نت

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

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

نوشتن برنامه قابل حمل در دلفی

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

farasun.wordpress.com

مشترک فید فراسان شوید!

سخت بودن زبان برنامه نویسی، دلیل برتری نیست!

دو سه سال پیش مطلبی برای کسانی که می خواهند برنامه نویسی را شروع کنند نوشتم (اینجا) و زبان پاسکال را برای شروع پیشنهاد کردم. یکی از دوستانم برای شروع یادگیری برنامه نویسی با من مشورت کرد و گفت میخوام سخت ترین زبان برنامه نویسی را یاد بگیرم تا برنامه نویس تاپی بشم! قضیه از این قرار بود که قبل از من با داماد محترم خودشون مشورت کرده بود و ایشون گفته بود سخت ترین زبان های برنامه نویسی که سی/سی++ و جاوا هستند را یاد بگیرد! از من سئوال کرد که من دلفی و PHP را توصیه کردم. دوستم قبول نکرد و گفت شنیدم دلفی مسخره است و PHP بسیار ضعیفه!!
نمیدانم این چه حرف نامربوطی است که بین بعضی ها رایج شده، اینکه PHP ضعیف است و جاوا قویترین و بهترین است! از کسانی مثل دوست من که هیچ دانشی در مورد برنامه نویسی ندارند انتظاری نیست، اما این حرف ها را من از همکاران برنامه نویس و مدیران شرکت های نرم افزاری هم شنیده ام! این ها حتی یک سرچ کوچیک هم در مورد PHP انجام نداند تا با پروژه های قدرتمندی که با این زبان انجام شده اند، آشنا شوند. پروژه وردپرس فقط یکی از 100ها پروژه موفقی است که با PHP انجام شده است. بحث را نمی خواهم اینطور ادامه دهم، PHP فقط یک مثال است.

spl2

خیلی ها فکر می کنند هر چه یادگیری یک زبان برنامه نویسی سخت تر باشد، حتماً بر زبان های دیگر برتری دارد. این تفکر در دنیای امروز واقعاً مسخره است! به طور مثال یکی از سخت ترین زبان های برنامه نویسی سی++ است. به نظر شما یک برنامه نویس سی++ چه برتری بر یک برنامه نویس ویژوال بیسیک دات نت دارد!؟ تفاوت ها نسبی است. مثلاً برنامه نویس سی++ می تواند یک درایور سخت افزاری بنویسد اما برنامه نویس وی بی دات نت نمی تواند. حالا به نظر شما کدام بهتر می توانند یک وب اپلیکیشن بنویسند!؟ کدام سریعتر می تواند یک نرم افزار تولید کند!؟ کدامیک ابزارهای قوی تری برای توسعه در اختیار دارد!؟ خروجی کدامیک سریعتر اجرا می شود!؟
اخیراً بسیاری از برنامه نوسان سی++ به جاوا و سی شارپ روی آورده اند. چرا!؟ مگر سی++ سخت تر نیست! پس چرا این ها به یک زبان ساده تر روی آورده اند!؟
پاسخ این است که در دنیای امروز، برنامه نویسان باید پلت فرم محور باشند نه زبان محور. زبان برنامه نویسی هر چقدر هم که قوی و سخت باشد، اگر توسط یک پلت فرم قدرتمند و شناخته شده پشتیبانی نشود هیچ ارزشی نخواهد داشت. به طور مثال در سیستم عامل لینوکس از سی++ به خوبی پشتیبانی می شود اما در وب اینطور نیست. این سی++ را به یک انتخاب مناسب برای نوشتن برنامه های مبتنی بر لینوکس و به یک انتخاب نا مناسب برای نوشتن برنامه های مبتنی بر وب تبدیل می کند. PHP در وب به خوبی پشتیبانی می شود و برای توسعه برنامه های تحت وب بسیار مناسب است اما در بقیه موارد حرفی برای گفتن ندارد.

البته کسی که سی++ بلد باشد و بعد از آن مثلاً PHP را شروع کند خیلی سریعتر و بهتر از کسی که قبلاٌ مثلاً با ویژوال بیسیک آشنا بوده،PHP را یاد می گیرد. همانطور که گفتم پلت فرم از زبان خیلی مهم تر است. من می توانم به شما قول دهم که شما می توانید در عرض 3 ماه سی++ را به طور کامل یاد بگیرید، اما نمی توانید در فقط 3 ماه یک برنامه نویس وب حرفه ای شوید. یادگیری سینتاکس یک زبان برنامه نویسی هر چقدر هم که مشکل باشد، در 3 یا 4 ماه میسر می شود اما یادگیری یک پلت فرم برنامه نویسی مانند دات نت و حرفه ای شدن در آن به این سادگی ها نیست!

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

farasun.wordpress.com

اگر علاقه مند بودید، نظر خود را بنویسید تا بحث را ادامه دهیم.

مشترک فید فراسان شوید! نمی دانید فید چیست!؟

مطالب مرتبط :

بررسی دات نت 4.0 – ویژوال بیسیک 2010

این طور که به نظر می رسد علاقه مایکروسافت به اولین زبان ابداعی اش یعنی ویژوال بیسیک همچنان ادامه دارد. بعد از ویژوال بیسیک 6 خیلی ها این زبان را بی ظرفیت دانستند و پیش بینی کردند که مایکروسافت دیگر آن را ادامه نخواهد داد. بعد از نسخه های دات نتی این زبان این افراد به اشتباه خود پی بردند. ویژوال بیسیک 2010 شامل بهبودهای بسیار مفیدی است که بسیاری از برنامه نویسان این زبان به آن ها احتیاج داشتند. بسیاری از این ویژگی ها در سی شارپ نسخه 3.0 معرفی شده بودند که حالا برای برنامه نویسان ویژوال بیسیک نیز قابل دسترس اند.

قسمت سوم : تغییرات ویژوال بیسیک در نسخه 2010

Auto Implemented-Properties

این ویژگی راه سریعی برای نوشتن خصوصیات کلاس هاست. دیگر لازم نیست برای هر یک از Propertyهایی که می خواهید بنویسید، ابتدا یک فیلد Private تعریف کنید و سپس قسمت های Get و Set مروبط به آن را بنویسید، با استفاده از این ویژگی، کامپایلر ویژوال بیسیک به صورت اتوماتیک فیلد خصوصی را به صورت مخفی ایجاد می کند. برای ایجاد یک خصوصیت با پیاده سازی خودکار تنها کافیست خط عنوان Property را بنویسید. کامپایلر یک فیلد مخفی با اضافه کردن یک _ به نام Property که نوشته اید، ایجاد می کند. به طور مثال اگر مشخصته ای به نام Name را به این صورت می نویسید، کامپایلر ویژوال بیسیک فیلدی به نام _Name برای آن در نظر می گیرد. در این صورت باید توجه داشته باشید که دیگر نمی توانید شناسه _Name را در این کلاس به کار ببرید. در صورت به کار بردن چنین شناسه ای با خطای کامپایلر مواجه خواهید شد. این ویژگی اولین بار در نسخه 3.0 سی شارپ با عنوان «خصوصیات اتوماتیک» معرفی شده بود.

برای مثال در نسخه قبل ویژوال بیسیک، برای تعریف یک مشخصه که قرار است یک مقدار را بدون بررسی در خود ذخیره کند باید خطوط زیر را می نوشتیم :
Private _name As String
Public Property Name As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

حال با استفاده از ویژگی Auto implemented-Properties با نوشتن فقط یک خط، مشخصه بالا را ایجاد می کنید :

Public Property Name As String

تغییرات ویژوال بیسیک 2010

Implicit Line Continuation

همانطور که می دانید، هر عبارت ویژوال بیسیک باید در یک خط تایپ شود. این محدودیت هایی بوجود می آورد. مثلاً در مواقعی که یک عبارت یک خط خیلی طولانی می شود، یا برای بالا بردن خوانایی برنامه، بایستی یک عبارت یک خطی به چند خط شکسته شود. تا به حال برای این کار در جایی که می خواستیم عبارت را به چند خط بشکنیم یک _ قرار می دادیم و ادامه عبارت را در خط بعدی می نوشتیم. در نسخه جدید ویژوال بیسیک می توانید به راحتی و بدون استفاده از _ عبارات را به چندین خط بشکنید، که البته این هم شرایطی دارد. به طور مثال می توانید پس از علامت کاما (,) یا یک پرانتز عبارت را به چند خط بشکنید. همچنین این کار پس از علامت } و علایم انتصاب مانند = نیز می تواند انجام گیرد. اطلاعات بیشتر…

Collection Initializers

این ویژگی نحو (Syntax) کوتاه تری برای ایجاد یک مجموعه و پر کردن آن با مقادیر اولیه فراهم می کند. این ویژگی برای مواقعی مناسب است که می خواهید یک مجموعه از مقادیر شناخته شده را ایجاد کنید. به طور مثال می خواهید لیستی از ماه های سال را در مجوعه ای قرار دهید.

Dim months As New List(Of String) From {"Farvardin", "Ordibehesht", "Khordad"}

عبارات Lambdaی چند خطی

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

تعیین نسخه زبان ویژوال بیسیک برای کامپایلر

پارامتر جدیدی به خط دستور کامپایلر ویژوال بیسیک اضافه شده است که می توانید با آن به کامپایلر بگویید که فقط نحو (Syntax) نسخه خاضی از ویژوال بیسیک را بپذیرد. x/langversion:x این اختیار جدید است که می توانید به جای x از اعداد 9، 9.0 یا 10 استفاده کنید.

ایجاد از استفاده! (Generate from Usage)

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

Highlighting Referemces

با استفاده از این ویژگی شما می توانید با کلیک کردن روی یک شناسه، تمام خطوطی را که این شناسه در آن ها بکار رفته است را برجسته کنید. سپس با کلیدهای ترکیبی Ctrl+Shift+Down و Ctrl+Shift+Up در میان آن ها حرکت کنید.

farasun.wordpress.com

ویژوال بیسیک 2010 دارای ویژگی های دیگری همچون پشتیبانی از اشیای پویا نیز هست که ما در این مطلب به آن ها نپرداختیم. سه ویژگی آخری که در این مطلب به آن ها اشاره شد، بیشتر مربوط به محیط توسعه هستند تا ویژگی خود زبان، و این ویژگی ها میان زبان های ویژوال بیسیک 2010 و سی شارپ 4.0 مشترک هستند.

farasun.wordpress.com

برای پیگیری مطلب این وبلاگ، مشترک فید فراسان شوید! نمی دانید فید چیست! اینجا را بخوانید.

بررسی دات نت 4.0 – تغییرات CLR

قبلاً قول داده بودم در مورد تغییرات جدید در دات نت فریم ورک 4.0 مطلب بنویسم. میدونم در این وضعیت شاید کسی حوصله خوندن پست تخصصی را نداشته باشه و همه با تعجب و افسوس بسیار اخبار درگیری های بعد از 22 خرداد را دنبال می کنند، اما تصمیم به نوشتن گرفتم چون به من آرامش میده. تصمیم گرفتم تغییرات دات نت 4.0 را در چندین پست به صورت مکرر مورد بررسی قرار دهم. در این مطلب با تغییرات CLR در دات نت فریم ورک 4.0 بتا 1 آشنا خواهید شد. در مطالب بعدی با تغییرات زبان های برنامه نویسی دات نت 4.0، کلاس های پایه در آن و تغییرات ASP.NET آشنا خواهیم شد.

قسمت اول : تغییرات CLR

CLR در نسحه جدید پلت فرم برنامه نویسی مایکروسافت یعنی دات نت فریم ورک 4.0 دستخوش تغییرات و به روز رسانی های زیادی شده است که در این مطلب با مهمترین آن ها آشنا می شویم :

محاسبات موازی (Parallel Computing)

دات نت فریم ورک 4.0 بتا مدل جدیدی از برنامه نویسی برای نوشتن برنامه های چند خطی (Multi threaded) و غیرهمزمان (asynchronous) ارائه می کند که به صورت موثری کار توسعه دهندگان برنامه های کاربردی و کتابخانه های کد را ساده می کند. کلاس های جدید Parallel و Task در فضای نام System.Threading از این مدل برنامه نویسی پشتیبانی می کنند. PLINQ یا Parallel LINQ هم پیاده سازی موازی از LINQ to Objects در این نسخه از دات نت فریم ورک است.

کارایی بالاتر

به اضافه قابلیت بالا، برنامه ها در دات نت فریم ورک 4.0 بتا، با سرعت بالاتری اجرا می شوند و کارایی بالاتری در برنامه های چند خطی مشاهده خواهید کرد.

Lazy Initialiation

با استفاده از این قابلیت، حافظه برای یک شیء تا هنگامی که شیء به حافظه ای احتیاج ندارد، اختصاص نمی یابد. Lazy Initialiation می تواند کارایی برنامه شما را با کنترل روی حافظه های اختصاص داده شده به اشیاء بالا ببرد. شما می توانید این قابلیت را برای هر نوع داده ای با استفاده از System.Lazy(T) فعال کنید.

Dynamic Language Runtime

محیط زمان اجرای جدیدی است که سرویس هایی برای زبان های برنامه نویسی پویا به CLR اضافه می کند. DLR توسعه زبان های پویا برای اجرا روی دات نت فریم ورک و اضافه نمودن قابلیت های پویا به انواع زبان های استاتیک را آسان تر می کند. برای این منظور فضای نام System.Dynamic به دات نت فریم ورک 4.0 اضافه شده است. به علاوه کلاس هایی هم برای پشتیبانی از زیر بنای دات نت فریم ورک در فضای نام System.Runtime.CompilerServices ایجاد شده است.

In-Process-Side-By-Side Execution

این قابلیت جدید در دات نت فریم ورک به شما اجازه می دهد که چند نسخه مختلفه CLR را در حافظه بار کنید تا کامپوننت های قدیمی که از نسخه های قبلی CLR استفاده می کنند در کنار کامپوننت های جدید به کار خود ادامه بدهند. به زبان ساده می توانید برنامه ای بنویسید که هم از دات نت فریم ورک نسخه 2 استفاده کند و هم از نسخه 4 آن.

امنیت

دو تغییر بزرگ در زیر سیستم امنیتی دات نت فریم ورک 4.0 بوجود آمده، سیاست امنیتی Machine-wide از بین رفته است، هر چند سیستم اجازه نامه ها هنوز در جای خود قرار دارد، و شفافیت امنیتی گسترش یافته و به عنوان مکانیزم پیش فرض مورد استفاده قرار می گیرد. از بین رفتن سیاست Machine-wide به این معنی است که دات نت فریم ورک مسئولیت تامین امنیت یک کامپیوتر را بر عهده ندارد و فقط از کدهای امن نوشته شده حفاظت می کند. شفافایت امنیتی یا Security Transparency که برای اولین بار در دات نت فریم ورک 2.0 معرفی شد، مکانیزمی است که کدهای نوشته شده برای یک اپلیکیشن تحت دات نت فریم ورک را از کدهای زیربنایی آن تفکیک می کند.

قراردادهای کد

قراردادهای کد به شما اجازه می دهند اطلاعاتی را مشخص کنید که امضای متد ها و نوع ها به تنهایی آن ها را نمایش نمی دهند. فضای نام System.Diagnostics.Constracts کلاس هایی را برای برآورده کردن این هدف فراهم می کند. این قراردادها باعث بهبود کیفیت آزمایش نرم افزار و تولید مستندات می شوند.

Garbage Collection

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

عیب یابی

حالا در دات نت 4.0 می توانید از رویدادهای EWT یا Event Tracing for Windows در جهت عیب یابی برنامه هایتان استفاده کنید تا کارایی را افزایش دهید. EWT مسئولیت جمع آوری گزارش در طول زندگی یک پروسه در ویندوز را بر عهده دارد. با استفاده از EWT می توانید گزارشاتی در مورد رویدادهای CLR مطالعه کنید و نرم افزارهایتان را عیب یابی کنید.

farasun.wordpress.com

برای دنبال کردن مطالب بعدی این وبلاگ، مشترک فید فراسان شوید