سلام
استاد علی فرض کن یک برنامه ای در ویژوال استودیو با 3 زبان درست شده یعنی هر قسمتش با یک زبان
Visual Basic.NET
c#
visual c++
خوب اینطور که تو کتاب نوشته هر قسمت بعد از کامپایل به کدهای MSIL تبدیل می شه و بعد از اون توسط کامپایلر دیگه ای که توی CLR هست این کد ها به هم وصل می شن و به زبان ماشین تبدیل می شن و تشکیل یک برنامه رو میدن.
من قبلا خونده بودم که سی پلاس پلاس سرعت بالایی داره و سی شارپ از نظر اجرا به سرعتش نمی رسه. یعنی سرعت یکی از ویژگی های زبان سی پلاس پلاسه
این زبان برنامه نویسی نیست که تعیین کننده سرعت اجرا است، کامپایلر و پلتفرم زبان برنامه نویسی ئه. اینکه بصورت رایج کامپایلر های ++C کد رو بصورت بهینه به زبان ماشین ترجمه میکنند ئه که منجر به این سرعت اجرای بالاتر شده، نه اینکه چون زبان ++C بوده پس سریعتره. سرعت ++C ویژگی زبان اش نیست، ویژگی کامپایلر های خوبشه. چطور که همون ++C وقتی تحت ماشین مجازی NET. میاد به شکل محسوسی کند میشه.
خود زبان ++C همچین تفاوت آنچنانی خاصی با #C یا حتی Java نداره که سرعت نتیجه اون تفاوت ها باشه. #C و Java و ویژوال بیسیک چون کدش در ماشین مجازی اجرا میشه به نسبت کندتر از کامپایلر های زبان هایی است که مستقیما به کد ماشین واقعی ترجمه می کنند. C++ CLI هم در اغلب موارد همون اندازه سرعت اجرا داره که #C و همون اندازه که VB.NET . اینها همه شون خروجیشون همون MSIL ئه که معمولا مشابهه.
نمی توانید C++ CLI رو از لحاظ کارایی و سرعت اجرا با C++ Native یکی فرض کنید، طبعا کند تره، بخاطر زبان نیست، بخاطر کامپایلر و پلتفرم ئه. ماشین مجازی هر مزیتی هم داشته باشه کند شدن به هر حال جزو معایبشه.
1- به نظر شما غیر از اینکه مایکروسافت با ویژوال استودیو کاری کرده همه برنامه نویس ها بتونن با هم روی یک پروژه کار کنن آیا این یک قریب و اشتباه نیست برای اون افرادی که می خوان سرعت سی پلاس پلاس رو داشته باشن اما در نهایت کدها به MSIL تبدیل می شن.
فرض های مساله تون اشتباهه، شما می توانید در همون ویژوال استدیو پروژه C++ MFC/ATL مستقل از NET. و CLR/CLI داشته باشید که Native ئه و کاری با MSIL و ماشین مجازی هم نداره. در ضمن مزیت NET. به کتابخانه غنی و مجهز اونه، اینکه کسی با دانستن یک زبان برنامه نویسی بتونه از کد های سایر زبان ها استفاده کنه مزیت بزرگیه، فریب یا اشتباهی در کار نیست.
2- این جمله درسته: ما هر برنامه ای با سی شارپ بنویسیم و کامپایل کنیم همیشه به صورت کدهای MSIL هستش و هر وقت که اجراش کنیم توسط CLR به زبان ماشین ترجمه می شه.
این ماشین مجازی همون .NET Framework هستش.
بله.
3- امکان داره که تا چند سال آینده سرعت سی شارپ به سی پلاس پلاس برسه یا اینکه به هیچ عنوان عملی نیست.
شما زبان رو با زبان نمی تونید مقایسه کنید، باید کامپایلر رو با کامپایلر مقایسه کنید، ممکنه سه تا کامپایلر زبان ++C باشند که هر کدوم خروجی شون سرعت اجرای متفاوتی داشته باشه.
و به سال ارتباطی نداره، مادامی که CLR بصورت just-in-time یعنی در زمان اجرای برنامه بخواد کد رو به زبان ماشین کامپایل کنه اون مدت زمانی که صرف این کامپایل می کنه سربار ئه و تایید کننده میزان کندتر بودنش هم هست. هر چقدر این زمان کوتاه بشه بالاخره یک زمانی ئه و صفر که نمیشه، پس تا وقتی MSIL ای در کار هست همچین حالتی پیش نمیاد.
اگر زمانی کامپایلری برای #C طراحی بشه که مستقیما به زبان ماشین ترجمه انجام بده و خبری از CLR و MSIL نباشه میتوانید توقع داشته باشید که سرعتش به اندازه کامپایلر های Native سایر زبان ها برسه، ولی احتمالا در اون حالت NET. هم از زبان #C حذف شده چون NET. وابستگی به MSIL داره.
تو کتاب نوشته برنامه های سی شارپ از قطعاتی به نام کلاس تشکیل میشن و هر برنامه سی شارپ حداقل از یک کلاس تشکیل می شه که این کلاس از کلاس فرم ارث می بره.
4- حالا اگه من یک فرم ایجاد کردم و چند تا کنترل روش گذاشتم اسم این کلاس چیه که از کلاس فرم ارث برده؟(البته می دونم که همه کلاس ها از کلاس Object ارث می برن)
اسم فرم تون، مثلا Form1 یک کلاس ئه که وارث Form ئه. در ابتدای کدتون Form1 : Form رو می بینید.
5- قبلا توی یک سایت خوندم که کلاس یک مفهومه و باید یک شی ازش بسازیم. پس چطوری برنامه های سی شارپ از قطعاتی به نام کلاس تشکیل می شن در حالی که کلاس مفهومه.
سایت ئه شرح خوبی نداده ولی به هر حال شما در کدتون هزار تا کلاس عادی هم بسازید؛ خودش که به تنهایی اعلام وجود نمی کنه، شما جایی از اون کلاس شیء میسازید یا استفاده می کنید که تاثیر گذار میشه.
فرضا شما در پروژه تون Program.cs رو ببینید. داخلش با new از اون کلاس فرمی که ساخته اید، فرضا Form1 شیء میسازید. اگر اون شیء ساخته نمیشد که فرم Form1 نمایشی نمیتونست داشته باشه.
شما اون شیء رو نمایش میدید نه خود Form1 رو.
یک نمونه مستند سازی به صورت pdf یا هر مدلی که جهانی است برای دانلود قرار بدید. فقط می خوام ببینم چطوری مستند سازی می کنن. اگه مستند سازی به زبان فارسی هم دارید بی زحمت قرار بدید. اصلا مستند سازی کردن آموزش داره و قوانینی یا قرار داد هایی داره یا هر کی به روش خودش باید انجام بده؟
قوانین ساده نگارش رو داره، استاندارد خاصی نیست.
تو مستند سازی ایرانی ها بدترین شرایط رو دارند، چون نه کارفرماشون خیلی روی مستندات تاکید داره و نه برنامه نویس علاقه داره مستندات کاملی در اختیار سایرین قرار بده و نه درست برای اینکار آموزش دیده اند. به نظرشونم یک کار اضافی و تشریفاتیه. از خداشونم هست که کسی از کد و محصول سردرنیاره و دست به دامن خودشون بشه.
فرضا Aspose.Words این امکان رو برنامه نویس میده که از داخل برنامه اش فایل Word بسازه یا ویرایش کنه و فرضا بجای Print از برنامه هاش خروجی Word بده و ... بدون اینکه نیازی به نصب بودن Microsoft Office باشه. حالا اگه همچین کمپوننت ای که یک عالمه امکانات و جزئیات داره بدون مستندات در اختیارتون قرار می گرفت به مشکل برمیخوردید.
هم خود کمپوننت هاش به همون شیوه xml داخل ویژوال استدیو کلاس ها و متد ها و فیلد ها و ... رو شرح داده و هم مستندات مجزا داره.
ببینید در سایتش چطور با جزئیات و با فهرست طبقه بندی شده بصورت موضوعی طرز استفاده شو شرح داده :
https://docs.aspose.com/display/wordsproductfamily/Home
فایل راهنمای آفلاینش هم بعد از نصب کردن محصولاتش بصورت فایلهای chm هست که نصب میشه.