# સંગણક

ધ નાસા કોલંબિયા સુપરકમ્પ્યુટર.
**સંગણક** કે **કમ્પ્યુટર** એટલે એવું યંત્ર કે જે તેને **ક્રમાદેશન** (કમ્પ્યુટર પ્રોગ્રામીંગ) કરીને અપાયેલી સુચનાઓ મુજબ કાર્ય કરીને વિવિધ સ્વરૂપની માહિતી અને ડેટા પર વિવિધ પ્રક્રિયા કરી શકે છે.

## વિગત

આધુનિક સંગણકોને મળતા આવતા પહેલા ડિવાઇસિસ 20મી સદીની મધ્યના હતા (૧૯૪૦–૧૯૪૫), જોકે કમ્પ્યુટરનો અભિગમ અને વિવિધ યંત્રો અગાઉ અસ્તિત્વ ધરાવતા કમ્પ્યુટર્સ જેવા હતા. અગાઉના ઇલેક્ટ્રોનિક કમ્પ્યુટર્સ વિશાળ ઓરડાના કદના હતાં, અને આધુનિક સો જેટલા પર્સનલ કમ્પ્યુટર્સ જેટલી વીજળી વાપરી નાખતા હતા. આધુનિક કમ્પ્યુટર્સ નાની ઇન્ટિગ્રેટેડ સર્કિટ પર આધારિત છે અને માહિતીના સંગ્રહની દ્રષ્ટિએ અબજોગણા વધુ સક્ષમ છે. હાલમાં, સાદા કમ્પ્યુટર્સ કાંડા ઘડિયાળમાં સમાવી શકાય તેટલા નાના બની શકે છે અને તે ઘડિયાળની વીજકોષ (બેટરી)થી ચલાવી શકાય છે. વિવિધ પ્રકારના વ્યક્તિગત કમ્પ્યુટર્સ માહિતી યુગના ઓળખ ચિન્હોરૂપ છે, જોકે, હાલમાં જે પ્રકાર સર્વ સામાન્ય છે તે એમ્બેડેડ કમ્પ્યુટર. એમ્બેડેડ કમ્પ્યુટર્સ નાના સરળ યંત્રો છે જેનો ઉપયોગ બીજા યંત્રોને અંકુશમાં રાખવા થાય છે-ઉદાહરણ તરીકે, એમ્બેડેડ કમ્પ્યુટર્સ લડાકુ વિમાનથી લઇને ઔદ્યોગિક રોબોટ્સ, ડિજિટલ કેમેરા અને બાળકોના રમકડાંમાં જોવા મળી શકે છે.

સૂચનાઓની યાદીનો સંગ્રહ અને અમલ કરવાની ક્ષમતાને **ક્રમાદેશ** (કમ્પ્યુટર પ્રોગ્રામ) કહે છે જે કમ્પ્યુટર્સને ખુબજ ઉપયોગી બનાવે છે અને અન્ય ગણનયંત્રોથી (જેવા કે કેલ્ક્યુલેટર)થી તેને અલગ પાડે છે.**ચર્ચ-ટ્યુરિંગ થિસીસ** એ આ વિવિધતાનું ગણીતીય નિરૂપણ છેઃ ચોક્કસ ઓછામાં ઓછી ક્ષમતા સાથેનું કોઇ પણ કમ્પ્યુટર તે સૈદ્ધાંતિક રીતે અન્ય કમ્પ્યુટરો જે કાર્ય કરે છે તે જ કાર્ય હાથ ધરવા સક્ષમ હોય છે. તેથી, પર્સનલ ડિજિટલ આસિસ્ટંટ (પિડિએ) અને સુપરકમ્પ્યુટર સુધીની ક્ષમતા અને જટિલતા ધરાવતા કમ્પ્યુટર્સ સમાન સમય અને સંગ્રહ શક્તિ સાથે એક સરખા કમ્પ્યુટેશનલ કામ કરવા સક્ષમ હોય છે.

## કમ્પ્યુટિંગનો ઇતિહાસ

ધ જેક્વાર્ડ લૂમ - પહેલા પ્રોગ્રામ થઇ શકે તેવા સાધનોમાંનું એક હતું.
અગાઉના સમયનાં કમ્પ્યુટર્સનાં કોઇ એક ડિવાઇઝને ઓળખવુ પણ અઘરૂ છે કારણે સમયાંતરે "કમ્પ્યુટર" શબ્દનો અર્થ બદલાતો જાય છે.મૂળરૂપે, "કમ્પ્યુટર" શબ્દ એવા વ્યક્તિનો ઉલ્લેખ કરે છે જે આંકડાકીય ગણતરી કરી શકે આવા માનવીય કમ્પ્યુટર ઘણીવાર યાંત્રિક ગણતરીના સાધનની પણ મદદ લેતા હોય છે.

આધુનિક કમ્પ્યુટરનો ઇતિહાસ બે અળગ પ્રાવૈધિક વિજ્ઞાન સાથે શરૂ થાય છે - આપોઆપ થતી ગણતરી અને પ્રોગ્રામેબિલિટી.

અગાઉના યાંત્રિક ગણન સાધનોના ઉદાહરણમાં અબાકસ, સ્લાઇડ રૂલ (ગણતરી આપોઆપ કરી શકાય તેવી પટ્ટી) અને નક્ષત્રમાપક યંત્ર તથા *એન્ટિખિથેરા*ની યાંત્રિક પધ્ધતિ(જે ૧૫૦-૧૦૦ BC સમયમાં અસ્તિત્વ ધરાવતા હતા) નો સમાવેશ થાય છે. એલેક્ઝાન્ડ્રીયાના હેરોન (c.10-70 AD) માં મિકેનિકલ થિયેટર બન્યું હતું જે 10 મિનિટ સુધી નાટક બતાવતું હતું અને તે દોરડાઓ તથા ડ્રમ્સની જટિલ પધ્ધતિ દ્વારા ચાલતુ હતું, મિકેનિઝમનો કયો હિસ્સો ખેલ કરશે તે નક્કી કરવા કદાચ તેની રચના કરવામાં આવી હતી.આ પ્રોગ્રામેબિલિટીનો સાર છે.

"કેસલ ક્લોક", ખગોળશાસ્ત્રને લગતી ઘડિયાળની શોધ અલ-જઝારીએ ૧૨૦૬માં કરી હતી, તેને સૌથી પહેલુ પ્રોગ્રામ કરી શકાય તેવું એનાલોગ કમ્પ્યુટર ગણવામાં આવે છે.તે રાશિ, સૂર્યની ભ્રમણકક્ષા અને ચંદ્રની ભ્રમણકક્ષા બતાવતું હતું અર્ધચન્દ્રાકાર પોઇન્ટર દર કલાકે સ્વંયચાલિત દરવાજા ખોલીને બહાર આવે છે, અને વોટર વ્હીલ સાથે જોડેલા કેમ્શેફ્ટ દ્વારા ચાલતા લિવર દ્વારા પાંચ રોબોટિક સંગીતકારો સંગીત વગાડે છે.સમગ્ર વર્ષ દરમિયાન દિવસ અને રાતની બદલતી લંબાઇ માપવા દરરોજ દિવસ અને રાતની લંબાઇને ફરી પ્રોગ્રામ કરી શકાય છે.

મધ્ય યુગના અંતમાં યુરોપિયન મેથેમેટિક્સ અને એન્જિનિયરીંગમાં નવું જોમ જોવા મળ્યું, અને વિલ્હેલ્મ શિકાર્ડનું *૧૬૨૩ યંત્ર* યુરોપિયન એન્જિનીયર્સ દ્વારા બનાવવામાં આવેલા મિકેનિકલ કેલ્ક્યુલેટર્સમાં પહેલુ હતું.જોકે, તેમાનાં કોઇપણ ડિવાઇઝિસ કમ્પ્યુટરની આધુનિક વ્યાખ્યામાં બંધ બેસતા નથી કારણ કે તેને પ્રોગ્રામ કરી શકાતા નથી.

૧૮૦૧માં, જોસેફ મેરી જેક્વાર્ડે કાપડ બનાવવાની સાળમાં સુધારો કર્યો હતો. તેમણે સાળમાં જટિલ પેટર્ન્સનું વણાટ કામ ઓટોમેટિકલી થાય તે માટે ચોક્કસ ઢબે કાણા પાડેલા પેપરની શ્રેણીનો ઉપયોગ ઢાંચા તરીકે કર્યો હતો. તેના પરિણામે કમ્પ્યુટરના વિકાસમાં જેક્વાર્ડ લૂમ મહત્વનું પગલુ બની રહ્યું કારણ કે વણાટની પેટર્ન્સ તરીકે પંચ કરેલા કાર્ડનો ઉપયોગ સૌથી પહેલો મર્યાદિત પ્રોગ્રામેબિલીટીના પ્રકાર તરીકે જોઇ શકાય.

તે ઓટોમેટિક ગણતરીનું પ્રોગ્રામેબિલીટી સાથેનું મિશ્રણ હતું તેણે પહેલુ ઓળખાવી શકાય તેવુ કમ્પ્યુટર બનાવ્યું હતું.૧૮૩૭માં, એનાલિટીકલ એન્જિન કહેવાતુ સંપૂર્ણ પ્રોગ્રામ કરી શકાય તેવા મિકેનિકલ કમ્પ્યુટરની કલ્પના અને ડિઝાઇન આપનાર ચાલ્સ બેબેજ પહેલો હતો.મર્યાદિત ભંડોળને કારણે, અને ડિઝાઇન સાથે બેદરકારી ન સહી સકનાર બેબેજે ખરેખર ક્યારેય એનાલિટીકલ એન્જિન બનાવી શક્યા નહોતા.

ટૅબ્યુલેટિંગ મશીન દ્વારા અમેરિકાના સંયુક્ત યુનાઇટેડ રાજ્યોની વસ્તીગણત્રી, ૧૮૯૦માં પંચ કાર્ડનો મોટા પાયાનો ઓટોમેટેડ ડેટા પ્રોસેસ કરવામાં આવ્યો હતો, જેની ડિઝાઇન હર્મન હોલ્લેરિથ દ્વારા તૈયાર કરવામાં આવી હતી અને કમ્પ્યુટીંગ ટેબ્યુલેટીંગ રેકોર્ડીંગ કોર્પોરેશન દ્વારા ઉત્પાદન કરવામાં આવ્યું હતું. જે બાદમાં આઇબીએમ થયું. ૧૯મી સદીના અંતમાં અસંખ્ય ટેકનોલોજીઓ, જે બાદમાં પ્રેક્ટીકલ કમ્પ્યુટરો દેખાવા માંડ્યા બાદ રિયલાઇજેશનમાં ઉપયોગી સાબિત થયા હતા. જેમાં પંચકાર્ડ, બૂલિયન બિજગણિત, વેક્યુમ ટ્યૂબ, થર્મીયોનિક વાલ્વ અને ટેલિપ્રિન્ટરનો સમાવેશ થાય છે.

૨૦મી સદીના પૂર્વાધમાં વૈજ્ઞાનિક ગણત્રીઓની ઘણી જરૂરિયાત વ્યવહારદક્ષ એનાલોગ કમ્પ્યુટર દ્વારા પુરી કરવામાં આવતી હતી, જે ગણત્રી માટે સીધા યંત્રચાલીત અથવા વિદ્યુતવાલીત મોડેલનો ઉપયોગ કરે છે.જોકે, તે પ્રોગ્રામ કરી શકાય તેવા નહોતા અને મોટેભાગે તેમાં આધુનિક ડિજિટલ કમ્પ્યુટર્સ જેવી સંપૂર્ણતા અને ઝડપનો અભાવ છે.

ક્રમશ વધુ શક્તિશાળી અને લવચીક કમ્પ્યુટિંગ ડિવાઇસિસની રચના ૧૯૩૦ અને ૧૯૪૦માં થઇ હતી, ધીમે ધીમે તેમાં આધુનિક કમ્પ્યુટર્સમાં જોવા મળતી મહત્વની લાક્ષણિકતાઓનો ઉમેરો થતો ગયો.ડિજિટલ ઇલેક્ટ્રોનિક્સ (મોટેભાગે ક્લુડ શેનન દ્વારા ૧૯૩૭માં શોધાયેલું) અને વધુ લવચીક પ્રોગ્રામેબિલિટીનો ઉપયોગ આવશ્યક જરૂરી પગલા હતાં, પણ આ માર્ગ સાથે એક પોઇન્ટને પહેલુ ડિજિટલ ઇલેક્ટ્રોનિક કમ્પ્યુટર ગણાવવું મુશ્કેલ છેઢાંચો:Ref harvard.નોંધનિય સિધ્ધિઓનો સમાવેશ કરવામાં આવ્યો છે:

એડસક એવા પહેલા કમ્પ્યુટર્સમાંનું એક હતું જેમાં સ્ટોર્ડ પ્રોગ્રામવોન ન્યુમન આર્કિટેક્ચરનો અમલ કરાયો હતો.
* કોનરેડ ઝુસનાં ઇલેક્ટ્રોમિકેનિકલ ધ ઝેડ3 (૧૯૪૧) પહેલુ એવુ વર્કિંગ મશીન હતું જેમાં દ્વિઅંકી ગણીતની વિશિષ્ઠતા હતી, તેમાં ફ્લોટિંગ પોઇન્ટ એરિથમેટિક અને પ્રોગ્રામેબિલિટીનો સમાવેશ થતો હતો.૧૯૯૮માં ઝેડ3 વ્યવસ્થિતરીતે સંપૂર્ણતા ધરાવતુ સાબિત થયું હતું, તેથી તે વિશ્વનું પહેલુ ઓપરેશનલ કમ્પ્યુટર બન્યું
* પ્રોગ્રામ ન થઇ શકે તેવુ એટનાસોફ-બેરી કમ્પ્યુટર (૧૯૪૧) વેક્યુમ ટ્યુબ આધારિત કમ્પ્યુટેશન, દ્વિઅંકી આંકડાઓ, અને રિજનરેટિવ કેપેસિટર મેમરીનો ઉપયોગ કરે છે.
* રહસ્યમય બ્રિટિશ કોલોસસ કમ્પ્યુટર્સ (૧૯૪૩), જેની પ્રોગ્રામ ક્ષમતા મર્યાદિત હતી પણ એવુ લાગતું હતું કે આ ડિવાઇઝમાં વપરાતી હજારો ટ્યુબ્સ ભરોસાપાત્ર બની શકે અને ઇલેક્ટ્રોનિક રીતે તે ફરી પ્રોગ્રામ કરી શકાય.તેનો ઉપયોગ જર્મન યુધ્ધ સમયનાં કોડ્સ બ્રેક કરવા માટે થતો હતો.
* હારવર્ડ માર્ક I (૧૯૪૪), લાર્જ-સ્કેલ ઇલેક્ટ્રોમિકેનિકલ કમ્પ્યુટર જેની પ્રોગ્રામિંગ ક્ષમતા મર્યાદિત હતી.
* યુ. એસ. આર્મીની બેલિસ્ટિક્સ સંશોધન પ્રયોગશાળા ઍનિઆક (૧૯૪૬), જે દશાંશ ગણિતનો ઉપયોગ કરતું હતું અને તેને પહેલુ સામાન્ય હેતુ માટેનું વિજાણુ કમ્પ્યુટર કહી શકાય કોનરાડ ઝુસનું ૧૯૪૧નું ઝેડ3 ઇલેક્ટ્રોનિક્સના સ્થાને ઇલેક્ટ્રોમેગ્નેટ્સનો ઉપયોગ કરતું હતું.જોકે, શરૂઆતમાં, ENIACનું આર્કિટેક્ચર લવચીક નહોતું જેના પ્રોગ્રામિંગમાં ફેરફાર કરવા તેનું ફરી વાયરિંગ જરૂરી હતું.

ENIACના કેટલાંક વિકાસકારો તેના પ્રવાહોને ઓળખી રહ્યા હતા, અને વધુ લવચીક તથા ભવ્ય ડિઝાઇન લઇને આવ્યા, જે સ્ટોર્ડ પ્રોગ્રામ આર્કિટેક્ચર અથવા વોન ન્યુમેન આર્કિટેક્ચર તરીકે ઓળખાતી હતી.આ ડિઝાઇનનું ઔપચારિક વર્ણન સૌથી પહેલા જ્હોન વોન ન્યુમેન દ્વારા પેપરમાં *ફર્સ્ટ ડ્રાફ્ટ ઓફ અ રિપોર્ટ ઓન EDVAC*, તરીકે થયું હતું, તેની વહેંચણી 1945માં થઇ હતી.આ સમયગાળામાં સ્ટોર્ડ-પ્રોગ્રામ આધારિત કમ્પ્યુટર્સ વિકસાવવા ઘણાં પ્રોજેક્ટ્સ હાથ ધરાયા હતા, તેમાંનો પહેલો ગ્રેટ બ્રિટનમાં પુરો થયો હતો. માન્ચેસ્ટર સ્મોલ-સ્કેલ એક્સપેરિમેન્ટલ મશીન (SSEM અથવા "Baby")ને સૌથી પહેલા કામ કરતું પ્રદર્શિત કરવામાં આવ્યું હતું, જ્યારે SSEMનાં એક વર્ષ પછી EDSAC પુરો થયો હતો, તે સ્ટોર્ડ પ્રોગ્રામ ડિઝાઇનનું પહેલું પ્રેક્ટિકલ અમલીકરણ હતું.તેના થોડા સમય બાદ વોન ન્યુમેનના પેપરમાં દર્શાવાયેલુ મશીન EDVAC પુરૂ થયું હતું પણ વધુ બે વર્ષ સુધી તેનો સંપૂર્ણ ઉપયોગ જોવા મળ્યો નહોતો.

લગભગ દરેક આધુનિક કમ્પ્યુટર્સ સ્ટોર્ડ પ્રોગ્રામ આર્કિટેક્ચરના કેટલાંક પ્રકારનો ઉપયોગ કરે છે, તેને એકમાત્ર એવુ લક્ષણ બનાવે છે જેના દ્વારા હવે "કમ્પ્યુટર" શબ્દ ઓળખાય છે.૧૯૪૦ના પહેલા ઇલેક્ટ્રોનિક, સામાન્ય હેતુના કમ્પ્યુટર્સ કરતા હવે ટેક્નોલોજિસમાં ધરખમ ફેરફાર થયા હોવાછતાં, મોટેભાગે હજુ પણ ન્યુમેન આર્કિટેક્ચરનો ઉપયોગ થાય છે.

માઇક્રોપ્રોસેસર્સ નાના કદના ડિવાઇસિસ છે જે મોટેભાગે સ્ટોર્ડ પ્રોગ્રામ સિપિયુ માં વપરાતા હોય છે.
ઇલેક્ટ્રોનિક એલિમેન્ટ્સ તરીકે વેક્યુમ ટ્યુબનો ઉપયોગ કરતા કમ્પ્યુટર્સ ૧૯૫૦ સુધી વપરાતા હતા, ૧૯૬૦ સુધીમાં તેના સ્થાને ટ્રાન્ઝિસ્ટર આધારિત મશીન્સ આવી ગયા, જે વધુ નાના, ઝડપી, ઉત્પાદનમાં સસ્તા, ઓછી વીજળી વાપરનારા, અને વધુ વિશ્વસનિય હતા.પહેલું ટ્રાન્ઝિસ્ટરાઇઝ્ડ કમ્પ્યુટર યુનિવર્સિટી ઓફ માન્ચેસ્ટરમાં ૧૯૫૩માં બતાવવામાં આવ્યું હતું.૧૯૭૦માં, ઇન્ટિગ્રેટેડ સર્કિટ ટેક્નોલોજી અને ત્યારબાદ તરત થયેલી ઇન્ટેલ ૪૦૦૪ જેવા માઇક્રોપ્રોસેસર્સની રચનાએ, તેના કદ અને કિંમતમાં વધુ ઘટાડો કર્યો હતો તથા ઝડપ અને કમ્પ્યુટર્સની વિશ્વસનિયતામાં વધારો કર્યો હતો. ૧૯૮૦ સુધીમાં કમ્પ્યુટર્સ ઘણાં નાના અને સસ્તા થઇ ગયા હતા જેથી વોશિંગ મશીન્સ જેવા ઘરેલુ ઉપકરણોમાં સરળ મિકેનિકલ કંટ્રોલ તરીકે મુકી શકાય. ૧૯૮૦ હોમ કમ્પ્યુટરનું પણ સાક્ષી બન્યું અને હવે સર્વવ્યાપક પર્સનલ કમ્પ્યુટર છે. ઇન્ટરનેટની ઉત્ક્રાંતિ સાથે, પર્સનલ કમ્પ્યુટર્સ ઘરની ટેલિવિઝન અને ટેલિફોન જેવી વસ્તુઓ જેટલા સામાન્ય બની ગયા.

આધુનિક સ્માર્ટફોન ટેકનિકલ રીતે સંપૂર્ણ પ્રોગ્રામ ક્ષમતાવાળા કમ્પ્યુટર્સ છે અને ૨૦૦૯માં મોટાભાગે આ પ્રકારના કમ્પ્યુટર્સ અસ્તિત્વ ધરાવે છે.

## સ્ટોર્ડ પ્રોગ્રામ આર્કિટેક્ચર

બીજા બધા મશિન્સથી જુદુ પાડતું આધુનિક કમ્પ્યુટર્સનું મુખ્ય લક્ષણ એ છે કે તે પ્રોગ્રામ કરી શકાય છે. એવુ કહી શકાય કે કમ્પ્યુટરને સૂચનાઓની યાદી આપી શકાય છે અને તે તેમાં સંગ્રહી શકાય અને ભવિષ્યમાં ગમે ત્યારે તેને ઉપયોગમાં લઇ શકાય છે.

મોટાભાગના કિસ્સાઓમાં, કમ્પ્યુટર સૂચનાઓ સરળ હોય છે. ઉદાહરણ તરીકે બીજા નંબરમાં એક નંબર ઉમેરો, કેટલોક ડેટા એક સ્થળેથી બીજા સ્થળે ખસેડો, કોઇ બહાર ના ડિવાઇસ ને સંદેશો મોકલો, વગેરે. આ સૂચનાઓ કમ્પ્યુટરની મેમરી માંથી વાંચી શકાય છે અને જે ક્રમાંકમાં તે આપવામાં આવી હોય તે અનુસાર તેની ઉપર કામ થતું હોય છે. જોકે, તેમાં કેટલીક ખાસ પ્રકારની સૂચનાઓ હોય છે જે કમ્પ્યુટરને આગળ વધવાનું કે પ્રોગ્રામમાં પાછળની કોઇ જગ્યાએ પહોચવાનું અને ત્યાંથી કામ આગળ વધારવાનું કહે છે. તેને "જમ્પ" સૂચનાઓ (અથવા "બ્રાન્ચિસ") કહે છે.વધુમાં, જમ્પ સૂચનાઓ કદાચ શરતી વિધાનને આધિન કરવામાં આવે છે જેથી સૂચનાઓની વિવિધ શ્રેણી અગાઉની કેટલીક ગણતરીઓ અથવા કોઇ બહાર ના ઇવેન્ટ ના પરિણામને આધારે વપરાઇ શકે.કેટલાંક કમ્પ્યુટર્સ એવા પ્રકારના જમ્પ પુરા પાડે છે જે ક્યાંથી જમ્પ થાય છે તે સ્થળને યાદ રાખે અને જમ્પ સૂચનાઓને અનુસરવા બીજી સૂચનાઓ તરફ પાછા ફરવાનું પણ યાદ રાખે છે અને આ દ્વારા સબરૂટિનને ટેકો આપે છે.

પ્રોગ્રામના અમલને પુસ્તક વાંચવા સાથે જોડી શકાય.જ્યારે કોઇ પણ વ્યક્તિ સામાન્ય રીતે દરેક શબ્દ અને લાઇન સુધી શ્રેણીમાં પહોંચે ત્યારે, ટેક્સ્ટમાં અગાઉના સ્થાન પર ફરીથી આવી જાય અથવા રસ વિનાના વિભાગોને કૂદાવી જાય. તેજ રીતે કમ્પ્યુટર કેટલીકવાર પાછુ જાય અને જ્યા સુધી કેટલીક આંતરિક શરતો પરિપૂર્ણ ન થાય ત્યા સુધી પ્રોગ્રામની કેટલીક શરતોને વારંવાર રીપીટ કરે છે. તેને પ્રોગ્રામમાં રહેલો "અંકુશનો પ્રવાહ" કહે છે અને જેના કારણે કમ્પ્યુટર માનવીય હસ્તક્ષેપ વગર વારંવાર કામ કરી શકે છે.

તુલનાત્મક રીતે, પોકેટ કેલ્ક્યુલેટર વાપરતી વ્યકિત સરવાળા જેવી સામાન્ય ગણતરી ફક્ત બટન દબાવીને કરી શકે છે.પણ જો એક સાથે 1 થી 1,000 આંકડા ઉમેરવાના હોય તો હજારો બટન દબાવવા પડે અને ઘણો સમય લાગે અને ભૂલ થવાની પણ શક્યતા રહે છે.મોટાભાગના કિસ્સાઓમાં કમ્પ્યુટરઉદાહરણ તરીકે:

```
 mov #0, sum ; sum ને 0 વેલ્યુ આપો
 mov #1, num ; num ને 1 વેલ્યુ આપો
loop: add num, sum ; num ને sum માં ઉમેરો, અને આ સૂચના ને loop નામ આપો
 add 1,num ; num માં 1 ઉમેરો
 cmp num,#1000 ; num ને 1000 સાથે સરખાવો
 ble loop ; જો num, 1000 કરતા નાનો હોય તો loop પર જાવ
 halt ; પ્રોગ્રામ નો અંત, સૂચનાઓ અનુસરવાનું બંધ કરો

```

એકવાર આ પ્રોગ્રામ રન કરવાનું કહેવામાં આવે, તો કમ્પ્યુટર માનવીય હસ્તક્ષેપ વગર વધારાનું કામ વારંવાર કરશે.તે ક્યારેય ભૂલ કરતુ નથી અને આધુનિક પીસી મિલી સેકન્ડસમાં કામ પૂરૂ કરી શકે છે.

જોકે, કમ્પ્યુટરો પોતાની જાતે “વિચારી” શકતા નથી, તેઓ ફકત જે રીતે પ્રોગ્રામ હોય તે રીતે જ સમસ્યા ઉકેલી શકે છે. બુદ્ધિશાળી વ્યક્તિ ધ્યાન માં લેશે કે અહીં બવ બધા સરવાળા થઇ રહ્યા છે અને તરત જ અવો અનુભવ કરશે કે દરેક નંબર ઉમેરો કરવાને બદલે જે તે વ્યક્તી સરળ રીતે સમીકરણનો ઉપયોગ કરી શકે છે.

 WIKINIUM\_MATH\_PH\_0
અને નાના કામ દ્વારા સાચા જવાબ (500,500) સુધી આવી પહોંચે છે. અન્ય શબ્દોમાં કહીએ તો ઉપરના ઉદાહરણ અનુસાર એક પછી એક નંબરો ઉમેરો કરવા માટે જે કમ્પ્યુટરમાં પ્રોગ્રામ કરવામાં આવ્યો હોય તો તે કાર્યક્ષમતા અથવા વૈકલ્પિક ઉકેલની ચિંતા કર્યા વિના યોગ્ય રીતે જ કામ કરશે.

### પ્રોગ્રામ્સ

૧૯૭૦ના પંચ્ડ કાર્ડ ફોર્ટ્રાન પ્રોગ્રામમાંથી એક લાઇનનો સમાવેશ કરે છે. કાર્ડ "Z(1) = Y + W(1)" વાંચે છે અને ઓળખ હેતુ માટે “PROJ039”લેબલ થયેલું હોય છે.
**કમ્પ્યુટર પ્રોગ્રામ**, વર્ડ પ્રોસેસર અથવા વેબ બ્રાઉઝર માટેના પ્રોગ્રામોની જેમ થોડી સુચનાઓથી લઇને અસંખ્ય સુચનાઓને અનુસરી શકે છે. વિશિષ્ટ આધુનિક કમ્પ્યુટર સેકંડદીઠ ગીગાહર્ટઝ અથવા GHz ની ગતિ થી અબજો સુચનાઓને અનુસરી શકે છે અને ભાગ્યે જ ઓપરેશનના અનેક વર્ષો માં એક વાર ભૂલ કરી શકે છે. મોટા કમ્પ્યુટર વિવિધ હજ્જારો સુચનાઓનો સમાવેશ કરતા હોય છે અને તે લખવા માટે અનેક પ્રોગ્રામર્સની સહાય લઇ શકે છે, આમ ભૂલ વિના સમગ્ર પ્રોગ્રામ લખાઇ જવાની સંભાવના અત્યંત ઓછી છે.
કમ્પ્યુટર પ્રોગ્રામમા આવતી ભૂલોને “બગ્સ” કહેવાય છે. બગ્સ સારા હોઇ શકે છે અને પ્રોગ્રામની ઉપયોગિતાને અસર કરતા નથી અથવા નજીવી અસર હોઇ શકે છે. પરંતુ કેટલાક કિસ્સામાં તે પ્રોગ્રામને “હેન્ગ” કરી શકે છે એટલેકે સ્થગીત કરી શકે છે-કે જેથી કમ્પ્યૂટર માઉસ ક્લિક્સ અથવા કીસ્ટ્રોક્સનો પ્રતિભાવ આપતું નથી અથવા સંપૂર્ણપણે નિષ્ફળ અથવા “ક્રેશ” થઇ જાય છે. અલબત્ત સારા બગ્સ કેટલીકવાર ખરાબ ઇરાદા સાથે “એક્સપ્લોઇટ”લખતા ખરાબ યૂઝર દ્વારા નુકસાન પહોંચાડી શકે છે- બગ અને પ્રોગ્રામનો યોગ્ય અમલ ખોરવવા માટે કોડ તૈયાર કરવામાં આવ્યા છે. બગ્સ એ મોટેભાગે કમ્પ્યુટરની ખામીને લીધે આવતા નથી. કમ્પ્યુટરો તેમને આપવામાં આવતી સુચનાઓને જ અનુસરતા હોવાથી બગ્સ મોટે ભાગે પ્રોગ્રામરની ભૂલનું પરિણામ અથવા પ્રોગ્રામની ડિઝાઇનમાં કરેલ ભૂલનું પરિણામ હોય છે.
મોટા ભાગના કમ્પ્યુટરોમાં, વ્યક્તિગત સુચનાઓને મશિન કોડ તરીકે સ્ટોર કરવામાં આવે છે, જેમાં દરેક સુચનાઓને વિશિષ્ટ નંબર(તેના ઓપરેશન કોડ અથવા ટૂંકાણ માટે ઓપકોડ આપવામાં આવે છે. બે નંબર ઉમેરવા માટેના કમાન્ડને એક ઓપકોડ હશે, તેમને મલ્ટીપ્લાય કરવા માટેના કમાન્ડને અન્યઓપકોડ અને તે રીતે હશે. સરળ કમ્પ્યુટરો થોડી વિવિધ સુચનાઓને અનુસરવા સક્ષમ હશે; જ્યારે વધુ જટિલ કમ્પ્યુટરો પાસે વિશિષ્ટ ન્યૂમરિકલ કોડ સાથે હજ્જારોમાંથી પસંદગી કરવાની રહેશે. કમ્પ્યુટરની મેમરી નંબરો સ્ટોર કરવા સક્ષમ હોવાથી તે સુચના કોડ્સ પણ સ્ટોર કરી શકે છે. તેના કારણે એક અગત્યની હકીકત એવી થાય છે કે સમગ્ર પ્રોગ્રામ (કે જે ફક્ત સુચનાઓની યાદી છે)ને નંબરોની યાદી તરીકે પ્રદર્શિત કરી શકાય છે અને તે જો ન્યૂમરિક ડેટા હોય તો કમ્પ્યુટરની અંદર તેમની રીતે ખોટા આંક દર્શાવી શકે છે. તેઓ જે ઓપરેટ કરે છે તે ડેટાની સાથે કમ્પ્યુટરની મેમરીમાં પ્રોગ્રામ સ્ટોર કરવાનો મૂળ ખ્યાલ એ છે કે વોન ન્યમનનો ક્રક્સ અથવા સ્ટોર થયેલા આર્કિટેક્ચર પ્રોગ્રામ છે. કેટલાક કિસ્સાઓમાં કમ્પ્યુટર કેટલોક ડેટા સેવ શકે છે અથવા તે ઓપરેટ કરે છે તે ડેટામાંથી અલગ મૂકાયેલા સમગ્ર પ્રોગ્રામને મેમરીમાં સમાવી શકે છે. તેને હાર્વર્ડ માર્ક I કમ્પ્યુટર બાદ હાર્વર્ડ આર્કિટેક્ચર કહેવાય છે. આધુનિક વોન ન્યૂમન કમ્પ્યુટર તેમની ડિઝાઇનમાં હાર્વર્ડ આર્કિટેક્ચરના કેટલાક લક્ષણો જેમ કે સીપીયુ કેશ, સમાવેલ હોય છે.
"મશિન ભાષા"ના લાંબા નંબરોની યાદીની જેમ કમ્પ્યુટર પ્રોગ્રામ લખવો શક્ય છે અને આ તરકીબનો ઉપયોગ અગાઉના કમ્પ્યુટરોમાં કરવામાં આવતો હતો, જે વ્યવહારમાં આવી રીતે, ખાસ કરીને જટિલ પ્રોગ્રામ માટે કરવું અત્યંત કંટાળાજનક છે. તેના બદલે તેના ફંકશનનો નિર્દેશ કરતી હોય તેવી ટૂંકા નામવાળી દરેક મૂળ સુચનાઓ આપી શકાય અને તે નેમોનિકને યાદ રાખવી સરળ છે જેમ કે એડીડી, સબ, મલ્ટ અથવા જંપ. આ નેમોનિક્સ સામુહિક રીતે કમ્પ્યુટરની "એસેમ્બલી ભાષા" તરીકે ઓળખાય છે. એસેમ્બલી ભાષામાં લખેલા પ્રોગ્રામોને કમ્પ્યુટર ખરેખર સમજી શકે (મશિન ભાષા) તેવી ભાષામાં રૂપાંતર કરવાનું કામ એસેમ્બ્લર તરીકે ઓળખાતા કમ્પ્યુટર પ્રોગ્રામ દ્વારા કરવામાં આવે છે. મશિન ભાષાઓ અને એસેમ્બલી ભાષાઓને સામૂહિક રીતે લો લેવલ પ્રોગ્રામીંગ લેંગ્વેજ તરીકે ઓળખાય છે અને તે ખાસ પ્રકારના કમ્પ્યુટર તરીકે વિશિષ્ટ બનવા લાયક છે. ઉદાહરણ તરીકે એઆરએમ આર્કિટેક્ચર કમ્પ્યુટર (જેમ કે પર્સનલ ડિજિટલ આસિસ્ટંટ (પીડીએ) અથવા હેન્ડ હેલ્ડ વિડીયોગેમ) ઇન્ટેલ પેન્ટિયમ અથવા એએમડી એથલોન 64, જે કદાચ પર્સનલ કમ્પ્યુટરમાં હોઇ શકે છે, કમ્પ્યુટરની મશિન ભાષા સમજી શકે નહી.
મશિન ભાષા કરતા નોંધપાત્ર રીતે સરળ હોવા છતાં એસેમ્બલી પ્રોગ્રામમાં લાંબા પ્રોગ્રામો લખવા ઘણી વાર મુશ્કેલ અને ભૂલ થઇ શકે તેવા હોય છે. તેથી, મોટા ભાગના જટિલ પ્રોગ્રામો વધુ સંક્ષિપ્ત હાઇ લેવલ પ્રોગ્રામીંગ ભાષામાં લખેલા હોય છે, જે ક્મ્પ્યુટર પ્રોગ્રામરની જરૂરિયાતોને વધુ સરળ (અને તેથી પ્રોગ્રામરને ઓછી ભૂલો કરવા સહાય કરે છે) રીતે છતી કરવા સક્ષમ હોય છે. હાઇ લેવલ ભાષાઓ સામાન્ય રીતે કંપાઇલર નામના અન્ય કમ્પ્યુટર પ્રોગ્રામનો ઉપયોગ કરીને સામાન્ય રીતે મશિન ભાષામાં (અથવા કેટલીકવાર એસેમ્બલી ભાષા અને ત્યાર બાદ મશિન ભાષામાં)‘’ભાષાંતરીત’’ હોય છે. હાઇ લેવલ ભાષાઓ એસેમ્બલી ભાષાઓ કરતા વધુ સંક્ષિપ્ત હોવાથી, વિવિધ પ્રકારના કમ્પ્યુટરની મશિન ભાષામાં સમાન પ્રકારની હાઇ લેવલ ભાષા ભાષાંતર કરવી કરવા માટે અલગ કંપાઇલરોનો ઉપયોગ કરવો શક્ય છે. વિવિધ પ્રકારના કમ્પ્યુટર આર્કિટેક્ચર જેમ કે પર્સોનલ કમ્પ્યુટર્સ અને અલગ અલગ વીડીયો ગેઇમ કોન્સોલ માટે વીડીયો ગેઇમ ઉપલબ્ધ કરાવી શકાય તે માટેના સોફ્ટવેરના અનેક ઉપોયોગોનો એક ભાગ છે.
મોટી સોફ્ટવેર સિસ્ટમ્સ વિકસાવવાનું કાર્ય પુષ્કળ પરસ્પરાવલંબી પ્રયત્ન છે. ધારણાયુકત શિડ્યૂલ અને બજેટ પર સ્વીકાર્ય. ઊંચી વિશ્વસનીયતા સાથે સોફ્ટવેરના ઉત્પાદને ઐતિહાસિક રીતે ભારે પડકાર ફેંક્યો છે; સોફ્ટવેર એન્જિનીયરીંગની શૈક્ષણિક અને વ્યાવસાયિક શિસ્ત ખાસ કરીને આ સમસ્યા પર ધ્યાન કેન્દ્રિત કરે છે.

### ઉદાહરણ

લાલ સિગ્નલ બતાવતી ટ્રાફિક લાઇટ.
જો કમ્પ્યુટરને બે શેરીઓ વચ્ચેના આંતરિક ભાગમાં ટ્રાફિક સિગ્નલ આપવા માટે કામે લગાવવામાં આવ્યું છે તેવું માનો. કમ્પ્યુટર પાસે નીચે જણાવેલી ત્રણ મૂળ સુચનાઓ છે.

1. ચાલુ (શેરીનું નામ, રંગ)ચોક્કસ રંગ સાથ શેરીના નામ પર પ્રકાશ ફેંકે છે.
2. બંધ (શેરીનું નામ, રંગ)ચોક્કસ રંગ નહી દર્શાવીને શેરીના નામ પર પ્રકાશ ફેંકે છે.
3. થોભો (સેકંડ)થોડી ક્ષણો માટે ઊભા રહેવાનું કહે છે.
4. "શરૂવાત" પ્રોગ્રામ શરૂ કરવા માટે
5. "પુનરાવર્તન કરો" જે લૂપમાં પ્રોગ્રામના ચોક્કસ ભાગને ફરીથી કરવાનું કમ્પ્યુટરને કહે છે.

સૂચનાઓ ડાબી તરફ // ના ચિન્હ્ સાથે હોય છે.
શેરીનું નામ બ્રોડવે અને મેઇન છે તેવું માનો.

શરૂવાત

//બ્રોડવે ટ્રાફિક ને જવા દેવા માટે

બંધ(બ્રોડવે, રેડ)

ચાલુ(બ્રોડવે, ગ્રીન)

થોભો(૬૦ સેકન્ડ્સ)

//સ્ટોપ બ્રોડવે ટ્રાફિક

બંધ(બ્રોડવે, ગ્રીન)

ચાલુ(બ્રોડવે, યલો)

થોભો (૩ સેકન્ડ્સ)

બંધ (બ્રોડવે, યલો)

ચાલુ(બ્રોડવે, રેડ)

//લેટ મેઇન ટ્રાફિક ગો

બંધ(મેઇન, રેડ)

ચાલુ(મેઇન, ગ્રીન)

થોભો(૬૦ સેકન્ડ્સ)

//સ્ટોપ મેઇન ટ્રાફિક

બંધ(મેઇન, ગ્રીન)

ચાલુ(મેઇન, યલો)

થોભો(૩ સેકન્ડ્સ)

બંધ(મેઇન, યલો)

ચાલુ(મેઇન, રેડ)

//ટેલ કમ્પ્યુટર ટુ કન્ટીન્યુઅસ્લી રિપિટ ધ પ્રોગ્રામ.

ઉપર આપેલી બધી સુચનાનું પુનરાવર્તન કરો

આ સૂચનાઓ સાથે, કમ્પ્યુટર બન્ને શેરીઓમાં લાલ, લીલી, પીળી અને ફરી લાલનું વર્તુળ ચાલુ રાખશે.

જોકે, કમ્પ્યુટર સાથે ઓન/ઓફની સાદી સ્વીચ જોડાયેલી હોય તો, તેનો અર્થ એ કે જ્યારે કોઇ નિભાવ કાર્ય ચાલુ હોય ત્યારે ફ્લેશ રેડ પ્રકાશ કરવા માટે ઉપયોગમાં લેવાની હોય છે. ત્યારબાદ પ્રોગ્રામ કમ્પ્યુટરને નીચે પ્રમાણે સૂચના આપશે:

શરૂવાત
જો સ્વીચ ==બંધ હોય તોઃ //નોર્મલ ટ્રાફિક સિગ્નલ ઓપરેશન

{

//લેટ બ્રોડવે ટ્રાફિક ગો

બંધ(બ્રોડવે, રેડ)

ચાલુ(બ્રોડવે, ગ્રીન)

થોભો(60 સેકન્ડ્સ)

//સ્ટોપ બ્રોડવે ટ્રાફિક

બંધ(બ્રોડવે, ગ્રીન)

ચાલુ(બ્રોડવે, યલો)

થોભો(3 સેકન્ડ્સ)

બંધ (બ્રોડવે, યલો)

ચાલુ(બ્રોડવે, રેડ)

//લેટ મેઇન ટ્રાફિક ગો

બંધ(મેઇન, રેડ)

ચાલુ(મેઇન, ગ્રીન)

થોભો(60 સેકન્ડ્સ)

//સ્ટોપ મેઇન ટ્રાફિક

બંધ(મેઇન, ગ્રીન)

ચાલુ(મેઇન, યલો)

થોભો(3 સેકન્ડ્સ)

બંધ(મેઇન, યલો)

ચાલુ(મેઇન, રેડ)

//ટેલ ધ કમ્પ્યુટર ટુ રિપિટ ધીસ સેક્શન કન્ટીન્યુઅસ્લી.

પુનરાવર્તન કરો

}

જો સ્વીચ ==ચાલુ હોય તોઃ //મેઇન્ટેનન્સ મોડ

{

//ટર્ન ધ રેડ લાઇટ્સ ઓન એન્ડ વેઇટ 1 સેકન્ડ.

ચાલુ(બ્રોડ વે, રેડ)

ચાલુ(મેઇન, રેડ)

થોભો(1 સેકન્ડ)

//ટર્ન ધ રેડ લાઇટ્સ ઓફ એન્ડ વેઇટ 1 સેકન્ડ.

બંધ(બ્રોડવે, રેડ)

બંધ(મેઇન, રેડ)

થોભો(1 સેકન્ડ)

//આ સેકશનમાં સ્ટેટેમેન્ટ ફરીથી કરવા માટે કમ્પ્યુટરને કહો.

પુનરાવર્તન કરો

}

આ રીતે, જ્યારે સ્વીચ ઓન હોય ત્યારે ટ્રાફિક સિગ્નલ ફ્લેશ રેડ પ્રોગ્રામ રન કરશે અને જ્યારે સ્વીચ ઓફ હોય ત્યારે સાધારણ પ્રોગ્રામ રન કરશે. આ બન્ને પ્રોગ્રામના ઉદાહરણો કમ્પ્યુટર પ્રોગ્રામના સરળ, પરિચિત ટ્રાફિક સિગ્નલ સંદર્ભમાં દર્શાવે છે. કોઇપણ અનુભવી પ્રોગ્રામર પ્રોગ્રામમાં અસંખ્ય સોફ્ટવેર બગ્સ સ્પોટ કર શકે છે, ઉદા. તરીકે જ્યારે સ્વીચ ફલેશ રેડ પ્રકાશ પાડતી હોય ત્યારે લીલી લાઇટ ઓફ હોય તેની ચકાસણી કરતી નથી. જોકે, તમામ શક્ય બગ્સ દૂર કરવાથી આ પ્રોગ્રામને લાંબો અને જટિલ બનાવશે અને ટેકનિકલ સિવાયના વાંચકોને મૂંઝવશેઃ **આ ઉદાહરણનો ઉદ્દેશ કમ્પ્યુટરની સુચનાઓ કેવી રીતે લાદવામાં આવી છે તેનું સાવ સરળ નિદર્શન માત્ર છે**.

## કમ્પ્યુટર્સ કેવી રીતે કામ કરે છે

બહોળા હેતુ વાળા કમ્પ્યુટરમાં ચાર વિભાગો હોય છેઃ એરિથમેટિક અને લોજિક યુનિટ (એએલયુ), કંટ્રોલ યુનિટ, મેમરી અને ઇનપુટ અને આઉટપુટ ડિવાઇસ (સામૂહિક રીતે I/0 તરીકે ઓળખાય છે) આ હિસ્સાઓ કમ્પ્યુટર "બસ" દ્વારા આંતરિક રીતે જોડાયેલા હોય છે, ઘણીવાર તે વાયર્સના જથ્થા દ્વારા બનેલા હોય છે.

કંટ્રોલ યુનિટ, એએલયુ રજિસ્ટર કરે છે અને બેઝિક I/O (અને ઘણીવાર તેની સાથે ગાઢ રીતે સંકળાયેલા અન્ય હાર્ડવેર)સામૂહિક રીતે સેન્ટ્રલ પ્રોસેસીંગ યુનિટ (સીપીયુ) તરીકે ઓળખાય છે. પ્રારંભના સીપીયુ અસંખ્ય સ્વતંત્ર કોમ્પોનન્ટનું મિશ્રણ હતા પરંતુ, ૧૯૭૦ના મધ્યથી સીપીયુને ખાસ રીતે *માઇક્રોપ્રોસેસર* તરીકે ઓળખાતી એક જ ઇન્ટીગ્રેટેડ સર્કિટ પર ઊભા કરવામાં આવ્યા હતા.

### કંટ્રોલ યુનિટ

કંટ્રોલ યુનિટ (ઘણી વાર કંટ્રોલ સિસ્ટમ અથવા સેન્ટ્રલ કંટ્રોલર તરીકે ઓળખાય છે)કમ્પ્યુટરના વિવિધ કોમ્પોનન્ટને આદેશ આપે છે. તે પ્રોગ્રામમાં એક પછી એક સુચનાઓ વાંચે છે અને દૂભાષિત (ડિકોડસ)કરે છે. કંટ્રોલ સિસ્ટમ દરેક સુચનાઓને ડિકોડ કરે છે અને તેને અસંખ્ય કંટ્રોલ સિગ્નલોમાં રૂપાંતર કરે છે જે કમ્પ્યુટરના અન્ય ભાગને ઓપરેટ કરે છે. એડવાન્સડ કમ્પ્યુટમાં કંટ્રોલ સિસ્ટમ કામગીરીમાં સુધારો લાવવા માટે કેટલીક સુચનાઓના ક્રમમાં ફેરફાર કરી શકે છે.
દરેક સીપીયુમાં અગત્યનો કોમ્પોનન્ટ એટલે કે પ્રોગ્રામ કાઉન્ટર સર્વસામાન્ય હોય છે, ખાસ મેમરી સેલ રજિસ્ટર જે, હવે પછીની સુચના મેમરીના ક્યા લોકેશનમાં વાંચવામાં આવશે તેનું ધ્યાન રાખે છે.

એમઆઇપીએસ આર્કિટેક્ચર સુચનાઓ કેટલી ચોક્કસ છે તે દર્શાવતો

ડાયાગ્રામ કંટ્રોલ સિસ્ટમ દ્વારા ડિકોડેડ કરવામાં આવશે.
કંટ્રોલ સિસ્ટમનું ફંકશન નીચે દર્શાવેલી નોંધ પ્રમાણે છે, જેમ કે આ એક સરળ વર્ણન છે અને આમાના કેટલાક પગલાંઓ એકી સમયે અથવા તો સીપીયુના પ્રકારના આધારે વિવિધ રીતે અનુસરવામાં આવશે.

1. પ્રોગ્રામ કાઉન્ટર દ્વારા દર્શાવવામાં આવેલા સેલમાંથી પછીની સુચના માટે કોડ વાંચો.
2. દરેક સિસ્ટમ્સ માટે કમાન્ડ અને સિગ્નલ્સના કમાન્ડના સેટમાં સુચના માટે ન્યૂમરિક કોડને ડિકોડ કરો.
3. પ્રોગ્રામ કાઉન્ટરમાં વઘારો કરો, જેથી પછીની સુચનાને અનુસરે.
4. મેમરી(અથવા કદાચ ઇનપુટ ડિવાઇસ)માં રહેલા સેલમાંથી જરૂરી સુચનાનો જેતે ડેટા વાંચો. આ જરૂરી ડેટાનું લોકેશન ખાસ કરીને ઇન્સ્ટ્રક્શન કોડમાં સ્ટોર થયેલું હોય છે.
5. એએલયુ અથવા રજિસ્ટરને જરૂરી ડેટા પૂરો પાડો.
6. જો સુચનાઓ એએલયુ અથવા ખાસ હાર્ડવેરને પૂર્ણ કરવા માટે જરૂરી હોય તો, વિનંત કરાયેલ કામગીરી હાથ ધરવા માટે હાર્ડવેરને સુચના આપો.
7. એએલયુ બેક ટુ મેમર લોકેશન અથવા તો રજિસ્ટર અથોવા કદાચ આઉટપુટ ડિવાઇસમાંથી પરિણામ લખો.
8. (1) સ્ટેપ પર પાછા આવો.

પ્રોગ્રામ કાઉન્ટર (સરળ રીતે)માત્ર મેમરી સેલ્સનો સેટ હોવાથી, તેને એએલયુમાં ગણતરી દ્વારા ફેરવી શકાય છે. પ્રોગ્રામ કાઉન્ટરમાં 100 ઉમેરતા વધુ ડાઉન પ્રોગ્રામ માટે 100 લોકેશનમાંથી તે પછીની સુચના વાંચવમાં પરિણમશે. જે પ્રોગ્રામ કાઉન્ટરને સુધારે છે તે સુચનાઓને ઘણી વખત “જંપ્સ” તરીકે ઓળખવામાં આવે છે અને લૂપ્સની મંજૂરી આપે છે (કમ્પ્યુટર દ્વારા વારંવાર કરવામાં આવતી સુચનાઓ)અને ઘણી વખત શરતી સુચનાત્મક અમલ (અંકુશ પ્રવાહ)ના બન્ને ઉદાહરણો કરે છે.
એવું નોંધી શકાય છે કે પ્રોસેસ દ્વારા કંટ્રોલ યુનિટ જે શ્રેણીબંધ કામગીરી કરે છે તે સુચના તેની રીતે ટૂંકા કમ્પ્યુટર પ્રોગ્રામ જેવી જ હોય છે અને ખરેખર, કેટલાક વધુ જટિલ સીપીયુ ડિઝાઇન્સમાં અન્ય એક વધુ નાનુ કમ્પ્યુટર હોય છે જે માઇક્રોસિક્વન્સર તરીકે ઓળખાય છે, જે માઇક્રોકોડ પ્રોગ્રામ રન કરે છે, જે આ તા ઘટનાઓના નિર્માણ માટે કારણભૂત હોય છે.

### એરિથમેટિક/લોજિક યુનિટ (ALU)

એએલયુ કામગીરીના બે પ્રકાર માટે સક્ષમ હોય છેઃ એરિથમેટિક અને લોજિક.
ખાસ એએલયુ ટેકો પૂરો પાડે છે તેવી એરિથમેટિક કામગીરીનો સેટ કદાચ ઉમેરણ કે બાદબાકી માટે મર્યાદિત હોય અથવા તો ગુણાકાર અથવા ભાગાકાર, ત્રિકોણમિતિ ફંકશન્સ (સાઇન, કોસાઇન વગેરે)અને વર્ગમૂળનો સમાવેશ કરતી હોય. કેટલાક લોકો સંપૂર્ણ ક્રમાંકો (ઇન્ટેજર) ઓપરેટ કરી શકતા હોય, જ્યારે અન્યો મર્યાદિત પ્રિસિશન છતા રિયલ નંબરઓ છતા કરવા માટે ફ્લોટીંગ પોઇન્ટનો ઉપયોગ કરે છે. જોકે, અન્ય કોઇ પણ કમ્પ્યુટર કે જે ફક્ત સરળમાં સરળ ઓપરેશન હાથ ધરવા સક્ષમ હોય તેને તે કામ કરી શકે તેવા સરળ પગલાંઓમાં વધુ જટિલ ઓપરેશનો તોડી પાડવામાં પ્રોગ્રામ કરી શકાય. તેથી, કોઇપણ કમ્પ્યુટરને કોઇ પણ એરિથમેટિક પ્રોગ્રામ હાથ ધરવા માટે પ્રોગ્રામ કરી શકાય, જોકે, તેનું એએલયુ જો ઓપરેશનને સીધો ટેકો પૂરો પાડતું ન હોય તો તે વધુ સમય લેશે. એએલયુ પણ ક્રમાંકોની તુલના કરી શકે છે અને એક એકની સમાન, અન્ય કરતા વધુ કે ઓછા (“શુ 64 65 કરતા મોટા છે?”)તેના આધારે બૂલીયન ટ્રૂથ વેલ્યુ (સાચી કે ખોટી)પરત આપી શકે છે.

લોજિક એપરેશન્સમાં બૂલિયન લોજિક: એંડ, ઓર, એક્સઓર અને નોટનો સમાવેશ થાય છે. આ જટિલ શરતી વિધાન અને પ્રોસેસીંગ બૂલિયન લોજિકએમ બન્ને માટે ઉપયોગી થઇ શકે છે.

સુપરસ્કેલર્સ કમ્પ્યુટર્સમાં એક કરતા વધુ એએલયુનો સમાવેશ થાય છે, જેથી એક જ સમયે વિવિધ સુચનાઓની પ્રોસેસ કરી શકે. એસઆઇએમડી અને એમઆઇએમડી લાક્ષણિકતાઓ સાથેના ગ્રાફિક્સ પ્રોસેસર્સ ઘણી વખત એવા એએલયુ પૂરા પાડે છે જે સદીશ અને મેટ્રિસેસ પર એરિથમેટિક હાથ ધરી શકે છે.

### મેમરી

મેગ્નેટિક કોર મેમરી (Magnetic core memory)ને જ્યાં સુધી સેમિકંડક્ટર મેમરી દ્વારા સંપૂર્ણપણે દૂર કરવામાં ન આવી ત્યા સુધી 1960ના દાયકામાં કમ્પ્યુટર્સ માટે લોકપ્રિય મેઇન મેમરી હતી.
સેલની યાદી તરીકે કમ્પ્યુટરની મેમરીને જોઇ શકાય છે, જેમાં ક્રમાકો મૂકી શકાય છે અથવા વાંચી શકાય છે. દરેક સેલને ક્રમાંકિત “એડ્રેસ” હોય છે અને તેને એક જ ક્રમાંકમાં સ્ટોર કરી શકાય છે. કમ્પ્યુટરને “સેલ ક્રમાકિત 1357માં 123 ક્રમાંક મૂકવા કહી શકાય છે” અથવા “સેલ 1357થી સેલ 2468 સુધીમાં ક્રમાંક ઉમેરવા અને સેલ 1595માં જવાબ મૂકવા” સુચના આપી શકાય છે. મેમરીમાં સ્ટોર થયેલ માહિતી વ્યવહારીક રીતે કંઇ પણ પ્રદર્શિત કરી શકે છેઅક્ષરો, ક્રમાંકો અને કમ્પ્યુટર સુચનાઓ પણ સમાન ક્રમમાં મૂકી શકાય છે. વિવિધ પ્રકારની માહિતી વચ્ચે સીપીયુ અલગ નહી પડતા હોવાથી મેમરી ક્રમાંકની શ્રેણી સિવાય બીજુ કશું જ જોતી નથી તેને અગત્યતા આપવાનો આધાર સોફ્ટવેર પર છે.

મોટે ભાગે દરેક આધુનિક કમ્પ્યુટરોમાં આઠ બીટ ના જૂથમાં (જે બાઇટ તરીકે ઓળખાય છે) દ્વિઅંકી આંકડા સંગ્રહ કરવા માટે દરેક મેમરી સેલ નાખવામાં આવેલો હોય છે. દરેક બાયટ 256 વિવિધ નંબરો પ્રદર્શિત કરવા સક્ષમ હોય છે; ક્યાં તો 0થી 255 અથવા -128થી +127 સુધી. મોટા નંબરો સ્ટોર કરવા માટે, વિવિધ પરીમાણોમાં બાયટ્સનો ઉપયોગ કરી શકાય (ખાસ કરીને બે, ચાર અથવા આઠ). જ્યારે નકારાત્ક નંબરની જરૂરિયાત હોય ત્યારે, તેને સામાન્ય રીતે ટુઝ કોમ્પ્લીમેન્ટ નોટેશનમાં સ્ટોર કરવામાં આવે છે. અન્ય વ્યવસ્થાઓ શક્ય છે, પરંતુ ખાસ પ્રકારની એપ્લીકેશનો અથવા ઐતિહાસિક સંદર્ભોની બહાર સામાન્ય રીતે જોવા મળતી નથી. કમ્પ્યુટર જ્યાં સુધી નંબરના સ્વરૂપમાં પ્રદર્શિત થતી હોય ત્યાં સુધી કોઇ પણ પ્રકારની માહિતીને મેમરીમાં સ્ટોર કરી શકે છે. આધુનિક કમ્પ્યુટરો અબજો અથવા ટ્રીલીયન બાયટ્સ મેમરી પણ ધરાવે છે.

સીપીયુ મેમરી સેલ્સનો ખાસ સેટ ધરાવે છે જે રજિસ્ટર્સ તરીકે ઓળખાય છે, જે મેઇમ મેમરી એરિયા કરતા વધુ ઝડપથી વાંચી કે લખી શકાય છે. બે અથવા એકસો રજિસ્ટર્સની વચ્ચે સીપીયુના પ્રકારના આધારે ટિપીકલી હોય છે. જરૂર હોય તેવા દરેક સમયે મેઇન મેમરીમાં પ્રવેશવાનું દૂર કરવા માટે વારંવાર જરૂર પડતા ડેટા માટે રજિસ્ટર્સ ઉપયોગમાં લેવામાં આવે છે. ડેટા સતત આગળ વધતા હોવાથી, મેઇમ મેમરી(જે ઘણી વખત એએલયુ અને કંટ્રોલ યુનિટની તુલનામાં ઘણી વખત ધીમુ હોય છે)માં પ્રવેશવાની જરૂરીયાતમાં ઘટાડો કરે છે, અને તેના લીધે કમ્પ્યુટરની સ્પીડમાં ભારે વધારો કરે છે.

કમ્પ્યુટર મેઇમ મેમરી બે મુખ્ય જાતોમાં આવે છેઃ રેન્ડમ એક્સેસ મેમરી અથવા રેમ અને રીડ ઓન્લી મેમરી અથવા રૉમ. સીપીયુ કમાન્ડ આપે તેમ રેમ કોઇ પણ સમયે વાંચી અને લખી શકે છે, પરંતુ આરઓએમ ડેટા અને સોફ્ટવેર સાથે પ્રિ લોડેડ હોય છે, જેમાં કદ ફેરફાર થતો નથી, તેથી સીપીયુ તેની પરથી ફક્ત વાંચી જ શકે છે. રોમ ખાસ કરીને કમ્પ્યુટરના પ્રારંભિક સ્ટાર્ટ અપ સુચનાઓને સ્ટોર કરવા માટે ઉપયોગમાં લેવામાં આવે છે. સામાન્ય રીતે, રોમ નિઃશંકપણે તેનો ડેટા પુનઃપ્રાપ્ત કરે છે અને કમ્પ્યુટરનો પાવર ઓફ કરતી વખતે આરએએમની યાદી ભૂંસાઇ જાય છે. પીસીમાં, બાયોસ તરીકે ઓળખાતા ખાસ પ્રોગ્રામનો રોમમાં સમાવેશ થાય છે, જે કમ્પ્યુટર ચાલુ કરવામાં અથવા રિસેટ કરવામાં આવે ત્યારે હાર્ડ ડિસ્ક ડ્રાઇવ પરથી રોમમાં કમ્પ્યુટરની ઓપરેટિંગ સિસ્ટમ લોડીંગ કરવાનો આદેશ આપે છે. જેમાં ડિસ્ક ડ્રાઇવ ન હોય તેવા એમબેડેડ કમ્પ્યુટર્સમાં તમામ સોફ્ટવેરને આરઓએમમાં સમાવિષ્ટ ટાસ્ક કરવાની જરૂર પડે છે. આરઓએમમાં સમાવિષ્ટ સોફ્ટવેર ફર્મવેર તરીકે ઓળખાય છે, કેમ કે તે સોફ્ટવેર કરતા હાર્ડવેર જેમ વધુ કાલ્પનિક હોય છે. ટર્ન ઓફ હોય ત્યારે ડેટા પ્રાપ્ત કરીને આરઓએમ અને આરએએમ વચ્ચે ફ્લેશ મેમરી તફાવત પાડે છે, પરંતુ રેમ જેમ પુનઃલખી શકાય તેમ હોય છે. જોકે, ફ્લેશ મેમરી પરંપરાગત આરઓએમ અને આરએએમની તુલનામાં ઘણું ધીમુ હોય છે, તેથી જ્યારે હાઇ સ્પીડ જરૂર ન હોય ત્યારે એપ્લીકેશનો મર્યાદિત કરવામાં તેનો ઉપયોગ થાય છે.

અત્યંત આધુનિક કમ્પ્યુટર્સમાં એક કે તેનાથી વધુ આરએએમ કેશ મેમરી હોય છે, જે રજિસ્ટર્સ કરતા ધીમી હોય છે પરંતુ મેઇન મેમરી કરતા ઝડપી હોય છે. વિવિધ પ્રકારેની કેચ સાથેના કમ્પ્યુટરોને સામાન્ય રીતે કેચમાં આપોઆપ રીતે જ સતત જરૂરી ડેટા ખસેડવા માટે તૈયાર કરવામાં આવ્યા હોય છે, જેમાં ઘણી વખત પ્રોગ્રામરને ભાગ્યે જ દરમિયાનગીરી કરવાનો વખત આવે છે.

### ઇનપુટ/આઉટપુટ (I/O)

હાર્ડ ડિસ્ક્સ કમ્પ્યુટર્સ સાથે વપરાતા સામાન્ય I/O ડિવાઇસિસ છે.
I/O એટલે કે કમ્પ્યુટર બહારની દુનિયામાંથી માહિતી મેળવે છે અને તેના પરિણામો પરત મોકલે છે. કમ્પ્યુટરને ઇનપુટ કે આઉટપુટ પૂરા પાડતા ડિવાઇસને પેરિફેરલ તરીકે ઓળખવામાં આવે છે. વિશિષ્ટ પ્રકારના પર્સનલ કમ્પ્યુટરના પેરિફેરલ્સમાં ઇનપુટ ડિવાઇસીસ જેમ કે કી બોર્ડ અને માઉસ અને આઉટપુટ ડિવાઇસીસ જેમ કે કમ્પ્યુટર મોનિટર (ડિસ્પ્લે) અને પ્રિન્ટરનો સમાવેશ થાય છે. હાર્ડ ડિસ્ક ડ્રાઇવ, ફ્લોપી ડિસ્ક ડ્રાઇવ, ઓપ્ટીકલ ડિસ્ક ડ્રાઇવ અને પૅન ડ્રાઇવ ઇનપુટ અને આઉટપુટ ડિવાઇસ એમ બન્ને રીતે ઉપયોગી છે. કમ્પ્યુટર નેટવર્કિંગ I/O નો બીજો એક પ્રકાર છે.
ઘણી વખત I/O ડિવાઇસીસમાં તેમના પોતાના સીપીયુ અને મેમરી હોવાથી એકરીતે તેઓ પણ કોમ્પ્લેક્સ કમ્પ્યુટર્સ છે. ગ્રાફિક્સ પ્રોસેસીંગ યુનિટમાં પચાસ અથવા વધુ નાજુક કમ્પ્યુટર્સનો કદાચ સમાવેશ થઇ શકે છે, જે ત્રીપરીમાણીય ગ્રાફિક્ ડિસ્પ્લે કરવા માટે જરૂરી ગણતરીઓ હાથ ધરે છે. આધુનિક ડેસ્કટોપ કમ્પ્યુટરમાં નાના કમ્પ્યુટરોનો સમાવેશ થાય છે, જે મેઇન સીપીયુને I/O હાથ ધરવામાં મદદ કરે છે.

### મલ્ટીટાસ્કીંગ

કમ્પ્યુટરને તેની મેઇન મેમરીમાં સમાવિષ્ટ એક મહાકાય પ્રોગ્રામ રન કરે છે તે રીતે જ કદાચ જોઇ શકાય છે, ત્યારે કેટલીક સિસ્ટમ વિવિધ પ્રોગ્રામો એકી સાથે ચલાવી શકે તેવો દેખાવ આપે તે જરૂરી છે. વારાફરતી દરેક પ્રોગ્રામો રન કરવા ઝડપથી કમ્પ્યુટર સ્વીચ ફેરવતા આ હાંસલ કરી શકાયું છે. કેટલાક લોકો એવું માને છે કે ઇન્ટરપ્ટ તરીકે કહેવાતા ખાસ પ્રકારના સિગ્નલ સાથે આ પૂરું થઇ ગયું છે, જે સામયિક ધોરણે કમ્પ્યુટરને સુચનાઓનો જ્યાં તે હોય અને તેના બદલે કંઇ બીજુ કરવાના અમલ કરવાથી અટકાવી દે છે. ઇન્ટરપ્ટ પહેલા તે અમલ કરતું હતું તે યાદ કરતી વેળાએ કમ્પ્યુટર ટાસ્કમાં બાદમાં પરત ફરી શકે છે. જો વિવિધ પ્રોગ્રામો “એક જ સમયે ચાલતા હોય” ત્યારે, ઇન્ટરપ્ટની ઉત્પત્તિ દર સેકંડે વિવિધ હજ્જારો ઇન્ટરપ્સના ઉદભવમાં પરિણમે છે, જે દરેક પ્રોગ્રામ સ્વીચ માટે કારણભૂત બને છે. માનવીય દ્રષ્ટિકોણ કરતા ઝડપી મેગ્નીટ્યૂડના વિવિધ ઓર્ડરોની આધુનિક કમ્પ્યુટરો વિશિષ્ટ રીતે સુચનાઓનો અમલ કરે છે, ત્યારે કદાચ, પ્રસ્તુત ઉદાહરણમાં ફક્ત એક જ અમલ કરતું હોવા છતાં ઘણા પ્રોગ્રામો એક સમયે ચાલતા હોય તેવું દેખાય છે. આ મલ્ટીટાસ્કીંગની પદ્ધતિને ઘણી વખત “ટાઇમ શેરીંગ”તરીકે ઓળખવામાં આવે છે, કેમ કે દરેક પ્રોગ્રામને વારફરતી સમયની “સ્લાઇસ” ફાળવવામાં આવી હોય છે.

સસ્તા કમ્પ્યુટર્સના યુગ પહેલા, મલ્ટીટાસ્કીંગ માટેનો મુખ્ય ઉપયોગ સમાન કમ્પ્યુટરની વહેંચણી માટે ઘણા લોકોને મંજૂરી આપવાનો હતો.

મલ્ટીટાસ્કીંગ કમ્પ્યુટરને તે કેટલા પ્રોગ્રામો ચલાવે છે તેના સીધા પ્રમાણમાં વિવિધ પ્રોગ્રામો રન કરવાની વચ્ચે વધુ ધીમી રીતે કામ કરવાની ફરજ પાડશે તેવું લાગે છે. જોકે, મોટા ભાગના પ્રોગ્રામો પોતાના ટાસ્ક પૂરા કરવામાં સ્લો ઇનપુટ/આઉટપુટ ડિવાઇસ માટે રાહ જોવામાં પોતાના મોટા ભાગનો સમય ખર્ચી નાખે છે. જો પ્રોગ્રામ, યૂઝર માઉસ પર ક્લિક કરે અથવા તો કીબોર્ડ પરની કી દબાવે તેની રાહ જોતો હોય તો, તે જે ઘટના થવાની રાહ જુએ છે તે ન થાય ત્યાં સુધી “ટાઇમ સ્લાઇસ” લેશે નહી. આ ક્રિયા અન્ય પ્રોગ્રામોને અમલ માટે મુક્ત કરે છે, જેથી ઘણા પ્રોગ્રામો અસ્વીકાર્ય સ્પીડ લોસ વિના એકી સમયે ચાલી શકે.

### મલ્ટીપ્રોસેસિંગ

 ક્રે એ ઘણા સુપરકમ્પ્યુટર્સ તૈયાર કર્યા હતા, જેમાં મલ્ટીપ્રોસેસીંગનો મોટા પાયે ઉપયોગ કરાયો હતો.
કેટલાક કમ્પ્યુટર મલ્ટીપ્રોસેસીંગ સંચરનાનું સર્જન કરીને એક કે તેનાથી વધુ સીપીયુ વચ્ચે પોતાનું કામ વહેંચી શકે છે. પરંપરાગત રીતે, આ તરકીબ મોટા અને શક્તિશાળી કમ્પ્યુટર જેમ કે સુપરકમ્પ્યુટર, મેઇનફ્રેમ કમ્પ્યુટર અને સર્વર્સમાં વપરાશમાં લેવામાં આવી હતી. જોકે, મલ્ટીપ્રોસેસર અને મલ્ટી કોર (સીંગલ ઇન્ટીગ્રેટેડ સર્કિટ પર મલ્ટીપલ સીપીયુ)પર્સોનલ અને લેપ્ટોપ કમ્પ્યુટર્સ વ્યાપક પ્રમાણમાં ઉપલબ્ધ બન્યા છે અને પરિણામ સ્વરૂપે લોઅર એન્ડ બજારોમાં વધુ પડતા વપરાશના પ્રારંભ થઇ રહ્યો છે.

સુપરકમ્પ્યુટર વિશિષ્ટ રીતે ઘણી વખત વિશિષ્ટ આર્કિટેક્ચર ધરાવતા હોય છે, જે બેઝિક સ્ટોર કરેલા પ્રોગ્રામ આર્કિટેક્ચર અને સામાન્ય હેતુ વાળા કમ્પ્યુટર્સથી નોંધપાત્ર રીતે અલગ પડે છે. તે ઘણી વખત હજ્જારો સીપીયુ, કસ્ટમાઇઝ્ડ હાઇ સ્પીડ ઇન્ટરકનેક્ટસ અને ખાસ કમ્પ્યુટીંગ હાર્ડવેર ધરાવે છે. મોટા ભાગના પ્રોગ્રામ ઓર્ગેનાઇઝેશનોને એક સમયે મોટા ભાગના ઉપલબ્ધ સ્ત્રોતોનો સફળતાપૂર્વક ઉપયોગ કરવાની જરૂરિયાત હોવાને કારણે આ પ્રકારની ડિઝાઇનો ફક્ત ખાસ ટાસ્ક માટે ઉપયોગી બની શકે તેમ છે. સુપરકમ્પ્યુટર્સ સામાન્ય રીતે મોટા પાયાના સિમ્યુલેશન, ગ્રાફિક્સ રેન્ડરીંગ અને ક્રિપ્ટોગ્રાફી એપ્લીકેશનમાં તેમજ કહેવાતા “એમ્બ્રેસીંગલી પેરેલલ” ટાસ્કમાં ઉપયોગમાં આવે છે.

### નેટવર્કિંગ અને ઇન્ટરનેટ

ઇન્ટરનેટ પર રાઉટિંગના ભાગનું

વિઝ્યુલાઇઝેશન.
કમ્પ્યુટરોનો ૧૯૫૦થી એકકરતા વધુ સ્થાનોસાથે માહિતી સંકલન માટે ઉપયોગ થતો આવ્યો છે. અમેરિકાની મિલીટરીના સેમી ઓટોમેટિક ગ્રાઉન્ડ એનવાર્યનમેન્ટ (સૅજ)એ આ પ્રકારની સિસ્ટમનું સૌપ્રથમ મોટા પાયાનું ઉદાહરણ છે, જે અસંખ્ય ખાસ હેતુ વાળી વ્યાપારી સિસ્ટમો જેમ કે "સેબ્રે"માં પરિણમી હતી.

૧૯૭૦માં અમેરિકાની સંશોધન સંસ્થાઓ ખાતેના કમ્પ્યુટર એન્જિનીયરોએ ટેલિકોમ્યુનિકેશન ટેકનોલોજીના ઉપયોગ વડે પોતાના કમ્પ્યુટરોને સાંકળવાનો પ્રારંભ કર્યો હતો. આ પ્રયત્નને એઆરપીએ (હવે ડીએઆરપીએ)અને કમ્પ્યુટર નેટવર્ક દ્વારા ભંડોળ પૂરું પાડવામાં આવ્યું હતું કે જેણે અર્પાનેટ (એડવાન્સ્ડ રિસર્ચ પ્રોજેક્ટ્સ એજન્સી નેટવર્ક અથવા એઆરપીએએનઇટી)નું ઉત્પાદન કર્યું હતું. ટેકનોલોજીએ અર્પાનેટને શક્ય ફેલાવા અને વિકાસ માટે શક્ય બનાવી હતી. દરમિયાનમાં નેટવર્ક શૈક્ષણિક અને મિલીટરી સંસ્થાઓથી પણ આગળ ફેલાયું હતું અને ઇન્ટરનેટ તરીકે જાણીતુ બન્યુ. નેટવર્કીંગના ઉદભવમાં કુદરતની પુનઃવ્યખ્યા અને કમ્પ્યુટરની સરહદોનો સમાવેશ થાય છે. વ્યક્તિગત કમ્પ્યુટરના સ્ત્રોતોના વિસ્તરણ તરીકે નેટવર્ક પરના અન્ય કમ્પ્યુટરના સ્ત્રોતો જેમ કે પેરિફેરલ ડિવાઇસ, સંગ્રહીત માહિતી અને તેવા પ્રકારોને વ્યાખ્યાયિત કરવામાં અને એક્સેસ કરવાની ક્ષમતાનો સમાવેશ કરવા માટે કમ્પ્યુટર ઓપરેટિંગ સિસ્ટમ્સ અને એપ્લીકેશનોને સુધારવામાં આવી હતી. પ્રારંભમાં આ સવલત જે લોકો હાઇ ટેક પર્યાવરણોમાં કામ કરતા હતા તેમને ઉપલબ્ધ હતી, પરંતુ ૧૯૯૦માં એપ્લીકેશનો જેમ કે ઇમેલ અને વર્લ્ડ વાઇડ વેબની સાથે સસ્તી ઝડપી નેટવર્કીંગ ટેકનોલોજી જેમ કે ઇધરનેટ અને એડીએસએલના ફેલાવા સાથે કમ્પ્યુટર નેટવર્કીંગ લગભગ તમામ સ્થળે ઉપલબ્ધિ તરીકે ઉભરી આવી હતી. હકીકતમાં નેટવર્ક થયેલા કમ્પ્યુટરોની સંખ્યા મોટી માત્રામાં વધતી જાય છે. પર્સનલ કમ્પ્યુટર્સનો મોટો ભાગ માહિતીની આપ-લેમાં નિયમિતપણે ઇન્ટરનેટ સાથે જોડાયેલો છે. “વાયરલેસ” નેટવર્કીંગ ઘણી વખત મોબાઇલ ફોન નેટવર્કનો ઉપયોગ કરે છે, તેનો અર્થ એ કે મોબાઇલ કમ્પ્યુટીંગ પર્યાવરણમાં પણ નેટવર્કીંગનો સર્વસ્વ ઉપલબ્ધિનો વ્યાપ વધતો જાય છે.

## આગળના વિષયો

### હાર્ડવેર

**હાર્ડવેર** શબ્દ તમામ પ્રકારના કમ્પ્યુટરના ભાગ કે જે સ્થાયી પદાર્થ હોય તેને આવરી લે છે. સર્કિટ, ડિસ્પ્લે, પાવર સપ્લાય, કેબલ્સ, કી બોર્ડ, પ્રિન્ટર્સ અને માઇસ (માઉસીસ)એ હાર્ડવેર છે.

**કમ્પ્યુટિંગ હાર્ડવેરનો ઇતિહાસ**| ફર્સ્ટ જનરેશન (મિકેનિકલ/ઇલેક્ટ્રોમિકેનિકલ) | કેલક્યુલેટર્સ | એન્ટિખિથેરાની મિકેનિઝમ, ડિફરન્સ એન્જિંન, નોર્ડન બોમ્બસાઇટ |
| પ્રોગ્રામેબલ ડિવાઇસિસ | જેક્વાર્ડ લૂમ, ઍનલિટિકલ એન્જિંન, હારવર્ડ માર્ક I, ઝેડ3 |
| સેકન્ડ જનરેશન (વેક્યુમ ટ્યુબ્સ) | કેલ્ક્યુલેટર્સ | એટાનાસોફ-બેરી કમ્પ્યુટર, આઇબીએમ૬૦૪, UNIVAC 60, UNIVAC 120 |
| પ્રોગ્રામેબલ ડિવાઇસિસ | કોલોસસ, ENIAC, માન્ચેસ્ટર સ્મોલ-સ્કેલ એક્સપેરિમેન્ટલ મશીન, EDSAC, માન્ચેસ્ટર માર્ક 1, CSIRAC, EDVAC, UNIVAC I, IBM 701, IBM 702, IBM 650, Z22 |
| થર્ડ જનરેશન (ડીસ્ક્રીટ ટ્રાન્સીસ્ટર્સ અને એસએસઆઇ, એએઆઇ, એલએસઆઇ ઇન્ટીગ્રેટેડ સર્કિટસ (Integrated circuits)) | મેઇનફ્રેમ્સ (Mainframes) | IBM 7090 (IBM 7090), IBM 7080 (IBM 7080), સિસ્ટમ/360 (System/360), BUNCH (BUNCH) |
| મિનિકમ્પ્યુટર (Minicomputer) | PDP-8 (PDP-8), PDP-11 (PDP-11), સિસ્ટમ/32 (System/32), સિસ્ટમ/36 (System/36) |
| ફોર્થ જનરેશન (VLSI ઇન્ટિગ્રેટેડ સર્કિટ્સ) | મિનિકમ્પ્યુટર | VAX (VAX), IBM સિસ્ટમ i (IBM System i) |
| 4-બિટ (4-bit) માઇક્રોકમ્પ્યુટર | ઇન્ટેલ 4004 (Intel 4004), ઇન્ટેલ 4040 (Intel 4040) |
| 8-બિટ (8-bit) માઇક્રોકમ્પ્યુટર | ઇન્ટેલ 8008 (Intel 8008), ઇન્ટેલ 8080 (Intel 8080), મોટોરોલા 6800 (Motorola 6800), મોટોરોલા 6809 (Motorola 6809), એમઓએસ ટેકનોલોજી 6502 (MOS Technology 6502), ઝીલોગ ઝેડ80 (Zilog Z80) |
| 16-બિટ (16-bit) માઇક્રોકમ્પ્યુટર | ઇન્ટેલ 8088 (Intel 8088), ઝીલોગ Z8000 (Zilog Z8000), WDC 65816/65802 (WDC 65816/65802) |
| 32-બિટ (32-bit) માઇક્રોકમ્પ્યુટર | ઇન્ટેલ 80386 (Intel 80386), પેન્ટિયમ (Pentium), મોટોરોલા 68000 (Motorola 68000), ARM આર્કિટેક્ચર (ARM architecture) |
| 64-બિટ (64-bit) માઇક્રોકમ્પ્યુટર | આલ્ફા (Alpha), MIPS (MIPS), PA-RISC (PA-RISC), પાવરPC (PowerPC), SPARC (SPARC), x86-64 (x86-64) |
| એમ્બેડેડ કમ્પ્યુટર (Embedded computer) | ઇન્ટેલ 8048 (Intel 8048), ઇન્ટેલ 8051 (Intel 8051) |
| પર્સનલ કમ્પ્યુટર (Personal computer) | ડેસ્કટોપ કમ્પ્યુટર (Desktop computer), હોમ કમ્પ્યુટર (Home computer), લેપટોપ કમ્પ્યુટર (Laptop computer), પર્સનલ ડિજિટલ આસિસ્ટંટ (Personal digital assistant) (PDA), પોર્ટેબલ કમ્પ્યુટર (Portable computer), ટેબ્લેટ કમ્પ્યુટર (Tablet computer), વેરેબલ કમ્પ્યુટર (Wearable computer) |
| થિયોરેટિકલ/એક્સપેરિમેન્ટલ | કોન્ટમ કમ્પ્યુટર (Quantum computer), કેમિકલ કમ્પ્યુટર (Chemical computer), DNA કમ્પ્યુટિંગ (DNA computing), ઓપ્ટિકલ કમ્પ્યુટર (Optical computer), સ્પિનટ્રોનિક્સ આધારિત કમ્પ્યુટર (Spintronics based computer) |

**બીજા હાર્ડવેર ટોપિક્સ**| પેરિફેરલ ડિવાઇઝ (Peripheral device) (ઇનપુટ/આઉટપુટ (Input/output)) | ઇનપુટ | માઉસ (Mouse), કીબોર્ડ (Keyboard), જોયસ્ટિક (Joystick), ઇમેજ સ્કેનર (Image scanner) |
| આઉટપુટ | મોનિટર (Monitor), પ્રિન્ટર (Printer) |
| બન્ને | ફ્લોપી ડિસ્ક ડ્રાઇવ (Floppy disk drive), હાર્ડ ડિસ્ક (Hard disk), ઓપ્ટિકલ ડિસ્ક ડ્રાઇવ (Optical disc), ટેલિપ્રિન્ટર (Teleprinter) |
| કમ્પ્યુટર બસો (Computer bus) | ટૂંકી રેન્જ | RS-232 (RS-232), SCSI (SCSI), PCI (PCI), USB (USB) |
| લાંબી રેન્જ (કમ્પ્યુટર નેટવર્કિંગ (Computer networking)) | એથરનેટ (Ethernet), ATM (ATM), FDDI (FDDI) |

### સોફ્ટવેર

 **સોફ્ટવેર** કમ્પ્યુટરના એવા ભાગોનો ઉલ્લેખ કરે છે, જે મટીરીયલ સ્વરૂપમાં નથી, જેમ કે પ્રોગ્રામ્સ, ડેટા, પ્રોટોકોલ્સ વગેરે. જ્યારે હાર્ડવેરમાં સોફ્ટવેર સ્ટોર કરવામાં આવ્યો હોય ત્યારે, તેને સરળ રીતે સુધારી શકાતું નથી (જેમ કે આઇબીએમ પીસી કોમ્પેટીબલમાં બાયોસ, રિડ-ઓન્લી મેમરી (આરઓએમ અથવા રોમ), તે હાર્ડવેર અને સોફ્ટવેર વચ્ચે કોઇક સ્થળે અચોક્કસ વિસ્તારમાં આવે છે તે નિર્દેશ કરવા માટે તેને ઘણી વખત “ફર્મવેર” કહેવાય છે.

**કમ્પ્યુટર સોફ્ટવેર**| ઓપરેટિંગ સિસ્ટમ | યુનિક્સ અને બર્કલી સોફ્ટવેર ડિસ્ટ્રીબ્યુશન (બિ.એસ.ડી.) | UNIX System V, AIX operating system, HP-UX, Solaris (SunOS), IRIX, બિ.એસ.ડી. ઓપરેટિંગ સિસ્ટમ્સની યાદી |
| GNU (GNU)/લિનક્સ (Linux) | લિનક્સ ડિસ્ટ્રીબ્યુશન્સની યાદી (List of Linux distributions), લિનક્સ ડિસ્ટ્રીબ્યુશન્સની સરખામણી (Comparison of Linux distributions) |
| માઈક્રોસોફ્ટ વિન્ડોઝ | Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, Windows CE, |
| DOS (DOS) | 86-DOS (86-DOS) (QDOS), PC-DOS (PC-DOS), MS-DOS (MS-DOS), ફ્રીDOS (FreeDOS) |
| મેક OS (Mac OS) | મેક OS ક્લાસિક (Mac OS classic), મેક OS X (Mac OS X) |
| એમ્બેડેડ (Embedded) અને રિયલ ટાઇમ (real-time) | એમ્બેડેડ ઓપરેટિંગ સિસ્ટમ્સની યાદી (List of embedded operating systems) |
| પ્રાયોગિક | એમોએબા (Amoeba), ઓબેરોન (Oberon)/બ્લ્યુબોટલ (Bluebottle), બેલ્સ લેબ્સનો પ્લાન 9 (Plan 9 from Bell Labs) |
| લાઇબ્રેરી (Library) | મલ્ટીમિડિયા (Multimedia) | ડાયરેક્ટX (DirectX), ઓપનGL (OpenGL), ઓપનAL (OpenAL) |
| પ્રોગ્રામિંગ લાઇબ્રેરી | C સ્ટાન્ડર્ડ લાઇબ્રેરી (C standard library), સ્ટાન્ડર્ડ ટેમ્પલેટ લાઇબ્રેરી (Standard template library) |
| ડેટા (Data) | પ્રોટોકૉલ (Protocol) | TCP/IP (TCP/IP), કેરમિટ (Kermit), FTP (FTP), HTTP (HTTP), SMTP (SMTP) |
| ફાઇલ ફોર્મેટ (File format) | HTML (HTML), XML (XML), JPEG (JPEG), MPEG (MPEG), PNG (PNG) |
| યુઝર ઇન્ટરફેસ (User interface) | ગ્રાફિકલ યુઝર ઇન્ટરફેસ (Graphical user interface) (WIMP (WIMP)) | માઈક્રોસોફ્ટ વિન્ડોઝ (Microsoft Windows), GNOME (GNOME), KDE (KDE), QNX ફોટોન (QNX Photon), CDE (CDE), GEM (GEM) |
| ટેક્સ્ટ-આધારિત યુઝર ઇન્ટરફેસ (Text-based user interface) | કમાન્ડ-લાઇન ઇન્ટરફેસ (Command-line interface), ટેક્સ્ટ યુઝર ઇન્ટરફેસ (Text user interface) |
| એપ્લિકેશન (Application) | ઓફિસ સુટ (Office suite) | વર્ડ પ્રોસેસીંગ (Word processing), ડેસ્કટોપ પબ્લીશીંગ (Desktop publishing), પ્રેઝન્ટેશન પ્રોગ્રામ (Presentation program), ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમ (Database management system), શિડ્યૂલીંગ અને ટાઇમ મેનેજમેન્ટ, સ્પ્રેડશીટ (Spreadsheet), એકાઉન્ટીંગ સોફ્ટવેર (Accounting software) |
| ઇન્ટરનેટ (Internet) એસેસ | બ્રાઉઝર (Browser), ઇમેલ ક્લાયંટ (E-mail client), વેબ સર્વર (Web server), મેઇલ ટ્રાન્સફર એજન્ટ (Mail transfer agent), ઇન્સ્ટન્ટ મેસેજીંગ (Instant messaging) |
| ડિઝાઇન અને ઉત્પાદન | કમ્પ્યુટર આધારિત ડિઝાઇન (Computer-aided design), કમ્પ્યુટર આધારિત ઉત્પાદન (Computer-aided manufacturing), પ્લાન્ટ મેનેજમેન્ટ, રોબોટિક ઉત્પાદન, સપ્લાય ચેઇન મેનેજમેન્ટ |
| ગ્રાફિક્સ (Graphics) | રાસ્ટર ગ્રાફિક્સ એડિટર (Raster graphics editor), વેક્ટોર ગ્રાફિક્સ એડિટર (Vector graphics editor), 3ડી મોડેલર (3D modeler), એનિમેશન એડિટર (Animation editor), 3ડી કમ્પ્યુટર ગ્રાફિક્સ (3D computer graphics), વીડીયો ઇડેટીંગ (Video editing), ઇમેજ પ્રોસેસીંગ (Image processing) |
| ઓડિયો (Audio) | ડિજિટલ ઓડિયો એડિટર (Digital audio editor), ઓડિયો પ્લેબેક (Audio playback), મિક્સિંગ, ઓડિયો સિન્થેસિસ (Audio synthesis), કમ્પ્યુટર મ્યુઝિક (Computer music) |
| સોફ્ટવેર એન્જિનિયરીંગ (Software Engineering) | કમ્પાઇલર (Compiler), એસેમ્બલર (Assembler), ઇન્ટરપ્રિટર (Interpreter), ડિબગર (Debugger), ટેક્સ્ટ એડિટર (Text Editor), ઇન્ટિગ્રેટેડ ડેવલપમેન્ટ એનવાર્યનમેન્ટ (Integrated development environment), પરફોર્મન્સ એનાલિસિસ (Performance analysis), રિવિઝન કંટ્રોલ (Revision control), સોફ્ટવેર કનફિગ્યુરેશન મેનેજમેન્ટ (Software configuration management) |
| શૈક્ષણિક | શૈક્ષણિક મનોરંજન (Edutainment), શૈક્ષણિક રમત (Educational game), ગંભીર રમત (Serious game), ફાઇટ સિમ્યુલેટર (Flight simulator) |
| ગેમ્સ (Games) | સ્ટ્રેટેજી (Strategy), આર્કેડ, પઝલ (Puzzle), સિમ્યુલેશન, ફર્સ્ટ પર્સન શૂટર (First-person shooter), પ્લેટફોર્મ (Platform), મેસિવલી મલ્ટીપ્લેયર (Massively multiplayer), ઇન્ટરેક્ટિવ ફિક્સન (Interactive fiction) |
| Misc | આર્ટિફિસિયલ ઇન્ટેલિજન્સ (Artificial intelligence), એન્ટિવાયરસ સોફ્ટવેર (Antivirus software), મેલવેર સ્કેનર (Malware scanner), ઇન્સ્ટોલર (Installer)/પેકેજ મેનેજમેન્ટ સિસ્ટમ્સ (Package management system), ફાઇલ મેનેજર (File manager) |

### પ્રોગ્રામિંગ ભાષાઓ

પ્રોગ્રામીંગ ભાષા કમ્પ્યુટરને ચલાવવા માટે પ્રોગ્રામ નિર્દેશના વિવિધ માર્ગો પૂરા પાડે છે કુદરતી ભાષા સિવાય, પ્રોગ્રામીંગ ભાષાઓ અસ્પષ્ટ નહી અને ટૂંકાણમાં મંજૂરી આપવા માટે તૈયાર કરવામાં આવી છે. તે શુદ્ધ રીતે લખાયેલી ભાષા છે અને ઘણી વખત મોટેથી વાંચવામાં પણ મુશ્કેલ છે તે ક્યાંતો મશિન ભાષામાં કમ્પાઇલર દ્વારા અથવા એસેમ્બ્લર દ્વારા ચાલનસમય પહેલા ભાષાંતરીત હોય છે અથવા ઇન્ટરપ્રિટર દ્વારા ચાલનસમય વખતે સીધી જ ભાષાંતર કરવામાં આવે છે. કેટલીક વખત બે ટેકનીકની હાઇબ્રીડ પદ્ધતિ દ્વારા પ્રોગ્રામ હાથ ધરવામાં આવે છે. હજ્જારો વિવિધ પ્રોગ્રામીંગ ભાષાઓ છે-જેમાંની કેટલીક સામાન્ય હેતુ માટેની હતી, જ્યારે અન્ય કેટલીક ભાષાઓ કેટલાક ખાસ હેતુ માટે જ ઉપયોગી હતી.

**પ્રોગ્રામિંગ ભાષાઓ**| પ્રોગ્રામિંગ ભાષાઓની યાદી | પ્રોગ્રામિંગ ભાષાઓની સમયરેખા, પ્રોગ્રામિંગ ભાષાઓની શ્રેણીગત યાદી, પ્રોગ્રામિંગ ભાષાઓની વારસાગત યાદી, પ્રોગ્રામિંગ ભાષાઓની મૂળાક્ષરો મુજબની યાદી, બિન-અંગ્રેજી આધારિત પ્રોગ્રામિંગ ભાષાઓ |
| સામાન્ય રીતે વપરાતી એસેમ્બ્લી ભાષાઓ | ARM આર્કિટેક્ચર, MIPS આર્કિટેક્ચર, X૮૬ એસેમ્બલી ભાષા |
| સામાન્ય રીતે વપરાતી ઉંચા સ્તરની ભાષાઓ | Ada, BASIC, C, C++, C#, COBOL, ફોર્ટ્રાન, Java, Lisp, Pascal, Object Pascal |
| સામાન્ય રીતે વપરાતી સ્ક્રીપ્ટીંગ ભાષાઓ | Bourne script (BASH), JavaScript, Python, Ruby, PHP, Perl |

### વ્યવસાયો અને સંગઠનો

કમ્પ્યુટરનો ઉપયોગ સમાજ આખામાં ફેલાયો હોવાથી કમ્પ્યુટર સાવિષ્ટ કારકીર્દીઓની સંખ્યામાં વધારો થયો છે. હાર્ડવેર, સોફ્ટવેર અને ફર્મવેરની થીમ આધારિત જે લોકો ઉદ્યોગમાં કામ કર છે તેવા લોકોના મગજ કેટલીકવખત બિનસંબંધિત રીતે વેટવેર અથવા “મીટવેર” તરીકે જાણીતા છે.

**કમ્પ્યુટર સાથે જોડાયેલા વ્યવસાયો**| હાર્ડવેર સાથે જોડાયેલા | ઇલેક્ટ્રિકલ એન્જિનિયરીંગ, ઇલેક્ટ્રોનિક્સ એન્જિનિયરીંગ, કમ્પ્યુટર એન્જિનિયરીંગ, ટેલિકોમ્યુનિકેશન્સ એન્જિનિયરીંગ, ઓપ્ટિકલ એન્જિનિયરીંગ, નેનોસ્કેલ એન્જિનિયરીંગ |
| સોફ્ટવેર સાથે જોડાયેલા | કમ્પ્યુટર વિજ્ઞાન, માનવીય કમ્પ્યુટર ક્રિયાપ્રતિક્રિયા, ઇન્ફોર્મેશન ટેક્નોલોજી, સોફ્ટવેર એન્જિનિયરીંગ, સાયન્ટિફિક કમ્પ્યુટિંગ, વેબ ડિઝાઇન, ડેસ્કટોપ પબ્લિશિંગ |

સાથે મળીને કામ કરવા માટે કમ્પ્યુટરની જરૂરિયાત અને માહિતીની આપ-લે કરવા માટે સક્ષમતા હાંસલ કરવા માટેની સ્થિતિએ ઔપચારીક અને બિનઔપચારીક રીતે ઘણા સ્ટાન્ડર્ડ ઓર્ગેનાઇઝેશનો, ક્લબો અને સોસાયટીઓને વિસ્તરવાની જરૂરિયાત ઊભી કરી છે.

**સંગઠન**| સ્ટાન્ડર્ડ્સ ગ્રુપ્સ | અમેરિકન નેશનલ સ્ટાન્ડર્ડ ઇન્સ્ટિટ્યૂટ, ઇન્ટરનેશનલ ઇલેક્ટ્રોટેકનિકલ કમિશન, ઇન્સ્ટિટ્યૂટ ઓફ ઇલેક્ટ્રીકલ એન્ડ ઇલેક્ટ્રોનિક્સ એન્જિનિયર્સ, ઇન્ટરનેટ એન્જિનિયરીંગ ટાસ્ક ફોર્સ, ઇન્ટરનેશનલ ઓર્ગેનાઇઝેશન ફોર સ્ટાન્ડર્ડાઇઝેશન, વર્લ્ડ વાઇડ વેબ કોન્સર્ટિયમ |
| વ્યાવસાયીક મંડળો | એસોસિએશન ફોર કમ્પ્યુટિંગ મશીનરી (એ.સિ.એમ.), એ.સિ.એમ. સ્પેશ્યલ ઇન્ટરેસ્ટ ગ્રૂપ્સ, ઇન્સ્ટિટ્યુશન ઓફ એન્જિનિયરીંગ એન્ડ ટેક્નોલોજી, આઇ.એફ.આઇ.પી. |
| ફ્રી સોફ્ટવેર/ઓપન-સોર્સ સોફ્ટવેર ગ્રૂપ્સ | ફ્રી સોફ્ટવેર ફાઉન્ડેશન, મોઝીલા ફાઉન્ડેશન, અપાચે સોફ્ટવેર ફાઉન્ડેશન |

## ત્યાં પણ જૂઓ

## એક્સટર્નલ લિંક્સ

* કમ્પ્યુટર મિનિ-આર્ટિકલ સંગ્રહિત ૨૦૦૯-૦૩-૩૦ ના રોજ વેબેક મશિન

## નોંધ

## સંદર્ભો

* **a** Kempf, Karl (1961). "Historical Monograph: Electronic Computers Within the Ordnance Corps". Aberdeen Proving Ground (United States Army). `{{cite journal}}`: Cite journal requires `|journal=` (મદદ)
* **a** Phillips, Tony (2000). "The Antikythera Mechanism I". American Mathematical Society. મૂળ માંથી 2006-04-27 પર સંગ્રહિત. મેળવેલ 2006-04-05. `{{cite web}}`: Check date values in: `|access-date=` and `|archive-date=` (મદદ)
* **a** Shannon, Claude Elwood (1940). "A symbolic analysis of relay and switching circuits". Massachusetts Institute of Technology. `{{cite journal}}`: Cite journal requires `|journal=` (મદદ)
* **a** Digital Equipment Corporation (1972). *PDP-11/40 Processor Handbook* (PDF). Maynard, MA: Digital Equipment Corporation.
* **a** Verma, G.; Mielke, N. (1988). "Reliability performance of ETOX based flash memories". IEEE International Reliability Physics Symposium. `{{cite journal}}`: Cite journal requires `|journal=` (મદદ)CS1 maint: multiple names: authors list (link)
* **a** Meuer, Hans (2006-11-13). "Architectures Share Over Time". TOP500. મેળવેલ 2006-11-27. `{{cite web}}`: Check date values in: `|access-date=` and `|date=` (મદદ); Unknown parameter `|coauthors=` ignored (`|author=` suggested) (મદદ)
* Lavington, Simon (1998), *A History of Manchester Computers* (2 ed.), Swindon: The British Computer Society, ISBN 0902505018
* Stokes, Jon (2007). *Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture*. San Francisco: No Starch Press. ISBN 978-1-59327-104-6.