Другие плакаты предложили Tiny COBOL, но посмотрите также OpenCOBOL. OpenCOBOL является кросс-компилятором к C и имеет довольно активное сообщество разработчиков.
COBOL - не сложный язык для изучения. Если вы не свяжетесь, чтобы поработать в магазине мейнфреймов, тратить много времени на изучение COBOL, возможно, не так много карьеры.
Как указал на этот вопрос, это не язык, а окружающая среда, которую нужно изучать. По аналогии, не так много узнать о языке C. Однако просто зная, что C не доставит вас очень далеко - вам нужно работать с огромной стандартной библиотекой, которая поставляется вместе с ней. COBOL аналогичен положению . Разница заключается в том, что COBOL не поставляется с огромной стандартной библиотекой, она является частью пакета , который часто включает в себя: CICS, DB/2, MQ-Series и ряд других библиотечных сервисов (службы LE в среде IBM).
COBOL можно найти вне окружающей среды мэйнфрейма, но мэйнфрейм - это его «настоящий дом». В качестве обобщения «мэйнфрейм» подразумевает мэйнфрейм IBM, работающий под управлением Z/OS (многие могут принять исключение из этого утверждения). Эта публикация: Introduction to the Mainframe - z/OS - хорошее место, чтобы понять, что такое среда мейнфреймов IBM.
Вещи, которые я нахожу характеризуют COBOL являются:
COBOL является процедурным языком. Некоторые поставщики добавили расширения OO , а новые языковые стандарты COBOL включают расширения OO, но это в значительной степени оформление окон. COBOL является в основном процедурным языком.
Данные декларации. Вещь PICTURE/USAGE
- это немного изгиб ума. Объявление данных объединяет внутреннее представление данных (двоичное, упакованное десятичное число, с плавающей запятой, символ и т. Д.) С представлением (количество цифр, ведущих нулей, знак и т. Д.) В одно объявление.
REDEFINES
используется для представления различных видов одной и той же базовой памяти.
Иерархические декларации данных. Иерархия данных определяется с использованием номеров уровней. Уровень 1 определяет вершину иерархии , а увеличивающиеся числа определяют нижние уровни. Уровни 66 (совместно с RENAMES), 77, 88 имеют особые значения.
Поток контроля.Многие программисты (даже некоторые ветеранские программисты COBOL) видят SECTION/PARAGRAPH
способом, похожим на вызов процедуры. Они полностью разные. SECTION/PARAGRAPH
do не следует нормальный стек ориентированный вызов/возврат семантика. COBOL использует уникальный механизм для управления возврат от PERFORMed
разделов/абзацев.
Монолитные программы с множеством глобальных переменных. Нередко можно найти исходные файлы COBOL , работающие в тысячи строк с несколькими сотнями глобальных переменных. COBOL не нужно писать таким образом - я считаю, что это наследие, относящееся ко времени, когда вызов процедур считался дорогостоящим, но PERFORMing
a SECTION/PARAGRAPH
был очень эффективным. Привычка , похоже, застряла, и новые программы COBOL, как правило, написаны как монолитные монстры.
String обработка кошмар. COBOL делает финансовые расчеты очень хорошо. Это не очень хорошо работает с обработкой строк . Строки, обрабатывающие глаголы INSPECT
, STRING
и UNSTRING
, могут делать ряд интересных вещей, но также могут усугубиться.
COPY/REPLACING
и REPLACE
Директивы компилятора должны быть поняты. Они ведут себя несколько иначе: иначе, чем включение файлов на большинстве других языков. Большинство магазинов используют COPY
только для общей записи или декларацию данных, другие используют их также для общего процессуального кода (с REPLACING
и или REPLACE
).
Учитывая хорошее знание языка C, вы можете без проблем справиться с COBOL.
COBOL в аспирантуре? Вау. Мне было бы лучше, если бы они преподавали что-то вроде Lisp вместо Java. – duffymo
@duffymo - FWIW, я тоже занимался функциональным классом программирования, преподавал с PLT Scheme. :) –
Это для класса или что-то, что вы делаете самостоятельно?Ваш вопрос заставляет его звучать как последний, но если это правда, вы заслуживаете сертификации. Я сделал кучу COBOL в колледже, а затем проработал с ней профессионально в течение трех лет. Это действительно не забавный язык. – AgentConundrum