« پست شخص دیگر »
سلام
واقعیت اینه که از دیر باز واسه برنامه نویس ها این آرزو بود که برای تولید نرم افزار فقط یه بار کد بنویسند و اون رو روی همه سیستم های موجود در دنیا بتونند اجرا کنند !
از زمان پیداش کامپیوتر ها ی جورباجور تا الان روش های مختلفی روی کار اومدند ، مدتی هم خیلی خوب کار کردند اما بعد از مدتی هم بکلی منسوخ شدند ! (تکنولوژی همینه دیگه ...)
از حوصله ی این تاپیک خارجه که من تاریخچه این روش ها رو بگم یا به نقد اون ها بپردازم ، ولی چیزی که در این وجیزه می گنجه اینه که یکی از همون روش ها که در زمان ما با پیدایش جاوا به وجود اومد و به دنیای برنامه نویس ها معرفی شد ، استفاده از یک واسطه بین کدهای کامپایل شده ی برنامه و سیستمی که قراره اون رو روی خودش اجرا کنه می باشه .
یعنی به جای اینکه کدهای ما توسط کامپایلر به زبان ماشین کامپیوتری که قراره برنامه ی ما روش اجرا بشه ترجمه بشند ، بیان به یه چیزه دیگه ای ترجمه بشن که اون چیزه رو فقط یه برنامه می تونه بفهمه چیه ! به این برنامه میگن ماشین مجازی . کارشم اینه که اون چیز ها رو که فقط خودش می دونست چیه رو بیاد به زبان ماشینی که خودش روش نصبه تبدیل کنه !
با این روش Cross platform شدن نرم افزار ها که آرزوی برنامه نویس ها بود به معنای واقعیش به وجود می یاد ؛ فقط کافیه برای انواع مختلف کامپیوترها اون ماشین مجازی نوشته بشه ، که اینم کار سختی نیست و شدنیه .
اما این روش معایبی هم داره ! از جمله اینکه با قرار گرفتن این واسطه سر راه برنامه ها ، مشکلاتی از قبیل استفاده از منابع بیشتر سیستم ها ، کند بودن اجرای برنامه ها و ... به وجود میاد ، که البته با رشد روز افزون سخت افزار می توان از آن ها چشم پوشی کرد ! البته معایب دیگه ای هم هست که در این وجیزه نمی گنجد!!
حالا با این توضیحات می تونیم بپردازیم به بحث اصلی .
زمانی که جاوا به دنیا معرفی شد ، ماکروسافت برای اینکه از قافله عقب نمونه اومد دات نت رو خلق کرد ، البته با همون سیاست های سلطه جویانه و منفعت طلبانه و انحصار طلبانش !
چه طور مگه ؟
پر واضحه !
جاوا فریم ورک مستقل از سکو ست ، به همون دلایلی که به اختصار در چند سطر بالا اشاره کردم ؛ ایده و نوع کارکرد دات نت هم از جاوا گرفته شده ! اما آیا واقعا مستقل از سکوست !؟!؟
یعنی می توان برنامه ای رو با این فریم ورک در ویندوز نوشت و اون رو در توزیعی از لینوکس یا ... به را حتی و با همان کیفیت اجرا کرد ؟
پاسخ به دلیل سیاست های ماکروسافت کاملا منفی است ! (من از وجود پروژه ی Mono با خبرم ! اون بحثش جداست ! این توضیح رو دادم که شبه ای پیش نیاد)
چه کسی یا کسانی قادرند از عهده ی خرید لایسنس دات نت ماکروسافت بربیاند ؟!
جالبه بدونید تا همین چند وقت پیش فقط دوتا سیستم بود که برنامه های دات نت روش بدون نقص اجرا می شد ! یکیش ویندوز موبایل بود و دیگری ایکس باکس که البته هر دو هم ماله ماکروسافتند !
حالا برای کامل شدن بحث بهتره بپردازم به تعریف دات نت و توضیحی که چند سال پیش ماکروسافت از دات نت روی سایت خودش قرار داده بود رو عینا نقل کنم :
•The .NET Framework is an integral Windows component that supports building and running the next generation of applications and XML Web services. The .NET Framework is designed to fulfill the following objectives:
To provide a consistent object-oriented programming environment whether object code is stored and executed locally, executed locally but Internet-distributed, or executed remotely.
To provide a code-execution environment that minimizes software deployment and versioning conflicts.
To provide a code-execution environment that promotes safe execution of code, including code created by an unknown or semi-trusted third party.
To provide a code-execution environment that eliminates the performance problems of scripted or interpreted environments.
To make the developer experience consistent across widely varying types of applications, such as Windows-based applications and Web-based applications.
To build all communication on industry standards to ensure that code based on the .NET Framework can integrate with any other code
مایکروسافت ، دات نت رو به عنوان یک عنصر مبتنی بر ویندوز و ویندوز محور معرفی میکنه و این یعنی صراحتاً مایکروسافت وجود دات نت رو جایی به غیر از ویندوز به رسمیت نمیشناسه !!
به همین دلیله که پروژه ای مانند Mono به وجود اومد ، برای اینکه جلوی این سیاست ها به ایسته ، یا به نوعی اونها رو دور بزنه !
در واقع دات نت یک بستر و پایه است برای تولید نرم افزارهای کاربردی سطح بالا ، برنامه های مبتنی بر شبکه و اینترنت و سرویسهایی که به موارد مذکور مربوط هستند ، بر روی سکوی ویندوز ! و اصلاً خبری از Cross platform بودن مطرح نیست ! (ما که ندیدیم ...)
واقعا باید صادقانه بگم این دات نت از اون شاهکارهای فنی میکروسافت هست و من واقعا شوکه شدم از طراحی عالی و کامل و قدرتش در RAD .ب
دات نت صرفاً یه ابزار خوبه ، در کنار سایر ابزارهای خوب و جلوتر از ابزارهای بد ، که خیلی شون ، سری قبلی محصولات مایکروسافت هستند !
آیا دات نت تاثیر منفی روی برنامه نویسی ها و پلتفرمهای آزاد/بازمتن میذاره ؟
در حال حاضر جواب من منفیه ، مگر سیاست های ماکروسافت به یک باره عوض بشه !
فراموش نکنید حدود 10 سال از ارائه اولین نسخه دات نت می گزره ! چه تاثیر به سزایی تونسته تو مثلاً گنو لینوکس بزاره ؟!
ولی در ویندوز قضیش فرق می کنه . بلاشک نقش مؤثری در توسعه ی نرم افزار های ویندوز خواهد داشت چون هم ابزار خوبی است ، هم محصول بزرگترین غول نرم افزاری دنیاست ، هم با ویندوز ارتباط خوبی داره ، هم سهل الاستفاده است
و همش توی این فکرم که سرنوشت دنیای بازمتن و زبانها و فریمورک هاش درمقابل یه حریف خفنی مثل دات نت چه خواهد شد
اونها راه خودشون رو میرند و ماکروسافت هم با دات نتش ویندوز رو تاکید می کنم فقط ویندوز رو می ترکونه ! هر چی باشه دات نت یه ابزار RAD فوق العاده ست ! البته فقط تو ویندوز !
خلاصه دات نت اگر بخواد دشمن باشه دشمن بسیار خطرناکی هست که بنظر میرسه دنیای بازمتن و گنو/لینوکس هنوز دربرابرش حریف قابلی رو نکرده و باید جدا به فکر باشه. نمیدونم شاید هم جاوا بتونه این نقش رو ایفا بکنه. ولی دات نت جدیدتر هست و بنظر منکه خیلی راحتتر و مدرن تر باید باشه و طوری که فهمیدم، یادگیری و استفاده از اون درکل نسبت به جاوا خیلی راحتتره (ولی چون جاوا بلد نیستم نمیتونم قضاوت و مقایسهء دقیق و مطمئنی بکنم).
دات نت دقیقا تشکیل شده از مجموعهء وسیعی از Wrapper که API های ویندوز رو محصور میکنه ، در واقع دات نت چیزی بیشتر از یک کتابخانه ی خوب نیست ! همین .
اگه کسی قانع نشد یه نگاه ، حتی اجمالی به MSDN ماکروسافت اون رو قانع می کنه !
با این اوصاف به زعم من با وجود فریم ورک های قدرتمندی مانند Qt که به مراتب در بعضی مسائل از دات نت هم جلو ترند ! جای نگرانی نیست ، عرض کردم که دات نت فقط در ویندوز محلی از اعراب داره ، که البته در اونجا هم رقبای سرسختی همچون RAD Studio براش مهیا هستند . که به شخصه به دلیل ارادت خاصی که از قدیم به مالک نسخه های اولیه این فریم ورک (بورلند) داشتم و بعضی مسائل فنی (سرعت کامپایل ، اجرا ، تولید فایل exe مستقل و ...) ترجیح میدهم که از این محیط RAD در ویندوز استفاده کنم !
خلاصه بدجوری قوی هست و پشتیبانی کامل میکروسافت و ویندوز هم پشتشه.
بدون شک دات نت موفقیت قابل توجهی در ویندوز کسب کرده و هر کسی هم محبوبیت دات نت رو انکار کنه نابینایی خودش رو به اثبات رسونده
ممکنه عملا نسل خیلی از برنامه نویسی ها و برنامه نویسان دیگه رو منقرض کنه (البته بطور نسبی و در حیطه های کاربرد خودش). باز یه زمانی مثلا سی++ زبان مشترک بود حداقل بین برنامه نویسان.
خیر ، اصلاً این گونه که شما فکر می کنید نیست ! دات نت نقص های زیادی هم داره که مجال برسی آنها نیست ، مثلا همینکه برنامه های نوشته شده اش فقط روی بستر دات نتند که اجرا میشند و در عین حال cross platform هم نیستند ! این دیگه آخر مسخره گی ماکروسافت !
به این موضوع اشاره کردم که اصلا این مدل برنامه نویسی (استفاده از یک واسط در تولید فایل اجرایی) بدین جهت اختراع شد که بتوان از قابلیت Cross platform بودن بهره برد ! همین !
یعنی صرف نظر از قدرت سخت افزار ، شما استفاده بیشتر از منابع سیستم و کند بودن سرعت اجرای برنامه و ... را فدای Cross platform بودن می کنید مانند جاوا ، که با رشد روز افزون سخت افزار معقول هم هست . که در دات نت چیزی از Cross platform بودن دیده نمی شود !!
همچنین نباید رقبای سرسخت دات نت را هم فراموش کرد ! مثل RAD Studio که واقعا هیچی کمتر از دات نداره (بلکه بیشتر هم داره) یا همین Qt خودمون و ...
اما بنظر میرسه دیگه باوجود دات نت یه خبرهء سی++ مثلا در لینوکس دیگه نمیتونه از مهارت و دانش خودش برای برنامه نویسی ویندوز هم براحتی همه جا استفاده بکنه
نه ؛ اصلاً
یه خبره ی C++ در لینوکس ، صرف نظر از فریم ورک و به شرط آشنایی با ویندوز بهترین برنامه ها رو می تونه واسه اون بنویسه ، همچنین با در نظر گرفتن فریم ورک هم دستش بازه ، به عنوان مثال من با Qt هم برنامه واسه لینوکس می نویسم و هم ویندوز ! تازه برنامم هم حجم کمتری داره و هم سریعتر نسبت به برنامه مشابه دات نتیش اجرا میشه ! به همین راحتی ...
دات نت خیلی مسائل رو که ممکنه در آینده واقعا سرنوشت ساز باشن هدف گرفته
چیکارش داری به زار بگیره !
دات نت هر کاری بخواد بکنه ، به دلیل سیاست های ماکروسافت باز محدود میشه به ویندوز !!
مگر سیاست های ماکروسافت عوض بشه ! که نظر منو بخوای می گم در حال حاضر محاله !!!!
مع الوصف این مطالبی بود که ترجیح دادم در مورده DotNet framework به صورت خلاصه و تا حدودی پراکنده مطرح کنم
موفق باشی
Deimos