COBOL

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

קובול (COBOL) ראשי תיבות של: COmmon Business Oriented Language (בתרגום חופשי: שפה משותפת לשימושים מסחריים), היא שפת תכנות מהוותיקות ומהנפוצות ביותר, שמיועדת בעיקר לניהול ועיבוד נתונים.

מאז נוצרה השפה בשנת 1959 היא עברה שינויים ושיפורים שונים על מנת להפכה לשפה תקנית.

מכון התקנים האמריקני (ANSI) פיתח תקן קובול המשמש את רוב התעשייה המכונה ANSI COBOL (להרחבה ראו בהמשך).

קובול הינה שפה דמוית אנגלית. כל הפקודות הינן מילים אנגליות לדוגמה: על מנת לחסר מספר אחד ממשנהו משתמשים בפקודה SUBTRACT או שפשוט משתמשים בתרגיל חשבוני תוך שימוש בפקודה COMPUTE.

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

על פיתוחה של השפה הוחלט בוועדה שהוקמה ביוזמת משרד ההגנה של ארצות הברית, ובה השתתפו נציגים של שש חברות המחשבים המובילות ושלוש מרשויות הממשל האמריקאי. ועדה זו הקימה ועדת-משנה ובה שני נציגים מכל אחת מהחברות הבאות IBM, RCA וסילבניה. לקראת סוף 1959 סיימה ועדת-משנה זו את הגדרתה של שפת קובול. ההגדרה הושפעה רבות משפת FLOW-MATIC שפותחה על ידי גרייס הופר ומשפת COMTRAN שפותחה על ידי איש IBM בוב במר. הוועדה הראשית אישרה את המפרט של השפה, ותוך חצי שנה פותח מהדר לשפה.

קובול זכתה לפופולריות עצומה כשפה לפיתוח מערכות מידע בעולם העסקי, ונעשה בה שימוש נרחב גם כיום (2005), אם כי בעיקר לתחזוקה של תוכניות קיימות ולא לפיתוח של תוכניות חדשות. בעיית "באג 2000" גרמה לביקוש מוגבר למתכנתי קובול, במקביל להחלפתן של מערכות שפותחו בקובול במערכות מודרניות יותר. כיום ניתן למצוא פיתוחים בקובול גם בתחום האינטרנט ואף ישנה גרסה של קובול עבור .NET. הגרסאות האחרונות של המהדר מכילות גם תמיכה מלאה ב-OBJECT ORIENTED COBOL וב XML ו Web Services.

מאפייני השפה[עריכת קוד מקור | עריכה]

בהגדרתה של קובול נעשה מאמץ לפתח שפה שסגנונה מזכיר אנגלית מדוברת, כך שהתכנות בה ייעשה בקלות ובטבעיות. לשפה שנוצרה היו תכונות טובות מבחינת תיעוד עצמי של התוכנית, טיפול בקבצים והגדרה של סוגי נתונים. כל תוכנית בשפה זו מורכבת מארבע חטיבות:

  1. IDENTIFICATION DIVISION: חטיבה קצרצרה, ובה פרטים מזהים של התוכנית.
  2. ENVIRONMENT DIVISION: פרטי הקבצים שבהם מטפלת תוכנית זו.
  3. DATA DIVISION: הגדרת כל המשתנים שבהם משתמשת תוכנית זו, כולל שטחים לרשומות שבהן מטפלת התוכנית.
  4. PROCEDURE DIVISION: החטיבה העיקרית של התוכנית, ובה הלוגיקה שלה.

על-פי תקנים מודרניים לשפות תכנות, היו בקובול פגמים חמורים: תחביר שמרבה במילים, חוסר תמיכה במשתנים לוקליים, ברקורסיה ובהקצאת זיכרון דינמית. חוסר מודולריות פנימית ושימוש רב בפקודת GO TO, גרמו ליצירת "קוד ספגטי". מובן שהשפה לא תמכה בתכנות מובנה, רעיון שנוצר כעשר שנים לאחר יצירת השפה. כל המילים של השפה הן מילים שמורות, שאסור להשתמש בהן כשמות של משתנים. כיוון שמדובר במילים שגרתיות של השפה האנגלית, הגבלה זו מהווה מטרד למתכנת. ההגדרה הראשונית של השפה אף כללה יכולת של תוכנית לשנות את הקוד של עצמה, באמצעות הפקודה ALTER X TO PROCEED TO Y. אחדים מפגמים אלה תוקנו בגרסאות מתקדמות של השפה.

תוכנית Hello world בקובול:

IDENTIFICATION DIVISION.
PROGRAM ID. HELLO-WORLD.
PROCEDURE DIVISION.
    DISPLAY "Hello, world!"
    STOP RUN.

ANSI COBOL[עריכת קוד מקור | עריכה]

תקן לכתיבה בשפת COBOL שפותח על ידי מכון התקנים האמריקני (ANSI), על מנת לאפשר ניידות גמישה יותר של קוד כתוב בשפה זו.
התקן הראשון היה ANSI74 COBOL, אך למעשה התקן המשמעותי הראשון של השפה היה ה- ANSI85 COBOL.
לתקן התייחסות שונה לפלטפורמה שעליה התוכנית כתובה, אם על מחשבי UNIX או אם על מחשבים מרכזיים.

ביקורת על השפה[עריכת קוד מקור | עריכה]

עיקרון מרכזי בהגדרתה של קובול הוא יצירת שפת תכנות שסגנונה מזכיר אנגלית מדוברת, כך שהתכנות בה ייעשה בקלות ובטבעיות. שוללי עיקרון זה טוענים שהבעיה העיקרית בתכנות היא תרגום הבעיה מהעולם האמיתי לאלגוריתם שייתבצע במחשב, ולאוצר המילים של שפת התכנות, המשמש לתרגום האלגוריתם לשפת תכנות, נודעת חשיבות משנית. לפיכך, טוענים מבקרי השפה, סגנונה של קובול יוצר תוכניות ארוכות הכתובות בשפה מסורבלת, ופוגע בחשיבה המדויקת הנחוצה למלאכת התכנות. מדען המחשב אדסחר דייקסטרה כתב בשנת 1975: "השימוש בקובול גורם לנכות של המחשבה; לפיכך על הוראת השפה להיחשב לעברה פלילית". עם זאת דייקסטרה, אבי התכנות המובנה, התרשם לטובה מהגישה של מייקל א. ג'קסון למימוש רעיון זה בקובול.

הביקורת על השפה לא פגעה בשליטתה של קובול בפיתוח מערכות מידע עסקיות. נסיון שנעשה שנים מעטות לאחר יצירתה של קובול, להחליפה בשפה הרבה יותר משוכללת - PL/I, לא עלה יפה.

המחשה של תחביר השפה[עריכת קוד מקור | עריכה]

הדוגמה הבאה ממחישה את צורתה המיוחדת של שפת קובול. את הביטוי המתמטי אפשר ליישם בקובול בשני דרכים.


x=\frac{-b \pm \sqrt {b^2-4ac\  }}{2a}.

אף שאפשר ליישם את הביטוי בתחביר הבא באמצעות הפקודה COMPUTE

       COMPUTE X = (-B + (B ** 2 - (4 * A * C)) **.5) / (2 * A)

התחביר הטבעי והטיפוסי של השפה נראה באופן הבא:

       MULTIPLY B BY B GIVING B-SQUARED.  
       MULTIPLY 4 BY A GIVING FOUR-A.  
       MULTIPLY FOUR-A BY C GIVING FOUR-A-C.  
       SUBTRACT FOUR-A-C FROM B-SQUARED GIVING RESULT-1.  
       COMPUTE RESULT-2 = RESULT-1 ** .5.
       SUBTRACT B FROM RESULT-2 GIVING NUMERATOR.
       MULTIPLY 2 BY A GIVING DENOMINATOR.
       DIVIDE NUMERATOR BY DENOMINATOR GIVING X.

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

היכן כותבים בקובול[עריכת קוד מקור | עריכה]

בישראל שפת קובול עדיין בשימוש בבנקים, במשרדי ממשלה רבים ובמקומות נוספים.