Altri poster hanno suggerito Tiny COBOL, ma date un'occhiata anche allo OpenCOBOL. OpenCOBOL è un cross-compilatore di C e ha una comunità di sviluppo abbastanza attiva.
COBOL non è una lingua difficile da apprendere. A meno che non si stia cercando di entrare in un negozio di mainframe, lo dedicare molto tempo allo studio di COBOL potrebbe non avere molto ripagamento della carriera.
Come ha sottolineato Belisarius, non è tanto la lingua quanto l'ambiente che deve essere appreso. Per analogia, non c'è molto da imparare sul linguaggio C neanche. Tuttavia, solo conoscere C non ti porterà molto lontano - devi lavorare con l'enorme libreria standard che viene fornita con esso. COBOL è simile nel rispetto di . La differenza è che COBOL non viene fornito con un'enorme libreria standard, ma fa parte di un pacchetto che spesso include: CICS, DB/2, MQ-Series e una serie di altri servizi di libreria (Servizi LE in un ambiente IBM).
COBOL può essere trovata al di fuori di un ambiente mainframe, ma il mainframe è la sua "vera casa". Come generalizzazione, "mainframe" implica un mainframe IBM che esegue Z/OS (molti potrebbero fare eccezione a questa dichiarazione). Questa pubblicazione: Introduction to the Mainframe - z/OS è un buon posto per avere un'idea di come sia un ambiente mainframe IBM.
Le cose che trovo caratterizzare COBOL sono:
COBOL è un linguaggio procedurale. Alcuni fornitori hanno aggiunto le estensioni OO e i nuovi standard di lingua COBOL includono le estensioni OO, ma questo è in gran parte l'allestimento della finestra. COBOL è fondamentalmente un linguaggio procedurale.
Dichiarazione di dati. La cosa PICTURE/USAGE
è un po 'una mente bender. La dichiarazione dei dati combina la rappresentazione dei dati interni (binario, decimale compresso, virgola mobile, carattere, ecc.) Con la presentazione (numero di cifre, zero iniziali, segno, ecc.) In un'unica dichiarazione.
REDEFINES
utilizzato per fornire viste differenti della stessa memoria sottostante.
Dichiarazioni gerarchiche di dati. La gerarchia dei dati viene definita utilizzando i numeri di livello. Il livello 1 definisce la parte superiore della gerarchia e i numeri crescenti definiscono i livelli inferiori. I livelli 66 (in congiunzione con RENAMES), 77, 88 hanno significati speciali.
Flusso di controllo.Molti programmatori (anche alcuni veterani programmatori COBOL) visualizzano SECTION/PARAGRAPH
in modo simile a una chiamata di procedura. Sono completamente diversi. SECTION/PARAGRAPH
do non seguire la normale semantica chiamata/ritorno orientata allo stack. COBOL utilizza un meccanismo univoco per gestire il ritorno dalle sezioni/paragrafi PERFORMed
.
Programmi monolitici con tonnellate di variabili globali. Non è raro trovare i file di origine COBOL in migliaia di righe con diverse centinaia di variabili globali. COBOL non deve essere scritto in questo modo - credo che questa sia un'eredità risalente a un tempo in cui le chiamate alla procedura erano considerate costose ma PERFORMing
a SECTION/PARAGRAPH
era molto efficiente. L'abitudine sembra avere bloccato e nuovi programmi COBOL tendono a essere scritti anche come mostri monolitici.
Incubo di gestione delle stringhe. COBOL calcola i calcoli finanziari molto bene. Non gestisce molto bene la gestione delle stringhe . I verbi di gestione delle stringhe INSPECT
, STRING
e UNSTRING
possono fare un numero di cose interessanti, ma riescono anche ad essere piuttosto aggravanti.
COPY/REPLACING
e REPLACE
direttive del compilatore devono essere comprese. Si comportano in qualche modo in modo diverso dall'inclusione dei file nella maggior parte delle altre lingue. La maggior parte dei negozi utilizza COPY
solo per la registrazione dei dati comuni o la dichiarazione di dati , altri li utilizzano anche per codice procedurale comune (con REPLACING
eo REPLACE
).
Data una conoscenza pratica di C, si dovrebbe essere in grado di raccogliere su COBOL senza troppe difficoltà.
COBOL nella scuola di specializzazione? Wow. Mi sentirei meglio se insegnassero qualcosa come Lisp invece che solo Java. – duffymo
@duffymo - FWIW, ho fatto anche una lezione di programmazione funzionale, insegnata con PLT Scheme. :) –
È questo per una classe, o qualcosa che stai facendo da solo?La tua domanda fa sembrare il secondo, ma se è vero sei certificabile. Ho fatto un sacco di COBOL al college, poi mi sono bloccato a lavorare con lui professionalmente per tre anni. Non è davvero una lingua divertente. – AgentConundrum