مشاهده نسخه کامل
: تفاوت بین زبان سطح بالا وسطح پایین چیه
تفاوت بین زبان سطح بالا وسطح پایین چیه؟
کاربرد هرکدوم چیه؟
مزایا ومعایب هرکدوم؟
ممنون میشم کمک کنید
M o h a m m @ d
17-03-2012, 18:41
تفاوتشون در زبان نویسیشه زیان سطح بالا به زبان قابل فهمه یعنی به زبان گفتاری نزدیکه و اسونه مثل زبان c , pascal , java ....ولی زبان سطح پایین به زبان ماشین ,و سخته یاد گیریش مثل اسمبلی. . .
برای اینکه کامپیوتر زبان سطح بالا بفهمه از یک کامپایلر استفاده میشه تا برنامه ای که نوشته شده به زبان ماشین که همون صفر و یک تبدیل کنه.
ولی برای زبان سطح پایین لازم نیست برا همین سرعت اجراشم بالاست
کاربرد خاصی ندارن همه زبان برنامه نویسین که براساس قابل فهم بودن تقسیم کردن .
مزایا زبان سطح بالا که معلومه هرچی به زبان گفتاری نزدیک باشه راحتره یاد گیریش .
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خیلی ممنون ..اما اینجا مزایا وکاربرداشوننوشته
زبان سطح پایین فوق العاده قدرتمند و انعطاف پذیره.
سرعت اجرای برنامه های نوشته شده به زبانهای سطح پایین بسیار بالاست.مثلا ویندوز xp با زبان C که یه زبان میانی هست نوشته شده اما برخی قسمتهای هسته ویندوز با اسمبلی نوشته شده تا کارایی بره بالا.
زبان سطح پایین وابسته به سخت افزاره اما زبانهای سطح بالا از نظر کاربر platform independent هست.شما کاری نداری پردازنده کامپیوتر مقصد چیه.صرفا برای سیستم عامل کدنویسی میکنی.اما تو زبان سطح پایین باید به سخت افزاری که براش کد مینویسی احاطه داشته باشی.
برنامه های سیستمی و سطح پایین با زبانهای سطح پایین یا میانی نوشته میشند.مثلا برنامه های بوت سیستم یا کد میکرو کنترلرها.که کاملا تخصصی هستند.کسی که بخواد سیستم عامل کد کنه یا کامپایلر بنویسه یا درایور سخت افزاری بنویسه باید با زبانهای سطح پایین خو بگیره اما کسی که میخواد اپلیکیشنهای سیستم عامل رو بنویسه فقط در حد ابتدایی و آشنایی با مبانی باید با زبانهای سطح پایین و میانی کار کرده باشه.یعنی 99 درصد برنامه نویسای با تجربه هم کار زیادی با زبانهای سطح پایین ندارند.
یه نمونه کد ماکرو اسمبلر :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تمام این کد با آدرسهای حافظه،ثباتهای پردازنده و در انتها فراخوانی یه وقفه سخت افزاری سرو کار داره و هیچی از کاربردش متوجه نمیشیم.
یه نمونه کد سطح بالا (C#)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر یه کم با زبان انگلیسی و یه کم برنامه نویسی آشنا باشید تا حدودی معنی این کد یک خطی رو میفهمید.یه جعبه پیغام نمایش میده.کد معادلی که در زبان سطح پایین اینکار رو بکنه بسیار طولانیه مضاف بر اینکه شما باید با مباحث win32 api و ترسیم گرافیکی و کتابخانه های مربوطه و ... آشنایی داشته باشی که خیلی پیچیده هست.
زبانهای سطح بالا و به خصوص ویژوال این پیچیدگیها رو مخفی میکنند و تولید و توسعه برنامه های کاربردی رو آسون میکنند اما هرچه زبان سطح بالاتر انعطاف پذیری کمتر.کد تولید شده حجیمتر و سرعت اجرا پایینتر.احتیاج به کتابخانه ها و runtime ها بیشتر و ... اما برنامه امنتر،قابل انتقالتر،استانداردتر،عیب یابی و توسعه راحتتر و ...
اصلا نباید به زباهای سطح پایین فکر کنید.کاملا تخصصیه.
میپرسی تفاوتشون چیه...؟
اینکه هرچی سطح زبان بالاتر باشه قابلیت فهم اون برای انسان بیشتره ...همین...!!
قراره در آینده زبانهایی بیاد که برنامه نویسی آنها مثل نوشتن داستان باشه...
مثلا به کامپیوترهمینجوری بگی :" دوتا عدد بگیر و باهم جمع کن و حاصل رو نمایش بده... "
یعنی دقیقا همین عبارت بشه کد برنامه نویسی شما و اینجوری میشه که سطح زبان مدام بالاتر و بالاتر میره...
712:از زبان های سطح پایین مانند اسمبلی زمانی استفاده میشود که شما بخواهید مستقیما به سخت افزار دسترسی داشته باشید قابلیت هاشو نشون میده...
اما از زبان های سطح بالا برای برنامه هایی که عملیاتی که زیاد با سخت افزار ارتباط نداره و نوشتن اون به زان های سطح پایین سخته استفاده میشه...
V i r u s e r
04-03-2014, 22:46
تاپیک ۲۰۱۲!
--
خب اینجا یک سری اطلاعات غلط داده شده بنده سعی می کنم در حد توانم یک مقداری گفته ها رو اصلاح کنم.
زبان سطح پایین زیانی هست که مستقیما به زبان ماشین ترجمه میشه. سازنده ی پردازنده (مثلا اینتل) دستوراتی رو برای پردازنده تعریف می کنه و سپس برای برنامه نویس ها این دستورات رو در قالب یک کتاب مرجع و به زبان اسمبلی منتشر می کنه. برای مثل دستور Nop به زبان ماشین 9C (در مبنای ۲: 10011100) ترجمه میشه.
برای تشبیه زبان سطح پایین فرض کنید که یک متن به یک زبانی در اختیار دارید و کلمه کلمه و بدون هیچ نوع تغییر دستوری و اضافه و کم کردن اون ها رو به یک زبان دیگه ترجمه می کنید.
از زبان اسمبلی که یکم فاصله بگیریم میرسیم به زبان هایی مثل C و Pascal که به اون ها سطح میانی هم گفته میشه. در این زبان ها هنگامی که برنامه نویس کد هاشو کامپایل می کنه٬ کامپایلر ابتدا دستورات نوشته شده رو به زبان سطح پایین ترجمه می کنه و بعد کد زبان سطح پایین به زبان ماشین ترجمه میشه. برنامه ی کامپایل شده در این زبان ها تمام دستوراتی که در هنگام اجرا ازشون استفاده می کنند رو در خودشون دارن و نیازی به برنامه ی اضافه ی Runtime برای اجرا ندارند. به خاطر همین به انها Native گفته میشود.
زبان های سطح بالا مثل ++C ٬ #C و Java که اتفاقا بیشترشون هم شیء گرا هستند برای راحتی کار برنامه نویس و خوانا بودن کد ها طراحی میشن. سرعت برنامه نویسی در این زبان ها بالاست ولی در مقایسه با زبان های Native سرعت اجرای کمتری دارند (این تفاوت سرعت نامحسوس اما در شرایطی تاثیر گذار هست) چون برای اجرا به کتاب خانه ای اجرا نیاز دارند که بتونن دستورات برنامه نویس رو اجرا کنند. به این کتاب خانه ها Runtime می گویند. مثل Net Framework. و JRE
به علت وجود این کتاب خانه ها برنامه های کامپایل شده معمولا حجم کمتری از دیسک را در مقایسه با برنامه های Native استفاده می کنند اما رم بیشتری رو مصرف میکنند و بدون وجود Runtime اجرا نمیشوند.
--
اما مقایسه زبان ها: هر زبانی برای کاربری خاصی بهینه تر و برای بعضی کاربری ها ضعیف تر عمل می کنه. باید بدونید که در اینده چه نوع نرم افزاری می خواهید بنویسید
برای مثال برای نوشتن سیستم عامل استفاده از زبانی مثل Java بسیار مسخره و کار دشواریه در حالی که زبان C و اسمبلی برای این کار فرمانروایی می کنند.
اما اگر می خواهید برای چندین سیستم عامل مختلف به صورت پرتابل برنامه نویسی کنید٬ شاید جاوا برای این کار بهتر باشه. ++C هم با توجه به وجود استاندارد ها بسیار خوب و عالیه و زبان مورد علاقه ی بنده هست علاوه بر اینکه شیء گرایی رو پشتیبانی می کنه پرتابل و Native هست.
#C هم برای برنامه نویسی در محیط ویندوز ٬ ویندوز فون و طراحی وبسایت مناسبه
برخلاف چیزی که گفته شد٬اسمبلی مستقیما به شما دسترسی سخت افزاری نخواهد داد. دسترسی مستقیم به سخت افزار مربوط به پردازنده میشه و در حالت Real Mode هر زبانی دسترسی مستقیم به سخت افزار داره. در حالت Protected mode و Long mode که همون ۳۲ بیت و ۶۴ بیت هست برای دسترسی به سخت افزار یا باید سیستم عامل باشید و یا باید از طریق سیستم عامل به سخت افزار دسترسی داشته باشید
چیزی که اسمبلی در مقابل زبان های سطح بالا داره٬ دستورات خاصی هست که در پردازنده وجود داره و زبان های سطح بالا مستقیما این دستورات وجود نداره. برای مثال وقتی می خواهید در سیستم عامل پردازنده رو روی حالت Long mode قرار بدید تنها راه موجود استفاده از اسمبلی است. در باقی شرایط معمولا زبان C تقریبا با همون سرعت اسمبلی توانایی اداره ی یک سیستم عامل رو داره. به همین دلیل Linux رو با C نوشتن و تنها در مواقع لزوم از دستورات اسمبلی در بین کد های C استفاده شده :n01:
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.