BCPL

از ویکیپدیا، دانشنامه آزاد
پرش به ناوبری پرش به جستجو
BCPL
الگورویه ای ، امری ، ساختاری
طراحی شده توسطمارتین ریچاردز
اولین بار ظاهر شد1967 ; 54 سال پیش [1] ( 1967 )
نظم و انضباط تایپبی تایپ (همه چیز یک کلمه است )
تحت تأثیر
CPL
تحت تأثیر قرار گرفت
B , C , Go [2]

BCPL (" زبان برنامه نویسی ترکیبی پایه ") یک زبان برنامه نویسی رویه ای ، ضروری و ساختاریافته است . BCPL که در اصل برای نوشتن کامپایلر برای زبان های دیگر در نظر گرفته شده بود ، دیگر مورد استفاده رایج نیست. با این حال، تأثیر آن هنوز احساس می شود زیرا نسخه حذف شده و تغییر نحوی BCPL، به نام B ، زبانی بود که زبان برنامه نویسی C بر اساس آن بود. BCPL چندین ویژگی بسیاری از زبان های برنامه نویسی مدرن را معرفی کرد، از جمله استفاده از بریس های فرفری برای محدود کردن بلوک های کد. [3] BCPL اولین بار توسط مارتین ریچاردز اجرا شداز دانشگاه کمبریج در سال 1967. [1]

طراحی

BCPL طوری طراحی شد که بتوان کامپایلرهای کوچک و ساده ای برای آن نوشت. برخی از کامپایلرها می توانند در 16 کیلوبایت اجرا شوند . علاوه بر این، کامپایلر اصلی، که خود با BCPL نوشته شده بود، به راحتی قابل حمل بود. بنابراین BCPL یک انتخاب محبوب برای بوت استرپ کردن یک سیستم بود. [ نیاز به منبع ] دلیل اصلی قابل حمل بودن کامپایلر در ساختار آن نهفته است. این به دو بخش تقسیم شد: قسمت جلویی منبع را تجزیه کرد و O-code، یک زبان میانی را تولید کرد . قسمت پشتی کد O را گرفت و آن را به کد ماشین برای ماشین هدف ترجمه کرد. فقط 1 / 5کد کامپایلر برای پشتیبانی از یک ماشین جدید نیاز به بازنویسی داشت، کاری که معمولاً بین 2 تا 5 ماه انسان طول می کشید . این رویکرد بعداً رایج شد (به عنوان مثال پاسکال ، جاوا ).

این زبان در داشتن تنها یک نوع داده غیرمعمول است : یک کلمه ، تعداد ثابتی از بیت ها، که معمولاً برای همسویی با کلمه ماشین معماری انتخاب می شوند و ظرفیت کافی برای نشان دادن هر آدرس ذخیره سازی معتبری دارند. برای بسیاری از ماشین های آن زمان، این نوع داده یک کلمه 16 بیتی بود. این انتخاب بعداً زمانی که BCPL در ماشین‌هایی که در آن‌ها کوچک‌ترین آیتم آدرس‌پذیر یک کلمه نبود بلکه یک بایت یا در ماشین‌هایی با اندازه‌های کلمه بزرگ‌تر مانند 32 بیت یا 64 بیت استفاده می‌شد، یک مشکل مهم بود. [ نیازمند منبع ]

تفسیر هر مقدار توسط عملگرهای مورد استفاده برای پردازش مقادیر تعیین شد. (به عنوان مثال، +دو مقدار را با هم اضافه کرد، آنها را به عنوان اعداد صحیح در نظر گرفت ؛ !غیرمستقیم از طریق یک مقدار، به طور موثر آن را به عنوان یک اشاره گر در نظر گرفت.) برای اینکه این کار کار کند، پیاده سازی هیچ گونه بررسی نمی کرد . نماد مجارستانی برای کمک به برنامه نویسان برای جلوگیری از خطاهای نوع سهوی ایجاد شد. [ نیازمند منبع ]

عدم تطابق بین BCPL است گرایش کلمه و بایت گرا سخت افزار در راه های مختلفی قرار گرفت. یکی از آنها ارائه روال های استاندارد کتابخانه برای بسته بندی و بازکردن کلمات در رشته های بایت بود. بعداً دو ویژگی زبان اضافه شد: عملگر انتخاب میدان بیت و عملگر غیرمستقیم بایت infix (که با علامت مشخص می‌شود %). [ نیازمند منبع ]

BCPL پیوندهایی را که واحدهای کامپایل جداگانه را در بر می گیرند به روشی منحصر به فرد مدیریت می کند. هیچ متغیر جهانی قابل اعلام توسط کاربر وجود ندارد. در عوض یک بردار سراسری، شبیه به "blank common" در فرترن وجود دارد. تمام داده های به اشتراک گذاشته شده بین واحدهای کامپایل مختلف شامل اسکالرها و اشاره گرها به بردارهایی است که در یک مکان از پیش تنظیم شده در بردار جهانی ذخیره شده اند. بنابراین فایل‌های سرصفحه (فایل‌های موجود در هنگام کامپایل با استفاده از دستورالعمل "GET") به ابزار اصلی همگام‌سازی داده‌های جهانی بین واحدهای کامپایل تبدیل می‌شوند که حاوی دستورالعمل‌های "GLOBAL" هستند که فهرست‌هایی از نام‌های نمادین را ارائه می‌دهند، هر کدام با یک عدد جفت شده است که نام را با آن مرتبط می‌کند. کلمه خطاب شده عددی مربوطه در بردار سراسری. علاوه بر متغیرها، بردار سراسری شامل پیوندهایی برای رویه های خارجی است. این امر بارگذاری پویا واحدهای کامپایل را بسیار ساده می کند. BCPL به جای تکیه بر لینک بارگذار پیاده سازی اساسی، به طور موثر کنترل فرآیند پیوند را به برنامه نویس می دهد. [استناد مورد نیاز ]

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

BCPL اولین زبان برنامه نویسی پرانتز بود و بریس ها از تغییرات نحوی جان سالم به در بردند و به وسیله ای رایج برای نشان دادن عبارات کد منبع برنامه تبدیل شدند. در عمل، در صفحه کلیدهای محدود روز، برنامه های منبع اغلب از دنباله ها $(و $)به جای نمادها {و }. // نظرات تک خطی BCPL، که توسط C پذیرفته نشدند ، دوباره در C++ و بعداً در C99 ظاهر شدند .

کتاب BCPL: زبان و گردآورنده آن فلسفه BCPL را به شرح زیر شرح می دهد:

فلسفه BCPL یکی از ظالمی نیست که فکر می کند بهتر می داند و قانون را در مورد آنچه مجاز و غیر مجاز است وضع می کند. در عوض، BCPL بیشتر به عنوان یک خدمتکار عمل می کند که خدمات خود را بدون شکایت به بهترین شکل ممکن ارائه می دهد، حتی زمانی که با مزخرفات ظاهری روبرو می شود. همیشه فرض بر این است که برنامه نویس می داند چه کاری انجام می دهد و محدودیت های جزئی درگیر آن نمی شود. [4]

تاریخچه

BCPL برای اولین بار توسط مارتین ریچاردز از دانشگاه کمبریج در سال 1967 اجرا شد. [1] BCPL پاسخی به مشکلات پیشین خود، زبان برنامه نویسی کمبریج بود که بعدها به زبان برنامه نویسی ترکیبی (CPL) تغییر نام داد ، که در اوایل دهه 1960 طراحی شد. ریچاردز BCPL را با "حذف آن ویژگی های زبان کامل که کامپایل را دشوار می کند" ایجاد کرد. اولین پیاده سازی کامپایلر، برای IBM 7094 تحت سیستم اشتراک زمان سازگار (CTSS)، زمانی نوشته شد که ریچاردز در حال بازدید از پروژه MAC در موسسه فناوری ماساچوست بود.(MIT) در بهار 1967. این زبان برای اولین بار در مقاله ای که به کنفرانس مشترک کامپیوتری بهار 1969 ارائه شد، توصیف شد. [ نیازمند منبع ]

شایعه شده است که BCPL در ابتدا مخفف "Bootstrap Cambridge Programming Language" بوده است، اما CPL از زمانی که توسعه در BCPL متوقف شد، هرگز ایجاد نشد، و نام اختصاری بعداً برای کتاب BCPL دوباره تفسیر شد. [ توضیحات لازم است ] [ نیازمند منبع ]

BCPL زبانی است که برنامه اصلی hello world با آن نوشته شده است. [5] اولین MUD نیز به زبان BCPL ( MUD1 ) نوشته شد.

چندین سیستم عامل به طور جزئی یا کامل با BCPL نوشته شده بودند (به عنوان مثال، TRIPOS و اولین نسخه های AmigaDOS ). BCPL همچنین زبان اولیه مورد استفاده در پروژه Xerox PARC Alto ، اولین کامپیوتر شخصی مدرن بود . در میان پروژه های دیگر، سیستم آماده سازی اسناد براوو به زبان BCPL نوشته شده است.

یک کامپایلر اولیه که در سال 1969 بوت استرپ شد، با شروع با نوار کاغذی از کد O کامپایلر Atlas 2 مارتین ریچاردز ، سری ICT 1900 را هدف قرار داد . این دو ماشین دارای طول کلمات متفاوت (48 در مقابل 24 بیت)، رمزگذاری کاراکترهای مختلف، و نمایش رشته های بسته بندی شده متفاوت بودند - و بوت استرپ موفقیت آمیز باعث افزایش اعتماد به عملی بودن روش شد.

در اواخر سال 1970، پیاده سازی هانیول 635 و هانیول 645 ، IBM 360 ، PDP-10 ، TX-2 ، CDC 6400 ، UNIVAC 1108 ، PDP-9 ، KDF 9 و اطلس وجود داشت . در سال 1974 یک گویش BCPL در BBN بدون استفاده از O-code میانی اجرا شد. پیاده سازی اولیه یک کامپایلر متقابل بود که بر روی TENEX PDP-10 های BBN میزبانی می شد و مستقیماً PDP-11 های مورد استفاده در اجرای BBN از IMP های نسل دوم مورد استفاده درآرپانت .

همچنین نسخه ای برای BBC Micro در اواسط دهه 1980 توسط Richards Computer Products تولید شد، شرکتی که توسط جان ریچاردز، برادر دکتر مارتین ریچاردز تأسیس شد. [6] پروژه روز رستاخیز بی بی سی استفاده از زبان ساخته شده است. نسخه‌های BCPL برای رایانه‌های Amstrad CPC و Amstrad PCW نیز در سال 1986 توسط خانه نرم‌افزار بریتانیا Arnor Ltd. MacBCPL برای Apple Macintosh در سال 1985 توسط Topexpress Ltd در Kensington، انگلستان منتشر شد.

هم طراحی و هم فلسفه BCPL به شدت B را تحت تاثیر قرار دادند که به نوبه خود بر C تأثیر گذاشت . [7] برنامه نویسان در آن زمان بحث می کردند که آیا جانشین نهایی C باید "D"، حرف بعدی در الفبا، یا "P"، حرف بعدی در نام زبان مادر نامیده شود. زبانی که بیشتر به عنوان جانشین C پذیرفته شده است C++ (با عملگر افزایشی++ C است [8] اگرچه در این میان یک زبان برنامه نویسی D نیز وجود دارد.

در سال 1979، پیاده سازی BCPL برای حداقل 25 معماری وجود داشت. این زبان به تدریج با محبوبیت C در سیستم های غیریونیکس از بین رفت.

مارتین ریچاردز نسخه مدرن BCPL را در وب‌سایت خود نگهداری می‌کند که آخرین بار در سال 2018 به‌روزرسانی شده است. این می‌تواند برای اجرا در سیستم‌های مختلف از جمله Linux، FreeBSD و Mac OS X تنظیم شود. آخرین توزیع شامل کتابخانه‌های گرافیکی و صدا است. راهنمای جامع او همچنان به برنامه‌نویسی در آن، از جمله برای تحقیقاتش در مورد موسیقی خودکار موسیقی زیر ادامه می‌دهد .

یک نوع MIME غیررسمی رایج برای BCPL text/x-bcpl است .

مثالها

اگر این برنامه‌ها با استفاده از نسخه فعلی Cintsys مارتین ریچاردز (دسامبر 2018) اجرا می‌شوند، LIBHDR، START و WRITEF باید به حروف کوچک تغییر کنند تا از خطا جلوگیری شود.

فاکتوریل چاپ:

دریافت "LIBHDR"

اجازه دهید شروع شود() = VALOF $(
	برای من = 1 تا 5 انجام دهید
		WRITEF("%N! = %I4*N"، I، FACT(I))
	نتیجه 0
$)

AND FACT(N) = N = 0 -> 1، N * FACT(N - 1)

تعداد راه حل های مسئله N ملکه :

دریافت "LIBHDR"

جهانی $(
	تعداد: 200
	ALL: 201
$)

اجازه دهید (LD، ROW، RD) باشد
	ردیف آزمایشی = همه پس از آن
		COUNT := COUNT + 1
	دیگر $(
		LET POSS = ALL & ~(LD | ROW | RD)
		تا زمانی که آماده شود = 0 $ انجام دهید (
			اجازه دهید P = POSS & -POSS
			POSS := POSS - P
			TRY(LD + P << 1, ROW + P, RD + P >> 1)
		$)
	$)

اجازه دهید شروع شود() = VALOF $(
	ALL: = 1
	برای من = 1 تا 12 DO $(
		COUNT: = 0
		TRY(0، 0، 0)
		WRITEF("%I2-QUEENS مشکل %I5 SOLUTIONS*N دارد"، I، COUNT)
		ALL := 2 * ALL + 1
	$)
	نتیجه 0
$)

منابع

  1. ^ a b c "مارتین ریچاردز (جایزه پیشگامان کامپیوتر 2003)" . انجمن کامپیوتر IEEE بایگانی شده از نسخه اصلی در 2017-11-24 . بازیابی شده در 2017-11-24 .
  2. ^ پایک، راب (2014-04-24). "سلام گوفرز" . بازیابی شده در 2016-03-11 .
  3. ^ https://www.cl.cam.ac.uk/~mr10/bcplman.pdf راهنمای کاربر BCPL Cintsys و Cintpos، براکت های بخش 2.1.4
  4. ^ ریچاردز، مارتین؛ ویتبی استریونز، کالین (1980). BCPL: زبان و کامپایلر آن . انتشارات دانشگاه کمبریج. پ. 5. ISBN 978-0521785433.
  5. ^ BCPL ، فایل اصطلاحی
  6. «توسعه فنی رویترز: واژه نامه - THE BARON» . www.thebaron.info .
  7. کرنیگان، برایان دبلیو و دنیس ام. ریچی (1978). زبان برنامه نویسی C . آزمایشگاه های تلفن بل. پ. 2. ISBN 0-13-110163-3.CS1 maint: از پارامتر نویسنده استفاده می کند ( پیوند )
  8. ^ History of C++ بازیابی شده در 12 دسامبر 2017

ادامه مطلب

  • مارتین ریچاردز، کتابچه راهنمای مرجع BCPL (یادداشت M-352، پروژه MAC ، کمبریج، MA، ایالات متحده آمریکا، ژوئیه، 1967)
  • مارتین ریچاردز، BCPL - ابزاری برای نوشتن کامپایلر و برنامه نویسی سیستم ها ( مجموعه مقالات کنفرانس مشترک کامپیوتری بهار ، جلد 34، صفحات 557-566، 1969)
  • مارتین ریچاردز، آرتور ایوانز، رابرت اف. مابی، راهنمای مرجع BCPL (MAC TR-141، Project MAC ، کمبریج، MA، ایالات متحده آمریکا، 1974)
  • مارتین ریچاردز، کالین ویتبی-استریونز، BCPL، زبان و گردآورنده آن (انتشارات دانشگاه کمبریج، 1980) ISBN 0-521-28681-6 

پیوندهای خارجی