Data-driven programming
કોમ્પ્યુટર પ્રોગ્રામિંગમાં, ડેટા-ડ્રિવન પ્રોગ્રામિંગ એ એક પ્રોગ્રામિંગ પ્રતિમાન છે જેમાં પ્રોગ્રામ સ્ટેટમેન્ટ લેવા માટેના પગલાંના ક્રમને વ્યાખ્યાયિત કરવાને બદલે મેળ ખાતી માહિતી અને જરૂરી પ્રક્રિયાનું વર્ણન કરે છે. ડેટા-સંચાલિત ભાષાઓના પ્રમાણભૂત ઉદાહરણો ટેક્સ્ટ-પ્રોસેસિંગ ભાષાઓ સેડ અને એડબ્લ્યુકે, અને દસ્તાવેજ પરિવર્તન ભાષા એક્સએસએલટી છે, જ્યાં ડેટા એ ઇનપુટ સ્ટ્રીમમાં રેખાઓનો ક્રમ છે-આ રીતે તેને લાઇન-ઓરિએન્ટેડ ભાષાઓ તરીકે પણ ઓળખવામાં આવે છે-અને પેટર્ન મેચિંગ મુખ્યત્વે નિયમિત અભિવ્યક્તિઓ અથવા લાઇન નંબરો દ્વારા કરવામાં આવે છે. સંબંધિત દાખલાઓ ડેટા-સંચાલિત પ્રોગ્રામિંગ ઇવેન્ટ-સંચાલિત પ્રોગ્રામિંગ જેવું જ છે, જેમાં બંને પેટર્ન મેચિંગ અને પરિણામી પ્રક્રિયા તરીકે રચાયેલ છે, અને સામાન્ય રીતે મુખ્ય લૂપ દ્વારા અમલમાં મૂકવામાં આવે છે, જો કે તે સામાન્ય રીતે વિવિધ ડોમેન્સ પર લાગુ કરવામાં આવે છે. શરત/ક્રિયા મોડેલ પણ પાસા-લક્ષી પ્રોગ્રામિંગ જેવું જ છે, જ્યાં જ્યારે જોડ બિંદુ (શરત) સુધી પહોંચે છે, ત્યારે પોઇન્ટકટ (ક્રિયા) ચલાવવામાં આવે છે. સમાન નમૂનાનો ઉપયોગ ડીટ્રેસ જેવા કેટલાક ટ્રેસિંગ માળખામાં થાય છે, જ્યાં એક ચકાસણી (ઇન્સ્ટ્રુમેન્ટેશન પોઇન્ટ) અને સંકળાયેલ ક્રિયાઓની યાદી આપે છે, જે શરત સંતોષાય ત્યારે અમલમાં મૂકે છે. અમૂર્ત ડેટા પ્રકાર ડિઝાઇન પદ્ધતિઓને ઓબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગમાં અનુકૂળ કરવાથી ડેટા-સંચાલિત ડિઝાઇનમાં પરિણમે છે. આ પ્રકારની ડિઝાઇનનો ઉપયોગ કેટલીકવાર ઓબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગમાં સોફ્ટવેરની વિભાવના દરમિયાન વર્ગોને વ્યાખ્યાયિત કરવા માટે થાય છે. એપ્લિકેશન્સ ડેટા-સંચાલિત પ્રોગ્રામિંગ સામાન્ય રીતે સંરચિત ડેટાના પ્રવાહો પર લાગુ થાય છે, ફિલ્ટરિંગ, પરિવર્તન, એકત્રીકરણ (જેમ કે કમ્પ્યુટિંગ સ્ટેટિસ્ટિક્સ) અથવા અન્ય પ્રોગ્રામ્સને કૉલ કરવા માટે. લાક્ષણિક પ્રવાહોમાં લોગ ફાઇલો, સીમાંકિત-વિભાજિત મૂલ્યો અથવા ઇમેઇલ સંદેશાઓનો સમાવેશ થાય છે, ખાસ કરીને ઇમેઇલ ફિલ્ટરિંગ માટે. ઉદાહરણ તરીકે, AWK પ્રોગ્રામ લોગ સ્ટેટમેન્ટના પ્રવાહને ઇનપુટ તરીકે લઈ શકે છે, અને ઉદાહરણ તરીકે બધાને કન્સોલ પર મોકલી શકે છે, ચેતવણીથી શરૂ કરીને "ચેતવણી" ફાઇલમાં લખી શકે છે, અને જો કોઈ પંક્તિ "ભૂલ" થી શરૂ થાય તો sysadmin ને ઇમેઇલ મોકલી શકે છે. તે દરરોજ કેટલી ચેતવણીઓ નોંધવામાં આવે છે તે પણ રેકોર્ડ કરી શકે છે. વૈકલ્પિક રીતે, દરેક રેખા અથવા એકંદર રેખાઓ, જેમ કે સરવાળો અથવા મહત્તમ, પર પ્રક્રિયા કરીને સીમાંકિત-અલગ મૂલ્યોના પ્રવાહો પર પ્રક્રિયા કરી શકાય છે. ઇમેઇલમાં, પ્રોકમેલ જેવી ભાષા કેટલાક ઇમેઇલ્સ પર મેળ ખાતી શરતો અને કયા પગલાં લેવા (પહોંચાડવું, ઉછાળવું, કાઢી નાખવું, આગળ વધારવું, વગેરે) નો ઉલ્લેખ કરી શકે છે. કેટલીક માહિતી-સંચાલિત ભાષાઓ ટ્યુરિંગ-પૂર્ણ છે, જેમ કે AWK અને સેડ પણ, જ્યારે અન્ય ઇરાદાપૂર્વક ખૂબ મર્યાદિત છે, ખાસ કરીને ગાળણ માટે. પછીનું એક આત્યંતિક ઉદાહરણ પી. કે. પી. છે, જેમાં ફક્ત ગાળણનો સમાવેશ થાય છે, જેમાં એકમાત્ર ક્રિયા "કેપ્ચર" છે. ઓછી અત્યંત, ચાળણીમાં ગાળકો અને ક્રિયાઓ હોય છે, પરંતુ બેઝ સ્ટાન્ડર્ડમાં કોઈ ચલ અથવા લૂપ્સ નથી, જે ફક્ત સ્ટેટલેસ ફિલ્ટરિંગ સ્ટેટમેન્ટને મંજૂરી આપે છેઃ દરેક ઇનપુટ તત્વને સ્વતંત્ર રીતે પ્રક્રિયા કરવામાં આવે છે. ચલ સ્થિતિને મંજૂરી આપે છે, જે એક કરતાં વધુ ઇનપુટ તત્વ પર આધારિત કામગીરીને મંજૂરી આપે છે, જેમ કે એકત્રીકરણ (ઇનપુટ્સનો સરવાળો) અથવા થ્રોટલિંગ (દરેક પ્રેષક પાસેથી કલાક દીઠ મહત્તમ 5 મેલ્સને મંજૂરી આપે છે, અથવા પુનરાવર્તિત લોગ સંદેશાઓને મર્યાદિત કરે છે). ડેટા-સંચાલિત ભાષાઓમાં વારંવાર મૂળભૂત ક્રિયા હોય છેઃ જો કોઈ શરત મેળ ખાતી ન હોય, તો રેખા-લક્ષી ભાષાઓ લીટી (સેડની જેમ) છાપી શકે છે, અથવા સંદેશ (ચાળણીની જેમ) પહોંચાડી શકે છે. કેટલીક એપ્લિકેશનોમાં, જેમ કે ફિલ્ટરિંગ, મેચિંગ સંપૂર્ણપણે થઈ શકે છે (તેથી ફક્ત પ્રથમ મેચિંગ સ્ટેટમેન્ટ), જ્યારે અન્ય કિસ્સાઓમાં તમામ મેચિંગ સ્ટેટમેન્ટ લાગુ કરવામાં આવે છે. કોઈપણ કિસ્સામાં, કોઈપણ પેટર્નને મેચ કરવામાં નિષ્ફળતા "ડિફોલ્ટ વર્તણૂક" હોઈ શકે છે અથવા તેને ભૂલ તરીકે જોઈ શકાય છે, જે અંતે કેચ-ઓલ સ્ટેટમેન્ટ દ્વારા પકડાય છે. લાભો અને મુદ્દાઓ જ્યારે અમલીકરણ વચ્ચે લાભો અને મુદ્દાઓ અલગ અલગ હોઈ શકે છે, ત્યારે આ નમૂનાના કેટલાક મોટા સંભવિત લાભો અને સમસ્યાઓ છે. કાર્યાત્મકતા માટે ફક્ત તે જરૂરી છે કે તે તેની સાથે કામ કરી રહેલા ચલોનો અમૂર્ત ડેટા પ્રકાર જાણે. કાર્યો અને ઇન્ટરફેસનો ઉપયોગ સમાન ડેટા ક્ષેત્રો સાથે તમામ પદાર્થો પર થઈ શકે છે, ઉદાહરણ તરીકે પદાર્થની "સ્થિતિ". ડેટાને પસંદગી અનુસાર ઓબ્જેક્ટ્સ અથવા "એન્ટિટીઝ" માં જૂથબદ્ધ કરી શકાય છે, જેનું કોઈ પરિણામ નથી. જ્યારે ડેટા-સંચાલિત ડિઝાઇન ડેટા અને કાર્યક્ષમતાના જોડાણને અટકાવે છે, ત્યારે કેટલાક કિસ્સાઓમાં, ડેટા-સંચાલિત પ્રોગ્રામિંગ ખરાબ ઓબ્જેક્ટ-ઓરિએન્ટેડ ડિઝાઇન તરફ દોરી જાય છે, ખાસ કરીને જ્યારે વધુ અમૂર્ત ડેટા સાથે વ્યવહાર કરવામાં આવે છે. આનું કારણ એ છે કે શુદ્ધ માહિતી-સંચાલિત પદાર્થ અથવા અસ્તિત્વ તેને જે રીતે રજૂ કરવામાં આવે છે તેના દ્વારા વ્યાખ્યાયિત કરવામાં આવે છે. ઑબ્જેક્ટની રચનાને બદલવાનો કોઈપણ પ્રયાસ તેના પર આધાર રાખતા કાર્યોને તરત જ તોડી નાખશે. ઉદાહરણ તરીકે, વાહન ચલાવવાની દિશાઓને આંતરછેદોની શ્રેણી (બે આંતરછેદ કરતી શેરીઓ) તરીકે રજૂ કરી શકાય છે જ્યાં વાહનચાલકે જમણી કે ડાબી તરફ વળવું જોઈએ. જો આંતરછેદને (યુનાઇટેડ સ્ટેટ્સમાં) ઝિપ કોડ (5-અંકનો નંબર) અને બે શેરી નામો (લખાણના શબ્દમાળાઓ) દ્વારા ડેટામાં રજૂ કરવામાં આવે છે, તો જ્યારે શહેર જ્યાં શેરીઓ ઘણી વખત છેદે છે ત્યારે ભૂલો દેખાઈ શકે છે. જ્યારે આ ઉદાહરણ વધુ પડતું સરળ થઈ શકે છે, ત્યારે માહિતીનું પુનર્ગઠન એ સોફ્ટવેર એન્જિનિયરિંગમાં એકદમ સામાન્ય સમસ્યા છે, ક્યાં તો ભૂલોને દૂર કરવા, કાર્યક્ષમતા વધારવા અથવા નવી સુવિધાઓને ટેકો આપવા માટે. ભાષાઓ એ. ડબલ્યુ. કે. ઓઝ પર્લ-એ. ડબલ્યુ. કે. અને સેડની જેમ ડેટા-સંચાલિત પ્રોગ્રામિંગ એ પર્લ સેડ લુઆ ક્લોજુર ટેબ (ભાષા) એફ. ડી. એમ. મેલડ્રોપ પ્રોકમેલ ચાળવું બેઝિક એક્સ. એસ. એલ. ટી. દ્વારા સમર્થિત એક દાખલો છે. પ્રોગ્રામિંગ દાખલાઓ