 
kuva 1: Proseduuri P1 käsittelee tietorakenteita d1 ja d2.
|  Rinnakkaisalgoritmit edustavat erästä algoritmien erityisluokkaa, ne
perustuvat useisiin samanaikaisesti suorittuviin prosesseihin. Alkeisrutiinien
tasolla nämäkin usein perustuvat syöte-käsittely-tuloste -mallin mukaisiin
algoritmeihin - moduleihin, joissa tietosisällön muutokset heijastelevat niihin
sovellettuja käsittelyjä.  Proseduraalisten ohjelmointikielten kehitys ja leviäminen liittyi algoritmien
tutkimuksen suosioon. Pienimuistisissa ja yksiprosessorisissa (merkkipohjaisissa)
tietokoneympäristöissä hyvin määriteltyjen algoritmien pohjalta ohjelmoidut
proseduurit olivat riittävän pelkistettyjä, jotta niiden tila- ja aikavaatimukset
olivat arvioitavissa ja jopa todistettavissa. Proseduraalisen ohjelmoinnin
tekniikat kehittyivät niin, että ohjelmat voitiin osittaa itsenäisiksi
prosesseiksi, joilla oli omaan suoritusaikaansa sidottuja tietorakenteita
ulkoisten, parametreina välitettävien syötteiden ja tulosteiden lisäksi, (kuva
2). Proseduraalisen ajattelun joustavuutta osoittaa se, että ensimmäiset
rinnakkaisohjelmointikielet perustuivat rinnakkaisiin keskenään tietorakenteiden
välityksellä kommunikoiviin prosesseihin.  Esimerkkinä modulaarisen suunnittelun voimasta Unix -
käyttöjärjestelmäfilosofia, joka on rakennettu peruspalvelut toteuttavan ytimen
ympärille organisoiduille proseduurikirjastoille. Kunkin käyttäjän sovellukset
rakennetaan peruspalveluiden ja kirjastojen päälle omaksi ohjelmakerroksekseen -
pyrkimyksenä maksimaalinen siirrettävyys. Eri järjestelmiin kirjastot on voitu
toteuttaa laitteiston vaatimukset ja mahdollisuudet huomioiden. Kirjastojen
kehittäminen ja ylläpito voidaan hallita, kun ositus on sopivalla karkeustasolla. | 
 
 
| kuva 2: Proseduurit P ja Q on ositettu moduleihin, jotka käsittelevät tietorakenteita d1 ja d2. Tietorakenteet voivat olla moduleille paikallisia, ts. ne ovat olemassa vain proseduurin suorituksen ajan | 
|  Ohjelmien modulaarisuuden lisääntyminen antaa mahdollisuuden yksittäisten
prosessien ja osatoimintojen arviointiin. Samanaikaisesti monimutkaistuvat
tietorakenteet vaativat entistä huolellisempaa analyyttista suunnittelua.
Proseduraalisessa ohjelmoinnissa tätä epäsuhtaa pyritään korjaamaan abstraktien
tietotyyppien (ADT) avulla. Modulaarisen ohjelmoinnin kehityksen huippuna voidaan
pitää Modula-2 kieltä, esimerkiksi (Cooper) erityisesti kappaleet 11-14.  Proseduurit voivat käsitellä vain ennalta määritellyn tyyppistä tietoa -
numero-, merkki- tai käyttäjän määrittelemiä syötteitä ja tulosteita.
Rakenteellisista tietotyypeistä muodostetaan osoiteviittausten avulla mukautuvia,
tietoalkioita sisältäviä struktuureita ja määritellään niiden käsittelemisen
kuvaavat proseduurit. Osoitteiden avulla vaihtuvakokoiseksi tai -muotoiseksi
ketjutettavia rakenteita sanotaan dynaamisiksi tietorakenteiksi; tietorakenteen
ja siihen sovellettavien käsittelyiden yhdistelmää sanotaan abstraktiksi
tietotyypiksi, esim. (kuva 3). Proseduraalisessa ohjelmoinnissa ohjelmien laatuun
ja vaatimuksiin vaikuttaa ratkaisevasti oikeiden abstraktioiden valinta.  Pascal ohjelmointikielen kehittäjä Niklaus Wirth nimesi abstrakteja
tietotyyppejä käsittelevän kirjansa: Algoritmit + tietorakenteet = ohjelmat. Hän
kuvaa kirjassaan abstraktien tietotyyppien perusvalikoiman pascal-kieliset
toteutukset. Perusrakenteista tärkeimpinä mainittakoon listat, puut ja verkot.
Epäsuoran viittauksen ansiosta rakenteisiin voidaan tallettaa mielivaltainen
määrä tietoalkioita toisin kuin kiinteämuotoisiin rakenteellisiin
tietotyyppeihin. | 
 
kuva 3: Listatyypin graafinen esitys.
|  Ohjelmien modulaarisuuden kehitys johti top-down suunnittelumetodin suosion
kasvuun erityisesti ohjelmoinnin opetuksessa. Edward Yourdon kehitteli
ratkaisukokonaisuudesta yksityiskohtiin etenevää analyyttistä ja osittavaa
ohjelmien kehitys- ja suunnittelumetodia. Yourdonin strukturoidusta
ohjelmansuunnittelumetodista katso esimerkiksi (Page-Jones). Kokonaisuudesta
yksityiskohtiin eteneminen yhdistettynä jokaisen suunnittelutason samanaikaiseen
testaamiseen oli hänen mukaansa ohjelmien laadun ja projektien ajoituksen paras
tae.  Top-down suunnittelussa sovellettavaa ositusta voidaan myös tarkastella
geneettisen algoritmin näkökulmasta: miten ongelma ositetaan niin, että ratkaisun
toteuttavat modulit ovat versioitavissa ja kuvattavissa perimää edustavien
geenien avulla?  Jos algoritmin toteuttavaa proseduuria käsitellään kuten perimää edustavaa
merkkijonoa, kromosomia, niin risteytys tai mutaatio voi tuottaa vain sattumalta
syntaktisesti merkityksellisen merkkijonon - semantiikasta puhumattakaan; siis
suomeksi sanottuna toimivan ohjelman. Biologisen mallin mukaisen risteytyksen
sijasta on käytettävä sovelluskohtaisia perimää muokkaavia rutiineja, jos
halutaan välttyä mielettömiltä versioilta. |