Hacker News Digest

Тег: #cobol

Постов: 2

Webbol: A minimal static web server written in COBOL (github.com)

Разработчик создал минималистичный статический веб-сервер на COBOL — языке программирования, который ассоциируется в основном с мейнфреймами и legacy-системами. Это демонстрационный проект, показывающий, что COBOL может использоваться и для современных задач, таких как обработка HTTP-запросов и отдача статических файлов.

Проект подчёркивает простоту и минимализм: сервер написан с акцентом на базовые функции, без избыточных зависимостей. Такой подход не только демонстрирует гибкость COBOL, но и вызывает интерес к его применению за пределами традиционных сфер.

by simonpure • 03 октября 2025 г. в 14:13 • 118 points

ОригиналHN

#cobol#web-server#http#legacy-systems#sockets#cgi#github

Комментарии (46)

  • Обсуждаются особенности и исторический контекст фиксированного формата COBOL, основанного на перфокартах.
  • Участники делятся опытом использования COBOL в legacy-системах крупных компаний, где он до сих пор критически важен для бизнес-операций.
  • Поднимаются вопросы о безопасности COBOL, его сравнении с современными языками и о том, может ли код быть самодокументируемым.
  • Обсуждается техническая реализация веб-сервера на COBOL, включая работу с сокетами и CGI.
  • Высказываются разные мнения: от шуток и ностальгии до серьезного интереса к изучению языка и его практического применения.

The key points of "Working Effectively with Legacy Code" (understandlegacycode.com)

Краткий конспект «Working Effectively with Legacy Code»

«Легаси-код — это код без тестов»
(М. Фезерс, 2004)

Алгоритм работы

  1. Тесты → изменения
    Сначала покрой тестами, потом трогай логику.
  2. Парадокс легаси
    Чтобы добавить тесты, надо изменить код; чтобы изменять, нужны тесты.
    Решение: минимальные безопасные рефакторинги.

4 шага к тестам

  1. Найти шов (Seam) – точку, где можно подменить поведение без правки исходника.
    Пример: унаследовать класс и переопределить метод.
  2. Разорвать зависимости (БД, сеть, файлы).
  3. Написать быстрый (< 100 мс) изолированный тест.
  4. Вносить изменения и рефакторить.

Характеризационные тесты

Если логика не ясна, пишем тест, который фиксирует текущее поведение; потом рефакторим.

by lordleft • 05 сентября 2025 г. в 14:00 • 160 points

ОригиналHN

#legacy-code#refactoring#testing#unit-testing#strangler-fig#vba#cobol#vb.net

Комментарии (67)

  • Книга «Working Effectively with Legacy Code» М. Фезерса вызывает спор: кому-то она дала язык и инструменты, кому-то показалась тривиальной и неприменимой к реальному аду из VB.NET, COBOL, VBA, AS/400 и прочим диалектам.
  • Главная идея «напиши тесты, потом трогай» часто невозможна: требований нет, классов нет, тест-фреймворка нет, а босс слышит «рефакторинг» как «тратить деньги впустую».
  • Поэтому практики делятся на два лагеря: «сначала покрой тестами хотя бы то, что трогаешь» и «запусти новую систему параллельно, сравнивай выходы, переключайся кусочками (Strangler Fig)».
  • UI, скрипты и «макро-ассемблеры» не поддаются юнит-тестам; тут спасают визуальные диффы, сторибук, продовые снимки и осторожный ручной прогон.
  • Рефакторинг превращается в бесконечное «yak-shaving», если каждый шаг не привязан к новой фиче или бизнес-ценности; политика и мотивация команды важнее любой методики.