Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2020Ekosystemtworzeniaoprogramowania
39
jednakmożnaefektywniewykorzystaćprzywykonywaniuprogramównapisanych
wC++dziękiodpowiedniemuumiejscowieniudanychwpamięcioperacyjnej.Od-
niesiemysiędotychkwestiiwrozdziale8,gdybędziemyomawiaćdostępdopamięci
izrównolegloneoperacjerdzeni.
Potymkrótkimwprowadzeniudowspółczesnycharchitekturkomputerowych
zauważyćtrzeba,żestarszeiprostszearchitekturyprocesorabyłyzwykleopartena
niewyszukanymALUikilkurejestrach;nieposiadałyteżrdzenianipamięcipodręcz-
nych.WszystkietefunkcjonalnościpozwalająnamnawykonanieprogramówwC++
nawetwsposóbwielowątkowy.Stądprosteprocesorypołączonezpamięciązewnętrzną
stanowiąjeszczebardziejminimalistyczny,alenadalbardzoużytecznymodeloblicze-
niowy.Podejściatakienadalwykorzystywanewprzypadkuniektórychplatform
wbudowanychzasprawąichniższegokosztu,anierzadkotakżeniższejkonsumpcji
energii.ostatniąkwestięrównieżnależyuwzględnić,projektującoprogramowanie.
Wtymwprowadzeniujedyniedotknęliśmyzagadnieniaarchitekturyoprogramo-
waniaczyobliczeniowegomodeluprogramistycznego.Niemniejjednakrozważania
tepomogązrozumiećtechnikiprogramowaniaomawianewkolejnychrozdziałachtej
książki.WramachdalszejlekturywartozapoznaćsięzpozycjamiPattersonaiHan-
nessy3a(2018)orazBryantaiO3Hallarona(2015).
2.2.Ekosystemtworzeniaoprogramowania
Zjednejstronyoprogramowaniesprawia,żekomputerydziałają.Zdrugiejstronykompu-
terywykorzystywanedotworzeniaoprogramowania.Dychotomięmożnadostrzecna
rysunku2.3:przedstawiaonekosystemtworzeniaoprogramowania,któregoelementysta-
nowićbędątematydalszychrozdziałówtejksiążki.Scharakteryzujmykrótkokażdyznich.
Pierwszekrokipokazanenarysunku2.3toprojektowanieoprogramowaniaiko-
dowanie.Choćnatymdiagramietopoczątkowestadia,niedługoodkryjemy,że
stanowiąonezwieńczeniebardzoistotnej-możenawetnajistotniejszej-konceptual-
nejfazytworzeniaoprogramowania.Gdypracenadczęściąkoduzostajązakończone,
trzebajeprzełożyćnareprezentacjęzrozumiałądlaprocesora,coomówiliśmywpo-
przednimpodrozdziale.TenprocesprzekładuzjęzykaC++dokonywanyjestprzez
programpowszechniezwanykompilatorem.Ramięwramięzsystemamioperacyjnymi,
kompilatorybardzozłożonymiiwyrafinowanymiprogramami,cojeszczenieraz
będziemymielimożliwośćobserwować.WprzypadkuśrodowiskaC++komponenty
oprogramowaniamogąbyćtworzoneniezależnie,abyzbudowaćostatecznyprogram,
fragmentytemuszązostaćzesobąpołączone.Zarealizacjętegozadaniaodpowiada
konsolidator.Gdyzakończysięonosukcesem,dostajemykomponentkodu,którymoże
zostaćwykonanyprzezkomputer.
Nadalzostałonamjednakkilkakroków,nimbędziemymoglipowiedzieć,żenasza
pracadobiegłakońca.Taknaprawdęrozpoczynająsięnoweetapypracnadoprogra-
mowaniem:testowaniekoduorazdebugowanie.Ponieważnawetkrótkieprogramy
mogąimplementowaćskomplikowanekoncepcje,niepowinniśmymiećzłudzeń,że
napiszemypoprawnąwersjęjużzapierwszympodejściem.Dlategoteżpowinniśmy