نکاتی برای اینکه بدانیم از کجا آغاز کنیم و چگونه یک برنامه نویس کامپیوتر شویم-2 - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

نکاتی برای اینکه بدانیم از کجا آغاز کنیم و چگونه یک برنامه نویس کامپیوتر شویم-2 [بسته شد]

+6 امتیاز

نکاتی برای اینکه بدانیم از کجا آغاز کنیم و چگونه یک برنامه نویس کامپیوتر شویم_1

عموماً زبانهای برنامه نویسی را به پنج نسل تقسیم میكنند:
* نسل اول زبان ماشین - زبان صفرو یك
* نسل دوم زبانهایی مانند اسمبلی -قابل فهم تر برای انسان
* نسل سوم زبانهایی مانند كوبول و پی ال وان و... -دستورات قابل فهم تر برای انسان و نیاز به كمپایلرها
* نسل چهارم مثل زبانهای اوراكل و فاكس پرو و اس كیو الها - نزدیك به محاوره های انسانی
* نسل پنج زبانهایی مانند prolog , ops5 - تمركز بر حل مسئله و استفاده از الگوریتمهای نوشته شده توسط برنامه نویس

زبان برنامهنویسی سطح پایین
در علوم رایانه زبان برنامهنویسی سطح پایین یا زبان برنامهنویسی کوتاهتراز (Low-level programming language) زبانی است که به مقدار کم یا هیچ انتزاعی نسبت به ریزپردازنده فراهم نمینماید. عبارت سطح پایین به این معنی نیست که این زبان نسبت به زبان برنامهنویسی سطح بالا ارزش کمتری دارند بلکه به معنای عدم وجود انتزاع بین این زبان و ساختار ریزپردازنده است از این جهت گاهی این زبانها را نزدیک به سختافزار نیز مینامند. سطح بالا و سطح پایین نسبی هستند و یک برنامهنویس جاوا ممکن است زبان سی را سطح پایین بداند در حالی یک برنامهنویس سی زبان ماشین را در سطحی پایینتر از خود میداند.
زبانهای سطح پایین را گاهی به دو دسته نسل اول و نسل دوم تقسیم مینمایند.

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

دومین نسل
زبان نسل دوم زبان اسمبلی است. این زبان با وجود این که در سطح انتزاع بالاتری قرار دارد اما ساختار ریزپردازنده مانند ثباتها و دستورالعملها را مورد توجه قرار میدهد. این دستورالعملهای ساده سپس تبدیل به کد ماشین میگردد. کد اسمبلی را میتوان به سطح بالاتری از انتزاع گسترش داد. به عنوان مثال زبان اسمبلی را میتوان بصورت قابل خواندنتری مانند کد زیر نوشت.

زبان برنامهنویسی سطح بالا
زبان برنامهنویسی سطح بالا یا زبان برنامهنویسی بلندتراز (High-level programming language) زبانی است که نسبت به زبان برنامهنویسی سطح پایین راحتتر قابل استفاده و قابل حمل بین سیستمهای متفاوت و دارای انتزاع بیشتری هستند. چنین زبانهایی عموماً از عملیات CPU مانند مدلهای دسترسی به حافظه و مدیریت حوزه دور هستند.

مشخصات زبانهای سطح بالا
عبارت زبانهای سطح بالا بدین معنی نیست که این زبان نسبت به زبانهای سطح پایین برتر هستند بلکه اگر شما میزان اطلاع از نحوه عملکرد رایانهها را به عنوان ملاک در نظر بگیرید برعکس این مطلب درست است. عبارت زبان سطح بالا در حقیقت به معنای دوری این زبانها از زبان ماشین است. به جای کار کردن با ثباتها، آدرسهای حافظه، و فراخوانی پشته زبان برنامهنویسی سطح بالا از متغیرها، آرایهها، و عبارات پیچیده ریاضی و منطقی استفاده مینماید. این زبانها مستقیما مانند زبان اسمبلی به زبان ماشین ترجمه نمیگردند. ویژگیهای دیگر همانند توابع کار با رشتهها، مفاهیم شیگرایی، و کار با ورودی و خروجی در فایلها در آنها وجود دارد.
به بیان دیگر در حالی که زبان برنامهنویسی سطح بالا برنامهنویسی را آسانتر مینماید اما زبان برنامهنویسی سطح پایین برنامههای بهینهتری تولید میکند. در یک زبان سطح بالا این امکان را فراهم میسازد تا اجزای پیچیده را به اجزای سادهتر اما هنوز پیچیده تقسیم نموده تا برنامهنویس را از انجام کارهای پیچیده بازدارد. به این دلیل برنامههایی که نیاز به کار با سرعت بالا و بهینهتر دارند باید با زبان سطح پایین نوشته شود حتی اگر زبان سطح بالا این کار را سادهتر سازد.
زبانهای سطح بالا پر کاربردترین ودر عین حال جذابترین و کاربردی ترین محیط های برنامه نویسی را شامل می شوند، چرا که محیط آن کاربر پسند(User Friendly) بوده و یادگیری اصطلاحات و مفاهیم آن در محیط و قالبی گرافیکی به کاربر ارائه می شود، برنامه نویسان به راحتی به یادگیری دستورات و قواعد آن به دلیل اینکه به زبان محاوره ایی و انگلیسی نزدیک است می پردازند، اینگونه زبانها از سرعت کمتری نسبت به زبانهای سطح میانی و پایین برخوردار می باشد، به دلیل اینکه دستورات بایستی به زبان قابل فهم برای ماشین تبدیل گردند که این خود زمان بر می باشد، ولی در عین حال فضای کمتری اشغال می کنند که نمونه ایی از این زبانها، زبانهای برنامه نویسی پاسکال، C، ویژوال، دلفی، فرترن و جاوا می باشند.
امروزه با توجه به ساختار پیچیده ریزپردازندهها کامپایلرهای پیشرفته با استفاده از تکنیکهای بهینهسازی برنامههای بهتری از برنامههای نوشته شده با دست فراهم مینمایند.

معنای نسبی
توجه به این نکته ضروری است که عبارت سطح بالا و سطح پایین نسبی هستند. در ابتدا زبان اسمبلی سطح پایین و زبان کوبول و سی و غیره بدلیل استفاده از متغیر و توابع و عبارات سطح بالا محسوب میشدند. با این وجود برنامهنویسان ممکن است سی را یک زبان سطح پایین محسوب نمایند چرا که امکان دسترسی به حافظه به صورت مستقیم و امکان دسترسی به کد اسمبلی را نیز فراهم میسازد. برای اطلاع بیشتر در این مورد وبسایت C2's page about high-level languages را ببینید

مدلهای اجرا
تفسیر:زبانهای تفسیر شده مستقیماً خوانده و اجرا میگردند بدون مرحله ترجمه.
کامپایل شونده:زبانهای ترجمه شده ابتدا به فیل قابل اجرا تبدیل میشوند سپس اجرا میگردند دو نوع از این زبانها وجود دارد:

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

تولید کد ماشین
بعضی زبانها مستقیما به زبان ماشین تبدیل میگردند. ماشینهای مجازی که نمایش میانی را دریافت کرده و آن را اجرا مینمایند مرز میان زبانهای ترجمه شونده و نمایش میانی را که سابقا مشخص بودهاند مبهم نموده است.
ترجمه شونده زبانهای سطح بالا ممکن است به یک زبان سطح پایین ترجمه گردند که معمولاً زبان هدف سی میباشد

زبان نسل چهارم زبان برنامهنویسی هسکل
هسکل (HASKELL) یکی از زبانهای برنامهنویسی تابعی است. چیزی که اکثر دانشآموزان از زبان برنامهنویسی میدانند، عبارت است از مجموعهای از توابع، کلاسها، تایپها و یک محیط برای نوشتن یک برنامه. این زبان یک زبانها برنامهنویسی تنبل و بدون اثرجانبی(side-effect) است. یعنی در ذات دستور ورودی و خروجی ندارد
نوشته شده   توسط سید مرتضی حقایی در وبلاگ http://baharmohr.blogfa.com/post-18.aspx

بسته شد با پیغام: سوال غیر واقعی
سوال شده اسفند 22, 1392  بوسیله ی jahadgar (امتیاز 380)   24 41 54
بسته شد مرداد 8, 1393 بوسیله ی BlueBlade
...