1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
1 | |
COBOL - умирает или нет? Его преимущества и недостатки26.06.2015, 23:04. Показов 23003. Ответов 164
Всем привет. Решил создать эту тему, т.к. существует довольно популярное мнение (особенно среди людей занимающихся современными языками программирования) о том, что COBOL уже никуда не годится, и что в скором будущем он будет заменён на более современные языки программирования. Однако как человек зарабатывающий на этом языке на хлеб (и зарабатывающий довольно хорошо) и изучив мир Mainframe изнутри, я могу с уверенностью сказать, что на самом деле всё далеко не так, а скорее наоборот.
Немного истории. COBOL является абревиатурой COmmon Business-Oriented Language. То есть, язык создавался для решения бизнес задач в 1959 году (в 1960 году был уже утверждён комиссией CODASYL). Язык высоко уровня, фактически целиком состоит из английских слов. Сделано это для того, что бы любой бизнес аналитик мог понять, что делает программа. Это облегчает и синтаксис языка для программиста. Естественно, язык пережил много доработок и эволюций. На данный момент последная версия COBOL-а для IBM Enterprise COBOL for z/OS, Version 5.1. Существует и Object Oriented COBOL, COBOL 2002 который можно встретить в компиляторах от Fujitsu и MicroFocus. Последний, но если не ошибаюсь пока не утверждённый стандард - COBOL 2014. Язык больше всего используется на IBM Mainframe, вместе с IBM CICS, и IBM DB2. Преимущества и недостатки языка. Известная положительная сторона COBOL-а - он очень хорошо справляется с большими количествами данных в Batch процессах. Почему конкретно, я не знаю, но это известный факт. Могу лишь предположить, что возможно язык устроен (случайно или нет) таким образом, что оптимально компилируется в машинный код. Я нахожу некое сходство с ассемблером, но это только мои догадки. По разным данным, от 70% до 90% бизнес приложений для среднего и крупного бизнеса написано именно на COBOL-e. Таким образом, только для тех. поддержки уже существующего программного обеспечения понадобились бы огромные денежные затраты, и неимоверное количество времени. Однако надобности такой естественно нет. COBOL и раньше на зависть справлялся с поставленными задачами, и сейчас делает это лучше других. Иначе бы его бы начали заменять ещё в 80-ые или в 90-ые. Такие фирмы как Fujitsu или MicroFocus, или киты как IBM, не занимаются неперспективными проектами.
2
|
26.06.2015, 23:04 | |
Ответы с готовыми решениями:
164
QuickSort и MergeSort: недостатки и преимущества Cat, more, less: какие преимущества/недостатки? Преимущества и недостатки Reg Organizer Работа за рубежом. Преимущества и недостатки. |
93 / 19 / 5
Регистрация: 06.06.2015
Сообщений: 99
|
|
27.06.2015, 14:12 | 2 |
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
27.06.2015, 15:59 [ТС] | 3 |
aedeph, естественно! Вот данные на сайте MicroFocus:
Испанский сайт говорящий о том же: На счёт COBOL + Web через Mainframe. На сеогндяшний день, COBOL под Mainframe z/OS работает c Java, XML, WebService и т.д. VisualCOBOL от MicroFocus интегрируется в Visual Sutio, включает в себя OO COBOL. Компания Fujitsu выпускает IDE NetCOBOL For .NET... Существуют компиляторы OpenSource. В общем, COBOL как и другие языки, естественно со временeм развивается и не стоит на месте. Так почему крупнейшие компании как IBM, MicroFocus, Fujitsu, и даже HP (да да, и они в COBOL вкладываются, если не ошибаюсь по сей день), не кричат на весь мир что COBOL жив и яро не опровергают обратное мнение?! Потому, что им просто напросто нет нужды. Весь большой бизнес стоит на Mainframe, и будет стоять. Ярая реклама нужна для раскрутки, а они уже давно раскручены. Естественно, глупо считать, что они не верят в будущее COBOL-a, и притом не просто продолжают его поддержку, а развивают его. Кстати и у MicroSoft был свой компилятор COBOL. Но они вышли из гонки ещё в 90-ых.
0
|
93 / 19 / 5
Регистрация: 06.06.2015
Сообщений: 99
|
|
27.06.2015, 19:47 | 4 |
Большинство ссылок очень сильно напоминают маркетинговый булшит, а статья из ссылки на википедии и вовсе написана в 1997-м году.
О том, что кобол кодеры на свой бутерброд с маслом и небольшой домик в большом Лондоне в ближайшем будущем будут способны заработать, сомнений конечно же никаких нет, но всякие дотнеты и жабы свою долю увеличат точно.
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
28.06.2015, 17:55 [ТС] | 5 |
На мой взгляд, на "маркетинговый булшит" это не тянет, слабо слишком. Знаю точно следующее - за 10 лет, что работаю на COBOL-е, во всех банках где работал я, где работали мои сотрудники раньше, были на Manframe и COBOL/CICS/DB2, поголовно все. Я уже не говорю про государственные учреждения, страховые компании (на пример AXA), и .т.д. Фирмы предоставляющие сервис поставки программистов, такие как Accenture, ATOS, SOPRA, и огромное количество других фирм, проводят курсы (несколько раз в год) по COBOL-у (я сам, уже не раз проводил такие курсы), и потом всех (почти, кто освоил курс) сами же трудоустраивают. Я сам так начинал.
Добавлено через 2 часа 6 минут Да, хотел добавить, что естественно подавляющее количество кода на COBOL-е находится именно на Mainframe. Компиляторы под Windows, и другие ОС сравнительно новые, по-этому по крайней мере на данный момент серьёзную конкуренцию более современным языкам COBOL вряд ли сможет создать. Это я считаю абсолютно объективным мнением и полностью с ним согласен. Однако надо сказать, что Fujitsu PowerCOBOL, и MicroFocus NexExpress (которые я использую для программ для Windows) серьёзные IDE, опять так и для создания бизнес приложений. Фактически, что касается именно взаимодействия с OS, GUI и т.д. они делают всё то, что IDE под C++, Delphi, VB и т.д. Плюс в том, что можно использовать плюсы COBOL-а (лёгкую и гибкую работу со строками, индексированные файлы и т.д.). Добавлено через 3 минуты Пару скринов приложений сделанным мной в среде Fujitsu PowerCOBOL можно посмотреть здесь.
0
|
Модератор
|
|
29.06.2015, 11:26 | 6 |
Kukstyler, понятно, что современная среда разработки должна быть оконной. Эти средства несложно "прикрутить" к любому языку. Интересен именно язык. Приведите пример кода, например, на VB и равнозначный код на COBOL (чтобы можно было сравнить).
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
29.06.2015, 12:16 [ТС] | 7 |
Catstail, без проблем. Единственное, в интернете таких "сравнительных переводов" нет (может и есть, но нормального ничего найти не смог). Так, что Вы скажите какой/какие примеры хотите посмотреть, а я напишу или переведу (с того же VB) на COBOL.
0
|
Модератор
|
|
29.06.2015, 12:27 | 8 |
Давайте начнем с совсем простого: есть таблица в реляционной БД. Нужно взять из нее несколько полей, отфильтровать по определенному критерию, отсортировать, подбить промежуточные итоги и вывести в текстовый документ с шапкой.
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
29.06.2015, 16:25 [ТС] | 9 |
Сначала писал по кускам, с объяснениями... Потом увидел, что получился километровый пост. Так что сейчас просто скидываю программу, и буду отвечать на все ваши вопросы, что, как да почему.
Эта программа написана на базе общепринятых стандартов . В "лысом" варианте, она конечно ополовинится. Код
****************************************************************** * IDENTIFICATION DIVISION ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. PROGRAM1. ****************************************************************** * ENVIRONMENT DIVISION ****************************************************************** ENVIRONMENT DIVISION. ****************************************************************** * DECLARATION DES FICHIERS * ****************************************************************** INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FALITABL ASSIGN TO FALITABL ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS SW-FILE-STATUS. ****************************************************************** * DATA DIVISION * ****************************************************************** DATA DIVISION. FILE SECTION. ****************************************************************** * FALITABL FILE * ****************************************************************** FD FALITABL RECORD CONTAINS 132 CHARACTERS RECORDING MODE IS F LABEL RECORDS ARE STANDARD DATA RECORD IS FAT-FALITABL. 01 FAT-FALITABL PIC X(132). ****************************************************************** * WORKING-STORAGE SECTION ****************************************************************** WORKING-STORAGE SECTION. 01 WS-ABEND. 05 WS-OBJECT PIC X(8). 05 WS-ACTION PIC X(8). 05 WS-CODE PIC -(2)9. ****************************************************************** * FILE-STATUS ****************************************************************** 01 SW-FILE-STATUS PIC X(2). 88 SW-FS-OK VALUE '00'. 88 SW-FS-EOF VALUE '10'. ****************************************************************** * STRUKTURA SHAPKI ****************************************************************** 01 RPT-SHAPKA. 05 FILLER PIC X(8) VALUE SPACES. 05 FILLER PIC X(4) VALUE 'IMYA'. 05 FILLER PIC X(15) VALUE SPACES. 05 FILLER PIC X(8) VALUE 'FAMILIYA'. 05 FILLER PIC X(7) VALUE SPACES. 05 FILLER PIC X(5) VALUE 'ADRES'. 05 FILLER PIC X(45) VALUE SPACES. 01 RPT-LINIYA. 05 RPT-IMYA PIC X(20). 05 FILLER PIC X VALUE SPACES. 05 RPT-FAMILIYA PIC X(30). 05 FILLER PIC X VALUE SPACES. 05 RPT-ADRES PIC X(50). ****************************************************************** * SQLCA ****************************************************************** EXEC SQL INCLUDE SQLCA END-EXEC. ****************************************************************** * DCLGEN TABLE ****************************************************************** EXEC SQL INCLUDE DKLIENTY END-EXEC. ****************************************************************** * DECLARATION CURSEUR ****************************************************************** EXEC SQL DECLARE M_KURSOR CURSOR WITH HOLD FOR SELECT IMYA, FAMILIA, ADRES FROM KLIENTY WHERE ID_KLIENT > :KLI-ID-KLIENT END-EXEC. ***************************************************************** * PROCEDURE DIVISION. ***************************************************************** PROCEDURE DIVISION. PERFORM 1000-START THRU 1000-START-EXIT PERFORM 2000-PROCESS THRU 2000-PROCESS-EXIT UNTIL SQLCODE = +100 PERFORM 3000-END THRU 3000-END-EXIT STOP RUN . ***************************************************************** * 1000-START. ***************************************************************** 1000-START. MOVE ZEROS TO ID_KLIENT EXEC SQL OPEN M_KURSOR END-EXEC. EVALUATE SQLCODE WHEN ZEROS PERFORM 1100-OPEN-FALITABL PERFORM 1200-ZAPISAT-SHAPKU PERFORM 5000-FETCH-KURSOR WHEN +100 DISPLAY 'DANNYX PO ZADANNYM KRITERIYAM NE NAIDENO' WHEN OTHER MOVE 'M_KURSOR' TO WS-OBJECT MOVE 'OPEN' TO WS-ACTION MOVE SQLCODE TO WS-CODE END-EVALUATE . 1000-START-EXIT. EXIT. ***************************************************************** * 1100-OPEN-FALITABL ***************************************************************** 1100-OPEN-FALITABL. OPEN OUTPUT FALITABL IF NOT SW-FS-OK MOVE 'FALITABL' TO WS-OBJECT MOVE 'OPEN' TO WS-ACTION MOVE SW-FILE-STATUS TO WS-CODE GO TO 9999-ABEND END-IF . ***************************************************************** * 1200-ZAPISAT-SHAPKU ***************************************************************** 1200-ZAPISAT-SHAPKU. WRITE FAT-FALITABL FROM RPT-SHAPKA IF NOT SW-FS-OK MOVE 'FALITABL' TO WS-OBJECT MOVE 'WRITE' TO WS-ACTION MOVE SW-FILE-STATUS TO WS-CODE GO TO 9999-ABEND END-IF MOVE ALL '-' TO RPT-IMYA RPT-FAMILIYA RPT-ADRES PERFORM 4000-ZAPISAT-LINIYU . ***************************************************************** * 2000-PROCESS ***************************************************************** 2000-PROCESS. MOVE KLI-IMYA TO RPT-IMYA MOVE KLI-FAMILIYA TO RPT-FAMILIYA MOVE KLI-ADRES TO RPT-ADRES PERFORM 4000-ZAPISAT-LINIYU PERFORM 5000-FETCH-KURSOR 2000-PROCESS-EXIT. EXIT. ***************************************************************** * 3000-END ***************************************************************** 3000-END. EXEC SQL CLOSE M_KURSOR END-EXEC IF SQLCODE NOT = ZEROS MOVE 'M_KURSOR' TO WS-OBJECT MOVE 'CLOSE' TO WS-ACTION MOVE SQLCODE TO WS-CODE GO TO 9999-ABEND END-IF CLOSE FALITABL IF NOT SW-FS-OK MOVE 'FALITABL' TO WS-OBJECT MOVE 'CLOSE' TO WS-ACTION MOVE SW-FILE-STATUS TO WS-CODE GO TO 9999-ABEND END-IF . 3000-END-EXIT. EXIT. ***************************************************************** * 4000-ZAPISAT-LINIYU ***************************************************************** 4000-ZAPISAT-LINIYU. WRITE FAT-FALITABL FROM RPT-LINIYA IF NOT SW-FS-OK MOVE 'FALITABL' TO WS-OBJECT MOVE 'WRITE' TO WS-ACTION MOVE SW-FILE-STATUS TO WS-CODE GO TO 9999-ABEND END-IF INITIALIZE RPT-LINIYA REPLACING ALPHANUMERIC DATA BY SPACES NUMERIC DATA BY ZEROS . ***************************************************************** * 5000-FETCH-KURSOR ***************************************************************** 5000-FETCH-KURSOR. EXEC SQL FETCH M_KURSOR INTO :KLI-IMYA, :KLI-FAMILIYA, :KLI-ADRES END-EXEC IF SQLCODE NOT = ZEROS AND SQLCODE NOT = +100) MOVE 'M_KURSOR' TO WS-OBJECT MOVE 'FETCH' TO WS-ACTION MOVE SQLCODE TO WS-CODE GO TO 9999-ABEND END-IF . ***************************************************************** * 9999-ABEND. ***************************************************************** 9999-ABEND. DISPLAY '=============================================' DISPLAY '= OSHIBKA PROGRAMMY!!! ' DISPLAY '=============================================' DISPLAY '=> OBJECT : ' WS-OBJECT DISPLAY '=> ACTION : ' WS-ACTION DISPLAY '=> ERROR CODE: ' WS-CODE DISPLAY '=============================================' STOP RUN.
2
|
aedeph
|
29.06.2015, 17:06
#10
|
Не по теме: О, Fortran IV. Прямо глаз радуется.
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
29.06.2015, 18:20 [ТС] | 11 |
Сейчас случайно заметил, что в 1000-START, в WHEN OTHER нехватает GO TO 9999-ABEND. Писал на работе второпях, прошляпил.
0
|
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
|
|
16.10.2015, 10:31 | 12 |
Работа на нем есть?
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
23.10.2015, 00:03 [ТС] | 13 |
Vtulhu, работаю на нём с 2007-ого, безработицы по этому профилю не замечается даже сейчас (я про кризис)
1
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
26.02.2016, 12:25 [ТС] | 14 |
Случайно наткнулся на статью: http://bourabai.kz/alg/cobol.htm
1
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
10.03.2016, 12:45 [ТС] | 15 |
1
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
24.03.2016, 13:07 [ТС] | 16 |
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
28.10.2016, 15:22 [ТС] | 17 |
Michael Coughlan - "Beginning COBOL for Programmers"
Вот та книга о которой я говорил. Полистайте друзья, будет интересно. Особенно тем, кто думает, что Кобол давно умер. Формат файла: PDF Разбит на 2 части с помощью 7-Zip (макс. для PDF 10 МБ) Расширение *.zip.001 (последнее .zip добавил для того, что бы форум распознал файл)
1
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
28.10.2016, 15:24 [ТС] | 18 |
Также данный господин выкладывает код: https://github.com/Apress/beg-... rogrammers
1
|
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
|
|
28.10.2016, 19:35 | 19 |
Без слёз на это смотреть невозможно. В какой главе там веб-сервисы рассматриваются?
0
|
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
|
|
31.10.2016, 16:41 [ТС] | 20 |
korvin_, а кто Вам сказал, что там рассматриваются вебсервиcы? В каком месте Вы это прочитали? Там говорится о том, чем Кобол хорош, и есть сравнения с другими языками.
Про Вебсервисы, если Вам это интересно, поищите на сайте MicroFocus. Добавлено через 1 минуту
0
|
31.10.2016, 16:41 | |
31.10.2016, 16:41 | |
Помогаю со студенческими работами здесь
20
Преимущества и недостатки Windows Forms Преимущества и недостатки MASM32 по сравнению с TASM. Преимущества и недостатки использования процедур и функций? В чем преимущества и недостатки программы CorelDraw Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |