مقایسه زبان‌های برنامه‌نویسی (نحو)

از ویکی‌پدیا، دانشنامهٔ آزاد

این مقایسه زبان‌های برنامه‌نویسی، ویژگی‌های نحو زبان را برای بیش از ۵۰ زبان برنامه‌نویسی رایانه مقایسه می‌کند.

عبارات[ویرایش]

هنگامی که زبان برنامه‌نویسی‌ای دارای عبارت است، معمولاً قراردادهایی برای موارد زیر دارد:

  • جداکننده عبارات
  • پایان دهنده‌های عبارات
  • ادامه خط

یک جداکننده عبارت، مرز بین دو عبارت دیگر را مشخص می‌کند. پایان دهنده عبارت، پایان یک عبارت را تعریف می‌کند. زبان‌هایی که انتهای خط را به عنوان پایان یک عبارت در نظر می‌گیرند، زبان‌های «خط گرا» نامیده می‌شوند.

«ادامه خط» قراردادی در زبان‌های خط گرا است که در آن کاراکتر خط جدید می‌تواند به اشتباه به عنوان یک پایان دهنده عبارت تفسیر شود. در چنین زبان‌هایی با یک دستور اجازه می‌دهند که یک عبارت در چندین خط نوشته شوند.

ادامه خط[ویرایش]

ادامه خط به‌طور کلی به عنوان بخشی از تحلیل واژگانی انجام می‌شود. یک خط جدید معمولاً منجر به اضافه شدن یک نشانه به جریان نشانه می‌شود، مگر اینکه ادامه خط تشخیص داده شود.


فضای خالی – زبان‌هایی که نیازی به ادامه ندارند


امپرسند به عنوان آخرین کاراکتر خط


بک اسلش به عنوان آخرین کاراکتر خط


بکتیک به عنوان آخرین کاراکتر خط


خط فاصله به عنوان آخرین کاراکتر خط


زیرخط به عنوان آخرین کاراکتر خط


جداکننده کاما به عنوان آخرین کاراکتر خط

  • روبی (نظر ممکن است به دنبال جداکننده باشد)


جداکننده براکت چپ به عنوان آخرین کاراکتر خط


اپراتور به عنوان آخرین شیء خط

  • روبی (نظر ممکن است به دنبال اپراتور باشد)


اپراتور به عنوان اولین کاراکتر خط ادامه‌دار


بک اسلش به عنوان کاراکتر اول خط ادامه‌دار


برخی از شکل‌های نظر درون خطی به عنوان ادامه خط عمل می‌کند


[پایان و شروع] با استفاده از نقل قول‌های معمولی

  • پیش پردازنده C و C++: رشته به‌طور معمول به پایان می‌رسد و با شروع با یک نقل قول در خط بعدی ادامه می‌یابد.

کتابخانه‌ها[ویرایش]

وارد کردن کتابخانه راهی برای خواندن عبارات، برنامه‌ها یا بسته‌های خارجی، احتمالاً کامپایل شده‌است. وارد کردن یک کتابخانه را می‌توان بر اساس سطح (ماژول، بسته، کلاس، عبارات،...) و بر اساس نحو (نام دستورالعمل، ویژگی‌ها) طبقه‌بندی کرد.

وارد کردن فایل

وارد کردن بسته

وارد کردن کلاس

وارد کردن رویه/تابع

راحتی نحوی

برای دسترسی به کد مورد نیاز است

بلوک‌ها[ویرایش]

بلوک نمادی برای گروهی از دو یا چند عبارت یا دیگر واحدهای کد است که به گونه‌ای مرتبط هستند که یک کل را تشکیل می‌دهند.


آکولاد { . . . }

پرانتز ( . . . )

کروشه [ . . . ]

‍‍‍‍‍‍‍‍‍beginend

doend

dodone

doend

X … end (مثلاً ifend):

  • روبی (if ، while ، until ، def ، class ، دستورات moduleاکمل (حلقه‌های for & whileمتلب (شرط‌های if & switch ، حلقه‌های for & while ، عبارت try ، package ، classdef ، properties ، methods ، events ، و بلوک‌های functionلوآ (then / else و function)

(begin . . .)

(progn ...)

(do . . .)

تو رفتگی

سایر

نظرات[ویرایش]

نظرات را می‌توان بر اساس موارد زیر طبقه‌بندی کرد:

  • سبک (داخلی/بلاک)
  • قوانین تجزیه (نادیده گرفته شده / درون یابی / ذخیره شده در حافظه)
  • بازگشتی (تودرتو/غیر تودرتو)
  • موارد استفاده (رشته‌های اسنادی / نظرات پرتاب کننده / سایر موارد)

نظرات درون خطی[ویرایش]

نظرات درون خطی معمولاً آنهایی هستند که از یک کاراکتر دلخواه یا دنباله ای از نشانه‌ها برای نشان دادن شروع یک نظر و از خط جدید (یا پایان حط) برای نشان دادن پایان یک نظر استفاده می‌کنند.

مثال‌ها:

نماد زبان‌ها
C فرترن I تا فرترن ۷۷ (C در ستون ۱)
REM بیسیک، فایل‌های بچ
:: فایل‌های بچ، COMMAND.COM، خط فرمان
NB. جی; از مخفف متداول (از لحاظ تاریخی) Nota bene، لاتین به معنای "خوب توجه داشته باشید"(note well).
ای‌پی‌ال
# پوسته بورن و سایر پوسته‌های یونیکس، کبرا، پرل، پایتون، روبی، سید۷، پاورشل، پی‌اچ‌پی، آر، ساخت، میپل، الیکسیر، جولیا، نیم[۶]
% تک، پرولوگ، متلب،[۷] ارلنگ، S-Lang، ویژوال پرولوگ، پست اسکریپت
// اکشن اسکریپت، سی (C99)، سی پلاس پلاس، سی شارپ، دی، اف شارپ، گو، جاوا، جاوا اسکریپت، کاتلین، آبجت پاسکال (دلفیآبجکتیو-سی، پی‌اچ‌پی، راست، اسکالا، ساس، سوئیفت، Xojo
' مانکی، ویژوال بیسیک، وی‌بی اسکریپت، اسمال بیسیک، گامباس، Xojo
! فرترن، بیسیک پلاس، اینفور، پیک بیسک
; اسمبلی اکس۸۶, اوتوهات‌کی، اوتوات، Lisp, لیسپ معمولی، کلوژر، ریبل، رد، Scheme
-- ایفوریا، هسکل، اس‌کیوال، ایدا، اپل اسکریپت، ایفل، لوآ، وی‌اچ‌دی‌ال، اس‌جی‌ام‌ال، PureScript, الم
* اسمبلر S/360 (* در ستون ۱)، کوبول I تا کوبول ۸۵، PAW، فرترن IV تا فرترن ۷۷ (* در ستون ۱)، پیک بیسیک، جی‌ای‌ام‌اس (* در ستون ۱)
|| کرل
" ویم، آباپ
\ فورث
*> کوبول ۹۰

بلوک نظرات[ویرایش]

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

مثال‌ها:

نماد زبان‌ها
comment ~ ; الگول ۶۰، سیمولا
¢ ~ ¢ ،

# ~ #, co ~ co ,

comment ~ comment
الگول۶۸[۸][۹]
/* ~ */ اکشن اسکریپت، اوتوهات‌کی، سی، سی++، سی شارپ، دی،[۱۰] گو، جاوا، جاوا اسکریپت، کاتلین، آبجکتیو-سی، پی‌اچ‌پی، PL/I، پرولوگ، رکس، راست (قابل تودرتو)، اسکالا (قابل تودرتو), ساس (SAS)، ساس (SASS)، اس‌کیوال، سوئیفت (می‌تواند تودرتو باشد) ویژوال پرولوگ، سی‌اس‌اس
#cs ~ #ce اوتوات[۱۱]
/+ ~ +/ دی (می‌تواند تو در تو باشد)[۱۰]
/# ~ #/ کبرا (قابل تودرتو است)
< # ~ # > پاورشل
<! -- ~ -- > اچ‌تی‌ام‌ال، اکس‌ام‌ال
=begin ~ =cut پرل
#`( ~ ) راکو
=begin ~ =end روبی
#< TAG > ~ #</ TAG >, #stop ~ EOF ,

#iffalse ~ #endif ~ #ifntrue #endif

#if false ~ #endif, #if !true ~ #endif
S-Lang[۱۲]
{- ~ -} هسکل (می توان تودرتو)
(* ~ *) دلفی، ام‌ال، مثمتیکا، آبجکت پاسکال، پاسکال، سید۷، Applescript، OCaml (قابل تودرتو)، استاندارد ام‌ال (قابل تودرتو)، Maple، نیواسپیک، اف شارپ
{ ~ } دلفی، آبجکت پاسکال، پاسکال، رد
{# ~ #} نونجاکس، ترکه
{{! ~ }} سبیل، دسته
{{! -- ~ --}} هندلبارس (نمی‌توان تودرتو باشد، اما ممکن است حاوی {{ و }})باشد)
|# ~ #| کرل
%{ ~ %} MATLAB[۷] (نمادها باید در یک خط جداگانه باشند)
#| ~ |# لیسپ، اسکیم، راکت (در هر سه قابل تودرتو هستند).
#= ~ =# جولیا[۱۳]
#[ ~ ]# نیم[۱۴]
-- [[ ~ ]]،

--[=[ ~ ]=] ،

--[= . . =[ ~ ]= . . . =]
لوآ (پرانتزها می‌توانند هر تعداد منطبق = کاراکتر داشته باشند؛ می‌توانند در جداکننده‌های غیر منطبق تو در تو قرار گیرند)
" ~ " اسمال‌تاک
(comment ~ ) کلوژر

جستارهای وابسته[ویرایش]

  1. Bash Reference Manual, 3.1.2.1 Escape Character
  2. Python Documentation, 2. Lexical analysis: 2.1.5. Explicit line joining
  3. https://ss64.com/nt/syntax-brackets.html
  4. "Scripts - Definition & Usage | AutoHotkey".
  5. For an M-file (MATLAB source) to be accessible by name, its parent directory must be in the search path (or current directory).
  6. "Nim Manual".
  7. ۷٫۰ ۷٫۱ "Mathworks.com". Archived from the original on 21 November 2013. Retrieved 25 June 2013. خطای یادکرد: برچسب <ref> نامعتبر؛ نام «Mathworks.com» چندین بار با محتوای متفاوت تعریف شده است. (صفحهٔ راهنما را مطالعه کنید.).
  8. "Algol68_revised_report-AB.pdf on PDF pp. 61–62, original document pp. 121–122" (PDF). Retrieved 27 May 2014.
  9. "HTML Version of the Algol68 Revised Report AB". Archived from the original on 17 March 2013. Retrieved 27 May 2014.
  10. ۱۰٫۰ ۱۰٫۱ "DLang.org, Lexical". Retrieved 27 May 2014.
  11. "AutoItScript.com Keyword Reference, #comments-start". Retrieved 27 May 2014.
  12. "slang-2.2.4/src/slprepr.c – line 43 to 113". Retrieved 28 May 2014.
  13. "Punctuation · The Julia Language".
  14. "Nim Manual".