Комментарии 125
Ну, более-менее средний бизнес — порядка пары сотен работающих, 1с — шестерка почти не считается 1997 — 7.5, с 2000-7.7, с 12-8.2 (обычные формы), с 2017 — 8.3 (управляемые). — получается «каждые 5».
в смысле, переписать один раз в 40 лет — затраты больше, чем переписать 10 раз за эти 20 лет? наверняка. Даже прямых меньше. а основные затраты — косвенные
Вот серьёзно, так бывает? Кто-нибудь вживую это видел?Настолько старые вещи не пробовал, а вот, например, в переписывании раздела веб-приложения с мешанины ASP.NET Razor+jQuery+Knockout на SPA с React/Redux/Typescript и REST API, с полным сохранением UI — участвовал. Подо всем этим было переписано ещё и часть кода под существующим API, с сохранением интерфейса (да, опять сохранение интерфейса). Зачем? Затем, что старый код не работал приемлемо на достаточно больших данных, а дорабатывать его означало всё равно местами переписывать с нуля, только ещё и копаясь в древних версия библиотек без типизации и нормальной поддержки IDE.
И второй вопрос, зачем? Т.е. если ничего не изменитВы серьёзно считаете, что если интерфейс не поменялся, то и ничего не поменялось? Сам смысл отделения интерфейса от реализации — именно в том, чтобы менять реализацию, не меняя интерфейса.ься, то зачем переписывать?
Статья эта — перепечатка, давно уже по сети гуляет. Я в первый раз столкнулся с ней на CNews — www.cnews.ru/news/top/2020-04-07_ssha_izza_koronavirusa_ponadobilis
Так вот, там был абзац в конце, который сюда не попал:
К числу причин, по которым организации не спешат отказываться от COBOL и переходить программы, созданные при помощи актуальных языков программирования – это дороговизна обновления. На своем примере это доказал Банк содружества Австралии, решившийся на полную замену всех приложений, написанных на COBOL.
Представители банка сообщили, что переход на новое ПО занял пять лет – он проходил в период с 2012 по 2017 гг. Размер затрат на это крупномасштабное мероприятие известен – апдейт обошелся банку почти в $750 млн.
Вот вам масштабы. Можете сравнить это с тем, с чем сталкивались Вы.
Как разработчик в банке могу вам сказать что подобная операция потребует
1. Немалого количества человеко-часов работы аналитиков для проработки FSD.
2. Огромного количества человеко-часов работы разработчиков для реализации всего этого в коде — количество строк кода, работающего на банковских серверах я лично затрудняюсь оценить количественно даже примерно, а качественно оцениваю как очень-очень-очень дофига.
3. Опять аналитики — любое, самое минимальное изменение в коде требует ретеста. Тестирование ПО проходит в несколько этапов — компонентное (соответствие кода требованиям FSD), бизнес (соответствие FSD+реализации заданию на разработку от бизнеса), интеграционное (непротиворечивость различных компонентов системы друг другу, отсутствие конфликтов и паразитных влияний), нагрузочное (потребление ресурсов и поведение в условиях пиковых нагрузок).
Ну и последнее — внедрение. Банк штука такая — его невозможно становить даже на час «подождите, мы тут ПО обновляем». Так что все это должно внедряться или путем постепенной замены элементов действующей системы или включением параллельной системы, получением подтверждения что она на 100% повторяет работу старой, незаметным для пользователя переключением на нее и потом вывода из эксплуатации новой старой системы.
Это огромная нагрузка на сопровождение и поддержку.
В общем, масштаб затрат (времени, денег, ресурсов) ту колоссальный. И просто так на это никто не подпишется. Это не отдельный сайт, который можно положить на час-два-три и кроме недовольства пользователей ничего не будет.
Банк штука такая — его невозможно становить даже на час «подождите, мы тут ПО обновляем».Какое отношение это имеет к обсуждаемой статье про службу учёта безработных?
Так что все это должно внедряться или путем постепенной замены элементов действующей системыЯ где-то писал, что нужно менять всё сразу? Отделение интерфейса от реализации это же не (только) про пользовательский интерфейс, но и про интерфейс взаимодействия элементов системы.
И не стоит думать что служба по учету безработных сильно проще банковского ПО. Уверен, что не проще. И не меньше по объему обрабатываемых данных. И ее нельзя вот так взять и остановить «подождите пока перепишем».
И требования по надежности там не меньше.
Так что мой пост просто как пример того, что просто так системы такого масштаба не переписываются. Очень затратно.
И тут речь ведь не о том, что оно не работает. А о том, что оно не справляется с пиковой нагрузкой. Т.е. требуется не просто переписать, требуется оптимизировать. А это само по себе непростая задача. Обычно сначала проводится аудит (у нас для этого вызывают спецом из IBM). Аудиторы проводят нагрузочные исследования, выявляют наиболее ресурсоемкие участки кода, а потом уже разработчики морщат мозг на тем как это можно сделать эффективнее.
Сам иногда такими вещами занимаюсь — у нас целый список задач на оптимизацию в беклоге висит, как время от текучки чуть освободилось, берем в работу.
И не стоит думать что служба по учету безработных сильно проще банковского ПО. Уверен, что не проще. И не меньше по объему обрабатываемых данных. И ее нельзя вот так взять и остановить «подождите пока перепишем».Думаю, что и проще, и данных меньше, и обновляться можно в нерабочие часы сколько угодно. У неё же пользователи — только горстка госслужащих.
И требования по надежности там не меньше.
Но чтобы решить эту проблему нужно переписать часть кода. Который на коболе.
Ну вот как пример из нашей практики. В режиме пиковой нагрузки одна из таблиц значительно разрослась и, совершенно неожиданно, время на аллокацию дополнительного простраства при добавлении новых записей подскочило в 100 раз (в сто раз!!!) что привело к существенному замедлению всей работы. И это в условиях пика!
Чтобы система вообще не встала сопровождение было вынужденно отключить один из модулей (временно, до выяснения проблемы). В результате в течении пары часов не проходили расчеты по пластиковым картам. В масштабах страны, между прочим.
Ситуацию поправили сначала временным решением, потом внесли изменения в код.
Вполне возможно, что там ситуация ну если не подобная, то носит схожий характер — надо где-то что-то переписать более оптимально. Но на коболе. Который для этого желательно знать не по краткому курсу, а на опыте реального использования.
Да судя по всему работает, просто систему никто не рассчитывал на рост нагрузки в 100 раз, что с системами иногда случается в процессе перевода с пред прода/теста на прод :), а вот увеличить производительность просто нашлёпав инстансов в avs архитектура не позволяет...
С программами — так же. А чтобы находились специалисты — менеджмент должен работать а не… И понимание того что для таких языков придётся иметь избыточный штат и платить иногда просто за факт присутствия на работе. Потому что когда припечёт взять таких спецов будет не где.
Да будут они через 10 лет жить и процветать.
Раньше язык создавался, жил какое-то время не меняясь и помирал, когда появлялся более удобный язык.
Сейчас языки постоянно развиваются. Java сейчас и Java 15 лет назад — это две огромные разницы.
По факту, происходит точно такая же смена поколений языков, но теперь они делают это не «всё выкинуть и переписать с нуля», а итеративно, по возможности сохраняя старые наработки и обратную совместимость в пределах экосистемы. Соответственно, через 20 лет программу нужно будет переписывать не с Java на «убийцу Java», а с устаревшего диалекта Java на современный, что на порядок проще.
Один из аспектов описывался тут:
habr.com/ru/company/ruvds/blog/467251
habr.com/ru/company/ruvds/blog/467253
Из современных (по крайней мере развивающихся ныне) языков наиболее близок RPG.
Во многом те системы были надёжны из за однозначности и строгости в том числе входящих в них языков. Да и просто, они были надёжны. Чего не скажешь о современной флеш-памяти, не говоря уже об SSD.
Проблема же со специалистами очень несложно решается при условии наличия адекватных языков программирования (прежде всего я говорю здесь об однозначности интерпретации программного кода) использованием трансляторов, например, из Ada в Pascal, и в обратную сторону (там конечно есть ограничения, и не мало, но тем не менее).
и редкие специалисты Cobol получают от $55 до $85 в час.
Что-то как-то не тянет на «с руками». Меня с недоношеным C#/NET бодишоп в 2009 году продавал по 70 в час.
Коронавирус резко увеличил спрос на ИВЛ со стороны кобол-программистов.
Кобол — древний и не бог весть какой сложный язык.
На одной из прошлых работе (в одном, гм, небольшом ритейле) была числодробилка с подобной «архитектурой»: в Excel на 10—15 листах готовились данные, VBA перелопачивал таблицы в подходящий формат и скармливал бинарнику, написанному на Фортране.
Потом господа-экономисты всё же взялись за ум и переписали всё это на Java/SQL Server. Но «фронтэнд» и «отладчик» на Excel работает, наверное, до сих пор.
Это если писать транслятор из Python в Cobol на регулярках
"Знал бы, солому подстелил".
cobolcowboys.comТогда почему «губернатор штата Нью-Джерси разыскивает программистов, знающих язык Cobol», а не фирму этих ковбоев? Стартап есть, но он не взлетел. Хотя теперь может и подлетит.
Часто на Хабре пишут, что в Штатах много вакансий для коболовцев — это говорит о том, что нормального интегратора то и нет. А это как раз их случай — работы немного, но она очень специфическая — типичный аутсорс (опоздал).
Знал одного человека который весьма неплохо подрабатывал, у них была группа которая брала на себя задачи по различным доработкам, в качестве постоянной прибавке к з.п. отнимающей немного времени вполне, при этом я так понял они все (заказчики и исполнители) хорошо друг друга знают, в т.ч. расценки на срочную работу.
Дык, клиент денег платить не хочет столько, чтобы было интересно запариваться
habr.com/ru/post/403037
Именно сейчас, когда горит, — разумеется, проще найти спеца и заплатить ему всё: от 10 тыщ зелени в час, хилтон, и полный бентли шлюх с багажником кокаина, чем затевать модернизацию системы (я даже уверен, что этой модернизации все сами сторонятся, потому что ждут, пока придёт следующий мэр/губер/председатель_совхоза и сделает уже он.
Работа не постоянная с непонятной перспективой и с местами некоторыми требованиями к резидентству/гражданству, + закрытость, в принципе не имея выхода на заказчиков изучать смысла нет, а те кто имеет выход хорошо понимают ёмкость рынка и не заинтересованы в наплыве специалистов.
1. Почему Вы не в курсе что с моей кармой я не могу голосовать?
2. Что Вы тут делаете?
>кое-что поменять в исходных файлах в зависимости от некоторых условий
и сваять с нуля (пусть и очень простенькое) — это разные вещи.
В хаскел для вывода в консоль Вам придется разобраться с монадами, вот прям сразу с порога. И это далеко не единственное в чем придется перестроить мышления переходя с императива. В кок Вам придется разобраться с Calculus of constructions не считая того что надо будет понимать как строятся доказательсва, индукция, вот это вот все.
>И это при том, что я не программист.
Вам не приходило в голову что люди, зарабатывающие ремеслом могут знать о нем немного больше Вас? И развивая мысль — Вам не приходило в голову что (возможно, чисто гипотетически, в одном инстансе Мультивселенной) Вы можете быть неправы?
Но упомянутые языки — немножко другое. Даже с опытом функционального программирования в несколько лет плюс пяток прочитанных книг по матлогике и теории типов продуктивно писать на идрисе заняло некоторое время
В порядке интереса, что--то коммерческое на этих языках делается? А коробочное, т.е. предназначенное более чем для одного кастомера?
причем со своими особыми тараканами.
Ну и своим стилем напейсания (не, безусловно, можно выдавать и на фортране-4 код, хотя и использующий goto, но структурированный. Но это если ты писал на чем-то типа паскаля/си. если же ни на чем кроме фортрана-алгола-паскаля не писал — стиль будет соответствующий...)
Не всё так просто. Для этого язык идеологически должен быть похож на уже известные программисту языки. Для меня когда-то давно функциональные языки стали настоящим откровением, потому что весь предыдущий опыт знания (в разной степени) большого количества языков оказался бесполезен.
А тут ещё и мейнфреймы, которые в принципе не то же самое, что привычные нам компьютеры.
Суть в том, что там огромное количество сущностей, абсолютно чуждых миру винтов и никсов. Аналогов которым нет ни там ни там. А сущности эти часто основополагающие — без их понимания (не знания, а именно понимания) можно на ровном месте наплодить изрядное количество багов, часть из которых далеко не всегда проявятся в тесте.
Что можно освоить — я знаю. Проходил через это. Но вот получить опыт, пригодный для решения задач по оптимизации нужно время. Это именно опыт работы с конкретной системой.
Не очень понятно, откуда такая паника и вообще термин «специалист по Коболу». Для любого внятного инженера не составляет особого труда вникнуть в еще один язык/технологию, потому что в современных реалиях это приходится делать если не ежемесячно, то ежегодно точно. А если брать реалии больших компаний (гуглы-фейсбуки-др.), так там просто из коробки уже используются с десяток языков, между которыми нужно постоянно переключаться. Сомневаюсь, что прийти и с нуля подправить какой-то код на Коболе сложнее, чем начать использовать какую-нибудь новую и существенную либу из экосистемы Node, переписать реакт-компоненты с классов на хуки, переехать с AWS на Google Cloud или задействовать в продакшене какую-нибудь новую СУБД.
Ну вот я немного застал COBOL в начале 90х на больших машинах System/370. Начнем с того, что ОС и окружение полностью ортогональны тому, к чему привыкли современные программисты.
Это просто другой мир, скачайте эмулятор VM/SP и попробуйте в нем написать и запустить программку типа Hello, World на REXX. Все другое — шелл, редактор, типы файлов, вообще все. Я в свое время умел загружать эту технику и даже что-то понимал в процедуре генерации; в том году скачал эмулятор и первый час просто вспоминал как этим вообще пользоваться.
COBOL, конечно, язык не сложный, хотя и некрасивый внешне, на мой взгляд. Но как во всякой технологии времён System/360 там решает не язык, а библиотеки. И базы данных, хорошо если просто DB2. И это все тоже мало похоже на современные подходы к построению этих компонент системы. Документация занимает красивые полки и некрасивые ящики и не вся есть на самой машине.
Мои коллеги, съехавшие после 1998 года коболировать в Канаду, рассказывали, что они по большей части никакой исторический код не правят, а варят очередной слой клея над предыдущими для стыковки этого легаси-мамонта с современным фронтендом.
Это довольно унылая и абсолютно не творческая работа, гарантирующая пожизненную занятость™ в отсутствие гонки технологий. Такой вид почетной пенсии, в своем роде.
не ожидал, что он может удовольствие доставить…
Это все знания, угасающие без практики, к сожалению. Я вот был мастером REXX, варил интерактивные экранные формы и был просто монстром в ассемблере 360. Из этого всего я сейчас вспомню разве что бессмертное:
BALR 15,0
USING *,15
Испытываю теплые чувства к REXX и, отчасти, к PL/I; допускаю, что где-то существуют люди, которым нравится COBOL, но тут, скорее, не они не знают, где работу найти, а работа не знает, где таких людей искать.
Как я понимаю, мечта таких лавок это человек с активным опытом коболирования на мейнфреймах, который умеет в J2EE в варианте от IBM. Энтерпрайз с кровавостью на уровне Nightmare, одним словом, XML с CDATA в кодировке EBCDIC, и прочие игрушки для взрослых..
Сейчас имею удовольствие работать с их параллельной веткой — линейкой S/36-38 AS/400, ныне IBM i. Тоже ни на что не похожая платформа. Со множеством особенностей в которые надо вникнуть чтобы писать надежно и эфективно.
Для любителей «освоить за вечер» простенький тест — зарегистрироваться на PUB400 — получите 300мб дискового пространства и две личных библиотеки. TN5250 можно бесплатно скачать с сайта IBM (Access i Client Solution — целый пакет). Установив и настроив его (это совсем просто, фактически, когда есть логин и пароль к серверу там просто надо создать конфигурацию введя адрес сервера, остальное оно само сделает).
После этого попробуйте написать, собрать и запустить под отладчиком Hello Word на любом из доступных в ILE языков — COBOL, RPG, CL, C/C++.
Все средства от редактора до компилятора и отладчика там есть. Прям в составе ОС.
Дальше можно попробовать создать простенькую табличку с хотя бы одним индексом и простенький интерфейс для добавление, редактирования записей и вывода их на печать.
Гарантирую много интересных открытий на этом пути :-)
Упрощенно говоря — если человек полиглот, то не факт что увидев неизвестную науки клинопись он сможет на ней заговорить «без особого труда вникнув»©
А тут люди утверждают, что способны Кобол за вечер освоить. Преклоняюсь перед такими титанам, которые со всей уверенностью способны давать такие утверждения. Совершенно не представляю, что бы это могло бы быть пустым бахвальством, за которым ничего не стоит.
А вот ту же программу собрать и запустить на, к примеру, сервере AS/400 общаясь с ним через эмулятор терминала IBM5250 — это уже посложнее будет. Еще сложнее будет понять что делают эти несколько тысяч строк на коболе и почему они работают не так быстро как хочется.
http://rosettacode.org/wiki/Category:COBOL
Кобол
QuickSort Cobol
http://rosettacode.org/wiki/Sorting_algorithms/Quicksort#COBOL
BubbleSort Cobol
http://rosettacode.org/wiki/Sorting_algorithms/Bubble_sort#COBOL
Благодаря встроенному языку, позволяющему описать любые экспериментальные протоколы и мало того, взаимодействие с оборудованием, система обладает потрясающей гибкостью, но проблема с том, что специалистов, владеющих низкоуровневыми настройками системы, можно сосчитать по пальцам одной руки.
Поражает консервативность компании-производителя данного оборудования PerkinElmer — до сих пор поддерживают древний DOS-овский софт и ARCNET в качестве интерфейса, при этом надёжность данного легаси превосходная.
Не говоря, что пользователи какого-о монстра привыкли, скажем, уже лет 20 набивать входные данные на перфокарты. У них процедура ввода привычна, точно работает, для неё наняты люди, и все выстроено. Ок, меняем перфокарты на клавиатуру и красивые экранные формы — и что, старые сотрудники тупо будут путаться, польза делу будет отрицательна, годами система будет нестабильно работать… Оно нужно?
Program-ID. Fibonacci-Sequence.
Data Division.
Working-Storage Section.
01 FIBONACCI-PROCESSING.
05 FIBONACCI-NUMBER PIC 9(36) VALUE 0.
05 FIB-ONE PIC 9(36) VALUE 0.
05 FIB-TWO PIC 9(36) VALUE 1.
01 DESIRED-COUNT PIC 9(4).
01 FORMATTING.
05 INTERM-RESULT PIC Z(35)9.
05 FORMATTED-RESULT PIC X(36).
05 FORMATTED-SPACE PIC x(35).
Procedure Division.
000-START-PROGRAM.
Display "What place of the Fibonacci Sequence would you like (<173)? " with no advancing.
Accept DESIRED-COUNT.
If DESIRED-COUNT is less than 1
Stop run.
If DESIRED-COUNT is less than 2
Move FIBONACCI-NUMBER to INTERM-RESULT
Move INTERM-RESULT to FORMATTED-RESULT
Unstring FORMATTED-RESULT delimited by all spaces into FORMATTED-SPACE,FORMATTED-RESULT
Display FORMATTED-RESULT
Stop run.
Subtract 1 from DESIRED-COUNT.
Move FIBONACCI-NUMBER to INTERM-RESULT.
Move INTERM-RESULT to FORMATTED-RESULT.
Unstring FORMATTED-RESULT delimited by all spaces into FORMATTED-SPACE,FORMATTED-RESULT.
Display FORMATTED-RESULT.
Perform 100-COMPUTE-FIBONACCI until DESIRED-COUNT = zero.
Stop run.
100-COMPUTE-FIBONACCI.
Compute FIBONACCI-NUMBER = FIB-ONE + FIB-TWO.
Move FIB-TWO to FIB-ONE.
Move FIBONACCI-NUMBER to FIB-TWO.
Subtract 1 from DESIRED-COUNT.
Move FIBONACCI-NUMBER to INTERM-RESULT.
Move INTERM-RESULT to FORMATTED-RESULT.
Unstring FORMATTED-RESULT delimited by all spaces into FORMATTED-SPACE,FORMATTED-RESULT.
Display FORMATTED-RESULT
Ну робяты, в чем проблема? Берёте зарплату программиста в гугле, умножаете ее на два или на три — и вот у вас сломанные от кандидатов дверные петли.
Для этого есть собеседования и изучение опыта работы. По-моему проблема не в том что «не получается найти программистов на коболе», а в том, что «не получается найти джунов на коболе по цене джунов на джаваскрипте».
К чему я это говорю? Тут призывают молодежь учить кобол и т.д. Не ведитесь. Такие специалисты требуются только в абсолютно замшелых конторах с людьми пенсионного возраста, которым нужна молодежь чтобы подносить утку. Провести молодые годы в доме престарелых — не лучший выбор.
Коронавирусный кризис резко увеличил спрос на программистов, знающих Cobol