Существует несколько тем о релевантности языка программирования Cobol на этом форуме, например. этот поток ссылается на их коллекцию. Меня интересует часто повторяющееся выражение, основанное на исследовании Gartner от 1997 года: в то время в активном использовании было использовано около 200 миллиардов строк кода.
Я хотел бы задать несколько вопросов для проверки или фальсификации нескольких связанных моментов. Моя цель состоит в том, чтобы понять, имеет ли это утверждение к нему какую-либо правду или если это совершенно нереально.
Я заранее извиняюсь за то, что я немного подробно излагаю свою мысль и мое собственное мнение о том, о чем я не уверен, но я думаю, что это могло бы помочь поместить вещи в контекст и таким образом подчеркнуть любые неправильные предположения и выводы Я сделал.
Иногда число "200 миллиардов строк" сопровождается добавленным утверждением, что это соответствовало 80% всего кода программирования на любом используемом языке. В других случаях 80% просто относятся к так называемому "бизнес-коду" (или к какой-то другой неопределенной фразе, намекающей, что читатель не должен подсчитывать основное программное обеспечение, встроенные системы или что-то еще, где Cobol практически не существует). В следующем случае я предполагаю, что код не включает двойной подсчет нескольких установок одного и того же программного обеспечения (так как это обман!).
В частности, за время, предшествующее задаче y2k, было отмечено, что много кода Cobol уже составляет от 20 до 30 лет. Это означало бы, что это было написано в конце 60-х и 70-х годов. В то время лидером рынка был IBM с мэйнфреймом IBM/370. IBM опубликовала историческое объявление на своем веб-сайте, где указаны цены, конфигурация и доступность. Согласно листу, цены составляют около миллиона долларов за машины с объемом памяти до половины мегабайта.
Вопрос 1: Сколько мейнфреймов действительно продано?
Я не нашел никаких чисел за эти времена; последние номера относятся к 2000 году, снова Gartner.: ^ (
Я бы предположил, что фактическое число находится в сотнях или низших тысячах; если в 2000 году размер рынка составлял 50 млрд., а рынок вырос по экспоненте, как и любая другая технология, это могло быть всего лишь несколько миллиардов назад в 1970 году. Поскольку IBM/370 была продана в течение двадцати лет, то в двадцать раз несколько тысяч в пару десятков тысяч машин (и это довольно оптимистично)!
Вопрос 2: Насколько велики были программы в строках кода?
Я не знаю, сколько байтов машинного кода получается из одной строки исходного кода в этой архитектуре. Но поскольку IBM/370 была 32-разрядной машиной, любой адрес доступа должен был использовать 4 байта плюс инструкцию (2, может быть, 3 байта для этого?). Если вы подсчитали в операционной системе и данных для программы, сколько строк кода поместилось бы в основную память на половину мегабайта?
Вопрос 3: Не было ли стандартного программного обеспечения?
Разве каждая проданная машина запускала уникальную систему с ручным управлением без какого-либо стандартного программного обеспечения? Серьезно, даже если каждая машина была запрограммирована с нуля без повторного использования устаревшего кода (подождите... не нарушило одну из претензий, которые мы начали с начала?), У нас может быть O (50 000 loc/machine) * O (20 000 машин) = O (1,000,000,000 loc).
Это еще далеко, далеко, далеко от 200 миллиардов! Я пропустил что-то очевидное здесь?
Вопрос 4: Сколько программистов нам нужно было написать 200 миллиардов строк кода?
Я действительно не уверен в этом, но если мы возьмем в среднем 10 л.о. в день нам понадобится 55 миллионов человеко-лет, чтобы достичь этого! В сроки от 20 до 30 лет это означало бы, что должно существовать от двух до трех миллионов программистов, постоянно занимающихся написанием, тестированием, отладкой и документированием кода. Это будет примерно столько же программистов, сколько у нас в Китае сегодня, не так ли?
EDIT:Несколько человек подняли автоматические системы шаблонов/генераторы кода или так далее. Может ли кто-нибудь это уточнить? У меня есть две проблемы: a) мне нужно сообщить системе, что она должна делать для меня; для этого мне нужно связаться с компьютером, и компьютер выведет код. Это именно то, что делает компилятор языка программирования. Поэтому по существу я использую другой язык программирования высокого уровня для генерации кода Cobol. Должен ли я работать с другим языком высокого уровня вместо Cobol? Почему средний человек? б) В 70-е и 80-е годы самым ценным товаром была память. Поэтому, если у меня есть язык программирования, выведите что-то, лучше лучше. Используя мой гипотетический метаязык, я бы действительно создал многословный и повторяющийся код Cobol с ним, а не bytecode/p-code, как это делали другие компиляторы того времени? КОНЕЦ РЕДАКТИРОВАНИЯ
Вопрос 5: Как насчет конкурса?
До сих пор я придумал две вещи:
1) У IBM был собственный язык программирования, PL/I. Выше я предполагал, что большая часть кода написана исключительно с использованием Cobol. Тем не менее, при прочих равных условиях мне интересно, действительно ли маркетинг IBM действительно вытолкнул свое собственное развитие с рынка в пользу Cobol на своих машинах. Разве действительно не существует соответствующей кодовой базы PL/I?
2) Иногда (также на этой доске в приведенной выше теме) я сталкиваюсь с утверждением, что "200-миллиардные строки кода" просто невидимы для кого-либо за пределами "правительств, банков..." (и еще чего), Фактически, Министерство обороны финансировало свой собственный язык, чтобы повысить эффективность затрат и сократить распространение языка программирования. Это приводит к их использованию Ады. Будут ли они действительно беспокоиться о том, чтобы иметь так много разных языков программирования, если они использовали преимущественно Cobol? Если бы какой-либо язык работал на "правительственных и военных" системах за пределами восприятия основных вычислений, разве этот язык не был бы Адой?
Я надеюсь, что кто-то может указать на какие-либо изъяны в моих предположениях и/или выводах и пролить свет на то, имеет ли эта претензия истина к ней или нет.