COBOL که در سال 1959 اختراع شد، زبانی است که بیشتر مقالات نوشته شده در مورد آن به این نکته اشاره دارند که این زبان در حال منسوخ شدن است و شرکتهایی که از آن استفاده میکنند مرتکب اشتباه حماقتآمیزی شدهاند و یا آموختنش برای تازهکارها دشوار است و چیزهایی از این دست. افسانهای در مورد COBOL که مخفف واژگان Common Business-Oriented Language است وجود دارد با این مضمون که سازمانهای بزرگی که از این زبان استفاده میکنند فقط به این دلیل دست به چنین انتخابی زدهاند که بازنویسی برنامههایشان در زبان مدرنتری کار بسیار خستهکنندهای است و همچنین اینکه دولوپرهای زیادی که در کار با این زبان از مهارت کافی برخوردارند باشند وجود ندارد! اما حقیقت امر چیز دیگری است که در ادامه به آن خواهیم پرداخت.
تاریخچهٔ COBOL
وقتی صحبت از زبان COBOL میشود، به نوعی به یاد تاریخچهٔ کامپیوتر خواهیم افتاد؛ اولین نسخه از زبان برنامهنویسی کوبول در سال 1959 از طریق کمیتهٔ استاندارد صنعتی که به طور ویژهای شامل دو مهندس خانم برجسته میشد، به بازار عرضه شد. یکی از این دو مهندس، Jean Sammet بود که کمیتهای فرعی را به منظور توسعهٔ خودِ زبان کوبول رهبری میکرد که وی در تاریخ 20 می 2017 درگذشت. دیگری هم دریاسالار نیروی دریایی ایالات متحده، Grace Hopper بود که کمیته را به سمت ساخت زبانی سطح بالا هدایت کرد (برای آشنایی بیشتر با ایشان، به مقالهٔ Grace Murray Hopper: کسی که برای اولین بار اصطلاح Bug را باب کرد! مراجعه نمایید.)
در آن زمان، Jean Sammet برای شرکت Sylvania کار میکرد و مسئول کامپایلر کوبول برای Mobile Digital Computer بود که بر اساس قراردادی تجاری، برای آزمایشگاه Evan Signals ارتش ایالات متحده ساخته شده بود (البته کلمهٔ Mobile به معنی «متحرک» برای این کامپایلر کاملاً نسبی بود چرا که برای حمل آن، به دو تریلر مخصوص 30 فوتی نیاز بود!) به نوعی میتوان گفت که این اولین کامپیوتری است که به زبان کوبول برنامهریزی شده است.
چه سازمانهایی از COBOL تاکنون استفاده کردهاند؟
Sylvania شش دستگاه از این نوع را تولید کرد و این کامپیوترها به خاطر عملکردشان، توسط نیروی داخلی ارتش ایالات متحده و آنهایی که در اروپا مستقر بودند مهر تأیید دریافت کردند. ادمینهای سیستم که با Mobile Digital Computer در بین دهههای 50 و 60 کار میکردند، در سال 1973 از تجربیات خود گفتند به این شکل که آنها به طرز قابلتوجهی از نحوهٔ کار این سیستمها شگفتزده شده بودند و همچنین گفتهاند که استفاده از این سیستمها را به دلیل اینکه سختافزارش منسوخ نشد، ادامه دادند.
سازمانهای بزرگ از کوبول استفاده میکنند به این دلیل که این زبان در برنامههای سطح بالای پردازش تراکنش بسیار بهینه است به طوری که هیچ زبان جدیدی توان رقابت با آن را ندارد! برنامههایی که امروزه به کار گرفته میشوند اکثراً بر اساس آپدیت 2002 کوبول (یا در بدترین حالت، نسخهٔ 1985) پایهگذاری شدهاند.
همچنین کوبول برای سری Z از یکسری Main Frames کمپانی IBM و سیستمهای توزیعشدهٔ ساخت دیگر شرکتها بسیار محبوب بود به طوری که به گفتهٔ Kevin Stoodly، که یکی از مدیران فنی در شرکت IBM است، کوبول یک مشکل بسیار مهم را به شکل خوبی حل کرد و شرکتها هم به استفاده از آن ادامه دادند.
دولوپرهای امروزی کوبول اکثراً بر این عقیده هستند که با کوبول میتوان از سختافزارها برای مدت طولانیتر استفاده کرد. امروزه IBM COBOL بدون شک محبوبترین نسخه از این زبان برای مِینفریمها است. شرکت دیگری به نام Micro Focus هم یکی از پیشتازان استفاده از کوبول برای سیستمهای توزیعشده است (موارد کم استفادهتری هم مانند GnuCOBOL که اپنسورس است نیز وجود دارد.)
در هر نسخهای از کوبول، ممکن است هزاران خط کد کوبول به ازای هر یک خط کد زبانی همچون جاوا نوشته شده باشد! اما به ادعای کارشناسان، جاوا برای تحلیل Big Data هرگز به سرعت کوبول نمیرسد. به عقیدهٔ برخی دولوپرها، این گزاره که «کوبول نابود شده است.» اصلاً درست نیست و شاهد چنین ادعایی هم اینکه نتیجهای که بر اساس آمار به دست میآید این است که غیرممکن است کوبول به سادگی نابود شود. در حقیقت، کوبول از بین نمیرود چرا که هنوز در حال استفاده است و برخی گرهها وجود دارند که فقط و فقط به دست کوبول باز میشوند. به عنوان نمونه برنامهٔ نوشتهشده با این زبان داریم:
000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. SAMPLE.
000030 AUTHOR. J.P.E. HODGSON.
000040 DATE-WRITTEN. 4 February 2000
000041
000042* A sample program just to show the form.
000043* The program copies its input to the output,
000044* and counts the number of records.
000045* At the end this number is printed.
000046
000050 ENVIRONMENT DIVISION.
000060 INPUT-OUTPUT SECTION.
000070 FILE-CONTROL.
000080 SELECT STUDENT-FILE ASSIGN TO SYSIN
000090 ORGANIZATION IS LINE SEQUENTIAL.
000100 SELECT PRINT-FILE ASSIGN TO SYSOUT
000110 ORGANIZATION IS LINE SEQUENTIAL.
000120
000130 DATA DIVISION.
000140 FILE SECTION.
000150 FD STUDENT-FILE
000160 RECORD CONTAINS 43 CHARACTERS
000170 DATA RECORD IS STUDENT-IN.
000180 01 STUDENT-IN PIC X(43).
000190
000200 FD PRINT-FILE
000210 RECORD CONTAINS 80 CHARACTERS
000220 DATA RECORD IS PRINT-LINE.
000230 01 PRINT-LINE PIC X(80).
000240
000250 WORKING-STORAGE SECTION.
000260 01 DATA-REMAINS-SWITCH PIC X(2) VALUE SPACES.
000261 01 RECORDS-WRITTEN PIC 99.
000270
000280 01 DETAIL-LINE.
000290 05 FILLER PIC X(7) VALUE SPACES.
000300 05 RECORD-IMAGE PIC X(43).
000310 05 FILLER PIC X(30) VALUE SPACES.
000311
000312 01 SUMMARY-LINE.
000313 05 FILLER PIC X(7) VALUE SPACES.
000314 05 TOTAL-READ PIC 99.
000315 05 FILLER PIC X VALUE SPACE.
000316 05 FILLER PIC X(17)
000317 VALUE 'Records were read'.
000318 05 FILLER PIC X(53) VALUE SPACES.
000319
000320 PROCEDURE DIVISION.
000321
000330 PREPARE-SENIOR-REPORT.
000340 OPEN INPUT STUDENT-FILE
000350 OUTPUT PRINT-FILE.
000351 MOVE ZERO TO RECORDS-WRITTEN.
000360 READ STUDENT-FILE
000370 AT END MOVE 'NO' TO DATA-REMAINS-SWITCH
000380 END-READ.
000390 PERFORM PROCESS-RECORDS
000410 UNTIL DATA-REMAINS-SWITCH = 'NO'.
000411 PERFORM PRINT-SUMMARY.
000420 CLOSE STUDENT-FILE
000430 PRINT-FILE.
000440 STOP RUN.
000450
000460 PROCESS-RECORDS.
000470 MOVE STUDENT-IN TO RECORD-IMAGE.
000480 MOVE DETAIL-LINE TO PRINT-LINE.
000490 WRITE PRINT-LINE.
000500 ADD 1 TO RECORDS-WRITTEN.
000510 READ STUDENT-FILE
000520 AT END MOVE 'NO' TO DATA-REMAINS-SWITCH
000530 END-READ.
000540
000550 PRINT-SUMMARY.
000560 MOVE RECORDS-WRITTEN TO TOTAL-READ.
000570 MOVE SUMMARY-LINE TO PRINT-LINE.
000571 WRITE PRINT-LINE.
000572
000580
Mark Levy که یکی از دولوپرهایی است که با زبان COBOL کد میزند، گفته است که از این زبان برای توسعهٔ برخی نرمافزارها در شرکت سونی استفاده کرده است. زمانی که وی در سال 1984 شروع به استفاده از زبان برنامهنویسی کوبول کرد، شایعاتی مبنی بر نابودی کوبول وجود داشت اما وی کماکان از این زبان استفاده میکند! به گفتهٔ وی:
اِعمال تغییرات در برنامههای قدیمی که با کوبول نوشته شدهاند ساده هست. خلاصه بگم که کوبول زبون بسیار ثابت و پایداری پس از این همه ساله. شاید وب اپلیکیشنی با زبونی مثل جاوا یا هر زبون دیگهای توسعه داده باشید که برای تعامل کاربر در بستر وب باشه، اما در نهایت برای توسعهٔ اپلیکیشنهایی که نیاز به دسترسی به مینفریمهای بزرگ دارن، از کوبول استفاده خواهد شد.
اینکه گفته میشود یادگیری کوبول سخت است شاید به نوعی درست باشد، اما شروع کدنویسی در کوبول برای دولوپرهایی که به زبانی همچون C تسط دارند، چند هفتهای بیشتر زمان نخواهد برد.
حال نوبت به نظرات شما میرسد. آیا تاکنون تجربهٔ کدزنی با زبان برنامهنویسی COBOL را داشتهاید و آیا فکر میکنید که این زبان به پایان عمرش نزدیک شده یا در آینده بیش از این مورد استقبال شرکتهای بزرگ قرار خواهد گرفت؟ نظرات و دیدگاههای خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.