C--
સી-(ઉચ્ચારણ સી માઈનસ માઈનસ) એ સી જેવી પ્રોગ્રામિંગ ભાષા છે, જે મુખ્યત્વે માનવ પ્રોગ્રામરો દ્વારા લખવાને બદલે ઉચ્ચ-સ્તરની ભાષાઓ માટે કમ્પાઇલર્સ દ્વારા પેદા કરવા માટે રચાયેલ છે. તે કાર્યાત્મક પ્રોગ્રામિંગ સંશોધકો સિમોન પેટન જોન્સ અને નોર્મન રેમ્સે દ્વારા બનાવવામાં આવ્યું હતું. અન્ય ઘણી મધ્યવર્તી ભાષાઓથી વિપરીત, તે સાદા ASCII લખાણમાં રજૂ થાય છે, બાઈટકોડ અથવા અન્ય દ્વિસંગી સ્વરૂપમાં નહીં. બે મુખ્ય શાખાઓ છેઃ સી--, મૂળ શાખા, મે 2005માં પ્રકાશિત થયેલ અંતિમ સંસ્કરણ 2 સાથે સી. એમ. એમ., ગ્લાસગો હાસ્કેલ કમ્પાઇલર (જી. એચ. સી.) ડિઝાઇન સીમાં મધ્યવર્તી રજૂઆત (આઈ. આર.) તરીકે સક્રિય રીતે ઉપયોગમાં લેવાતો કાંટો-એક "પોર્ટેબલ એસેમ્બલી લેંગ્વેજ" છે, જે ઉચ્ચ ગુણવત્તાવાળા મશીન કોડનું ઉત્પાદન કરતા કમ્પાઇલર્સના અમલીકરણને સરળ બનાવવા માટે રચાયેલ છે. આ નિમ્ન-સ્તરના કોડ-જનરેશન અને પ્રોગ્રામ ઓપ્ટિમાઇઝેશનને સી-કમ્પાઇલરને સોંપીને કરવામાં આવે છે. વિવિધ કાર્યો, નિર્દેશક વાક્યરચના અને સીની પ્રકાર પ્રણાલીના પાસાઓ જેવા પ્રમાણભૂત સી લક્ષણોને દૂર કરતી વખતે અથવા બદલતી વખતે ભાષાનું વાક્યરચના સી પાસેથી ભારે ઉધાર લે છે, કારણ કે તે સીની આવશ્યક સુવિધાઓ અને કોડ-જનરેશનની સરળતામાં અવરોધ ઊભો કરે છે. ભાષાનું નામ મજાકમાં છે, જે સૂચવે છે કે સી-- એ સીનું ઘટાડેલું સ્વરૂપ છે, તે જ રીતે "સી + +" ને સીના સુધારેલા સંસ્કરણને સૂચિત કરવા માટે પસંદ કરવામાં આવ્યું હતું. (સીમાં,-- અને + + નો અર્થ અનુક્રમે "ઘટાડો" અને "વૃદ્ધિ" થાય છે.) સી-પર કામ 1990ના દાયકાના અંતમાં શરૂ થયું હતું. કસ્ટમ કોડ જનરેટર લખવું એ પોતાનામાં એક પડકાર હોવાથી, અને તે સમયે સંશોધકો માટે ઉપલબ્ધ કમ્પાઇલર બેકએન્ડ જટિલ અને નબળી રીતે દસ્તાવેજીકૃત હતા, ઘણા પ્રોજેક્ટ્સમાં કમ્પાઇલર્સ લખવામાં આવ્યા હતા જેણે સી કોડ જનરેટ કર્યો હતો (ઉદાહરણ તરીકે, મૂળ મોડ્યુલા-3 કમ્પાઇલર). જો કે, સી એ કાર્યાત્મક ભાષાઓ માટે નબળી પસંદગી છેઃ તે ટેલ-કોલ ઓપ્ટિમાઇઝેશનની બાંયધરી આપતું નથી, અથવા સચોટ કચરો સંગ્રહ અથવા કાર્યક્ષમ અપવાદ સંચાલનને ટેકો આપતું નથી. સી-એ સી માટે કડક રીતે વ્યાખ્યાયિત સરળ વિકલ્પ છે જે આ બધાને ટેકો આપે છે. તેની સૌથી નવીન વિશેષતા એ રન-ટાઇમ ઇન્ટરફેસ છે જે પોર્ટેબલ કચરો કલેક્ટર્સ, અપવાદ હેન્ડલિંગ સિસ્ટમ્સ અને અન્ય રન-ટાઇમ સુવિધાઓને લખવાની મંજૂરી આપે છે જે કોઈપણ સી-કમ્પાઇલર સાથે કામ કરે છે. સી-નું પ્રથમ સંસ્કરણ એપ્રિલ 1998માં એમ. એસ. આર. એ. પેપર તરીકે બહાર પાડવામાં આવ્યું હતું, જેની સાથે કચરો સંગ્રહ પર જાન્યુઆરી 1999નું પેપર હતું. મે 1999માં એચ. ટી. એમ. એલ. સ્વરૂપમાં સુધારેલી માર્ગદર્શિકા બહાર પાડવામાં આવી હતી. નોર્મન રામસે ("સૂચિત ફેરફારો") અને ક્રિશ્ચિયન લિન્ડીગ ("એક નવું વ્યાકરણ") દ્વારા 2000માં પ્રસ્તાવિત મોટા ફેરફારોના બે સેટ સી-વર્ઝન 2 તરફ દોરી ગયા, જેને 2004ની આસપાસ અંતિમ સ્વરૂપ આપવામાં આવ્યું હતું અને 2005માં સત્તાવાર રીતે રજૂ કરવામાં આવ્યું હતું. ટાઇપ સિસ્ટમ સી-ટાઇપ સિસ્ટમ ઉચ્ચ-સ્તરની ભાષાઓ દ્વારા લાદવામાં આવેલા સંમેલનોને બદલે હાર્ડવેર દ્વારા લાદવામાં આવેલા અવરોધોને પ્રતિબિંબિત કરવા માટે રચાયેલ છે. રજિસ્ટર અથવા મેમરીમાં સંગ્રહિત મૂલ્યમાં માત્ર એક જ પ્રકાર હોઈ શકે છેઃ બીટ-વેક્ટર. જો કે, બીટ-વેક્ટર એક બહુરૂપી પ્રકાર છે જે ઘણી પહોળાઈમાં આવે છે, દા. ત. ,, અથવા. ફ્લોટિંગ-પોઇન્ટ પ્રકારોના એક અલગ 32-અથવા-64 બીટ કુટુંબને ટેકો આપવામાં આવે છે. બિટ-વેક્ટર પ્રકાર ઉપરાંત, સી-બુલિયન પ્રકાર પૂરો પાડે છે, જેની ગણતરી અભિવ્યક્તિઓ દ્વારા કરી શકાય છે અને તેનો ઉપયોગ નિયંત્રણ પ્રવાહ માટે થઈ શકે છે પરંતુ તેને રજિસ્ટર અથવા મેમરીમાં સંગ્રહિત કરી શકાતો નથી. એસેમ્બલી લેંગ્વેજની જેમ, કોઈપણ ઉચ્ચ પ્રકારની શિસ્ત, જેમ કે સહી કરેલ, સહી કરેલ, ફ્લોટ અને પોઇન્ટર વચ્ચેનો તફાવત, સી-ઓપરેટરો અથવા અન્ય વાક્યરચના રચનાઓ દ્વારા લાદવામાં આવે છે. સી-ટાઇપ-ચેક કરેલ નથી, ન તો તે કૉલિંગ કન્વેન્શનને લાગુ કરે છે અથવા તપાસે છે. સી-આવૃત્તિ 2 બીટ-વેક્ટર અને ફ્લોટિંગ-પોઇન્ટ પ્રકારો વચ્ચેના તફાવતને દૂર કરે છે. આ પ્રકારોને અન્ય વસ્તુઓની સાથે, ચલની પૂર્ણાંક વિરુદ્ધ ફ્લોટ ટાઇપિંગ અને તેની સંગ્રહ વર્તણૂક (વૈશ્વિક અથવા સ્થાનિક) ને અલગ પાડવા માટે શબ્દમાળા "પ્રકારની" ટેગ સાથે ટિપ્પણી કરી શકાય છે. પહેલું એવા લક્ષ્યો પર ઉપયોગી છે કે જે પૂર્ણાંક અને ફ્લોટિંગ-પોઇન્ટ મૂલ્યો માટે અલગ રજિસ્ટર ધરાવે છે. પોઇન્ટર અને મૂળ શબ્દ માટે વિશેષ પ્રકારો રજૂ કરવામાં આવ્યા હતા, જો કે તેઓ લક્ષ્ય-આધારિત લંબાઈ સાથે બીટ-વેક્ટર સાથે મેપ કરવામાં આવે છે. ઉદાહરણ કોડ નીચેનો C-કોડ 1 થી n સુધીના પૂર્ણાંકોના સરવાળા અને ગુણાકારની ગણતરી કરે છે (n એ દલીલ તરીકે પ્રાપ્ત થાય છે). તે બે ભાષાની લાક્ષણિકતાઓ દર્શાવે છેઃ પ્રક્રિયાઓ બહુવિધ પરિણામો આપી શકે છે. "જમ્પ" મુખ્ય શબ્દ સાથે પૂંછડીના પુનરાવર્તનની સ્પષ્ટ વિનંતી કરવામાં આવે છે. / * પૂંછડી પુનરાવર્તન */નિકાસ sp2; sp2 (બિટ્સ32 n) {જમ્પ sp2 _ હેલ્પ (n, 1,1);} sp2 _ હેલ્પ (બિટ્સ32 n, બિટ્સ32 s, બિટ્સ32 p) {જો n = = 1 {વળતર (s, p);} અન્યથા {જમ્પ sp2 _ હેલ્પ (n-1, s + n, p * n);}} અમલીકરણ C-નું સ્પષ્ટીકરણ પૃષ્ઠ C-ના કેટલાક અમલીકરણની યાદી આપે છે. "સૌથી વધુ સક્રિય રીતે વિકસિત" કમ્પાઇલર, ક્વિક સી--, ને 2013 માં છોડી દેવામાં આવ્યું હતું. સિમોન પેટોન જોન્સ, જોઆઓ ડાયસ અને નોર્મન રામસે સહિત સી-ના કેટલાક વિકાસકર્તાઓ જી. એચ. સી. પર કામ કરે છે અથવા કામ કર્યું છે, જેમના વિકાસથી સી-ભાષામાં વિસ્તરણ થયું છે, જે સી. એમ. એમ. બોલી બનાવે છે જે એર્ગોનોમિક્સ માટે સી પ્રીપ્રોસેસરનો ઉપયોગ કરે છે. જી. એચ. સી. બેકએન્ડ એલ. એલ. વી. એમ. આઈ. આર., સ્લો સી, અથવા બિલ્ટ-ઇન નેટિવ બેકએન્ડ દ્વારા સી-ને એક્ઝેક્યુટેબલ કોડમાં વધુ રૂપાંતરિત કરવા માટે જવાબદાર છે. મૂળ હેતુ હોવા છતાં, જી. એચ. સી. તેના ઘણા સામાન્ય ઓપ્ટિમાઇઝેશન સી-- પર કરે છે. અન્ય કમ્પાઇલર આઈ. આર. ની જેમ, સી-પ્રતિનિધિત્વને ડિબગીંગ માટે કાઢી શકાય છે. લક્ષ્ય-વિશિષ્ટ ઓપ્ટિમાઇઝેશન પાછળથી બેકએન્ડ દ્વારા કરવામાં આવે છે. આ પણ જુઓ બી. સી. પી. એલ. એલ. એલ. વી. એમ. સંદર્ભો બાહ્ય કડીઓ જૂની સત્તાવાર વેબસાઇટનો સંગ્રહ (cminusminus.org) ઝડપી સી-કોડ આર્કાઇવ (સંદર્ભ અમલીકરણ) સી પ્રોગ્રામિંગ ભાષા કુટુંબ કમ્પાઇલર્સ