منو
 کاربر Online
720 کاربر online
 : کامپیوتر
برای پاسخ دادن به این ارسال باید از صفحه قبلی اقدام کنید.   کاربر offline دبیر گروه کامپیوتر 3 ستاره ها ارسال ها: 1679   در :  سه شنبه 30 آبان 1391 [14:48 ]
  زبان های برنامه نویسی
 

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

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

در یک رایانه رقمی مدرن، تمامی داده ها بصورت صفر و یک سیستم عددی باینری
ذخیره می شوند. عموما داده بیانگر اطلاعاتی از دنیای واقعی همچون نام ها،
حساب های بانکی و … می باشد. بنابراین زبان های برنامه نویسی داده های
سطح پایین باینری را به این مفاهیم سطح بالا سازماندهی می کنند.
سیستم ویژه ای که چگونگی سازماندهی داده ها در برنامه را مشخص می کند، نوع
داده ی یک زبان برنامه نویسی نامیده می شود. طراحی و مطالعه ی سیستم های
نوع را تئوری نوع می نامیم. زبان ها را می توان به دو دسته ی نوع دار
ایستا و نوع دار پویا طبقه بندی کرد. در زبان های نوع دار ایستا برای
تعریف هر متغیر یا زیر برنامه، نوع آن نیز مشخص می شود. بر خلاف آن در
زبانهای نوع دار پویا نیازی به تعریف دقیق نوع متغیر ها یا زیر برنامه ها
نیست و خود زبان نوع آن ها را استنتاج می کند. گاه به این گونه زبان ها
نوع دار مخفی گفته می شود.
در زبان های نوع دار ایستا، انواع از پیش تعیین شده ای برای اجزای داده ها
(همچون اعداد در یک بازه ی خاص، رشته ها یا حروف و …) وجود دارد و متغیر
ها (مقادیری که از دید برنامه نام دارند) می توانند فقط یک نوع ثابت را
داشته باشند و عملیات خاصی را بپذیرند. مثلا اعداد نمی توانند به نام
تبدیل شوند و برعکس. اغلب زبانهای اصلی نوع دار ایستا همچون C و C++ و
Java به تعریف واضح تمامی انواع نیاز دارند. و بیان می شود که این کار فهم
برنامه را سریع می کند.
زبان های شیءگرا به برنامه نویسان امکان تعریف انواع داده ای شیء که
متغیرها و توابع ذاتی خود را دارند می دهند (که به ترتیب ویژگیها و روش ها
نامیده می شوند).
یک برنامه ی شامل اشیاء به آنها اجازه ی عمل مستقل را می دهد اما زیر
برنامه ها را تحت تأثیر قرار می دهد: این اثر متقابل می تواند در زبان کد
کردن طراحی می شود تا اشیاء با اثر متقابل را شبیه سازی کند. این کار یک
عمل مفید و شهودی است. زبان هایی مثل python و Ruby به عنوان زبان های شی
گرا گسترش یافته اند. آنها نسبتاً برای یادگیری و استفاده آسان هستند و در
محدوده های برنامه نویسی حرفه ای و غیر حرفه ای عمومیت پیدا کرده اند.
تفکر عامه چنین است که شی گرایی، زبان ها را شهودی می کندو دسترسی عمومی و
قدرت کاربردهای کامپوتری مشتری پسند را افزایش می دهد.
جدای از اینکه کی و چگونه تطابق بین انواع و عبارات تعیین شده است، یک
سؤال اساسی وجود دارد که که زبان چه انواعی را تعریف می کند و چه انواعی
را به عنوان مقادیر عبارات (ارزش های بیان شده) و به عنوان مقادیر نام دار
(ارزش های دلالت شده) اجازه می دهد. زبان های سطح پایین مثل C به برنامه
اجازه ی نام دهی به مکان های حافظه و ثابت های زمان کامپایل را می دهد در
حالی که به عبارت امکان باز گرداندن مقادیر که در ثبات ماشین قرار گرفته
اند را می دهد؛ ANSIC این قابلیت را با اجازه به عبارات به منظور باز
گرداندن مقادیر struct ، توسعه داده است. (پیوند رکورد را ببینید). زبان
های تابعی اغلب نام هارا به منظور دلالت مستقیم بر مقادیر محاسبه شده ی
زمان اجرا، به جای مکان های حافظه ی نام دار که مقادیر در آن ذخیره می
شوند، محدود می کنند و در بعضی از موارد به مقادیر دارای نام امکان تغییر
نمی دهند. زبان هایی که از جمع آوری زباله استفاده می کننددر امکان دادن
به ساختارهای داده ای مختلط دلخواه به عنوان مقادیر بیان شده آزادند. در
پایان، در بعضی زبان ها، رویه ها تنها به عنوان مقادیر استدلال شده اجازه
ی استفاده دارند (نمی توانند با عبارات باز گردانده شوندیا به نام های
جدید محدود شوند)؛ در دیگر زبان ها رویه ها می توانند به عنوان پارامتر به
رویتن ها منتقل شوند اما نمی توانند محدود به نام های جدید گردند؛ در بعضی
دیگر آنها در استفاده مانند مقدار بیان شده محدودیتی ندارند اما در زمان
اجرا نمونه های جدیدی نمی تواند ایجاد شود؛ و در انواع دیگری، رویه ها
مقادیر کلاس اول هستند که می توانند در زمان اجرا ایجاد شوند.
دستور العمل و جریان کنترل
وقتی داده در حال مشخص شدن است، ماشین باید دستور بگیرد که چگونه عملیات
را روی آن انجام دهد. عبارات اولیه با استفاده ار کلمات کلیدی، ساختارهای
دستوری تعریف شده مشخص می گردند. هر زبان این واحد های عبارت خوش رفتار را
می گیرد و با استفاده از سیستم ترتیب دهی آنها را ترکیب می کند وابسته به
نوع زبان، روش های دسته بندی این عبارات اولیه متفاوت است. این ویژگی به
برنامه نویس این امکان را می دهد که برنامه بنویسد که توانایی پوشش انواع
ورودی ها به جای تعداد محدودی از آنها را داشته باشد. در ضمن، ورای
دستورالعمل های دستکاری داده ها، دستورالعمل های نوعی موجود در زبان
آنهایی هستند که برای جریان کنترل به کار می روند ( شاخه ها، تعاریف
موردی، حلقه ها، ترکیب های تابعی).
فلسفه ی طراحی
به خاطر اهداف ذکر شده، هر زبان با استفاده از طراحی، فلسفه ی ویژه ای
گسترش یافت. بعضی از جنبه ها، با روشی که زبان از ساختمان های داده
استفاده می کند، تأکید می شدند یا اینکه نشانگذاری ویژه ی آن، راه های
مشخص حل مسائل یا بیان ساختارشان را ترویج کرد.
چون زبان های برنامه نویسی زبان های مصنوعی هستند، نیاز به درجه ی نظم
زیاد دارند تا به دقت مشخص کنندکه چه عملی مطلوب است. زبان های برنامه
نویسی تحمل خطا را ندارند؛ اگر چه بار شناخت و کاربرد لغات ویژه با کمک
پیغام های تولید شده به وسیله ی پیاده سازی زبان برنامه نویسی کاهش یافته
است. زبان های کمی وجود دارند که آزادی زیادی در ایجاد تغییر می دهند یعنی
در آن یک برنامه بخش هایی از خودش را برای مدیریت موردهای جدید دوباره
نویسی می کند. نوعاً، تنها زبان ماشین و اعضای خانواده Lisp ) scheme و
Common Lisp ) این قابلیت را دارند. بعضی از زبان ها مانند MUMPS و زبان
های با کامپال مجدد پویا، رقابت کننده ها و دیگر ماشین های مجازی از این
تکنیک برای اجرای بهتر استفاده می کنند.
راه های زیادی برای طبقه بندی ربان های برنامه نویسی وجود دارد. مقاصد
کاملاً مشخص نیستند. یک استاندارد زبان خاص ممکن است در چند طبقه بندی
پیاده سازی شود. مثلاً، یک زبان می تواند هر دو پیاده سازی تفسیر شده و
کامپایل شده را داشته باشد.
به علاوه اغلب زبان های کامپایل شده شامل بعضی از ویژگی های مفسر شده ی
زمان اجرا هستند. یک مثال قابل توجه رشته با فرمت I/o است که در یک زبان
تخصصی نوشته شده و برای توصیف چگونگی تبدیل داده های برنامه به نمونه ی
خارجی به کار می رود. این رشته در زمان اجرا تفسیر شده است. بسیاری از
برنامه نویسان این قابلیت سازماندهی را بسیار ارزشمند می دانند.

تاریخچه زبان های برنامه نویسی

پیشرفت زبان های برنامه نویسی بیسار نزدیک به پیشرفت عملیات الکترونیکی و فیزیکی مورد استفاده در کامپیوتر های امروزی است.
طراحی اولین ماشین های شبیه کامپیوتر به Chales Babbage نسبت داده می شود
که Ada levelace برنامه های زیادی را برای آن نوشته بودد ( معادل زبان
اسمبلی ). در دهه ۱۹۴۰ اولین کامپیوترهای الکتریکی مدرن به وجود می آمدند.
بعضی نیازهای محاسبه ی نظامی یک عامل توسعه ی کامپیوترهای اولیه بود. مثل
رمزگذاری، رمزگشایی محاسبه ی مسیر گلوله و متراکم سازی زیاد مورد نیاز در
توسعه ی بمب های اتمی. در آن زمان، کامپیوترها بسیار بزرگ، گران و کند
بودند: پیشرفت ها در تکنولوژی الکترونیک در سال های جنگ منجر به ساخت
کامپیوترهای الکترونیکی عملی تر شد. در آن زمان تنها konrad zuse استفاده
از زبان برنامه نویسی ( که عاقبت به عنوان Plankalkul گسترش یافت) مثل
آنهایی که امروزه مسائل را حل می کنند، را پیشنهاد کرد.
پیشرفت های بعدی در تکنولوژی الکترونیک (ترانزیستورها، مدارهای مجتمع و
تراشه ها) گسترش کامپیوترهای مفیدتر و قابل اعتمادتر را سرعت بخشیدند. این
پیشرفت با توسعه ی زبان های کامیوتری استاندارد برای اجرا روی آنها موازی
شد. موجود بودن و استفاده ی آسان از کامپیوترها منجر شد که افراد بیشتری
با کامپیوترها کار کنند. پیشرفت انفجاری بعدی منجر به ایجاد اینترنت، حضور
کامپیوترهای شخصی در همه جا، و استفاده ی روز افزون از برنامه نویسی
کامپیوتر با استفاده از زبان هایی مثل phthon، Visual Basic و غیره شد.
زبان های اصلی
زبان های زیر زبان های برنامه نویسی اصلی هستند ک حداقل توسط هزاران برنامه نویس در سراسر دنیا استفاده می شوند:
Ada
ALGOL
APL
AWK BASIC
C
C++
C#
COBOL
ColdFusion
Common Lisp
Delphi
Eiffel
Focus
Fortran
Haskell
IDL
Java
Java script
Lisp
Modula
Objective-C
OCaml
Pascal
Perl
PHP
Prolog Python
Ruby
SAS
Scheme
اسمال تاک
SQL
Visual Basic

  امتیاز: 0.00