PDA

View Full Version : هنوز به دنبال جواب یک سوال (کامپایلر / فریم ورک / پلاتفرم )



prince0fpersia
سه شنبه 17 بهمن 1391, 11:21 صبح
سلام

آیا کسی میتونه به صورت کامل و علمی و با زبان ساده بگه فرق بین c++و C# و java دقیقا چی هستش؟

اینکه مثلا سی شارپ نیاز به دات نت برای اجرا شدن داره رو میدونم ، اما میخوام ببینم از لحاظ علمی دات نت چکار میکنه؟ فرقش با کامپایلر چیه؟ مگه زبان سی نیاز به کامپایلر نداره واسه اجرا؟

یا مثلا JVM که روی جاوا هست یک framework شبیه .net هست یا جریان دیگه ای داره؟ بالاخره جاوا محلی حساب میشه یا نه (اینکه قبلا میگفتن جاوارو یکبار بنویس و همه جا اجرا کن داستانش چی بود؟)

الان میبینیم مثلا سیستم عامل گوشی های جدید رفته سمن اندروید و زبان اصلی این سیستم عامل هم جاوا هست . شنیدم جاوا روی لینوکس هم خوب سرمایه گذاری میکنه . آیا روزی جای c++ رو میگیره؟ یا حتی الان گرفته یا نه؟

یا مثلا الان انواع پلتفرم های مختلف .net مقل mono داره در میاد . آیا این نشانگر اینه که روزی c# هم یک زبان native محسوب میشه (از نظر اینکه دات نت از قبل رو سیستم عامل های جدید نصب بشه و یا برای همه سیستم عامل ها کامپایلرش بیاد)

البته اگر فرق دقیق کامپایلر و فریم ورک رو دوستان بگن شاید جواب خیلی سوال ها توش باشه

این cross-platform که میگن چطوری ممکنه ؟

و خیلی سوال دیگه که اگر دوستان جواب بدند به همین ها در ادامه خواهم پرسید

leonard
شنبه 28 بهمن 1391, 18:54 عصر
هر سه زبان م ورد اشاره شی گرا هستند اما سورس سی پلاس پلاس توسط کامپایلر به به زبان ماشین ترجمه میشه و وابسته به سیستم عامل و معماری سی پیو هست و بعد از اسمبلی و سی بالاترین سرعت رو در اجرا داره
اما کد سی شارپ به کد میانی ( language intermediate ) و کد جاوا به Bytecode کامپایل میشود که معمولا و نه همیشه با سرعت کمتری نسبت به سی پلاس پلاس اجرا میشود ولی با یک بار کامپایل میتوان در هر سیستمی که jvm یا CLR در انها وجود داشته باشد اجرا شود



معادل .net در جاوا j2se , j2ee هست و برای اجرای برنامه نوشته شده با سی شارپ پس از کامپایل به CLR نیاز هست که در دنیای جاوا JVM اینگار را انجام میدهد


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


مونو کمی با .net فرق دارد وتنها زبان میانی آنها یکی هست و از کلاسهای متفاوتی استفاده میکنند (رابط گرافیکی مونو از gtk# استفاده میکند)


کد native به کدی گفته میشه که از api های سیستم عامل استفاده کنه و به زبان ماشین باشه


فریم ورک به مجوعه ابزارهای تولید نرم افزار میگند که میتواندشامل compiler,GUI designer ,IDE,... و همینطور مهمترین قسمت ان ,مجموعه توابع و کلاسهای استاندارد آن فریمورمک میباشد

گوگل!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

prince0fpersia
دوشنبه 07 اسفند 1391, 23:07 عصر
یه چیزو نمیفهمم ... اینکه یعنی چی یکبار کامپایل باید بشه تا در سیستم مقصد اجرا بشه؟

این یکبار کامئایل رو برنامه نویس انجام میده؟ یا زمانی که user برای اولین بار برنامه رو نصب میکنه انجام میشه به طور خودکار؟ و یا هربار که برنامه توسط کاربر run میشه این کامئایل رخ میده؟

یه چیزی هم که هیچوقت نفهمیدم این بود که توی محیط های برنامه نویسی معمولا سه تا گزینه هست : Build , Run with debug , run with realese

build که فکر میکنم برنامه رو کامئایل میکنه ، اما فرق realese & debug چیه؟
اصلا دیباگ کردن یعنی چی و دیباگر که میگن چیه؟ چه کار میکنه؟


در آخر اینکه فرق مفسر با کامپایلر چیه؟ آیا ویرژوال ماشینایی شبیه jvm or CLI همون مفسر هستند؟

من همه اینهارو گوگل کردم اما به جواب سوالم نرسیدم که میپرسم!

SlowCode
جمعه 11 اسفند 1391, 17:43 عصر
الان میبینیم مثلا سیستم عامل گوشی های جدید رفته سمن اندروید و زبان اصلی این سیستم عامل هم جاوا هست . شنیدم جاوا روی لینوکس هم خوب سرمایه گذاری میکنه . آیا روزی جای C++‎ رو میگیره؟ یا حتی الان گرفته یا نه؟
اینکه میگن جاوا هست یعنی برنامه های اندروید(Application)هاش رو با جاوا می نویسن.
نه جاوا نمیتونه جای ++C رو بگیره. چون مثلا واسه نوشتن سیستم عامل ها از اسمبلی و ++C استفاده میکنن ولی با جاوا نمیشه.
کلا C++,C خیلی معروفت از جاوا هست. چه تو ویندوز چه تو لینوکس و مک

یه چیزو نمیفهمم ... اینکه یعنی چی یکبار کامپایل باید بشه تا در سیستم مقصد اجرا بشه؟

این یکبار کامئایل رو برنامه نویس انجام میده؟ یا زمانی که user برای اولین بار برنامه رو نصب میکنه انجام میشه به طور خودکار؟ و یا هربار که برنامه توسط کاربر run میشه این کامئایل رخ میده؟
Compile رو برنامه نویس بعد اینکه کدنویسی رو تموم میکنه انجام میده. یه کلیک میکنه و Compiler این کار رو میکنه و فایل اجرایی رو تولید میکنه. یعنی زبان مثلا دلفی رو تبدیل میکنه به زبان ماشین.

یه چیزی هم که هیچوقت نفهمیدم این بود که توی محیط های برنامه نویسی معمولا سه تا گزینه هست : Build , Run with debug , run with realese

اینا رو دات نت کارا بهتر میفهمن.

اصلا دیباگ کردن یعنی چی و دیباگر که میگن چیه؟ چه کار میکنه؟

دیباگ یعنی خطایابی.یعنی کدها رو خط به خط اجرا میکنی تا ببینی کجا مشکل داره و مقادیر رو کنترل میکنی.

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

ویرژوال ماشینایی
منظورت Virtual machine هست؟نه بابا اون یه چیز دیگه است.

UfnCod3r
جمعه 11 اسفند 1391, 22:36 عصر
خخخخخخخخ
ناسلامتی اینجا قسمت مهندسی نرم افزاره ! :قهقهه:
زبان های Native کلا بحثشون با Managed فرق داره !



یه چیزو نمیفهمم ... اینکه یعنی چی یکبار کامپایل باید بشه تا در سیستم مقصد اجرا بشه؟

شما مثلا این رو در نظر بگیر
int a = 2
int b = 3
int d = a + c
کامپیوتر چنین چیزی نمیفهمه کامپیوتر فقط عدد می فهمه (کد ماشین)
این ها باید تبدیل بشن به کدی متناسب با سیستم مورد نظر مثلا + میشه دستور add اسمبلی و خود اون دستور هم مثلا میشه عدد 12
و ممکنه تو سیستمی 64 بیتی یه عدد دیگه بشه ! پس برنامه باید براس سیستم عامل های مختلف کامپیل بشه !
توی زبان های منیجد اینا می شن بایت کد یعنی همون دستور مثلا میشه عدد 10 . و این 10 رو ماشین مجازی یا .. می گیره و معادلش رو برای سیستم تولید می کنه !
یکی از دلایل کندی هم همینه !
حتی همین تبدیل هم طول میکشه ! معمولا برنامه های سنگین جاوا ای یا دات نتی خیلی طول می شکن تا بالا بیان ! خیلی ها هم هنگ می کنن :قهقهه:

بیلدو دیباگ هم که اسمشون روشه ! فکرنکنم نیاز به توضیح باشه !
حالت دیباگ بری اشکل زدایی هست ! مثلا تو این حالت سرریزی ها ، کنترل ارایه ها و .. صورت می گیره و ... کلا برا اشکال یابیه !
اما تو حالت یلز این چیزا نیست و کد هم سریع تره !

اینا رو باید خودتون با برنامه نویسی پی دی پی تجربه کنید ! با گوگل چیزی گیر نمیاد !

naghshineh m&h
سه شنبه 26 شهریور 1392, 22:29 عصر
زبان اسمبلی بالاترین سرعت را دارد مثل کد نویسی با 8086

naghshineh m&h
سه شنبه 26 شهریور 1392, 22:31 عصر
اما سورس سی پلاس پلاس توسط کامپایلر به به زبان ماشین ترجمه میشه و وابسته به سیستم عامل و معماری سی پیو هست و بعد از اسمبلی و سی بالاترین سرعت رو در اجرا داره


اشتباه است

زبان ماشین مثل X8086 بالاترین سرعت اجرا را دارد بدون وابستگی

pars1376
جمعه 26 اردیبهشت 1393, 19:07 عصر
هر سه زبان م ورد اشاره شی گرا هستند اما سورس سی پلاس پلاس توسط کامپایلر به به زبان ماشین ترجمه میشه و وابسته به سیستم عامل و معماری سی پیو هست و بعد از اسمبلی و سی بالاترین سرعت رو در اجرا داره
اما کد سی شارپ به کد میانی ( language intermediate ) و کد جاوا به Bytecode کامپایل میشود که معمولا و نه همیشه با سرعت کمتری نسبت به سی پلاس پلاس اجرا میشود ولی با یک بار کامپایل میتوان در هر سیستمی که jvm یا CLR در انها وجود داشته باشد اجرا شود



معادل .net در جاوا j2se , j2ee هست و برای اجرای برنامه نوشته شده با سی شارپ پس از کامپایل به CLR نیاز هست که در دنیای جاوا JVM اینگار را انجام میدهد



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



مونو کمی با .net فرق دارد وتنها زبان میانی آنها یکی هست و از کلاسهای متفاوتی استفاده میکنند (رابط گرافیکی مونو از gtk# استفاده میکند)



کد native به کدی گفته میشه که از api های سیستم عامل استفاده کنه و به زبان ماشین باشه



فریم ورک به مجوعه ابزارهای تولید نرم افزار میگند که میتواندشامل compiler,GUI designer ,IDE,... و همینطور مهمترین قسمت ان ,مجموعه توابع و کلاسهای استاندارد آن فریمورمک میباشد

گوگل!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


CLR دقیقا چیه؟
البته یاده بگید لطفا