מה זה COBOL? הסביר תכנות COBOL

חלק מהטכנולוגיות לעולם לא מתות - הן פשוט דוהות לתוך עבודות העץ. 

שאל את מפתח התוכנה הממוצע על COBOL (Common Business Oriented Language) והם יסתכלו עליך כאילו הזכרת נייר פחמן, בנזין עופרת או שיא 78 הסל"ד. בהשוואה לשפות מודרניות כמו Go או Python - או אפילו Pascal או C! - COBOL נראה מילולי, מגושם, פאסי.

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

אז, כן, COBOL עדיין רלוונטי ומתוזמן - למרבה הצער, למעשה. בחודשים האחרונים COBOL נכנס מחדש לתודעה הציבורית, מכיוון שמדינות כמו ניו ג'רזי העלו קריאה למתכנתים שיעזרו להעביר את יישומי ה- COBOL שלהם למאה ה -21.

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

היסטוריה של COBOL

COBOL קם בסוף שנות החמישים ותחילת שנות השישים. פיתוח השפה היה פרויקט בחסות משרד ההגנה של ארצות הברית (DoD) שכלל קונסורציום של חברות מחשבים ובהן IBM, Honeywell, Sperry Rand ו- Burroughs. המטרה הייתה ליצור שפת תכנות עם התכונות הבאות:

  • ניידות בין מערכות מחשב, ובכך מקלה על העברת תוכנה בין דורות חומרה ובין יצרני חומרה.
  • תחביר דמוי אנגלית יותר משפות אחרות באותה תקופה (למשל, FORTRAN) כדרך לעודד תכנות על ידי קהל רחב יותר, גם אם על חשבון מהירות מבצעית מסוימת.
  • היכולת להכיל שינויים עתידיים בשפה.

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

בשל יתרונותיה העיצוביים וגיבוי התעשייה במשקל כבד, COBOL נותרה במקום, וחיה על המערכות המקוריות שעליהן תוכנן בפער רחב. על פי הערכות שונות, עד 1970 הייתה COBOL שפת התכנות הנפוצה ביותר בעולם. בשנת 1997, האמינו כי COBOL מנהלת כ -80% מהאפליקציות העסקיות.

שפת COBOL

מעצבי COBOL נשברו אז עם התחביר הקציר של שפות תכנות אחרות (שוב, כמו FORTRAN). הרעיון היה ליצור שפת תכנות שניתן לקרוא ולהבין על ידי אנשים שאינם מתכנתים, במיוחד חשבונאות, פיננסים, ביטוחים ואנשי מקצוע עסקיים אחרים.

שקול תוכנית "שלום עולם" שנכתבה בניב מוקדם של COBOL:

חלוקת זיהוי.

מזהה תכנית. שלום עולם.

חלוקת נוהל.

הצג 'שלום עולם!'.

תצוגת סוף.

הפסק לרוץ.

עבור מפתחי תוכנה מודרניים המגודלים על קשיות שפות כמו Python, קוד זה הוא רב. אבל המילה של COBOL (אם לא הביצוע שלה) נובעת מאותה התנשאות שמיידעת את השפות המודרניות כמו Python - קוד זה נקרא פעמים רבות יותר ממה שהוא כתוב, ולכן צריך לכתוב אותו לקריא.

תוכנית דומה בגרסה מודרנית יותר של COBOL עשויה להראות בערך כך:

תכנית מזהה. שלום.

חלוקת נוהל.

להציג "שלום עולם!".

להפסיק לרוץ.

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

ל- COBOL חוקים נוקשים לגבי תחביר וארגון תוכניות פנימי. תוכנית COBOL מחולקת במפורש לחלקים, או חלוקות , שמקלים על איתור והבנה של מרכיביה במבט אחד:

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

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

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

אתגרי COBOL

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

במהלך השנים, COBOL יש התפתח, אם לאט. זה אפילו עכשיו יש וריאנט מונחה עצמים, OO-COBOL, הכולל תמיכה בתכונות מודרניות כמו Unicode, locales וסוגי נתונים מתקדמים יותר מעבר למיתרים ומספרים שלמים. אך COBOL שומר על תאימות לאחור באופן אגרסיבי, כך שגם שיפורים ותוספים אלה עומדים במנדט כי יישומי COBOL קיימים חייבים להמשיך לפעול.

לא כל אפשרויות העיצוב של COBOL היו פופולריות בקרב מתכנתי COBOL. חלקן הובילו לתוכניות מורכבות מדי שהתבררו כקשות להבנה או לניפוי באגים, מה שמרתיע שכתובים או שיפורים. GO TOהפקודה של COBOL , כמו מקבילה שלה ב- C, אפשרה למתכנתים לקפוץ בחופשיות סביב תוכנית, וכך לכתוב יישומים חזקים יותר. אך שימוש לא ממושמע בתוכנה GO TOיכול להפוך תוכנית COBOL לקן עכברוש של הפניות מקושרות שקשה לאתר.

תכנות COBOL היום

COBOL שורד היום בכמה גלגולים. יבמ שומרת באופן פעיל על יישומי COBOL משלה ומקיימת יישומי COBOL קיימים רבים במקום בו הם פועלים. מיקרו פוקוס COBOL היא מהדורת COBOL מסחרית הפועלת ב- Microsoft Windows, אוספת יישומי COBOL ל- Java ו- .NET ואפילו נפרסת לסביבות ענן כמו Azure. תוכלו למצוא גם יישומי קוד פתוח של COBOL, כגון GnuCOBOL, הזמינים באופן חופשי ומתאספים לקוד מכונה מקורי. עם זאת, הם עשויים לחסר חלק מתכונות הפריסה או הבאגים המתקדמות יותר של COBOLs המסחריות.

בעוד ש- COBOL נותר בשימוש נרחב, מומחיות עמוקה של COBOL נעשית קשה יותר להשיג בכל שנה שעוברת. כתוצאה מכך, יש לשדל הרבה מתכנתים לשעבר של COBOL מהפרישה כדי לסבך יישומים ישנים יותר במאה ה -21. לעיתים קרובות, לא מדובר בידע תכנותי של COBOL שהוא בעלות הגבוהה ביותר, אלא הבנה אינטימית של סביבות המיינפריים בהן COBOL פועל. יישומי COBOL רבים עובדים יד ביד עם טכנולוגיה מדור קודם כמו מערכות העסקאות IMS ו- CICS של IBM ומערכות מסדי נתונים, שכולן דורשות מומחיות שנדירה יותר ויותר.

לפיכך, ככל שנראה בית הספר הישן כמו COBOL, הצורך במומחיות בשפה ובסביבת פיתוח של COBOL גדל עם כל השנה החולפת. רשימות דרושים עבור COBOL ומומחיות קשורה בשפע. במרץ 2020, ניו ג'רזי הוציאה קריאת חירום למתכנתים של COBOL שיעזרו בשדרוג מערכות דמי האבטלה הממלכתיים בעקבות מחלוקת COVID-19.

למד COBOL

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

  • אוניברסיטת לימריק באירלנד מציעה קורס תכנות COBOL מקוון באדיבות המחלקה למדעי המחשב ומערכות מידע. זה לא עדכני כמו כמה משאבים אחרים, אבל בהתחשב בכמה מעט COBOL משתנה עם הזמן, זה לא בהכרח פגם.
  • פרויקט ה- Mainframe הפתוח (חלק מקרן לינוקס) מציע גם משאבי COBOL. האחד הוא קורס מלא בתכנות COBOL, בחסות משותפת של IBM. זה מודרני יותר מהקורס באוניברסיטת לימריק, ומותאם ליישום ה- zOS של IBM של COBOL, המהווה גרסה נרחבת של השפה.

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