CPL (din limba combinată de programare, înainte de limbaje de programare Cambridge) este un limbaj de programare dezvoltat în comun de Cambridge și de la Universitatea din Londra în anii 1960. Uneori abrevierea este interpretată în glumă ca Cambridge Plus London.
Datorită complexității și mărimii limbii, primele compilatoare de lucru au fost create mult mai târziu decât descrierea ei teoretică, în jurul anului 1970. Au fost proiectate pentru două mașini similare - Atlas în Londra și Titan în Cambridge. CPL nu a devenit populară și a încetat să existe la mijlocul anilor 1970, având totuși un impact asupra creării BCPL.
Programul CPL constă din definiții și comenzi. O definiție este o asociere a unui nume cu o anumită valoare, o structură a datelor, o funcție sau o descriere a procesului. Numele sunt de două tipuri - mici (o literă mică, posibil cu mai mulți modificatori) și mari (majusculă, urmată de litere, numere și modificatori). Spre deosebire de nume, cuvintele rezervate sunt scrise cu litere mici și subliniate (în manuscrise) sau evidențiate prin caractere aldine (imprimate). Comandă - o instrucțiune pentru efectuarea unor calcule sau reorganizarea informațiilor stocate în computer.
Definițiile și comenzile constau în expresii; CPL vă permite să construiți expresii complexe dintr-un set simplu de forme de comandă de bază.
Programele sunt organizate într-o secțiune ("blocuri"). În cel mai simplu caz, blocul conține un set de definiții (toate definițiile sunt activate simultan) și apoi un set de comenzi (comenzile sunt executate în ordine, secvențial sau în ordinea specificată de comanda de tranziție). Blocurile pot fi imbricate.
Limba implementează următorul set de tipuri de date de bază: index numeric. întreg. reală. complex. boolean logic. eticheta. șirul și matricea și lista structurilor de date. Structurile de date mai complexe pot fi create prin combinarea tipurilor de bază. În mod curios, constantele de șir sunt cuprinse în ghilimele "și" - o soluție rar întâlnită în limbile moderne.
Caracteristicile limbajului CPL:
- un set solid de comenzi de control, inclusiv cicluri (care au fost transferate aproape complet către BCPL);
- mecanism pentru definirea și chemarea funcțiilor și procedurilor utilizatorului (rutină). Funcțiile nu trebuie să aibă efecte secundare, dar pot să returneze o valoare a funcției de tip. Procedurile pot fi adoptate ca argumente pentru alte proceduri. Astfel, CPL realizează rudimentele de programare funcțională.
- Mai multe mecanisme diferite pentru specificarea expresiilor și obținerea rezultatelor acestora. Aceasta include: cuvântul unde. Aceasta vă permite să definiți o variabilă locală pentru a fi utilizată în cadrul unei expresii; rezultatul cuvintelor din. Aceasta permite ca blocul să fie folosit ca expresie; expresii condiționale ale formei b → e1, e2. Revenirea diferitelor expresii în funcție de valoarea variabilei logice; și comenzi de asignare simultană.
- Mecanisme I / O ale diferitelor tipuri de date prin fluxurile corespunzătoare. Pot exista mai multe fluxuri de fiecare tip; comenzile de intrare și ieșire vă permit să specificați numărul fluxului care va fi utilizat ca curent pentru program și funcțiile Sursă și destinație - pentru a recunoaște numărul curent de flux.
Elementele sintaxei:
În general, comanda Scrie are o listă de valori, dar puteți imprima o constantă string, ca aici.
factorial:
(Un exemplu este luat din descrierea limbii) Aici este o definiție recursivă a factorială. Pentru a implementa diferite scenarii de procesare pentru diferite valori ale argumentului, se utilizează o expresie condiționată în locul ramurii condiționale a if.
factorial:
(Un exemplu este luat din descrierea limbii) Aici vom da o definiție iterativă a factorială.
Rezultatul lui vă permite să utilizați o comandă bloc sau compusă ca expresie. Pentru aceasta, corpul blocului trebuie să conțină alocarea rezultatului variabil. În bloc, puteți defini variabilele locale și nu puteți crea efecte secundare (de exemplu, modificați valorile variabilelor externe). Cel mai adesea, această expresie este utilizată în definirea funcțiilor.
În corpul ciclului, se utilizează asignarea simultană a valorilor noi la variabile. Deoarece ambele variabile folosesc nume mici, limbajul vă permite să omiteți semnul de multiplicare între ele - xf este tratat ca x * f.