مشاهده نسخه کامل
: سوال در رابطه با نوع داده ها
درود و سلام،
این متن رو امکان داره بخونید؟
میگه برخی نوع داده ها در اصل متعلق به سی شارپ نیست و مربوط به .net میشه درسته؟ خوب خود سی شارپ و زبان های برنامه نویسی در خود فریم ورک .نت در بالاترین لایه قرار میگیره.
یعنی زبان سی شارپ هم جزو .نت هست. این حرفش ایا ضد و نقیض نیست؟ یک مثال هم زده حتی...
واقعیت این هست که من همیشه فکر میکردم کل این متغیر و مسائل مربوط به زبان سی شارپ هست و .net وظیفه هندل کردن و ... را بر عهده دارد..
الان یعنی خود .net یک سری کلاس و متد ها رو داره و باهاش سی شارپ رو ساختن؟
مگر .نت رو با C++ ننوشتند؟
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بله، C# زبان است نه Resource . کامپایلر C# تمام موارد را بر اساس معماری .net بررسی و ایجاد می کند. برای VB.net هم همین طور.
در واقع این int ها و ... یکسری alias هستند به کلاس هایی نظیر Int32 که در .net تعریف شده اند.
.net یک چیز و C# یک چیز دیگری است. C# یک مجوعه قوانین برای کد نویسی است و .net یک resource . شما می توانید با هر زبانی با .net ارتباط بگیرید و از کلاس های آن استفاده کنید در واقع شما باید بگویید C#.net که یعنی C# تحت مجموعه ی .net .
C#ی که تحت mono است مجموعه ی آن از نظر ساختاری متفاوت می شود. گرچه باید به این نکته نیز توجه کرد:
می توان اینگونه دید که ساختار داخلی .net (چیدمان کلاس ها؛ اجزا و ...) توسط C# متبلور شده است و خود این مطلب است که قوانین C# را به مرور پیاده کرده و حال تحت هر محیطی دیگر قرار بگیرد باید آن چیدمان را داشته باشد.
اگر nativeC# استفاده کنید دیگر این ساختار ها اینگونه نخواهد بود. چرا که کامایلر یک تفسیر دیگر از alias های int و ... خواهد داشت.
open source C# native compiler
native C#
([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])Official .net natice Compiler
([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
الان یعنی خود .net یک سری کلاس و متد ها رو داره و باهاش سی شارپ رو ساختن؟
فکر کنم جواب این سوال در جملات بالا باشد.
موفق باشید.
بله، C# زبان است نه Resource . کامپایلر C# تمام موارد را بر اساس معماری .net بررسی و ایجاد می کند. برای VB.net هم همین طور.
در واقع این int ها و ... یکسری alias هستند به کلاس هایی نظیر Int32 که در .net تعریف شده اند.
.net یک چیز و C# یک چیز دیگری است. C# یک مجوعه قوانین برای کد نویسی است و .net یک resource . شما می توانید با هر زبانی با .net ارتباط بگیرید و از کلاس های آن استفاده کنید در واقع شما باید بگویید C#.net که یعنی C# تحت مجموعه ی .net .
C#ی که تحت mono است مجموعه ی آن از نظر ساختاری متفاوت می شود. گرچه باید به این نکته نیز توجه کرد:
می توان اینگونه دید که ساختار داخلی .net (چیدمان کلاس ها؛ اجزا و ...) توسط C# متبلور شده است و خود این مطلب است که قوانین C# را به مرور پیاده کرده و حال تحت هر محیطی دیگر قرار بگیرد باید آن چیدمان را داشته باشد.
اگر nativeC# استفاده کنید دیگر این ساختار ها اینگونه نخواهد بود. چرا که کامایلر یک تفسیر دیگر از alias های int و ... خواهد داشت.
open source C# native compiler
native C#
([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])Official .net natice Compiler
([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
فکر کنم جواب این سوال در جملات بالا باشد.
موفق باشید.
درود و سپاس ولی متاسفانه من پاسخم رو نگرفتم.
شاید باید سوال ها رو واضح تر مطرح کنم و بعد از درک این سوالات به مسائل ریز تر فکر کنم.
1-. نت با چه زبانی نوشته شده است؟
2- سی شارپ ، کجای . نت است؟
C# however was specifically designed to create MSIL Code for the .NET Framework
:n04::n03:
جالب است من امروز صبح جواب اون پست روز زدم ولی متاسفانه بعد کلی تایپ ارور داد و در نهایت ثبت نشد. :n02:
مجدد جواب پست3 :
باز بحث این است که C# کجای .net است. سی شارپ فقط یک زبان است همین و بس. یعنی یکسری قاعده و سینتکس. یکسری تعریف برای نوشتن حلقه، شرط، کلاس و استفاده از کلاس. همین!
مشابه چنین چیزی در C هم وجود دارد که تا به حال برایتان سوال نشده است؟! C هم مانند C# فقط یک زبان است. خوب این c یکسری کتابخانه دارد. این کتابخانه ها با چه نوشته شده است؟ C و اسمبلی. در واقع این کتابخانه ها کدهایی که شما می بایست می نوشتید را نوشته و آماده کرده است. حالا در لایه های پایین ، مدیریت مستقیم حافظه مطرح بوده که آن هم در این کتابخانه ها نوشته شده. یعنی ما چند حالت داریم. یک مثال،
فرض کنید به شما می گویند برنامه ای بنویسید که حرف a را درون یک رشته پیدا کند. خوب شما این برنامه را مثلا با C# نوشتید.سپس یک کلاس کردید و آن را در اختیار دیگران گذاشتید. (اینجا برنامه نویس میکروسافت و دیگران ما هستیم)
آیا این مطلب مشکلی دارد؟
دقت کنید که .net از این نظر دارای دو بخش است:
CLR ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
کلاس ها
قید شده است که clr با C++ و در برخی منابع با Visual C++ نوشته شده است. یعنی هسته ی کار. هسته ای که باید کدmanage را برای یک سیستم unmange تعریف کند. پس خود به عنوان یک لایه فقط می تواند یک ساختار native و unmange باشد. پس تا اینجا مشخص شده که هسته ی اصلی پردازش چیست.
بخش دوم، کلاس ها:
مدیریت clr این امکان را به .net می دهد که بتوان روی این هسته کد manage تولید کرد. شما می توانید این کد manage را توسط C# ، VB.net ، C++ CLR پیاده سازی کنید.
حال در اینجا زبان جدید توسط میکروسافت خلق شد. که همان C# باشد.
یک کامپایلر که خروجی های این زبان را برای clr ترجمه کند.پس دقت کنید که در اینجا دو بخش داریم. زبان - کامپایلر.
زبان همان طور که قبلا گفتم زبان است اما با وجود کامپایلر مایکروسافت است که تعریف این چنینی به C# داده.
خوب آلان خودتان را بگذارید جای میکروسافت:
1- شما یک زبان جدید دارید که برای کارخودتان طراحی کرده اید.
2- یک هسته ی آماده دارید که نیازمند کلاس ها و تکمیل لایه ی بالایی است.
خوب آیا از c++ که برای هسته استفاده کرده اید برای نوشتن این کلاس ها استفاده می کنید؟ گرچه استفاده از آن می بایست خروجی manage داشته باشد یعنی همان c++ CLR .
میکروسافت این زبان را ساخت که بتواند یک زبان با قابلیت کار در حافظه ی مدیریت شده داشته باشد، یعنی ساده تر باشد. در قبل هم گفتم .net توسط C# شناخته شد. یک زبان ساده با پشتوانه ای مستحکم که به صورت پنهان در آن است و آن هم خود .net framework است.
تا به حال راجع به os با C# فکر کرده اید؟
خوب اگر قرار باشد از کامپایلر فعلی استفاده شود این امر محال است. خروجی کامپایلر کد CIL بوده و cpu به کدهای مثلا X86 نیاز دارد. پس در اینجا .net باید توسط یک compiler به گونه ای دیگر تعریف و خروجی شود. مطلاب بیشتر در اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) بخوانید.
نکته: در جاهایی درون .net که C# نیازمند توابع سیستمی و native است، آن ها را تولید نمی کند بلکه به native های آن متصل می شود و اینگونه روند را پوشش میدهد.
پست4:
یک زبان ساده، با یک کامپایلر برای تفسیر به msil . دقت کنید می توانست از C++ هم برای این کار استفاده کند و کامایلر آن را بسازد اما دشواری c++ در استفاده در محیط های manage را نباید فراموش کرد.
موفق باشید.
سلام
جالب است من امروز صبح جواب اون پست روز زدم ولی متاسفانه بعد کلی تایپ ارور داد و در نهایت ثبت نشد
سلام، برادر، مانند من باید از Notepad استفاده کنید، بخواهم زیاد بنویسم و همان لحظه هم ارسال کنم باز در Notepad مینویسم!
==============
تاپیک را چند ساعت قبل دیدم و متنی حاظر کردم، حالا گرچه دوستمان Msba جواب تاپیک را دادند ولی حیفم می آید متن را دور بریزم! :n02:
کامپایلر های سینتکسی CSharp و VB.Net درواقع کار خیلی زیاد و مهمی انجام نمیدهند! ما الآن Farsi.NET هم داریم!!!
اصل بار بر دوش dotNet و FCL و CLR و JIT و... است.
مثلاً یک ساختار کلی با نام System.Int32 در دات نت داریم، بخشی از زحمتی که #C ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) میکشد آن است که نام های اجدادی C را نگاشت میکند به معادلشان در دات نت.
یعنی به برنامه نویسان C که به int عادت دارند اجازه میدهند بنویسند int و خودش بعدا بجایش میگذارد System.Int32
VB.Net همین کار را برای Basic کارهایی انجام میدهد که به Integer عادت دارند، میگذارد آنها بنویسند Integer و بعد خودش بجایش میگذارد System.Int32
درواقع کامپایلر های CSharp و VB.Net کد برنامه نویسان خود را به کلاس های FCL و کدهای MSIL کامپایل میکنند.
خروجی MSIL حاصل از CSharp با VB.Net فرق خواصی ندارد
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مایکروسافت در واقع محیط توسعه ای طراحی کرده که مستقل از سینتکس زبان برنامه نویسی و سخت افزار باشد.
درواقع جلوی تکرار بخش بزرگی از کار گرفته شده، شما میتوانید با سینتکس دخواه خود برنامه نویسید (C#, VB, J#, F#, IronPython, IronRuby و...) و از امکانات یکسانی استفاده کنید و پس از کامپایل هم کدها خیلی راحت با هم تعامل خواهند داشت، میتوانید قطعه ای را در IronPython بنویسید و dll آن را به دوست تان که #C ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) کار میکند بدهید... در واقع بعد کامپایل فقط اعداد کدگذاری شده MSIL می ماند.
==============
در حال حاضر در بخش هایی خاصی مانند هسته CLR و JIT از ++VC استفاده شده ولی حدود 99% کتابخانه BCL+FCL با خود #C ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) و توسط مایکروسافت نوشته شده.
یعنی درست است که VB, J#, F#, IronPython, IronRuby و حتی #C ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) از BCL+FCL استفاده میکنند ولی خود BCL+FCL با #C ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) نوشته شده، بحرحال یک زبانی باید جور بقیه را میکشیده! مانند ساختمان یا غذایی که یک نفر میسازد و سپس خودش و دیگران از آن استفاده میکنند!
درضمن بد نیست بدانید کامپایلر آتی VS2015 به نام Roslyn با #C ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) نوشته شده.
مطالعه بیشتر
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
فارسی دات نت؟!
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بنیاد متن باز دات نت:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دانلود سورس دات نت فریم ورک:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دانلود سورس (NET Compiler Platform (Roslyn
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
شب خوش و موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.