Кобол (програмски језик)

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу
Кобол
Оригинални назив енгл. COBOL
Појавио се 1959. год.; пре 59 година (1959)
Аутор(и) Хаувард Бромберг, Хаувард Дисконт, Вернон Ривс, Жан Е. Самет, Вилјам Селден, Гертруда Тјерни
Дизајнер(и) CODASYL, ANSI, ISO
Актуелна верзија ISO/IEC 1989:2014 / 2014
Типови променљивих статички, јаки, сигурни, номинални
Имплементације бизнис и финансијске апликације
Утицаји AIMACO, C++, COMTRAN, Eiffel, FACT, FLOW-MATIC, Smalltalk
Утицао на CobolScript,[1] PL/I[2] PL/B

Кобол (енгл. COBOL, изговор: /ˈkoʊbɒl/) је један од најстаријих виших програмских језика који су у данашњој употреби. Име му је изведено као акроним од енгл. COmmon Business-Oriented Language, што је дефинисано његовим применама — углавном служи за писање бизнис и финансијских апликација и као подршка административним системима у компанијама и владама. Најновија спецификација, COBOL 2002, садржи механизме објектно-оријентисаног програмирања и многе друге модерне могућности.[3] Првобитно се користио у пословним, финансијским и административним системима за компаније и владе. Још увек има широку употребу у наслеђеним апликацијама развијеним на великим главним рачунарима као што су, апликације за обраду великих размера и трансакција. Али због смањене популарности и пензионисања искусних COBOL програмера, програми мигрирају на нове платформе, преписани на савремене језике, или бивају замењени софтверским пакетима.[4] Већина програма у COBOL-у сада постоји само ради одржавања постојећих апликација.

COBOL је дизајниран 1959. године од стране CODASYL и делимично се базирао на претходном програмском језику који је дизајнирала Грејс Хопер, познатија као „COBOL-ова баба“.[5][6][7] Направљен је као резултат рада Министарства одбране на стварању преносивог програмског језика за обраду података.[8] Стандардизован је 1968. године и од тада је прерађиван четири пута. Проширења укњучују подршку за структурално и објектно-оријентисано програмирање. Тренутни стандард је ISO/IEC 1989:2014.[9]

Историја[уреди]

У касним 1950-им, корисници и произвођачи рачунара постали су забринути због пораста трошкова програмирања. Истраживања из 1959. године су открила да у било којој инсталацији за обраду података, програмирање кошта 800,00 $ у просеку и да ће програми за превођење на нови хардвер коштати 600,00$. У време када се број нових програмских језика повећава са све већом стопом, иста истраживања (анкете) сугеришу да би, уколико би се користио заједнички пословни језик, конверзија била далеко јефтинија и бржа.

Априла 1959. године Мери К. Хајвс је позвала представнике академије, кориснике и произвођаче рачунара на Универзитет у Пенсилванији како би организовали званични састанак на тему заједничких пословних језика.[10] Представници су позвали Grace Hopper, изумитељку flow-matic-a, Жан Самет и Саул Горн. Група је затражила од Министарства одбране да спонзорише стварање заједничког пословног језика. Делегација је импресионирала Чарлса А. Филипса, директора одељења за истраживање система података при Министарству одбране, који је сматрао да су они детаљно проучили проблеме Министарства одбране. Министарство је имало у употреби 225 рачунара, и још додатних 175 било је наручено и чекала се испорука, а потрошено је 200 милиона долара на имплементације програма.

Преносиви програми би уштедели време, смањили трошкове и олакшали модернизацију. Филипс се сложио да спонзорише састанак и задао делегацији да изради дневни ред.

Стандарди[уреди]

COBOL 60[уреди]

У Пентагону је, 28. и 29. маја 1959. године, одржан састанак на којем се расправљало о стварању заједничког програмског језика за бизнис. Присуствовала је 41 особа, а председавао је Филипс.[11] Министарство одбране је било забринуто око тога да ли ће резултати програма обраде података бити исти на различитим рачунарима. FORTRAN, једини „mainstream“ језик у то време, није имао могућност за писање таквих програма.

Представници су са ентузијазмом описали језик који би могао радити у разним окружењима, од банкарства и осигурања до комуналних услуга и контроле инвентара. Једногласно су се сложили да би више људи требало да буде у могућности да програмира и да нови језик не би требало ограничити границама савремене технологије. Већина се сложила да би језик требало максимално да користи енглески језик, да буде способан за промене, независтан од машина и једноставан за коришћење, чак и по цену моћи.

Састанак је резултирао стварањем Управног одбора као и одбора за кратки, средњи и дуги низ година. Комитет за кратки опсег је добио рок до септембра (три месеца) да дају спецификације за привремени језик, који би затим унапредили остали комитети. Њихова званична мисија била је да идентификују снаге и слабости постојећих програмских језика.

Управни одбор се састао 4. јуна и сложио да именују читаву активност као Одбор за језике података, или CODASYL и формира извршни одбор.} Комитет кратког одбора састојао се од чланова представника шест произвођача рачунара и три владине агенције. Шест произвођача рачунара су Burroughs Corporation, IBM, Minneapolis-Honeywell (Honeywell Labs), RCA, Sperry Rand и Sylvania Electric Products. Три владине агенције биле су Америчко ратно ваздухопловство, Navy’s David Taylor Model Basin и Nattional Bureau of Standards (сада National Institute of Standards and Technology). Одбором је председавао Џозеф Вегстајн из Националног бироа за стандарде САД. Рад је започео истраживањем описа података, изјава, постојећих апликација и корисничких искустава. Комитет је углавном испитивао FLOW-MATIC, AIMACO, COMTRAN програмске језике. Главни допринос FLOW-MATIC-a COBOL-у су дуга имена променљивих, енглеске речи за наредбе и одвајање података и упутстава. IBM-ов COMTRAN језик, који је изумео Боб Бемер, је сматран конкурентом FLOW MATIC. Неке од његових карактеристика нису биле укључене у COBOL, тако да не би изгледало да IBM доминира дизајном. Након што је Рој Голдфингер, аутор приручника COMTRAN и члан комисије средњег ранга присуствовао састанку подкомитета како би подржао његов језик и охрабрио употребу алгебарских израза, Грејс Хопер је послала допис одбору кратког домета потенцирајући на напорима које је улагао Sperry Rand да створи језик заснован на енглеском.

Карактеристике из COMTRAN-а које је садржао COBOL су укључивале формуле, клаузулу PICTURE, и побољшале IF изјаву, што је отклонило потребу за GO TO наредбом и робуснијим системом управљања датотекама.

Док су неки чланови мислили да језик има превише компромиса, други су сматрали да је бољи од сва три испитана језика. Неки сматрају да је језик сувише сложен, а други да је сувише једноставан. Карактеристике које укључују Буловске изразе, формуле и табеле индекса су неки сматрали бескорисним или сувише напредним за кориснике. Мало пажње је посвећено интерактивности, интеракцији са оперативним системима (неколико њих је постојало у то време ) и функције.

Спецификације су представљене Извршном одбору 4. септембра. Јозеф Вегстајн је напоменуо да он садржи грубе мрље и да захтева неке измене. Подкомитету је дато да га до Децембра поправе.

На састанку, средином Септембра, комитет је разматрао име новог језика. Неки од предлога били су “BUSY” (Business System), ”INFOSYL” (Information System Language),и “COCOSYL” (Common Computer System Language). Име COBOL је предложио Боб Бемер.[12][13]

У октобру је комитет средњег ранга добио копије спецификација језика FACT који је створио Рој Нут. Његове карактеристике су имресионирале комисију, па су донели одлуку да COBOL базирају на њој. То је био ударац за одбор кратког домета, који је значајно напредовао у погледу спецификације. Упркос томе што је технички супериоран, FACT није створен са могућности преносивости . Представник RCA, Хаувард Бомберг је такође блокирао FACT, тако да рад RCA на имплементацији COBOL-a не би био узалудан.

Ускоро је постало очигледно да је одбор био сувише велики да би се убрзо учинио било какав напредак.[14] Формиран је пододбор да би анализирао постојеће језике и био је састављен од шест појединаца:

   • Вилјам Селден  и Гертруда Тјерни, IBM,
   • Хаувард Бромберг и  Хаувард Дисконт, RCA,
   • Вернон Ривс и  Жан Е. Самет Sylvania Electric Products

Пододбор је већину посла посветио изради спецификација, остављајући комисији кратког домета да преиспита и модификује свој рад пре израде завршне спецификације.

Спецификације су одобрене од стране Извршног одбора 3. јануара 1960. Године и послате владиној штампарији која их је штампала као COBOL 60. Наведени циљеви језика су били да омогуће лако писање преносивих програма, како би се корисницима омогућило да их преносе на нове системе уз минималне напоре и трошкове, и да буду погодни за неискусне програмере. Извршни одбор CODASYL је касније створио COBOL сектор за одржавање, како би одговорио на питања корисника и произвођача и побољшао и проширио спецификације. Током 60-их порасла је листа произвођача који планирају израду компилатора COBOL. До Септембра још пет произвођача се придружило CODASYL (Bendix, Control Data Corporation, General Electric (GE), National Cash Register Philco) и сви представљени произвођачи су најавили компилацију COBOL-а. GE и IBM планирају да интегришу COBOL на своје језике, GECOM и COMTRAN, респективно. Насупрот томе, Internacional Computer and Tabulators планирају да замене свој језик, CODEL са COBOL-ом.

У међувремену, RCA и Sperry Rand су радили на стварању компилатора COBOL-а. Први COBOL програм покренут је 17. августа на RCA 501. Исти COBOL програм (са мањим изменама) је 6. И 7. децембра покренут на RCA рачунару и Remington-Rand Univac рачунару, доказујући да се компатибилност може постићи.

Утицаји на то која ће се верзија језика користити и дан данас се наставља кроз препоручене савете у свим штампаним приручницима за COBOL.

COBOL је индустријски језик и није власништво било које компаније или групе компанија, нити било које организације или групе организација. Ниједна сарадница или одбор CODASYL COBOL-a не даје никакву гаранцију, у погледу тачности и функционалности програмског система и језика. Осим тога, одговорност не преузима ни доприносилац нити одбор. Аутори и носиоци ауторских права за заштићени материјал који се овде користе су следећи:

   • FLOW-MATIC (Unisys Corporation), програмирање UNIVAC (R) I и II, систем за аутоматизацију података, заштићен ауторским правима 1958. 1959. Од стране  Unisys Corporation;
   • IBM Commercial Translator Form No. F28-8013, заштићен ауторским правима  1959. од стране  IBM;
   • FACT, DSI 27A5260-2760, заштићен ауторским правима  1960. Од стране  Minneapolis-Honeywell

Посебно су овластили употребу овог материјала, у целости или делимично, у COBOL спецификацијама. Такво одобрење проширује се на репродукцију и употребу COBOL спецификација у приручницима за програмирање или сличним публикацијама.[15]

COBOL-61 до COBOL-65[уреди]

Пронађени су многи логички недостаци у COBOL-у 60, Чарлс Кац вођа Џенерал електрика је упозорио да се то не може недвосмислено тумачити. Невољна краткорочна комисија извршила је потпуно чишћење и од Марта 1963. године пријављено је да је COBOL-ова синтакса дефинисана као ALGOL-ова, иако семантичке нејасноће остају.

Рани компилатори COBOL-а су примитивни и спори. US Navy Evaluation је 1962. године пронашла компилациониу брзину од 3-11 изјава у минути. До средине 1964. године повећали су на 11-1000 изјава у минути. Било је примећено да повећавање меморије, драстично повећава брзину и да су трошкови компилације различити.

Касне 1962. године, IBM је објавио да ће COBOL бити њихов примарни развојни језик и да ће престати са развојем COMTRAN-а.

Спецификација COBOL-а ревидирана је три пута за пет година. COBOL-60 замењен је COBOL-ом -61 1961. године. Онда је спецификација COBOL-а -61 проширена 1963. године, која је увела објекте за сортирање и извршавање. COBOL издање 1965. године донело је додатна појашњења спецификацијама и уведене су могућности за руковање датотекама и табелама.

COBOL -68[уреди]

Почело је да се ради на стандардизацији COBOL-а која ће превазићи неусклађености између верзија. Крајем 1962. године ISO и Институт за стандарде Сједињених Америчких Држава (сада ANSI) су формирали групе за креирање стандарда. ANSI је произвела USA Standard COBOLX3.23 у Августу 1968, који је постао камен темељац за касније верзије. Ова верзија је позната као Амерички национални стандард (АNS) COBOL и усвојен је од стране ISO 1972. године.[16]

Здраво, свете[уреди]

Познати програм Hello World у COBOL-у изгледа слично као и у осталим језицима процедуралне парадигме:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLO-WORLD.
       PROCEDURE DIVISION.
       MAIN.
           DISPLAY 'Zdravo, svete!'.
           STOP RUN.

Синтакса[уреди]

COBOL има синтаксу сличну енглеском језику којом се дефинише скоро све у програмима који се у њему пишу, на пример исти услови се могу писати на следеће начине:

x IS GREATER THAN yx GREATER yx > y

Комплекснији услови се могу скратити избацивањем поновљених услова и променљивих, на пример a > b AND a > c OR a = d се може записати као a > b AND c OR = d. Као последица овакве синтаксе, COBOL има више од 300 кључних (резервисаних) речи. Неке верзије су имале чак и 1100 кључних речи.[17] Многе кључне речи се имају своје еквивалентне парове са којима се могу наизменично писати у програмима као IN и OF јер на енглеском језику имају исто значење, такође неке од њих имају и своје облике у множини као IS и ARE или VALUE и VALUES.

Сваки програм у Коболу се састоји садржи литерале, сликовни карактер-стрингови, стрингове и сепараторе.Речи представљају кључне речи или кориснички-дефинисани идентификатори који се састоје од до 31-ог карактера који могу бити слова, бројеви, цртиве или доње црте. Литерали су или бројеви или словне речи, а под сепараторима се подразумевају размаци, тачке, тачка-зарез...

Програми у Коболу се деле на 4 дивизије:

   • идентификациона дивизија
   • дивизија окружења
   • дивизија података
   • процедурална дивизија

У идентификационој дивизији се наводи име и тип изворног елемента, ту се наводе и класе и интерфејси. У дивизији окружења се наводе особине програма које зависе од система на ком се покреће. У дивизији података се деклатишу променљиве и параметри. У процедуралној дивизији су садржане наредбе програма. Све дивизије су подељене у делове које чине параграфи.

Типови података[уреди]

Типови података у стандардном COBOL-у су приказани у следећој табели.[18]

Тип Декларација О типу
Алфабетски PIC A(30) Садржи слова и белине
Алфанумерички PIC X(30) Може садржати било које карактере
Буловски PIC 1 USAGE BIT Подаци сачувани у облику нула и јединица као бинаран број
Индексни USAGE INDEX Користе се за приступ елементима табела
Национални PIC N(30) Сличан алфанумеричком, али користи проширен скуп карактера ( UTF-8 )
Нумерички PIC 9(5)V9(5) Садржи само бројеве
Објектни USAGE OBJECT REFERENCE Може се односити на објекте или NULL
Показивачки USAGE POINTER

COBOL 2002 (објектно-оријентисани COBOL)[уреди]

Године 1997, Гартнер група је проценила да постоји 200 милијарди линија COBOL-a, што чини 80% свих пословних језика.[19] Почетком 1990-их почео је развој објектног-оријентисања у новој верзији COBOL-a. Особине објектног-оријентисања преузете су из C++-а и Smalltalk-а. Иницијалне процене су биле да ће ревизија и нацрт комитета ISO бити готови до 1997. године. Поједини продавци (Micro Focus, Fujitsu, IBM) су представили синтаксу објектно-оријентисаног програмирања на основу нацрта потпуне ревизије. Крајњи ISO стандард је одобрен и објављен крајем 2002. године. Компаније Fujitsu/GT Software, Micro Focus и RainCode представили су објектно-оријентисане COBOL компајлере користећи .NET Framework.

Било је још доста нових карактеристика, од којих су се многе налазиле у CODASYL COBOL-у Journal of Development још од 1978. године и нису биле укључене у COBOL -85.[20]

Неке од њих су:

   • Слободна форма кода
   • Могућност корисничких функција
   • Рекурзија
   • Локална обрада података
   • Подршка за сет додатних карактера као што је UNICODE
   • Типови података са покретним зарезом и бинарни
   • Портабилни аритметички резултати
   • Bit, Boolean тип података
   • Показивачи и синтакса за добијање и ослобађање меморијског простора
   • Део екрана за кориснички интерфејс  базиран на тексту
   • Побољшана компатибилност са другим програмским језицима и фрејмворк окружења као што су .NET  и Java

Извори[уреди]

  1. ^ Imajo, Tetsuji; et al. (септембар 2000). COBOL Script: a business-oriented scripting language. Enterprise Distributed Object Computing Conference. Makuhari, Japan: IEEE. ISBN 978-0-7695-0865-8. doi:10.1109/EDOC.2000.882363. [Претплата неопходна (помоћ)]. 
  2. ^ Radin, George (1978). Wexelblat, Richard L., ур. The early history and characteristics of PL/I. History of Programming Languages. Academic Press (објављено 1981). стр. 572. ISBN 978-0-12-745040-7. doi:10.1145/800025.1198410. [Претплата неопходна (помоћ)]. 
  3. ^ Комитет за стандарде Кобол-а Archived 20040331054413 at cobolstandards.com Error: unknown archive URL (на језику: енглески)
  4. ^ Mitchell, Robert L. (14. 3. 2012). „Brain drain: Where Cobol systems go from here”. Computerworld. Приступљено 9. 2. 2015. 
  5. ^ Porter Adams, Vicki (5. 10. 1981). „Captain Grace M. Hopper: the Mother of COBOL”. InfoWorld. 3 (20): 33. ISSN 0199-6649. 
  6. ^ Betts, Mitch (6. 1. 1992). „Grace Hopper, mother of Cobol, dies”. Computerworld. 26 (1): 14. ISSN 0010-4841. 
  7. ^ Lohr, Steve (2008). Go To: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Maverick Scientists, and Iconoclasts--The Programmers Who Created the Software Revolution. Basic Books. стр. 52. ISBN 978-0786730766. 
  8. ^ Ensmenger, Nathan L. (2009). The Computer Boys Take Over: Computers, Programmers, and the Politics of Technical Expertise. MIT Press. стр. 100. ISBN 978-0262050937. LCCN 2009052638. 
  9. ^ „ISO/IEC 1989:2014”. ISO. 2014. Приступљено 7. 6. 2014. 
  10. ^ Gürer, Denise (1. 6. 2002). „Pioneering Women in Computer Science”. SIGCSE Bull. 34 (2): 175—180. ISSN 0097-8418. doi:10.1145/543812.543853. 
  11. ^ „Early Meetings of the Conference on Data Systems Languages”. IEEE Annals of the History of Computing. 7 (4): 316. 1985. doi:10.1109/MAHC.1985.10047. [Претплата неопходна (помоћ)]. 
  12. ^ Sullivan, Patricia (25. 6. 2004). „Computer Pioneer Bob Bemer, 84”. The Washington Post. стр. B06. Приступљено 28. 6. 2014. 
  13. ^ Bemer, Bob. „Thoughts on the Past and Future”. Архивирано из оригинала на датум 16. 5. 2014. Приступљено 28. 6. 2014. 
  14. ^ „COBOL Tombstone”. Computer History Museum. Приступљено 29. 6. 2014. 
  15. ^ Compaq Computer Corporation: Compaq COBOL Reference Manual, Order Number: AA–Q2G0F–TK October 2000, Page xviii; Fujitsu Corporation: Net Cobol Language Reference, Version 15, January 2009; IBM Corporation: Enterprise COBOL for z/OS Language Reference, Version 4 Release 1, SC23-8528-00, December 2007
  16. ^ Follet, Robert H.; Sammet, Jean E. (2003). Ralston, Anthony; Reilly, Edwin D.; Hemmendinger, David, ур. Programming language standards. Encyclopedia of Computer Science (4th изд.). Wiley. стр. 1467. ISBN 978-0-470-86412-8. [Претплата неопходна (помоћ)]. 
  17. ^ „Reserved Words Table”. Micro Focus Visual COBOL 2.2 COBOL Language Reference. Micro Focus. Приступљено 3. 3. 2014. 
  18. ^ ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.5.2.
  19. ^ Robinson, Brian (9. 7. 2009). „Cobol remains old standby at agencies despite showing its age”. FCW. Public Sector Media Group. Приступљено 26. 4. 2014. 
  20. ^ „A list of Codasyl Cobol features”. Computerworld. 10. 9. 1984. стр. ID/28. ISSN 0010-4841. Приступљено 8. 6. 2014. 

Литература[уреди]

Види још[уреди]

Спољашње везе[уреди]