BCPL

מתוך ויקיפדיה, האנציקלופדיה החופשית
Gnome-edit-clear.svg
ערך זה זקוק לעריכה: ייתכן שהערך סובל מפגמים טכניים כגון מיעוט קישורים פנימיים, סגנון טעון שיפור או צורך בהגהה, או שיש לעצב אותו.
אתם מוזמנים לסייע ולתקן את הבעיות, אך אנא אל תורידו את ההודעה כל עוד לא תוקן הדף. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה.
BCPL
פרדיגמות

פרוצדורלית,

אימפרטיבית ,מובנית
שנה 1967
מתכנן מרטין ריצ'רדס
הושפעה על ידי CPL
השפיעה על

Go C

B
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

Basic Combined Programming Language) BCPL) היא שפת תכנות פרוצדורלית, אימפרטיבית ומובנית שפותחה בשלהי שנות ה-60 של המאה ה-20. היא נועדה במקור לכתוב מהדרים בשביל שפות תכנות אחרות, וכיום היא כבר לא בשימוש נפוץ.

למרות זאת, השפה עדיין משפיעה על התכנות המודרני, היות ששפת התכנות B, שהיא בעצם גרסה משופרת ושונה תחבירית של BCPL, היוותה את הבסיס לשפת התכנות C הידועה.

יתר על כן, מאפייניה הייחודיים של BCPL, כגון שימוש בסוגריים מסולסלים על מנת לתחום בלוקים של קוד, עברו הלאה לשפות תכנות מודרניות רבות. BCPL מומשה לראשונה על ידי מרטין ריצ'רדס מאוניברסיטת קיימברידג' בשנת 1967.

עיצוב[עריכת קוד מקור | עריכה]

BCPL יוצאת דופן בכך שהיא מכילה רק סוג אחד של מבנה נתונים : word (מילה), שהכיל מספר קבוע של סיביות, ולרוב תאם להגדרת הארכיטקטורה בה נמצא ל-word וכן הכיל כמות סיביות מספקת על מנת לייצג כתובות ולידיות בזיכרון. בשביל מכונות רבות באותו הזמן, גודלו של מבנה הנתונים word היה 16 סיביות. בחירה זו (הגדרת סוג מבנה נתונים יחיד) התבררה לאחר מכן כבעיה משמעותית כאשר BCPL רצה על מכונות עם גודל שונה שהוקצה ל-word בזיכרון כגון 32 סיביות ו-64 סיביות שבהן הכתובות הכי קטנות מבחינת הזיכרון לא היו word, אלא byte ( שהוא 8 סיביות).

אם כי היה רק סוג מבנה נתונים אחד, הפירוש של כל ערך נקבע על ידי האופרטורים אשר שומשו על מנת לעבד אותו. לדוגמה, + חיבר שני ערכים יחדיו, והתייחס אליהם כמספרים שלמים (integers), ! מצביע על משהו באמצעות הערך, ובכך הופך אותו למצביע ( pointer ). על מנת ששיטה זו תעבוד, השפה לא ביצעה בדיקות לסוג מבני הנתונים. מוסכמת כתיבה ששמה "Hungarian Notation" פותחה על מנת לסייע למתכנתים להימנע מטעויות רשלניות בסוג מבני הנתונים.

היסטוריה[עריכת קוד מקור | עריכה]

BCPL מומשה לראשונה בשנת 1967 באוניברסיטת קיימברידג' על ידי מרטין ריצ'רדס . היא פותחה משום שלשפה שקדמה לה, Cambridge Programming Language ( שנקראה לאחר מכן Combined Programming Language ובקיצור CPL) שפותחה בתחילת שנות ה-60 של המאה ה-20 היו קשיים. חלק אינטגרלי מפועלו של ריצ'רדס לפיתוח השפה היה הסרת הפיצ'רים אשר הופכים את תהליך הקומפילציה לקשה יותר. המימוש הראשון של מהדר ב -BCPL נכתב באביב 1967, כאשר ריצ'רדס ביקר בפרויקט MAC (שלא להתבלבל עם מערכת ההפעלה MacOS של חברת אפל) במכון הטכנולוגי של מסצ'וסטס.

BCPL היא השפה הראשונה שבה נכתבה תוכנית "hello world" וכן שבה נכתב ה MUD (אנ') הראשון - MUD1.

דוגמאות[עריכת קוד מקור | עריכה]

אם תוכניות אלו רצות באמצעות הגרסה הנוכחית של Cintsys, (מהדר BCPL) (נכון לדצמבר 2018), יש לכתוב את LIBHDR, START, WRITEF באותיות קטנות על מנת להימנע משגיאות.

הדפסת תוצאות של פונקציות עצרת:

GET "LIBHDR"

LET START() = VALOF $(
	FOR I = 1 TO 5 DO
 WRITEF("%N! = %I4*N", I, FACT(I))
	RESULTIS 0
$)

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

ספירת הפתרונות לחידת n המלכות :

GET "LIBHDR"

GLOBAL $(
	COUNT: 200
	ALL: 201
$)

LET TRY(LD, ROW, RD) BE
	TEST ROW = ALL THEN
 COUNT := COUNT + 1
	ELSE $(
 LET POSS = ALL & ~(LD | ROW | RD)
 UNTIL POSS = 0 DO $(
 LET P = POSS & -POSS
 POSS := POSS - P
 TRY(LD + P << 1, ROW + P, RD + P >> 1)
 $)
	$)

LET START() = VALOF $(
	ALL := 1
	FOR I = 1 TO 12 DO $(
 COUNT := 0
 TRY(0, 0, 0)
 WRITEF("%I2-QUEENS PROBLEM HAS %I5 SOLUTIONS*N", I, COUNT)
 ALL := 2 * ALL + 1
	$)
	RESULTIS 0
$)

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]