Note G
નોંધ જી એડા લવલેસ દ્વારા લખાયેલ કમ્પ્યુટર અલ્ગોરિધમ હતું, અને કાલ્પનિક વિશ્લેષણાત્મક એન્જિનનો ઉપયોગ કરીને બર્નૌલી સંખ્યાઓની ગણતરી કરવા માટે ડિઝાઇન કરવામાં આવ્યું હતું. નોંધ જી સામાન્ય રીતે ખાસ કરીને કમ્પ્યુટર માટે પ્રથમ અલ્ગોરિધમ હોવાનું માનવામાં આવે છે, અને પરિણામે લવલેસને પ્રથમ કમ્પ્યુટર પ્રોગ્રામર તરીકે ગણવામાં આવે છે. અલ્ગોરિધમ એ થી જી લેબલવાળી શ્રેણીની છેલ્લી નોંધ હતી, જેને તેમણે ટ્યૂરિન યુનિવર્સિટી ખાતે વિશ્લેષણાત્મક એન્જિન પર ચાર્લ્સ બેબેજના વ્યાખ્યાનના લુઇગી મેનાબ્રિયાના 1842 ફ્રેન્ચ અનુલેખનના અંગ્રેજી અનુવાદ સાથે વિઝ્યુઅલ એઇડ્સ તરીકે કામ કર્યું હતું, "નોશન્સ સુર લા મશીન એનાલિટીક ડી ચાર્લ્સ બેબેજ" ("એલિમેન્ટ્સ ઓફ ચાર્લ્સ બેબેજના એનાલિટીકલ મશીન"). લવલેસની નોટ જીનું ક્યારેય પરીક્ષણ કરવામાં આવ્યું ન હતું, કારણ કે એન્જિન ક્યારેય બનાવવામાં આવ્યું ન હતું. તેમની નોંધો, તેમના અનુવાદ સાથે, 1843 માં પ્રકાશિત થઈ હતી. આધુનિક યુગમાં, વધુ સહેલાઈથી ઉપલબ્ધ કમ્પ્યુટિંગ સાધનો અને પ્રોગ્રામિંગ સંસાધનોને કારણે, લવલેસના અલ્ગોરિધમનો આધુનિક પ્રોગ્રામિંગ ભાષાઓમાં "અનુવાદ" થયા પછી પરીક્ષણ કરવામાં આવ્યું છે. આ પરીક્ષણોએ સ્વતંત્ર રીતે તારણ કાઢ્યું છે કે સ્ક્રિપ્ટમાં એક નાની ટાઇપોગ્રાફિક ભૂલને કારણે ભૂલ હતી, જે અલ્ગોરિધમને તેની મૂળ સ્થિતિમાં બિનઉપયોગી બનાવે છે. 1840 માં, ચાર્લ્સ બેબેજ તેમના વિશ્લેષણાત્મક એન્જિન પર તુરિનમાં એક સેમિનાર આપવા માટે આમંત્રિત કરવામાં આવ્યા હતા, જે તેમણે એન્જિન પર આપેલું એકમાત્ર જાહેર સમજૂતી હતું. બેબેજના વ્યાખ્યાન દરમિયાન, ગણિતશાસ્ત્રી લુઇગી મેનાબ્રિયાએ ફ્રેન્ચમાં એન્જિનનો અહેવાલ લખ્યો હતો. બેબેજના મિત્ર ચાર્લ્સ વ્હીટસ્ટોને સૂચવ્યું હતું કે યોગદાન આપવા માટે લવલેસે મેનાબ્રિયાના વર્ણનનું ભાષાંતર કરવું જોઈએ. બેબેજે સૂચવ્યું કે તેણી એપેન્ડિસીસ સાથે એકાઉન્ટમાં વધારો કરે, જેને તેણીએ તેના અનુવાદના અંતે એ-જી લેબલવાળી સાત "નોટ્સ" ની શ્રેણી તરીકે સંકલિત કરી હતી. તેણીનો અનુવાદ ઓગસ્ટ 1843માં ટેલરની સાયન્ટિફિક મેમોઇર્સમાં પ્રકાશિત થયો હતો, જેમાં લવલેસના નામ પર "એ. એ. એલ". સહી કરવામાં આવી હતી. આ નોંધોમાં, લવલેસે બેબેજના વિશ્લેષણાત્મક એન્જિનની ક્ષમતાઓનું વર્ણન કર્યું હતું, જો તેનો ઉપયોગ કમ્પ્યુટિંગ માટે કરવામાં આવે તો, બેબેજની પોતાની ક્ષમતા કરતાં પણ એન્જિન માટે વધુ મહત્વાકાંક્ષી યોજના ઘડી હતી. લેખ માટે લવલેસની નોંધો લેખ કરતાં ત્રણ ગણી લાંબી હતી. પ્રથમ નોંધોમાં, તે મશીન માટે બેબેજની આંકડાકીય મહત્વાકાંક્ષાઓથી આગળ શોધે છે, અને સૂચવે છે કે મશીન સંગીત, ગ્રાફિક્સ અને ભાષાના ક્ષેત્રો સાથે વ્યવહાર કરવા માટે ગણતરીનો લાભ લઈ શકે છે. તે વાચકોને સમજાવે છે કે કેવી રીતે વિશ્લેષણાત્મક એન્જિન બેબેજના અગાઉના તફાવત એન્જિનથી અલગ હતું, અને તેના કાર્યને જેક્વાર્ડ મશીન સાથે સરખાવે છે, જેમાં તે મશીનની ભાષાને દર્શાવવા માટે દ્વિસંગી પંચ કાર્ડનો ઉપયોગ કરે છે. નોંધ સીમાં, આ મુદ્દાને એ હકીકત દ્વારા આગળ વધારવામાં આવે છે કે મશીન દ્વારા એક સાથે અને પુનરાવર્તિત ક્રિયાઓ કરી શકાય છે, જે સુનિશ્ચિત કરે છે કે કોઈપણ કાર્ડ અથવા કાર્ડના સંગ્રહનો ઉપયોગ એક જ સમસ્યાના ઉકેલમાં ઘણી વખત થઈ શકે છે, અનિવાર્યપણે નિયંત્રણ પ્રવાહ અને લૂપિંગની આધુનિક પદ્ધતિઓની અપેક્ષા રાખે છે. આ વિચારોને અંતિમ નોંધ જીમાં મુખ્ય સ્થાને લાવવામાં આવ્યા હતા, જ્યાં લવલેસે ગણતરીનું ઉદાહરણ દર્શાવવાનો પ્રયાસ કર્યો હતો. નોંધ જીએ માત્ર ચાર અંકગણિત કામગીરીઓનો ઉપયોગ કર્યો હતોઃ સરવાળો, બાદબાકી, ગુણાકાર અને વિભાજન, બેબેજની દ્રષ્ટિનું અમલીકરણઃ તે બેબેજના ડિસ્કના સ્તંભોમાં માહિતી સંગ્રહિત કરવાના વિચારનો પણ ઉપયોગ કરે છે, દરેકને (ચલ માટે) દ્વારા સૂચવવામાં આવે છે અને સબ્સ્ક્રિપ્ટ નંબર સૂચવે છે કે કયા સ્તંભનો સંદર્ભ આપવામાં આવી રહ્યો છે. ફંક્શન લવલેસે બર્નૌલી સંખ્યાઓની ગણતરી કરવા માટે પુનરાવર્તિત સમીકરણનો ઉપયોગ કર્યો હતો, જેમાં તેમણે આગામી સમીકરણ બનાવવા માટે સમીકરણમાં અગાઉના મૂલ્યોનો ઉપયોગ કર્યો હતો. તેણીની પદ્ધતિ આ રીતે ચાલીઃ જ્યાં દ્વિપદી ગુણાંક છે,. બર્નૌલી સંખ્યાઓની ગણતરી ઘણી રીતે કરી શકાય છે, પરંતુ લવલેસે એન્જિનની શક્તિ દર્શાવવા માટે ઇરાદાપૂર્વક વિસ્તૃત પદ્ધતિ પસંદ કરી હતી. નોંધ જી માં, તે જણાવે છેઃ "અમે આ નોંધોને વિગતવાર અનુસરીને સમાપ્ત કરીશું જેના દ્વારા એન્જિન બર્નૌલીની સંખ્યાઓની ગણતરી કરી શકે છે, આ તેની શક્તિઓનું એક જટિલ ઉદાહરણ છે". નોટ જીમાં લવલેસ દ્વારા ઉપયોગમાં લેવાયેલ ચોક્કસ અલ્ગોરિધમ આઠમો બર્નૌલી નંબર પેદા કરે છે (જેમ તેણે શરૂઆત કરી હતી તેમ લેબલ કરેલું). સંકેત અલ્ગોરિધમનો કોષ્ટક દરેક આદેશને ક્રમમાં ગોઠવે છે. દરેક આદેશ સૂચવે છે કે એક કામગીરી બે શબ્દો પર કરવામાં આવી રહી છે. બીજી કોલમ જણાવે છે કે માત્ર ઓપરેટરનો ઉપયોગ કરવામાં આવી રહ્યો છે. ચલને "" તરીકે નોંધવામાં આવે છે, જ્યાં તે પહેલાંની સુપરસ્ક્રિપ્ટ ચલને સોંપવામાં આવેલા વિવિધ મૂલ્યોની માત્રાને રજૂ કરે છે, અને તે પછીની સબસ્ક્રિપ્ટ ચલની ક્રમિક સોંપણીને રજૂ કરે છે, એટલે કે તે કયા ચલ છે. (ઉદાહરણ તરીકે, ચલ સંખ્યા 4 ની બીજી સોંપણીનો સંદર્ભ આપે છે. અત્યાર સુધી અવ્યાખ્યાયિત કોઈપણ ચલની સુપરસ્ક્રિપ્ટ 0 હોય છે.) વેરિયેબલ્સની સંખ્યા અહીંથી શરૂ થાય છે. ત્રીજી કોલમ કમ્પ્યુટરને બરાબર જણાવે છે કે આદેશ શું થઈ રહ્યો છે, (ઉદાહરણ તરીકે, પંક્તિ 1 પર, કરવામાં આવેલ આદેશ "" છે-ચલ 2 નું પ્રથમ પુનરાવર્તન ચલ 3 ના પ્રથમ પુનરાવર્તન દ્વારા ગુણાકાર કરવામાં આવે છે.) અને રેખા દીઠ બે શરતો વચ્ચે માત્ર એક જ કામગીરીનો સમાવેશ કરે છે. સ્તંભ 4-"પરિણામો પ્રાપ્ત કરતા ચલ" એ નોંધ લે છે કે સ્તંભ 3 માં કામગીરીનું પરિણામ ક્યાં સંગ્રહિત કરવું જોઈએ. આ રીતે, આ સ્તંભમાંના કોઈપણ ચલની સુપરસ્ક્રિપ્ટ સંખ્યામાં દરેક વખતે એકનો વધારો થાય છે. (ઉદાહરણ તરીકે. લીટી 1 પર, નું પરિણામ ચલોને સોંપવામાં આવ્યું છે, અને.) સ્તંભ 5 જણાવે છે કે આદેશની કામગીરીમાં ઉપયોગમાં લેવાતા ચલમાંથી કોઈ એક બદલાયું છે કે કેમ. કર્લી કૌંસમાં બંધાયેલ, આદેશ દીઠ બે પંક્તિઓ સમાન ચિહ્નની ડાબી બાજુએ મૂળ ચલ મૂકે છે, અને બીજી બાજુ નવા ચલ મૂકે છે-એટલે કે, જો ચલ બદલવામાં આવ્યો હોય, તો તેની સુપરસ્ક્રિપ્ટ એક દ્વારા વધારવામાં આવે છે, અને જો નહીં, તો તે સમાન રહે છે. (ઉદાહરણ તરીકે. પંક્તિ ત્રણ ચલની બીજી પુનરાવર્તનનું પરિણામ સોંપે છે, અને પાંચમી કોલમ નોંધ્યું છે કે; બદલાઈ ગયું છે, પરંતુ બદલાયું નથી. કૉલમ 6, "સ્ટેટમેન્ટ ઓફ રિઝલ્ટ્સ" માં, કૉલમ 4 માં ચલને સોંપેલ પરિણામ અગાઉ સોંપેલ બે શબ્દોના મૂલ્યોના આધારે તેના ચોક્કસ મૂલ્યમાં દર્શાવવામાં આવ્યું છે. (ઉદાહરણ તરીકે. રેખા 1 પર-- શરૂઆતમાં સેટ કરવામાં આવ્યું હતું, અને ચલ તરીકે સેટ કરવામાં આવ્યું હતું. તેથી, ગાણિતિક સંકેતલિપીમાં) આ સ્તંભ દેખીતી રીતે એન્જિન દ્વારા ગણવામાં આવતો નથી, અને સ્પષ્ટતા અને કાર્યક્રમના પગલાંને અનુસરવાની વાચકની ક્ષમતાને મદદ કરવા માટે વધુ હોવાનું જણાય છે. (ઉદાહરણ તરીકે, લીટી 5માં અપૂર્ણાંકને બે વડે વિભાજિત કરવામાં આવે છે, જે કદાચ સુસંગતતા અને નેસ્ટેડ અપૂર્ણાંકની ટંકલેખન જટિલતા માટે અડધા વડે ગુણાકાર તરીકે નોંધવામાં આવે છે.) તે પ્રોગ્રામની બહાર અલગ ચલ સંકેતનો પણ ઉપયોગ કરે છે, અને ચલ, જે અંતિમ મૂલ્ય શોધવા માટે ક્રમિક રીતે ગુણાકાર કરવામાં આવે છે, આમઃ આ ઉપરાંત, દરેક ક્રમિક સ્તંભ સમય જતાં આપેલ ચલનાં મૂલ્યો દર્શાવે છે. દરેક વખતે જ્યારે ચલ કાં તો બદલાય છે, અથવા તેનું મૂલ્ય વર્તમાન આદેશમાં એક શબ્દ તરીકે તેની હાજરીની નિશાની દ્વારા સુસંગત બને છે, ત્યારે તેનું મૂલ્ય તેના સંબંધિત સ્તંભમાં જણાવવામાં આવે છે અથવા ફરીથી દર્શાવવામાં આવે છે. નહિંતર, તેની અપરિવર્તનીયતાને દર્શાવવા માટે તેને લંબગોળ સાથે ચિહ્નિત કરવામાં આવે છે. આ સંભવતઃ કમ્પ્યુટરની માત્ર સંબંધિત માહિતીની જરૂરિયાતની નકલ કરે છે, જેથી પ્રોગ્રામ પાર્સ તરીકે ચલની કિંમતને ટ્રેક કરે છે. પદ્ધતિ પ્રોગ્રામ એ ગણતરી કરવા માંગતો હતો જે આધુનિક પરંપરા દ્વારા આઠમા બર્નૌલી નંબર તરીકે ઓળખાય છે, જેમ કે લવલેસ ગણતરી શરૂ કરે છે. ભૂલ કામગીરી 4 માં, માનવામાં આવતું વિભાજન "", ચલમાં સંગ્રહિત કરવાનું છે. જો કે, "પરિણામોનું નિવેદન" કહે છે કે વિભાજન હોવું જોઈએઃ હકીકતમાં, વિભાજન એ ખોટી રીત છે; તેનું બીજું પુનરાવર્તન છે, જે ઓપરેશન 2 માં જોઈ શકાય છે. તેવી જ રીતે, તેનું બીજું પુનરાવર્તન છે, જે ઓપરેશન 3 માં જોઈ શકાય છે. આમ, ઓપરેશન 4 હોવું જોઈએ નહીં, પરંતુ તેના બદલે. આ બગનો અર્થ એ છે કે જો એન્જિન ક્યારેય આ અલ્ગોરિધમને આ સ્થિતિમાં ચલાવશે, તો તે બર્નૌલી નંબરો યોગ્ય રીતે ઉત્પન્ન કરવામાં નિષ્ફળ જશે, અને તેનું અંતિમ લક્ષ્ય મૂલ્ય હશે. આધુનિક અમલીકરણ લવલેસનો કાર્યક્રમ આધુનિક પ્રોગ્રામિંગ ભાષામાં અમલમાં મૂકી શકાય છે, જોકે ઉપર જણાવેલી ભૂલને કારણે, જો બરાબર લખવામાં આવે તો તે માટે ખોટું અંતિમ મૂલ્ય પરત કરશે. સ્યુડોકોડમાં સામાન્યીકૃત મૂળ પ્રોગ્રામ નીચે મુજબ છેઃ V [1] = 1 V [2] = 2 V [3] = n (લવલેસના પ્રોગ્રામમાં n = 4.) V [4] = V [4]-V [1] V [5] = V [5] + V [1] V [11] = V [5]/V [4] V [11] = V [11]/V [2] V [13] = V [13]-V [11] V [10] = V [3]-V [1] V [7] = V [2] + V [7] V [11] = V [6]/V [7] વધુમાં, લવલેસના પ્રોગ્રામમાં ચલને માત્ર અગાઉ વ્યાખ્યાયિત ચલ એવા બે શબ્દો પર ઉમેરો, બાદબાકી, ગુણાકાર અથવા વિભાજન કરીને વ્યાખ્યાયિત કરવાની મંજૂરી આપવામાં આવી હતી. આધુનિક વાક્યરચના દરેક ગણતરી વધુ સંક્ષિપ્ત રીતે કરવા માટે સક્ષમ હશે. આ પ્રતિબંધ અમુક સ્થળોએ સ્પષ્ટ થાય છે, ઉદાહરણ તરીકે આદેશ 6 () પર. અહીં લવલેસ પોતે જ અત્યાર સુધી અવ્યાખ્યાયિત ચલ () ને વ્યાખ્યાયિત કરે છે, આમ ધારીને કે તમામ અવ્યાખ્યાયિત ચલ આપમેળે 0 ની બરાબર છે, જ્યાં મોટાભાગની આધુનિક પ્રોગ્રામિંગ ભાષાઓ ભૂલ પરત કરશે અથવા ચલને નલ તરીકે સૂચિબદ્ધ કરશે. તેણીનો ઈરાદો હતો "", પરંતુ તેણે પોતાની જાતને માત્ર ચલ શબ્દોનો ઉપયોગ કરવા માટે મર્યાદિત કરી દીધી હતી. તેવી જ રીતે, આદેશ 8 () માં, બે-ગાળાના અંકગણિતનું કડક સંકેતન બોજારૂપ બની જાય છે, કારણ કે 2 તરીકે વ્યાખ્યાયિત કરવા માટે, લવલેસ તેની કિંમત (0) પોતાને વત્તા (2) સોંપે છે. તે આ પ્રતિબંધિત સંકેતને કારણે છે જે આ રીતે વ્યાખ્યાયિત કરવામાં આવે છે. નોંધો સંદર્ભો સ્ત્રોતો 1843 પરિચય અલ્ગોરિધમ્સ અદા લવલેસ