زبان برنامه‌نویسی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جز ←‏جایگزینی با [[وپ:اشتباه|اشتباه‌یاب]]: بویسله⟸به وسیله، بیشتردر⟸بیشتر در، ، درگردشند⟸در گردشند، ، دستورمداری⟸دستور مداری، ، ریزپردازن...
جز ←‏جایگزینی با [[وپ:اشتباه|اشتباه‌یاب]]: دستورات⟸دستورهای، ، ، سکریبت⟸اسکریپت، ، دارندغالبا⟸دارند غالبا، ، ابنده⟸آینده،
خط ۸:
* نسل اول [[زبان ماشین]] - زبان صفرو یک
* نسل دوم زبانهایی مانند اسمبلی -قابل فهم تر برای انسان
* نسل سوم زبانهایی مانند کوبول و پی ال وان و... -دستوراتدستورهای قابل فهم تر برای انسان و نیاز به کامپایلر ها
* نسل چهارم مثل زبانهای اوراکل و [[فاکس پرو]] و اس کیو الها - نزدیک به محاوره‌های انسانی
* نسل پنج زبانهایی مانند prolog , ops5 - تمرکز بر [[حل مسئله]] و استفاده از الگوریتمهای نوشته شده توسط برنامه نویس
 
یک زبان برنامه‌نویسی یک [[زبان مصنوعی]] است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شده‌است. زبان‌های برنامه‌نویسی برای ایجاد برنامه‌هایی به کار می‌روند که رفتار یک ماشین را مشخص می‌کنند، الگوریتم دقیق را بیان می‌کنند، و یا روشی برای ارتباط انسانند.
بسیاری از زبان‌های برنامه‌نویسی تعدادی قالب از ویژگی‌های نوشته شده دستوری(syntax) و معناشناسی (semantics) دارند، چرا که رایانه‌ها دستوراتدستورهای دقیقاً مشخص نیاز دارند. برخی توسط سند خصوصیات (specification document) تعیین شده‌اند. (برای مثال یک استاندارد ISO)، در حالی که برخی دیگر دارای پیاده‌سازی غالبی می‌باشند.(مانند Perl)
اولین زبان برنامه‌نویسی به قبل از اختراع رایانه باز می‌گردد، و برای هدایت رفتار ماشین‌هایی مانند دستگاه‌های نساجی اتوماتیک و نوازنده‌های پیانو به کار می‌رفت.
هزاران زبان برنامه‌نویسی خلق شده‌اند، بیشتر در زمینهٔ رایانه، زمینه‌ای که هر ساله بسیاری دیگر ایجاد می‌شوند.
خط ۳۸:
ویژگی‌هایی که غالباً برای تشکیل یک زبان برنامه‌نویسی مهم شمرده می‌شوند:
* تابع :یک زبان برنامه‌نویسی، زبانی است که برای نوشتن برنامه‌های رایانه‌ای به کار می‌رود که رایانه‌ای را برای انجام محاسبات یا اجرای الگوریتم و یا احتمالاً کنترل دستگاه‌های خارجی مثل چاپگر، ربات و... درگیر می‌کنند.
* هدف: زبان‌های برنامه‌نویسی با [[زبان‌های طبیعی]] تفاوت دارند و آن اینکه زبان‌های طبیعی فقط برای فعل و انفعالات بین مردم به کار می‌روند، در حالیکه زبان‌های برنامه‌نویسی همچنین به انسانها اجازه می‌دهد که از طریق دستوراتدستورهای با ماشین‌ها ارتباط برقرار کنند. برخی زبان‌های برنامه‌نویسی بوسیله یک دستگاه استفاده می‌شوند تا دستگاه دیگری را کنترل کند. برای مثال برنامه‌های پست اسکریپت(post script) غالباً توسط برنامه دیگری برای کنترل یک چاپگر و یا نمایشگر ایجاد می‌شوند.
* ساختارها: زبان‌های برنامه‌نویسی ممکن است ساختارهایی برای تعریف و تغییر [[داده ساختارها]] یا کنترل جریان اجرا داشته باشند.
* توان بیانگر: [[نظریه محاسبات]]، زبان‌ها را بوسیله محاسباتی که توان بیان آنها را دارند [[طبقه‌بندی]] می‌کند. تمام زبان‌های «کامل تورینگ» می‌توانند مجموعه یکسانی از الگوریتم‌ها را پیاده‌سازی کنند.ANSI/ISO SQL و Charity مثال‌هایی هستند از زبان‌هایی که کامل تورینگ نیستند، ولی غالباً زبان برنامه‌نویسی نامیده می‌شوند.
خط ۴۷:
زبان برنامه‌نویسی یک مکانیزم [[ساخت یافته]] برای تعریف داده‌ها، و عملیات یا تبدیل‌هایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم می‌کند. یک [[برنامه نویس]] از انتزاعات آماده در زبان استفاده می‌کند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از ساده‌ترین عناصر موجود بیان می‌شوند (مفاهیم ابتدایی نامیده می‌شوند).
[[زبان‌های برنامه‌نویسی]] با غالب [[زبان‌های انسانی]] تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبان‌های طبیعی برای ارتباط با دیگر انسان‌ها، نویسندگان و گویندگان می‌توانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانه‌ها "دقیقاً آنچه که به آنها گفته شده را انجام می‌دهند." و نمی‌توانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بوده‌است] البته امروزه برنامه‌هایی برای انجام این کار تولید شده‌اند و تلاش‌های بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص می‌کند.
برنامه‌های یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستوراتدستورهای را در یک مرحله فعل و انفعال مفسر تایپ کند. در این حالت "دستور"ها همان برنامه‌ها هستند، که اجرای آنها زنجیروار به هم مرتبطند. به زبانی که برای دستور دادن به برنامه‌ای استفاده می‌شود، زبان اسکریپت می‌گویند.
بسیاری از زبان‌ها کنار گذاشته شده‌اند، برای رفع نیازهای جدید جایگزین شده‌اند، با برنامه‌های دیگر ترکیب شده‌اند و در نهایت استعمال آنها متوقف شده‌است. با وجود اینکه تلاش‌هایی برای طراحی یک زبان رایانه" کامل" شده‌است که تمام اهداف را تحت پوشش قرار دهد، هیچ‌یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبان‌های رایانه‌ای گسترده از گستردگی زمینه‌هایی که زبان‌ها استفاده می‌شوند، ناشی می‌شود:
* محدوده برنامه‌ها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستم‌های بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
خط ۵۵:
* در نهایت، برنامه نویس‌ها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
 
یک سیر رایج در گسترش زبان‌های برنامه‌نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه‌نویسی اولیه به [[سخت‌افزار رایانه]] گره خورده بودند. همانطور که زبان‌های برنامه‌نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستوراتدستورهای سخت‌افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتر در واحد زمان داشته باشند.
«پردازنده‌های زبان طبیعی» به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه‌نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. «ادسگر دیجسترا» موافق بود که استفاده از یک [[زبان رسمی]] برای جلوگیری از مقدمه سازی ساختارهای بی‌معنی واجب است، و زبان برنامه‌نویسی طبیعی را با عنوان «احمقانه» رد کرد، «آلن پرلیس» نیز مشابها این ایده را رد کرد.
مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از:
خط ۱۵۴:
در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین [[زبان برنامه‌نویسی سطح بالا]] طراحی شده برای کامپیوتر پلانکالکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.
 
کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه‌نویسی زبان ماشین نسل اول توسط نسل دومی که [[زبان اسمبلی]] نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه‌نویسی اسمبلی، که برای استفاده از دستوراتدستورهای ماکرو تکامل یافته بود، توسط سه زبان برنامه‌نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه‌نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه‌نویسی به شدت متاثر از محدودیت‌های رابط بودند.
 
=== پالایش ===
خط ۱۶۴:
عنوان اولین زبان کاملاً [[شئ گرا]] معرفی شد.
* C بین سال‌های ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه‌نویسی سیستمی طراحی شد و همچنان محبوب است.
* PASCAL و BASIC (که در ابندهآینده به زبان [[ویژوال بیسیک]] معروف شد) در ابتدا یک زبان آموزشی بودند ولی بعدها با ارائه کامپایلرهای مختلف آن کاربردی شدند.
* LISP از جمله زبان‌هایی بود که براساس پردازش لیست‌ها کار می‌کرد و برای الگوریتم‌های [[هوش مصنوعی]] مناسب بود.
* Prolog، طراحی شده در ۱۹۷۲، اولین زبان [[برنامه‌نویسی منطقی]] بود؛ که برای الگوریتم‌های هوش مصنوعی مناسب بود.
خط ۱۸۴:
پیشرفت زبان برنامه‌نویسی همچنان ادامه پیدا می‌کند، هم در تحقیقات و هم در صنعت. جهت‌های فعلی شامل امنیت و وارسی [[قابلیت اعتماد]] است، گونه‌های جدید مدولی(mixin، نماینده‌ها، جنبه‌ها) و تجمع [[پایگاه داده]].
 
۴GLها نمونه‌ای از زبان‌هایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه داده‌های اسکالر را برگردانند، مجموعه‌هایی را تغییر داده و بر می‌گردانند که برای اکثر زبان‌ها متعارفند. Perl برای مثال، با «مدرک اینجا» خود می‌تواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت،اسکریپت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه‌نویسی با تناسب متغیر در «مدرک اینجا» استفاده کند.
 
=== سنجش استفاده از زبان ===