![]() | יש לערוך ערך זה. ייתכן שהערך סובל מבעיות ניסוח,סגנון טעון שיפור או צורך בהגהה, או שישלעצב אותו, או מפגמים טכניים כגון מיעוט קישורים פנימיים. | |
אתם מוזמנים לסייע ולערוך את הערך. אם לדעתכם אין צורך בעריכת הערך, ניתן להסיר את התבנית. |
יש לערוך ערך זה. ייתכן שהערך סובל מבעיות ניסוח,סגנון טעון שיפור או צורך בהגהה, או שישלעצב אותו, או מפגמים טכניים כגון מיעוט קישורים פנימיים. | |
אתם מוזמנים לסייע ולערוך את הערך. אם לדעתכם אין צורך בעריכת הערך, ניתן להסיר את התבנית. |
פרדיגמות | אימפרטיבית ,מובנית |
---|---|
תאריך השקה | 1967![]() |
מתכנן | מרטין ריצ'רדס |
הושפעה על ידי | CPL |
השפיעה על | B |
![]() ![]() |
Basic Combined Programming Language)BCPL) היא שפת תכנותפרוצדורלית,אימפרטיביתומובנית שפותחה בשלהישנות ה-60 של המאה ה-20 ומומשה לראשונה על ידי מרטין ריצ'רדס מאוניברסיטת קיימברידג' בשנת 1967. היא נועדה במקור לכתיבתמהדרים עבורשפות תכנות אחרות, וכיום היא כבר לא בשימוש נפוץ.
על אף שהשפה כבר אינה בשימוש יש לשפה השפעה על התכנות המודרני, היות ששפת התכנות B (שהיא בעצם גרסה משופרת ושונה תחבירית של BCPL) היוותה את הבסיס לשפת התכנות C הידועה.
יתר על כן, חלק ממאפייניה הייחודיים של BCPL, למשל שימוש בסוגריים מסולסלים במטרה לתחוםבלוקים שונים של קוד, עברו הלאה וכיום מיושמים בשפות תכנות מודרניות רבות.
BCPL נבדלת משפות אחרות בכך שהיא מכילה רק סוג אחד שלמבנה נתונים :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: 200ALL: 201$)LET TRY(LD, ROW, RD) BETEST ROW = ALL THEN COUNT := COUNT + 1ELSE $( 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 := 1FOR 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$)