સી ભાષાનો વિકાસ ક્યારે થયો? §1 ભાષા વિશે સામાન્ય માહિતી

C++ (સી-પ્લસ-પ્લસ વાંચો) એ સંકલિત, સ્ટેટિકલી ટાઇપ કરેલી સામાન્ય-હેતુ પ્રોગ્રામિંગ ભાષા છે જેમાં તમે કોઈપણ સ્તરની જટિલતાના પ્રોગ્રામ્સ બનાવી શકો છો.
20 થી વધુ વર્ષોથી, આ ભાષા ત્રણ સૌથી લોકપ્રિય અને માંગમાં રહેલી પ્રોગ્રામિંગ ભાષાઓમાંની છે. (તમે TIOBE વેબસાઇટની મુલાકાત લઈને આ ચકાસી શકો છો).
ભાષાનો ઉદ્ભવ 1980ના દાયકાની શરૂઆતમાં થયો હતો, જ્યારે બેલ લેબ્સના કર્મચારી બજોર્ન સ્ટ્રોસ્ટ્રપ પોતાની જરૂરિયાતો માટે C ભાષામાં સંખ્યાબંધ સુધારાઓ સાથે આવ્યા હતા.

Bjarne Stroustrup – C++ ભાષાના સર્જક

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



1998માં, પ્રથમ ભાષા ધોરણ, જેને C++98 તરીકે ઓળખવામાં આવે છે, તે માનક સમિતિ દ્વારા પ્રકાશિત કરવામાં આવ્યું હતું. C++ પ્રતિસાદ આપવા માટે વિકાસ કરવાનું ચાલુ રાખે છે આધુનિક જરૂરિયાતો. C++ ભાષા વિકસાવવા અને તેને સુધારવા માટેની દરખાસ્તો C++ સ્ટાન્ડર્ડ કમિટિ સમક્ષ સબમિટ કરનારા જૂથોમાંથી એક છે. બુસ્ટ, જે અન્ય વસ્તુઓની સાથે, તેમાં મેટાપ્રોગ્રામિંગ સુવિધાઓ ઉમેરીને ભાષાની ક્ષમતાઓને સુધારવામાં રોકાયેલ છે. નવીનતમ ધોરણ 2017 માં બહાર પાડવામાં આવ્યું હતું અને તેને કહેવામાં આવે છે C++17. આગલું ધોરણ આવવામાં લાંબું નહીં હોય અને 2020 માં દેખાવાની અપેક્ષા છે.
C++ ભાષાના અધિકારો કોઈની પાસે નથી; તે મફત છે. માર્ચ 2016 માં, રશિયા બનાવવામાં આવ્યું હતું કાર્યકારી જૂથ RG21 C++. C++ સ્ટાન્ડર્ડ માટે દરખાસ્તો એકત્રિત કરવા, તેમને સમિતિ સમક્ષ સબમિટ કરવા અને ઇન્ટરનેશનલ ઓર્ગેનાઇઝેશન ફોર સ્ટાન્ડર્ડાઇઝેશનની સામાન્ય સભાઓમાં તેમનો બચાવ કરવા માટે જૂથનું આયોજન કરવામાં આવ્યું હતું.
C++ એ બહુ-પેરાડાઈમ ભાષા છે (શબ્દ પેરાડાઈમ - લેખન શૈલીમાંથી કમ્પ્યુટર પ્રોગ્રામ્સ), વિશાળ શ્રેણી સહિત વિવિધ શૈલીઓઅને પ્રોગ્રામિંગ ટેકનોલોજી. તે ઘણી વખત ઑબ્જેક્ટ-ઓરિએન્ટેડ ભાષા તરીકે વર્ગીકૃત કરવામાં આવે છે, પરંતુ કડક રીતે કહીએ તો, આ કેસ નથી. કાર્ય પ્રક્રિયા દરમિયાન, વિકાસકર્તાને સાધનો પસંદ કરવામાં સંપૂર્ણ સ્વતંત્રતા પ્રાપ્ત થાય છે જેથી કરીને કોઈ ચોક્કસ અભિગમનો ઉપયોગ કરીને હલ કરવામાં આવેલ સમસ્યા શક્ય તેટલી અસરકારક રીતે ઉકેલી શકાય. બીજા શબ્દોમાં કહીએ તો, C++ પ્રોગ્રામરને પ્રોગ્રામ ડેવલપમેન્ટની માત્ર એક જ શૈલીનું પાલન કરવા દબાણ કરતું નથી (ઉદાહરણ તરીકે, ઑબ્જેક્ટ-ઓરિએન્ટેડ).
C++ પાસે એક સમૃદ્ધ પ્રમાણભૂત લાઇબ્રેરી છે જેમાં સામાન્ય કન્ટેનર અને અલ્ગોરિધમ્સ, I/O, રેગ્યુલર એક્સપ્રેશન્સ, મલ્ટિથ્રેડીંગ સપોર્ટ અને અન્ય સુવિધાઓનો સમાવેશ થાય છે. C++ એ ઘણી પ્રોગ્રામિંગ ભાષાઓને પ્રભાવિત કરી છે, જેમાં નીચેનાનો સમાવેશ થાય છે: Java, C#, D. C++ એ C ભાષાના વાક્યરચના પર આધારિત ભાષાઓના પરિવારની હોવાથી, તમે આ પરિવારની અન્ય પ્રોગ્રામિંગ ભાષાઓને સરળતાથી માસ્ટર કરી શકો છો: JavaScript, PHP , પર્લ, ઑબ્જેક્ટિવ-સી અને અન્ય ઘણા . વગેરે, પિતૃ ભાષા સહિત - સી. ()
તેના અસ્તિત્વ દરમિયાન, C++ ભાષાએ સતત પૌરાણિક કથાઓ પ્રાપ્ત કરી છે જે સરળતાથી નકારી શકાય છે (અહીં જુઓ: ભાગ 1 અને ભાગ 2)

ભાષા અને ધોરણોના પ્રકાશનનો ઇતિહાસ

  • 1983
  • ભાષાના સર્જક - બ્યોર્ન સ્ટ્રોસ્ટ્રપ, બેલ લેબ્સના કર્મચારીએ, C++ ભાષાનું પ્રારંભિક સંસ્કરણ રજૂ કર્યું ("વર્ગો સાથે C")

  • 1985
  • C++ નું પ્રથમ વ્યાપારી પ્રકાશન, ભાષાનો ફાયદો આધુનિક નામ

  • 1986
  • C++ પ્રોગ્રામિંગ લેંગ્વેજની પ્રથમ આવૃત્તિનું વિમોચન - Björn Stroustrup દ્વારા લખાયેલ C++ ને સમર્પિત પુસ્તક

  • 1998
  • C++ ભાષા માટે આંતરરાષ્ટ્રીય ધોરણને બહાલી આપવામાં આવી છે: ISO/IEC 14882:1998 “સ્ટાન્ડર્ડ માટે C++ પ્રોગ્રામિંગ લેંગ્વેજ"

  • 2003
  • 2005
  • લાઇબ્રેરી ટેકનિકલ રિપોર્ટ 1 (TR1) બહાર પાડવામાં આવ્યો. સત્તાવાર રીતે ધોરણનો ભાગ ન હોવા છતાં, અહેવાલમાં પ્રમાણભૂત લાઇબ્રેરીના એક્સ્ટેંશનનું વર્ણન કરવામાં આવ્યું છે જે C++ ભાષાના આગલા સંસ્કરણમાં સમાવિષ્ટ થવું જોઈએ.

  • 2011
  • નવા ધોરણનું પ્રકાશન - C++11 અથવા ISO/IEC 14882:2011; નવું ધોરણભાષા કોરમાં ઉમેરાઓ અને પ્રમાણભૂત પુસ્તકાલયના વિસ્તરણનો સમાવેશ થાય છે, જેમાં મોટાભાગના TR1નો સમાવેશ થાય છે

  • 2014
  • C++ 14 સ્ટાન્ડર્ડ ("ઇન્ટરનેશનલ સ્ટાન્ડર્ડ ISO/IEC 14882:2014(E) પ્રોગ્રામિંગ લેંગ્વેજ C++")નું પ્રકાશન; C++14ને C++11 પર નાના એક્સટેન્શન તરીકે જોઈ શકાય છે, જેમાં મોટાભાગે બગ ફિક્સ અને નાના સુધારાઓ છે

  • 2017
  • નવા ધોરણનું પ્રકાશન - C++1z (C++17). આ ધોરણે ઘણા ફેરફારો અને ઉમેરાઓ રજૂ કર્યા. ઉદાહરણ તરીકે, STD માં C11 ધોરણની પુસ્તકાલયોનો સમાવેશ થાય છે, ફાઇલ સિસ્ટમ, boost::filesystem પર આધારિત, સૌથી વધુપ્રાયોગિક પુસ્તકાલય TS I.

C++ ફિલોસોફી

તેમના પુસ્તક ધ ડિઝાઈન એન્ડ ઈવોલ્યુશન ઓફ C++ (2007) માં, બજોર્ન સ્ટ્રોસ્ટ્રપ C++ (સંક્ષિપ્ત) ની રચના કરતી વખતે તેમણે અનુસરેલા સિદ્ધાંતોનું વર્ણન કરે છે:

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

C અને C++

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

# સમાવેશ થાય છે int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); પરત કરો 0; )

આ એ હકીકતને કારણે છે કે C માં અક્ષર સ્થિરાંકો int , અને C++ માં છે - ચાર લખો, પરંતુ આ પ્રકારના કદ અલગ અલગ હોય છે.

એપ્લિકેશન લાઇફસાઇકલ મોડલ્સ

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

  1. જરૂરિયાતોની રચના;
  2. ડિઝાઇન;
  3. અમલીકરણ;
  4. પરીક્ષણ;
  5. અમલીકરણ;
  6. સંચાલન અને જાળવણી.

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

રશિયામાં એપ્લિકેશન જીવન ચક્રનું માનકીકરણ

રાજ્ય ધોરણ એ એપ્લિકેશનના જીવન ચક્રનું વિગતવાર વર્ણન કરે છે GOST R ISO/IEC 12207-2010 " માહિતી ટેકનોલોજી. સિસ્ટમ અને સોફ્ટવેર એન્જિનિયરિંગ. સોફ્ટવેર જીવન ચક્ર પ્રક્રિયાઓ". આ ધોરણ સ્વીકારવામાં આવે છે ફેડરલ એજન્સીરશિયન ફેડરેશનના તકનીકી નિયમન અને મેટ્રોલોજી પર અને આંતરરાષ્ટ્રીય ધોરણ ISO/IEC 12207:2008 જેવું જ છે. આ ધોરણ સ્થાપિત કરે છે સામાન્ય માળખુંસોફ્ટવેર જીવન ચક્રની પ્રક્રિયાઓ, જે સોફ્ટવેર ઉદ્યોગમાં માર્ગદર્શન આપી શકે છે. સ્ટાન્ડર્ડ કોઈ ચોક્કસ જીવન ચક્ર મોડેલનો પ્રસ્તાવ મૂકતું નથી. તેની જોગવાઈઓ કોઈપણ જીવન ચક્ર મોડેલો, પદ્ધતિઓ અને સોફ્ટવેર બનાવવા માટેની તકનીકો માટે સામાન્ય છે. તે તે પ્રક્રિયાઓમાં સમાવિષ્ટ પ્રવૃત્તિઓ અને કાર્યોને કેવી રીતે અમલમાં મૂકવા અથવા પૂર્ણ કરવા તે સ્પષ્ટ કર્યા વિના જીવન ચક્ર પ્રક્રિયાઓની રચનાનું વર્ણન કરે છે.

વિકાસ પ્રક્રિયા - તર્કસંગત એકીકૃત પ્રક્રિયા (RUP)

પુનરાવર્તિત અભિગમના વિવિધ પ્રકારો મોટાભાગની આધુનિક વિકાસ પદ્ધતિઓમાં લાગુ કરવામાં આવે છે:

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

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

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

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

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


Bjarne Stroustrup સાથે વાતચીત


Embarcadero C++ બિલ્ડરનો ઉપયોગ કરતા વિકાસકર્તાઓ માટે ઑનલાઇન કોન્ફરન્સ. C++ ભાષાના સુપ્રસિદ્ધ સર્જક, Bjarne Stroustrup સાથેની વાતચીત ડેવિડ ઈન્ટરસિમોને, એમ્બારકેડેરોના ડેવલપર રિલેશનશિપના વાઇસ પ્રેસિડેન્ટ દ્વારા હાથ ધરવામાં આવી હતી. (ડબ કરેલ અનુવાદ).

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

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

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

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

વ્યાપક સી ભાષાપર વિવિધ પ્રકારોકમ્પ્યુટર્સ (કેટલીકવાર હાર્ડવેર પ્લેટફોર્મ તરીકે ઓળખાય છે) કમનસીબે ભાષાની ઘણી વિવિધતાઓ તરફ દોરી જાય છે. તેઓ સમાન હતા, પરંતુ એકબીજા સાથે અસંગત હતા. સોફ્ટવેર ડેવલપર્સ માટે આ એક મોટી સમસ્યા હતી જેમને સુસંગત પ્રોગ્રામ્સ લખવાની જરૂર હતી જે બહુવિધ પ્લેટફોર્મ પર ચાલી શકે. તે સ્પષ્ટ થઈ ગયું કે તે જરૂરી હતું પ્રમાણભૂત સંસ્કરણ સી. 1983 માં ANSI (અમેરિકન નેશનલ સ્ટાન્ડર્ડ્સ કમિટી) એ ભાષાનું ધોરણ બનાવવા માટે ટેકનિકલ સમિતિ X3J11ની રચના કરી સી("ભાષાની અસ્પષ્ટ અને મશીન-સ્વતંત્ર વ્યાખ્યા પ્રદાન કરવા"). 1989 માં ધોરણને મંજૂરી આપવામાં આવી હતી. ANSI એ ISO સાથે સહયોગ કર્યો છે ( આંતરરાષ્ટ્રીય સંસ્થાધોરણો) પ્રમાણભૂત કરવા સીઆંતરરાષ્ટ્રીય સ્તરે; સંયુક્ત ધોરણ 1990 માં પ્રકાશિત થયું હતું અને તેનું નામ ANSI/ISO 9899:1990 હતું. આ ધોરણ હજુ પણ સુધારવામાં આવી રહ્યું છે અને મોટાભાગની કમ્પાઈલર ડેવલપમેન્ટ કંપનીઓ દ્વારા સપોર્ટેડ છે.

Bjarne Stroustrupછોડેલી ઑબ્જેક્ટ-ઓરિએન્ટેડ સંભવિત સાથેવર્ગ ક્ષમતાઓ સ્થાનાંતરિત કરીને સિમુલા 67વી સાથે. શરૂઆતમાં નવી ભાષા"વર્ગો સાથે" નામ આપ્યું અને તે પછી જ કહેવાનું શરૂ થયું C++. ભાષા C++બેલ લેબ્સમાં વિકસિત થયા પછી લોકપ્રિયતા હાંસલ કરી, તે પછીથી અન્ય ઉદ્યોગો અને કોર્પોરેશનોમાં સ્થાનાંતરિત થઈ. આજે તે સૌથી વધુ પૈકી એક છે લોકપ્રિય ભાષાઓવિશ્વમાં પ્રોગ્રામિંગ. C++સારા અને બંને વારસામાં મળે છે ખરાબ બાજુઓ સાથે.

Bjarne Stroustrup: "હું C++ સાથે આવ્યો, તેની પ્રારંભિક વ્યાખ્યા લખી, અને તેનું પ્રથમ અમલીકરણ પૂર્ણ કર્યું. મેં ડિઝાઇન માપદંડ પસંદ કર્યા અને ઘડ્યા C++, તેની મુખ્ય લાક્ષણિકતાઓ વિકસાવી હતી અને માનકીકરણ સમિતિમાં ભાષાના વિસ્તરણ માટેની દરખાસ્તોના ભાવિ માટે જવાબદાર હતી. C++", સૌથી લોકપ્રિય પ્રોગ્રામિંગ ભાષાના લેખક લખે છે. -" C++ ભાષાભાષા માટે ઘણું ઋણી છે સી, અને ભાષા સીસબસેટ રહે છે C++ ભાષા(પરંતુ C++ એ C પ્રકારની સિસ્ટમમાં ઘણી ગંભીર ખામીઓ સુધારી છે). મેં ભંડોળ પણ બચાવ્યું સી, જે સૌથી જટિલ સિસ્ટમ કાર્યોને હેન્ડલ કરવા માટે પૂરતા નીચા સ્તરના છે. સી ભાષા, બદલામાં, તેના પુરોગામી, BCPL માટે ઘણું લેણું છે; માર્ગ દ્વારા, ટિપ્પણી શૈલી // BCPL તરફથી C++ માં લેવામાં આવી હતી. પ્રેરણાનો અન્ય મુખ્ય સ્ત્રોત સિમુલા67 ભાષા હતી. વર્ગોનો ખ્યાલ (ઉત્પન્ન વર્ગો અને વર્ચ્યુઅલ કાર્યો સાથે) તેમાંથી ઉધાર લેવામાં આવ્યો હતો. ઑપરેટર ઓવરલોડિંગ માટેની સુવિધા અને સૂચના લખી શકાય ત્યાં ઘોષણાઓ મૂકવાની ક્ષમતા એલ્ગોલ68ની યાદ અપાવે છે. "

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

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

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

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

C++ પ્રોગ્રામિંગ ભાષાહાલમાં વ્યાપારી ઉત્પાદનો વિકસાવવા માટે વપરાતી પ્રબળ ભાષા માનવામાં આવે છે, 90% રમતો તેમાં લખવામાં આવે છે C++ડાયરેક્ટએક્સનો ઉપયોગ કરીને.

સાહિત્ય:
H.M.Deitel, P.J.Deitel "How to Program in C++"
Bjarne Stroustrup "ધ C++ પ્રોગ્રામિંગ લેંગ્વેજ. 3જી આવૃત્તિ."
સિમોન રોબિન્સન, ઓલી કોર્નેસ, જય ગ્લિન અને અન્ય "વ્યાવસાયિકો માટે"
જેસ લિબર્ટી "21 દિવસમાં તમારી જાતને C++ શીખવો"
સ્ટેનિસ્લાવ ગોર્નાકોવ "DirectX, C++ માં પ્રોગ્રામિંગ પાઠ"

સી ભાષાની આ સ્થિતિનું કારણ શું છે? ઐતિહાસિક રીતે, આ ભાષા યુનિક્સ ઓપરેટિંગ સિસ્ટમથી અવિભાજ્ય છે, જે હવે તેના પુનર્જન્મનો અનુભવ કરી રહી છે. 60 ના દાયકા ઓપરેટિંગ સિસ્ટમ્સ અને ઉચ્ચ-સ્તરની પ્રોગ્રામિંગ ભાષાઓની રચનાનો યુગ હતો. તે સમયે, દરેક પ્રકારના કમ્પ્યુટર માટે OS અને કમ્પાઇલર્સ સ્વતંત્ર રીતે વિકસાવવામાં આવ્યા હતા, અને ઘણીવાર તેમની પોતાની પ્રોગ્રામિંગ ભાષાઓ પણ (યાદ રાખો, ઉદાહરણ તરીકે, PL/I). તે જ સમયે, આ કિસ્સામાં ઊભી થતી સમસ્યાઓની સમાનતા પહેલાથી જ સ્પષ્ટ થઈ ગઈ છે. આ સમાનતાની જાગૃતિનો પ્રતિસાદ એ એક સાર્વત્રિક મોબાઇલ ઓપરેટિંગ સિસ્ટમ બનાવવાનો પ્રયાસ હતો, અને આ માટે તે સમાન સાર્વત્રિક હોવું જરૂરી હતું અને મોબાઇલ ભાષાપ્રોગ્રામિંગ C આવી ભાષા બની, અને યુનિક્સ લગભગ સંપૂર્ણ રીતે ઉચ્ચ-સ્તરની ભાષામાં લખાયેલું પ્રથમ OS બન્યું.

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

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

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

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

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

બધી ભાષાઓની જેમ, સીમાં ધીમે ધીમે સુધારો કરવામાં આવ્યો છે, પરંતુ મોટા ભાગના સુધારાઓ આમૂલ નથી. આમાંથી સૌથી નોંધપાત્ર, કદાચ, ફંક્શન પ્રકારોના કડક સ્પષ્ટીકરણની રજૂઆતને ધ્યાનમાં લેવું જોઈએ, જેણે C માં આંતર-મોડ્યુલ સંચારની વિશ્વસનીયતામાં નોંધપાત્ર વધારો કર્યો છે. આવા તમામ સુધારાઓ 1989 માં ANSI ધોરણમાં સમાવિષ્ટ કરવામાં આવ્યા હતા, જે હજુ પણ વ્યાખ્યાયિત કરે છે. સી ભાષા.

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

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

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

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

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

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

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

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

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

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

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

આધુનિક પ્રોગ્રામિંગમાં C/C++ ભાષાઓની વિશેષ ભૂમિકા ઇન્ટરનેટ પર ચોક્કસ સરનામાં પ્રદાન કરવા માટે વ્યવહારીક અર્થહીન બનાવે છે જ્યાં તમે તેના પર સામગ્રી શોધી શકો છો. આના જેવી ઘણી બધી જગ્યાઓ છે. જો કે, જો તમને C++ ના ઉત્ક્રાંતિ વિશે વધુ જાણવામાં રસ હોય, તો પછી આ ટૂંકા લેખથી શરૂઆત કરો http://citforum.syzran.ru/programming/prg96/76.shtml.

એલેક્ઝાન્ડર સર્ગીવ, [ઇમેઇલ સુરક્ષિત]
BYTE/રશિયા મેગેઝિનનો લેખ, માર્ચ 2000

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

લિસ્ટિંગ 1. સી

1 # સમાવેશ થાય છે /* કનેક્ટ I/O ફંક્શન્સ */ 2 3 void main(void) 4 ( 5 int M; /* 10 પૂર્ણાંકોનો એરે, 0 */ 6 int N થી ગણાય છે; 7 માટે (N=0; N<10; ++N) /* Вводим не более 10 чисел */ 8 if (EOF == scanf ("%d, M+N)) 9 break; /* Если конец файла, прерываем цикл */ 10 11 for (-N; N>=0; --N) /* અમે રિવર્સ */ 12 જો (M[N]%2) /* ક્રમમાં એરેમાંથી પસાર થઈએ છીએ અને વિચિત્ર રાશિઓ */ 13 printf("%d\n", M[N]) પ્રિન્ટ કરીએ છીએ. ; 14)

  • રેખા 3. C/C++ માં, પ્રોગ્રામ એક્ઝેક્યુશન હંમેશા મુખ્ય કાર્યથી શરૂ થાય છે.
  • લાઇન 7 અને 11.લૂપ હેડરમાં, પ્રારંભિક સેટિંગ, ચાલુ રાખવાની સ્થિતિ અને લૂપ પેરામીટરની પુનઃગણતરી માટેનો નિયમ અર્ધવિરામ દ્વારા અલગ કરીને સૂચવવામાં આવે છે. કામગીરી ++ અને -/- - C ભાષાના સૌથી પ્રસિદ્ધ સંક્ષિપ્ત શબ્દો, જેનો અર્થ ચલનો વધારો અને ઘટાડો થાય છે, એટલે કે, તેના મૂલ્યમાં એક વડે વધારો અને ઘટાડો.
  • લીટી 8.કાર્ય scanfદાખલ કરે છે, પ્રથમ પરિમાણ દ્વારા ઉલ્લેખિત ફોર્મેટ અનુસાર, ચલોના મૂલ્યો કે જેના સરનામાં બાકીના પરિમાણો દ્વારા નિર્દિષ્ટ છે. અહીં સરનામું જ્યાં મૂલ્ય દાખલ કરવામાં આવ્યું છે તે એરે સ્થાનના સરનામા માટે સરનામા અંકગણિતનો ઉપયોગ કરીને ગણવામાં આવે છે. એમઓફસેટ દ્વારા ઉમેરવામાં આવે છે એનતત્વો લેખન દ્વારા સમાન અસર પ્રાપ્ત કરી શકાય છે &M[N].
  • લાઇન 12.ઓપરેશન % વિભાજનની બાકીની ગણતરી કરે છે. ઓપરેટરની સ્થિતિ જોજો અભિવ્યક્તિનું સંખ્યાત્મક મૂલ્ય શૂન્યથી અલગ હોય તો તેને એક્ઝિક્યુટેડ ગણવામાં આવે છે.
  • લાઇન 13.કાર્ય printf- ફોર્મેટ દ્વારા પ્રિન્ટીંગ એ જ રીતે કામ કરે છે scanf, પરંતુ સરનામાંને બદલે તે આઉટપુટ થવા માટે મૂલ્યો પસાર કરે છે.
1 # સમાવેશ થાય છે 2 3 નમૂનો વર્ગ એરે 4 ( 5 સાર્વજનિક: એરે (T કદ=1) : M (નવું T), N(કદ), n(0) () 6 એરે (રદબાતલ) (એમ કાઢી નાખો;) 7 T કાઉન્ટ (રદબાતલ) કોન્સ્ટ ( રીટર્ન n;) 8 ટી ઓપરેટર ( રીટર્ન M 13); 14 15 નમૂનો રદબાતલ એરે ::Add(T ડેટા) 16 ( જો (N-n) // જો તમામ ફાળવેલ 17 વપરાયેલ હોય ( int* P = new T; // space, વધુ 18 વિતરિત કરો (int i=0; i) માટે એ; // ચલ કદના પૂર્ણાંક 28 જ્યારે (1) // અનંત લૂપ 29 ( int N; 30 cin >> N; // cin - પ્રમાણભૂત ઇનપુટ સ્ટ્રીમ 31 જો (cin.eof()) બ્રેક; // લૂપમાંથી બહાર નીકળો ફાઇલ 32 A.Add(N); // (int N=A.Count()-1; N>=0; --N) માટે // એરે 33 ) માં દાખલ કરેલ નંબર ઉમેરો એરે 35 જો ( A[N]%2) 36 cout<, અને મેમરી ખાલી કરો
  • રેખાઓ 3-13.નમૂનો વર્ગ જાહેર કરવામાં આવે છે અરેપરિમાણ સાથે ટી. તે પ્રકારની વસ્તુઓની ચલ-કદની એરે છે ટી. અલબત્ત, અમારા કાર્યમાં નમૂના વર્ગનો ઉપયોગ કરવાની જરૂર નથી. જો કે, અમે દર્શાવવા માગીએ છીએ કે કેવી રીતે C++ પોલીમોર્ફિક ડેટા સ્ટ્રક્ચર બનાવી શકે છે જે કોઈપણ પ્રકારના તત્વ સાથે કામ કરી શકે છે.
  • પંક્તિ 5.વર્ગ કન્સ્ટ્રક્ટર. તે ઑબ્જેક્ટની રજૂઆતને પ્રારંભ કરે છે. ઉદાહરણ તરીકે, ક્ષેત્રમાં એમઓપરેશન દ્વારા ઓર્ડર કરેલ મેમરી બ્લોકનું સરનામું દાખલ કરવામાં આવ્યું છે નવી ટી.
  • લીટી 8.ઑપરેશન ઓવરલોડિંગનું ઉદાહરણ. કાર્ય ઓપરેટરજ્યારે વર્ગ ઑબ્જેક્ટની જમણી બાજુએ ચોરસ કૌંસ દેખાય ત્યારે કહેવામાં આવશે અરે.
  • પંક્તિ 9.આ કાર્ય અમલીકરણમાં મુખ્ય છે. તે એરેમાં તત્વો ઉમેરે છે, તેને જરૂરિયાત મુજબ વિસ્તૃત કરે છે. કારણ કે તે અન્ય કરતા વધુ જટિલ છે, તેની વ્યાખ્યા વર્ગના વર્ણનમાંથી લેવામાં આવી છે. વર્ગના મુખ્ય ભાગમાં વર્ણવેલ કાર્યો C++ માં કૉલ કરીને નહીં, પરંતુ ઇનલાઇન અવેજી દ્વારા લાગુ કરવામાં આવે છે. આ પ્રોગ્રામને ઝડપી બનાવે છે, જો કે તે તેનું કદ વધારે છે.
  • રેખાઓ 15-24.કાર્ય વ્યાખ્યા અરે::Add(T)(તે તેણીનું આખું નામ છે, માર્ગ દ્વારા).
  • રેખા 27.પ્રકારનું ઑબ્જેક્ટ બનાવો અરે. ઢાંચો અગગળપ્રકાર દ્વારા પરિમાણિત int.

શા માટે C++

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

C# એ નેટવર્કિંગ પ્લેટફોર્મ માટે માઇક્રોસોફ્ટ દ્વારા વિકસિત નવી ભાષા છે. અનિવાર્યપણે, C# એ C++ ની વિવિધતા છે, અને સંખ્યાબંધ મૂળભૂત તફાવતો હોવા છતાં, C# અને C++ ભાષાઓ લગભગ 90% સમાન છે. C# C++ સાથે ગંભીરતાથી સ્પર્ધા કરે એમાં કદાચ લાંબો સમય લાગશે; પરંતુ જો આવું થાય તો પણ, C++ ભાષાનું જ્ઞાન નોંધપાત્ર ફાયદો થશે.

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

C++ ભાષાનો ઉદભવ અને ઉત્ક્રાંતિ

Bjarne Stroustrup C++ ભાષાના વિકાસકર્તા અને પ્રથમ અનુવાદકના સર્જક છે. તે મુરે હિલ (ન્યુ જર્સી, યુએસએ) માં AT&T બેલ લેબોરેટરીઝ રિસર્ચ કોમ્પ્યુટિંગ સેન્ટરના કર્મચારી છે. તેણે યુનિવર્સિટી ઓફ એરુસ (ડેનમાર્ક)માંથી ગણિત અને કોમ્પ્યુટર સાયન્સમાં માસ્ટર ડીગ્રી અને યુનિવર્સિટી ઓફ કેમ્બ્રિજ (ઈંગ્લેન્ડ)માંથી કોમ્પ્યુટર સાયન્સમાં ડોક્ટરેટની પદવી પ્રાપ્ત કરી. તે ડિસ્ટ્રિબ્યુટેડ સિસ્ટમ્સ, ઓપરેટિંગ સિસ્ટમ્સ, મોડેલિંગ અને પ્રોગ્રામિંગમાં નિષ્ણાત છે. એમ.એ. એલિસની સાથે, તેઓ C++ ભાષાના નિર્ણાયક માર્ગદર્શિકા, ધ એનોટેટેડ C++ મેન્યુઅલના લેખક છે.

અલબત્ત, C++ એ C ભાષાને ઘણું લેવું પડે છે, જે તેના સબસેટ તરીકે રહે છે. સિસ્ટમ પ્રોગ્રામિંગની સૌથી અઘરી સમસ્યાઓને ઉકેલવા માટે રચાયેલ તમામ નીચા-સ્તરના C ટૂલ્સ પણ સાચવવામાં આવ્યા છે. C, બદલામાં, તેના પુરોગામી, BCPL ભાષાને ઘણું દેવું છે. BCPL ભાષા કોમેન્ટરી C++ માં પુનઃસ્થાપિત કરવામાં આવી છે. પ્રેરણાનો બીજો સ્ત્રોત SIMULA-67 ભાષા હતી; તેમાંથી જ વર્ગોનો ખ્યાલ (ઉત્પન્ન વર્ગો અને વર્ચ્યુઅલ કાર્યો સાથે) ઉધાર લેવામાં આવ્યો હતો. ઓપરેટરોને ઓવરલોડ કરવાની C++ ક્ષમતા અને જ્યાં પણ ઓપરેટર આવી શકે ત્યાં ઘોષણાઓ મૂકવાની સ્વતંત્રતા ALGOL-68 ભાષાની યાદ અપાવે છે.

ભાષાની અગાઉની આવૃત્તિઓ, જેને "ક્લાસ સાથે સી" કહેવામાં આવે છે, તેનો ઉપયોગ 1980 થી શરૂ થતો હતો. આ ભાષા ઉભી થઈ કારણ કે લેખકને વિક્ષેપ-સંચાલિત સિમ્યુલેશન પ્રોગ્રામ્સ લખવાની જરૂર હતી. SIMULA-67 ભાષા આ માટે આદર્શ છે, કાર્યક્ષમતાને બાજુ પર રાખો. વર્ગો સાથેની સી ભાષાનો ઉપયોગ મોટી મોડેલિંગ સમસ્યાઓ માટે કરવામાં આવ્યો હતો. તે સમયે, તેના પર પ્રોગ્રામ્સ લખવાની શક્યતાઓ કે જેના માટે સમય અને મેમરી સંસાધનો નિર્ણાયક હતા, સખત પરીક્ષણને આધિન હતા. આ ભાષામાં ઓપરેટર ઓવરલોડિંગ, સંદર્ભો, વર્ચ્યુઅલ ફંક્શન્સ અને અન્ય ઘણી સુવિધાઓનો અભાવ હતો. C++ સૌપ્રથમ જુલાઈ 1983માં લેખકના સંશોધન જૂથની બહાર બહાર પાડવામાં આવ્યું હતું, પરંતુ C++ની ઘણી વિશેષતાઓ હજુ સુધી વિકસિત થઈ ન હતી.

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

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

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

1985 અને 1991 ની વચ્ચે રજૂ કરાયેલા અન્ય એક્સટેન્શન (જેમ કે બહુવિધ વારસા, સ્થિર સભ્ય કાર્યો અને શુદ્ધ વર્ચ્યુઅલ કાર્યો) અન્ય ભાષાઓને બદલે C++ પ્રોગ્રામિંગ અનુભવના સામાન્યીકરણથી ઉદ્ભવ્યા છે.

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

1987 ની આસપાસ, તે સ્પષ્ટ થઈ ગયું કે C++ માનકીકરણ કાર્ય નજીક છે અને તેના પર કામ તરત જ શરૂ થવું જોઈએ.

આ કાર્યમાં AT&T બેલ લેબોરેટરીઝનો મોટો ફાળો હતો. લગભગ 20 સંસ્થાઓના લગભગ 100 પ્રતિનિધિઓએ સંદર્ભ મેન્યુઅલનું આધુનિક સંસ્કરણ અને ANSI માનકીકરણ માટે સ્ત્રોત સામગ્રીની સમીક્ષા કરી અને ટિપ્પણી કરી. C++. અંતે, હેવલેટ-પેકાર્ડની પહેલ પર, ડિસેમ્બર 1989માં ANSI ની અંદર X3J16 સમિતિની રચના કરવામાં આવી. એવી અપેક્ષા રાખવામાં આવે છે કે ANSI (અમેરિકન સ્ટાન્ડર્ડ) C++ સ્ટાન્ડર્ડાઇઝેશન વર્ક ISO (ઇન્ટરનેશનલ ઓર્ગેનાઇઝેશન ફોર સ્ટાન્ડર્ડાઇઝેશન) સ્ટાન્ડર્ડાઇઝેશન કાર્યનો અભિન્ન ભાગ બની જશે.

કેટલાક મૂળભૂત વર્ગોના વિકાસની સાથે સાથે C++ નો વિકાસ થયો.

તમને રસ હોય તેવા C પાઠ પસંદ કરો:

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

C માટે કમ્પાઈલર વિકસાવતા પ્રોગ્રામરોએ ભાષાનું આધુનિકીકરણ અને વિકાસ કરવાનું શરૂ કર્યું. મૂંઝવણ ટાળવા માટે, અમેરિકન નેશનલ સ્ટાન્ડર્ડ ઇન્સ્ટિટ્યૂટે 1983માં ANSI ભાષાનું ધોરણ વિકસાવ્યું. ANSI-C આજની તારીખે C ભાષાના ફેરફારો અને વિકાસ માટે નિયમો નક્કી કરે છે.

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

  • ઝડપ

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

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

  • પોર્ટેબિલિટી

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

C કીવર્ડના પ્રમાણભૂત સેટનો ઉપયોગ કરે છે. તે. પ્રોગ્રામ કોઈપણ પ્લેટફોર્મ, કોઈપણ ઓપરેટિંગ સિસ્ટમ સાથેના કોઈપણ કમ્પ્યુટર માટે એકવાર લખવામાં આવે છે. પરંતુ ભાષા માટે બે પ્રકારના કમ્પાઇલર્સ છે: એક IBM માટે, બીજું Apple માટે. પરંતુ પ્રોગ્રામ ટેક્સ્ટ પોતે એકવાર અને બધા માટે બનાવવામાં આવે છે.

  • સ્ટ્રક્ચરિંગ

સી ભાષામાં લખાયેલા પ્રોગ્રામની પોતાની રચના અને નિયમો હોય છે, જે પ્રોગ્રામરને તાર્કિક રીતે વિચારવા માટે પ્રોત્સાહિત કરે છે.
પ્રોગ્રામને સ્ટ્રક્ચર કરવાની જરૂરિયાત માત્ર "પ્લસ" છે, કારણ કે તે આનો આભાર છે કે C પ્રોગ્રામ ડિઝાઇન, જાળવણી અને ડીબગ કરવા માટે ખૂબ જ સરળ છે.

  • કાર્ય પુસ્તકાલયો

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

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



શું તમને લેખ ગમ્યો? તમારા મિત્રો સાથે શેર કરો!