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

محتوای حذف‌شده محتوای افزوده‌شده
کمی از غلط املایی ها کاسته شد.
برچسب‌ها: ویرایشگر دیداری ویرایش همراه ویرایش از وبگاه همراه
FreshmanBot (بحث | مشارکت‌ها)
جز اصلاح فاصله مجازی + اصلاح نویسه با ویرایشگر خودکار فارسی
خط ۶:
عموماً زبان‌های [[برنامه‌نویسی]] را به پنج نسل تقسیم می‌کنند:
* نسل اول [[زبان ماشین]] است همان زبان صفرو یک
* نسل دوم زبان‌هایی مانند اسمبلی و مشتق آن است که قابل فهم تر برای انسان میمی‌باشد باشد
* نسل سوم زبان‌هایی مانند کوبول و پی ال وان و… است که دستورهای قابل فهم تر برای انسان و نیاز به کامپایلرها
* نسل چهارم مثل زبان‌های اوراکل و [[فاکس پرو]] و اس کیو ال هاال‌ها است و این نسل چیزی نزدیک به محاوره‌های انسانی است.
* نسل پنج زبان‌هایی مانند prolog , ops5، [[ویژوال بیسیک]] - تمرکز بر [[حل مسئله]] و استفاده از الگوریتمهایالگوریتم‌های نوشته شده توسط برنامه‌نویس
 
یک زبان برنامه‌نویسی یک [[زبان مصنوعی انگلیسی]] است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شده‌است.زبان‌های برنامه‌نویسی برای ایجاد برنامه‌هایی به کار می‌روند که رفتار یک ماشین را مشخص می‌کنند، الگوریتم دقیق را بیان می‌کنند، یا روشی برای ارتباط انسانند.
خط ۴۶:
 
== کاربرد ==
زبان برنامه‌نویسی یک مکانیزم [[ساخت یافته]] برای تعریف داده‌ها، و عملیات یا تبدیل‌هایی که ممکن است بطوربه‌طور اتوماتیک روی آن داده انجام شوند، فراهم می‌کند. یک [[برنامه‌نویس]] از انتزاعات آماده در زبان استفاده می‌کند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از ساده‌ترین عناصر موجود بیان می‌شوند (مفاهیم ابتدایی نامیده می‌شوند).
[[زبان‌های برنامه‌نویسی]] با غالب [[زبان‌های انسانی]] تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبان‌های طبیعی برای ارتباط با دیگر انسان‌ها، نویسندگان و گویندگان می‌توانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آن‌ها متوجه شده باشد. اگرچه، مجازا، رایانه‌ها «دقیقاً آنچه که به آن‌ها گفته شده را انجام می‌دهند.» و نمی‌توانند «بفهمند» که نویسنده دقیقاً چه کدی مد نظر نویسنده بوده‌است] البته امروزه برنامه‌هایی برای انجام این کار تولید شده‌اند و تلاش‌های بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده‌است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطوربه‌طور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص می‌کند.
برنامه‌های یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورهای را در یک مرحله فعل و انفعال مفسر تایپ کند. در این حالت «دستور»ها همان برنامه‌ها هستند، که اجرای آن‌ها زنجیروار به هم مرتبطند. به زبانی که برای دستور دادن به برنامه‌ای استفاده می‌شود، زبان اسکریپت می‌گویند.
بسیاری از زبان‌ها کنار گذاشته شده‌اند، برای رفع نیازهای جدید جایگزین شده‌اند، با برنامه‌های دیگر ترکیب شده‌اند و در نهایت استعمال آن‌ها متوقف شده‌است. با وجود اینکه تلاش‌هایی برای طراحی یک زبان رایانه« کامل» شده‌است که تمام اهداف را تحت پوشش قرار دهد، هیچ‌یک نتوانستند بطوربه‌طور کلی این جایگاه را پر کنند. نیاز به زبان‌های رایانه‌ای گسترده از گستردگی زمینه‌هایی که زبان‌ها استفاده می‌شوند، ناشی می‌شود:
* محدوده برنامه‌ها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستم‌های بسیار بزرگ نوشته شده توسط صدها برنامه‌نویس است.
* توانایی برنامه‌نویس‌ها: از تازه‌کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفه‌ای‌هایی که با پیچیدگی قابل توجهی کنار می‌آیند.
* برنامه‌ها باید سرعت، اندازه و سادگی را بسته به سیستم‌ها از ریزپردازنده‌ها تا ابر رایانه‌ها متناسب نگه دارند.
خط ۱۳۴:
اغلب زبان‌های برنامه‌نویسی یک کتابخانه هسته مرتبط دارند (گاهی اوقات "کتابخانه استاندارد" نامیده می‌شوند، مخصوصاً وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به‌طور قراردادی توسط تمام پیاده‌سازی‌های زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتم‌ها، داده ساختارها و مکانیزم‌های ورودی و خروجی پرکاربرد را در خود دارد.
کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار می‌کنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هسته‌ای را مشخص می‌کنند که باید در تمام پیاده‌سازی‌ها موجود باشند، و در زبان‌های استاندارد شده این کتابخانه هسته ممکن است نیاز باشد؛ بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبان‌ها به گونه‌ای تعریف شده‌اند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند.
برای مثال در جاوا، یک رشته به عنوان نمونه‌ای از کلاس “java.lang.String” تعریف شده‌است؛ مشابهاً، در سمال تاک(smalltalk) یک تابع بی‌نام (یک "بلاک") نمونه‌ای از کلاس BlockContext کتابخانه می‌سازد. بطوربه‌طور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان می‌باشد، و در نتیجه طراحان [[زبان حتی]] این زحمت را نیز تحمل نمی‌کنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده‌سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.
 
=== مدیریت منابع و نشت حافظه ===
خط ۱۵۶:
 
=== پیاده‌سازی ===
پیاده‌سازی یک زبان برنامه‌نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سخت‌افزار و نرم‌افزار را فراهم می‌کند. بطوربه‌طور وسیع، دو راه رسیدن به پیاده‌سازی زبان برنامه‌نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطوربه‌طور کلی با هر بک از ابن دو روش می‌توان یک زبان را پیاده‌سازی کرد.
 
خروجی یک کامپایلر ممکن است با سخت‌افزار یا برنامه‌ای به نام مفسر اجرا شود. در برخی پیاده‌سازی‌ها که از مفسر استفاده می‌شود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده‌سازی‌های زبان برنامه‌نویسی بیسیک کامپایل می‌کنند و سپس کد را خط به خط اجرا می‌کنند.
خط ۱۷۰:
در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین [[زبان برنامه‌نویسی سطح بالا]] طراحی شده برای کامپیوتر پلان کلکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.
 
کامپیوترهای اوایل ۱۹۵۰، بطوربه‌طور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه‌نویسی زبان ماشین نسل اول توسط نسل دومی که [[زبان اسمبلی]] نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه‌نویسی اسمبلی، که برای استفاده از دستورهای ماکرو تکامل یافته بود، توسط سه زبان برنامه‌نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تأثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه‌نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه‌نویسی به شدت متأثر از محدودیت‌های رابط بودند.
 
=== پالایش ===