یک ران تایم برای اجرا کردن همه!

21 08 2009

با CLR که آشنا هستید!؟ یکی از اجزای اصلی پلت فرم دات نت مایکروسافت است. CLR یک پیاده سازی از CLI استاندارد است و محیطی برای اجرای کدهای برنامه های دات نت ایجاد می کند. کامپایلر های سی شارپ و ویژوال بیسیک دات نت کد ماشین تولید نمی کنند، بلکه کدی تولید می کنند به صورت byte code که ماشین به تنهایی قادر به تفسیر و اجرای آن نیست. کامپایلر ابتدا کد CIL یا همان MSIL را تولید می کند. سپس هنگام اجرای برنامه مورد نظر CLR وارد عمل شده و با کامپایلر just in time یا JIT کد CIL برنامه مورد نظر را به کدی که برای سیستم عامل قابل درک باشد، تبدیل می کند.

clr

وظیفه CLR تنها تبدیل بایت کد CIL به کد ماشین نیست، CLR وظایف مدیریت حافظه، پردازش استثناها (Exception Handling)، مدیرت نخ ها (Thread Management)، Garbage Collection و تامین امنیت را به بهترین نحو انجام می دهد.

CLR پیاده سازی CLI استاندارد برای سیستم عامل ویندوز است. پیاده سازی های دیگر CLI مثل Mono و Portable.NET برای سیستم عامل های غیر ویندوز بوجود آمده اند، زیرا CLR فقط روی ویندوز اجرا می شود.

ایده نوشتن این مطلب و عنوان آن، طرح تی شرت زیر است. بقیه تی شرت های تیم CLR را ببینید!

clr_shirt

طرح این تی شرت، شما را به یاد ارباب حلقه ها نمی اندازد!؟ :)

تعریف برخی از اصطلاحات بکار رفته در این مطلب :

  • CLI : مشخصات بازی (=open specification) است که توسط مایکروسافت توسعه داده می شود که کد اجرایی و محیط ران تایمی که هسته دات نت فرم ورک و نرم افزارهای آزاد Mono و Portable.NET را شکل می دهند، توضیح می دهد. این مشخصات محیطی را تعریف می کند که به زبان های برنامه نویسی سطح بالا امکان استفاده در پلت فرم های مختلف را بدون باز نویسی برای یک معماری خاص، می دهد. CLI مخفف Common Language Infrastructure است.
  • CIL : زبان سطح پائینی در CLI است که زبان های تحت دات نت پس از کامپایل شدن به آن ترجمه می شوند. CIL معادل دات نت زبان اسمبلی برای یک CPU است. پس از تبدیل سورس کد یکی از زبان های دات نت به کدهای CIL، این کدها به بایت کد تبدیل می شوند و یک اسمبلی دات نت ایجاد می شود. CIL قبلاً با اسم MSIL نیز شناخته می شد. CIL به صورت “sil” (سیل) تلفظ می شود و مخفف Common Intermediate Language است.
  • JIT Compiler : به عنوان “ترجمه پویا” نیز شناخته می شود و تکنیکی است برای بهبود کارایی یک برنامه کامپیوتری. JIT کد تولید شده قبل از اجرای برنامه را به کدی که به صورت Native اجرا می شود، تبدیل می کند. برای مثال بایت کد را به کد ماشین تبدیل می کند. بسیاری از محیط های ران تایم مدرن مانند دات نت مایکروسافت و بسیاری از پیاده سازی های جاوا از JIT برای اجرای کد با سرعت بالا استفاده می کنند.
  • Garbage Collection : یک شکل از مدیریت حافظه خودکار است که برای باز پس گیری حافظه اشیائی که دیگر مورد استفاده قرار نمی گیرند، کاربرد دارد.
  • Mono : مونو پروژه اوپن سورس و آزادی است که توسط ناول برای پیاده سازی دات نت فریم ورک روی پلت فرم های غیر ویندوزی بوجود آمده است. مونو می تواند روی انواع توزیع های لینوکس (ماننده اوبونتو و زوزه)، مک، سولاریس، سیستم عامل های سازگار با یونیکس و BSD اجرا شود. این پروژه شامل ابزارهای سازگار با دات نت مثل یک IDE، کامپایلر سی شارپ و یک پیاده سازی CLR است. (بخوانید : آیا برنامه دات نت شما روی لینوکس اجرا می شود!؟)
  • Portable.NET : قسمتی از پروژه DotGNU است و محیط ران تایم آزاد و اوپن سورسی برای برنامه های مبتنی بر CLI استاندارد است. این پروژه از کلاس های پایه دات نت، XML و Windows Forms پشتیبانی می کند.

منبع : ویکی پدیا

farasun.wordpress.com

مطالب مرتبط :

اگر تمايل به دنبال کردن مطالب اين وبلاگ داريد، مي توانيد مشترک فيد فراسان شويد.

چطور مشترک شويم؟





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

12 08 2009

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

spl2

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

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

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

farasun.wordpress.com

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

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

مطالب مرتبط :





[Code to look] سه شنبه 20 آمرداد 88

11 08 2009




بررسی بهترین ویرایشگرهای متن آنلاین برای توسعه دهندگان وب

6 08 2009

یکی از تصمیمات مهمی که هر توسعه دهنده وب هنگام ایجاد یک وب سایت خواهد گرفت، همانا انتخاب یک ویرایشگر متن مناسب است. بسیاری از سیستم های مدیریت محتوای تحت وب، برای تولید محتوای متنی، ویرایشگرهایی با امکانات قالب بندی متون غنی (Rich Text) به کاربرانشان ارائه می دهند. نمونه های این ویرایشگرها را در هنگام نوشتن مطلب جدید در وبلاگ هایتان دیده اید. به طور مثال وردپرس، برای ایجاد مطلب یا صفحه، یک ویرایشگر با امکانات قالب بندی متن، درج تصویر و لینک در متن به شما می دهد.

rte

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

TinyMCE

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

FCKeditor

ویرایشگریست که سعی می کند بیشتر امکانات ویرایشگرهای تحت دسکتاپ مانند MS Word را در وب پیاده سازی کند. سبک است و برای استفاده از آن احتیاجی به نصب در کامپیوتر کلاینت ندارد. این ها جملاتی است که در وب سایت رسمی FCKeditor در وصف آن نوشته شده اند. این ویرایشگر قدرتمند با تمامی مرورگرهای استاندارد سازگار است و با بیشنر زبان های برنامه نویسی تحت وب مجتمع می شود. امکانات مناسب برای قالب بندی متن، پشتیبانی از CSS، آپلود تصاویر، مرور فایل های روی سرور، ایجاد جدول، درج فرم فیلد، منوی راست کلیک (Context Menu) اختصاصی، پوسته اختصاصی، تشخیص خودکار مرورگر کاربر و خروجی HTML مطلوب از قابلیت های این ویرایشگر هستند.

Yahoo! UI Editor

یاهو یکی از پیشرو ترین شرکت های وب در زمینه تولید ابزارهای مربوط به توسعه دهندگان وب است. کنترل Rich Text Editor یاهو یکی از بهترین و قدرتمند ترین راه حل ها در این زمینه است. از امکانات این ویرایشگر میتوان به مجوز اوپن سورس، قابلیت های خوب قالب بندی متون، پشتیبانی از مرورگرهای مختلف، تنظیمات قابل انعطاف، پشتیبانی از قابلیت کشیدن و رها کردن و روش شیء گرا در برنامه نویسی آن اشاره کرد. این کنترل جزئی از پروژه کتابخانه YUI شرکت یاهو! است.

FreeRichTextEditor

یک ویرایشگر قدرتمند و مبتنی بر جاوا اسکریپت که با اضافه کردن فقط سه خط کد به صفحات خودتان می توانید به کاربران خودتان لذت استفاده از یک ویرایشگر زیبا و قوی را بدهید. ظاهر این ویرایشگر شبیه به MS Word ساخته شده که کاربران با آن احساس نا آشنایی نکنند. تقریباً تمام امکاناتی که از یک ویرایشگر تحت وب انتظار دارید، FreeRichTextEditor دارای آن می باشد.

NiceEdit

یک ویرایشگر بسیار سبک، کم حجم و با نصب آسان است که روی تمام مرورگرها و سیستم عامل های موجود به خوبی کار می کند. هر چند مانند TinyMCE و FCKeditor قوی نیست و امکانات کمتری دارد اما برای کسانی که یک ویرایشگر ساده و بدون دردسر نیاز دارند بسیار مناسب است. این ویرایشگر سبک فقط 35کیلوبایت حجم دارد و فقط از دو فایل (js و icon) تشکیل شده است. این را با تعداد فایل های دیگر ویرایشگر ها مقایسه کنید. پشتیبانی از متد HTTP Post و AJAX برای ذخیره متن خروجی، کم حجم بودن، اسفاده آسان هم برای برنامه نویسان و هم برای کاربران نهایی، تنظیمات قابل انعطاف و پشتیبانی از تمامی مرورگرهای استاندارد از مزایای استفاده از NiceEdit هستند.

FreeTextBox

پر استفاده ترین ویرایشگر متن در دنیای ASP.NET است. بسیاری از وب سایت های مبتنی بر تکنولوژی ASP.NET از FreeTextBox به عنوان ویرایشگر HTML استفاده می کنند. کاملاً با IE و فایرفاکس سازگار است و امکانات خوبی به کاربر نهایی جهت قالب بندی متن می دهد. نسخه های اخیر این ویرایشگر روی پلت فرم مونو هم اجرا می شود.

RTE ASP.NET Control

اگر شما هم مثل من یک برنامه نویس ASP.NET هستید، حتماً با User Controlها آشنایی دارید. هدف این پروژه در کدپلکس جمع آوری تمامی امکانات یک ویرایشگر متن غنی در یک کنترل ASP.NET است. فایل dll این ویرایشگر را به شاخه bin پروژه خود اضافه کنید و به راحتی در هر صفحه ای که خواستید از آن استفاده کنید. متاسفانه کیفیت خروجی این کنترل هنوز به سطح مطلوبی نرسیده و به جز IE و فایرفاکس، از مرورگر دیگری پشتیبانی نمی کند.

Silverlight RichTextEditor

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

farasun.wordpress.com

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

مطالب مرتبط :