લિનસ બેનેડિક્ટ ટોરવાલ્ડ્સ એક સોફ્ટવેર એન્જિનિયર છે, જે Linux કર્નલના વિકાસની શરૂઆત અને જાળવણી માટે જાણીતા છે.
થોડા અઠવાડિયા પહેલાઅમે અહીં બ્લૉગ પર પ્રસ્તાવ વિશેના સમાચાર શેર કરીએ છીએ જે સધ્ધરતાના સંબંધમાં ઘણા વર્ષો પછી પુનઃજીવિત કરવામાં આવી છે Linux કર્નલમાં C++ કોડ અપનાવવાથી, એક પ્રસ્તાવ જે 2018 માં મજાક તરીકે શરૂ કરવામાં આવ્યો હતો.
La દરખાસ્ત ફરી શરૂ કરવામાં આવી હતી કર્નલ મેઇલિંગ લિસ્ટ પર, પરંતુ ગંભીર રીતે હંસ પીટર એનવિન, મુખ્ય ઇન્ટેલ કર્નલ ડેવલપર અને ડેવલપરે લિનક્સમાં ત્રીજી પ્રોગ્રામિંગ લેંગ્વેજ તરીકે C++નો સમાવેશ કરવાની શક્યતા ઊભી કરી.
ની રજૂઆત સાથે Linux પર રસ્ટ, ઘણા વિકાસકર્તાઓ અને સમુદાયના ભાગને એક મહાન માર્ગ દેખાયો Linux માં આગળ, ઉપરાંત તે પણ અન્ય પ્રોગ્રામિંગ ભાષાઓના અમલીકરણ માટે વિવિધ "વિચારો" ઉભરી આવ્યા છે, C++ ને અમલમાં મૂકવાની દરખાસ્ત ફરી એક વાર કર્નલ ડેવલપર્સ વચ્ચે ચર્ચા શરૂ કરે છે અને લિનસ ટોરવાલ્ડ્સ પણ ફરી એકવાર શક્ય તેટલી નિષ્ક્રિય અને સમજી શકાય તેવી રીતે સમજાવે છે કે શા માટે Linux C++ (કટાક્ષ) માટે તૈયાર નથી.
આપણે યાદ રાખવું જોઈએ કે રસ્ટ એક ક્ષણથી બીજી ક્ષણ સુધી Linux માં સ્વીકારવામાં આવ્યું ન હતું, કારણ કે લિનક્સ પર રસ્ટ પ્રોજેક્ટ (રસ્ટ ફોર લિનક્સ)ને કર્નલની મુખ્ય શાખામાં સમાવિષ્ટ કરવા માટે સ્વીકારવામાં આવે તે પહેલાં લિનસ ટોરવાલ્ડ્સ દ્વારા શ્રેણીબદ્ધ પુનરાવર્તનો કરવામાં આવ્યા હતા અને તે ઉલ્લેખનીય છે કે લિનક્સના પિતા કંઈપણ નરમ ન હતા. પુનરાવર્તનો કરતી વખતે અને સૂચિત ફેરફારો પર ટિપ્પણી કરતી વખતે.
હવે ત્રીજી પ્રોગ્રામિંગ ભાષા તરીકે C++ ની દરખાસ્તના કિસ્સામાં, કથિત કિસ્સામાં, અને હું કહું છું "અલબત્ત", અમલીકરણ સમીક્ષાઓની સમાન શ્રેણીમાંથી પસાર થવું જોઈએ, જો તે રસ્ટ માટે હતું તેના કરતાં પણ વધુ સખત ન હોય. અને આનો ઉલ્લેખ કરવાની હકીકત એ છે કે C++ અને લિનસનો તેમનો ઇતિહાસ નાનો છે, પરંતુ ઘણા વર્ષો જૂનો છે.
ઉલ્લેખ કરવાનું કારણ કે C++ માટેનો કેસ ત્રીજી Linux ભાષા તરીકે a "માનવામાં આવે છે", તે એટલા માટે છે કારણ કે લિનક્સના પિતા, લિનસ ટોરવાલ્ડ્સ, C++ તરફેણમાં જોતા નથી અને કરશે નહીં., કારણ કે દરેક તક પર એક કરતાં વધુ પ્રસંગોએ તેમણે ઉલ્લેખ કર્યો છે કે C++ "એક ભયંકર ભાષા છે."
ઉલ્લેખ દ્વારાકેટલીક ક્ષણો કે જેમાં C++ નો ઉપયોગ ધ્યાનમાં લેવામાં આવ્યો છે Linux પર અને લિનસ ટોરવાલ્ડ્સે માત્ર તેમની અસંમતિ વ્યક્ત કરી છે, પરંતુ C++ પ્રત્યે "ચોક્કસ તિરસ્કાર" જે "તે ફક્ત Linux માટે વિકલ્પ નથી" શા માટે ઉલ્લેખ કરવા માટે આવરી લેવામાં આવે છે. સમીક્ષા દરમિયાન સૌથી તાજેતરનું એક હતું રસ્ટ અમલીકરણ, ત્યારથી Google પોસ્ટ પર ચર્ચા દરમિયાન, C++ ના સમાવેશનો ઉલ્લેખ સૂચન તરીકે કરવામાં આવ્યો હતો:
"અહીંનો ઉકેલ સરળ છે: રસ્ટને બદલે ફક્ત C++ નો ઉપયોગ કરો"
જે માટે લિનસ ટોરવાલ્ડ્સ હસવા સિવાય મદદ કરી શક્યા નહીં અને તેમનો પ્રતિભાવ હતો:
"હા હા હા". «C++ C ની કોઈપણ સમસ્યાનું નિરાકરણ કરતું નથી અને માત્ર વસ્તુઓને વધુ ખરાબ કરે છે, તે ખરેખર કચરાની ભાષા છે.
જે લોકો C પસંદ નથી કરતા, એવી ભાષા માટે જાઓ કે જે ખરેખર તમને કંઈક યોગ્ય ઓફર કરે. જેમ કે મેમરી-સેફ અને "તે" ભાષાઓ સીની કેટલીક મુશ્કેલીઓ ટાળી શકે છે, અથવા ભાષાઓ કે જે આંતરિક GC "કચરો સંગ્રહ" સપોર્ટ ધરાવે છે અને મેમરી મેનેજમેન્ટને સરળ બનાવે છે. "C++ બધી ખોટી સમસ્યાઓનું નિરાકરણ લાવે છે, અને જે કોઈ કહે છે કે 'C++ માં કોર ફરીથી લખો' તે જાણતા પણ નથી."
લીનસ ટોરવાલ્ડ્સે હંમેશા C++ “કચરો” ગણ્યો છે અને તેને “નકામું” ગણાવ્યું છે. સારું, "C++ સી ભાષાની સમસ્યાને હલ કરી શકતું નથી, તે ફક્ત વસ્તુઓને વધુ ખરાબ કરશે." ટોરવાલ્ડ્સ માને છે કે જેમને સી ભાષા પસંદ નથી તેઓ એવી ભાષા શોધી શકે છે જે ખરેખર મૂલ્ય ઉમેરી શકે. ઉદાહરણ તરીકે, ભાષાઓ કે જે મેમરી સુરક્ષિત છે અને C (જેમ કે રસ્ટ) દ્વારા થતા છુપાયેલા જોખમોને ટાળી શકે છે.
C++ ની સરખામણીમાં, લિનુસે ઉલ્લેખ કર્યો છે કે શા માટે સી તેની પ્રમાણભૂત પસંદગી છે:
"જ્યારે લોકો C ના કારણે થતા જોખમો વિશે વાત કરે છે, ત્યારે તેઓ C એટલા શક્તિશાળી હોવાના કારણ વિશે પણ વાત કરે છે: 'તે તમને આ બધી નિમ્ન-સ્તરની સામગ્રીને અસરકારક રીતે અમલમાં મૂકવાની મંજૂરી આપે છે," લિનુસે ઉલ્લેખ કર્યો. ઉપરાંત, જો કે મોટા ભાગના કિસ્સાઓમાં GC પ્રોગ્રામિંગને સરળ બનાવવા માટે સારું છે, તે સામાન્ય રીતે નિમ્ન-સ્તરની સિસ્ટમ પ્રોગ્રામિંગમાં કરી શકાય તેવું નથી.
વાસ્તવમાં, મેઇલિંગ લિસ્ટમાં તેનો ઉલ્લેખ છે અમુક સમયે 1992 માં, Linux પર C++ નો ઉપયોગ કરવાનો પ્રયાસ કરવામાં આવ્યો હતો (લિનક્સના જન્મ પછી એક વર્ષ વધુ કે ઓછું), પરંતુ ટોરવાલ્ડ્સથી આ માત્ર "એક પ્રયાસ" જ રહ્યો આ પ્રયાસ વિશે ઉલ્લેખ કરો:
તે ભયાનક છે. મારા પર વિશ્વાસ કરો: C++ માં કર્નલ કોડ લખવો એ એક મૂર્ખ વિચાર છે.
હકીકત એ છે કે C++ કમ્પાઇલર્સ અવિશ્વસનીય છે. 1992 માં તેઓ વધુ ખરાબ હતા, પરંતુ કેટલાક મૂળભૂત તથ્યો બદલાયા નથી:
- C++ માં સમગ્ર અપવાદ હેન્ડલિંગ વસ્તુ મૂળભૂત રીતે તૂટી ગઈ છે. તે કર્નલ માટે "ખાસ કરીને" તૂટેલી છે.
- કોઈપણ કમ્પાઈલર અથવા ભાષા કે જે તેની પાછળની પાછળ મેમરી ફાળવણી જેવી વસ્તુઓ છુપાવવાનું પસંદ કરે છે તે કર્નલ માટે સારી પસંદગી નથી.
- તમે C માં ઑબ્જેક્ટ-ઓરિએન્ટેડ કોડ લખી શકો છો (ફાઇલ સિસ્ટમ્સ વગેરે માટે ઉપયોગી), "C++ કચરો વિના."
આ અને બીજી ઘણી ટિપ્પણીઓને જોતાં, લિનસ ટોરવાલ્ડ્સ શા માટે C++ ને ભયાનક ભાષા માને છે તે વિશે આપણે થોડું સમજી શકીએ છીએ., દ્વારા ઉપયોગમાં લેવાતી ભાષાની ટીકા કરવા ઉપરાંતનિમ્ન-ગુણવત્તાવાળા પ્રોગ્રામરો, જ્યાં સુધી તે ખૂબ જ સરળ છે અને તેની સાથે સંપૂર્ણ અને સંપૂર્ણ કચરો પેદા કરવો.» અને તે છે એવું લાગે છે કે C++, અમુક સમયે, ટોરવાલ્ડ્સના મોંમાં કડવો સ્વાદ હતો., કારણ કે તમારી ટીકાઓમાં એવું લાગે છે કે હું C++ અજમાવવાનો પ્રયાસ કરી રહ્યો છું, સારું મેં એક ઈમેલમાં તેનો ઉલ્લેખ કર્યો છે:
"C++ ખરેખર ખરાબ ડિઝાઇન પસંદગીઓ તરફ દોરી જાય છે. તમે હંમેશા "સરસ" ભાષા લાઇબ્રેરી સુવિધાઓનો ઉપયોગ કરવાનું શરૂ કરો છો જેમ કે STL અને બૂસ્ટ અને અન્ય સંપૂર્ણ અને સંપૂર્ણ કચરો, જે તમને પ્રોગ્રામ "મદદ" કરી શકે છે, પરંતુ કારણ:
જ્યારે તેઓ કામ ન કરે ત્યારે અનંત માત્રામાં પીડા થાય છે (અને જે કોઈ મને કહે છે કે STL અને ખાસ કરીને બૂસ્ટ સ્થિર છે અને પોર્ટેબલ છે તે એટલું બકવાસ છે કે તે રમુજી પણ નથી)
"અકાર્યક્ષમ અમૂર્ત પ્રોગ્રામિંગ મોડેલો જ્યાં બે વર્ષ પછી તમે નોંધ્યું કે કેટલાક અમૂર્તતા ખૂબ કાર્યક્ષમ ન હતા, પરંતુ હવે તમારો તમામ કોડ તેની આસપાસના તમામ સુંદર ઑબ્જેક્ટ મોડલ્સ પર આધારિત છે, અને તમે તમારી એપ્લિકેશનને ફરીથી લખ્યા વિના તેને ઠીક કરી શકતા નથી."
તેથી, પ્રકાશનના શીર્ષક પર પાછા ફરો અને લિનસ ટોરવાલ્ડ્સને C++ પ્રત્યેના ધિક્કારના આઇસબર્ગની થોડી ટોચ પહેલેથી જ સમજાઈ ગઈ, ત્યારથી વધુ તપાસ કરવાની જરૂર નથી. Torvalds માટે, Linux ને અન્ય કોઈ ભાષાની જરૂર નથી કારણ કે C પૂરતી છે અને આ સમય દરમિયાન C તેના કામને અનુરૂપ ભાષા છે, રહી છે અને રહેશે અને લિનસ તેને ન ગમતી પ્રોગ્રામિંગ ભાષાઓ પર હુમલો કરવાનું ચાલુ રાખશે, ખાસ કરીને C++.
અને તે છે C++ શા માટે ધ્યાનમાં લેવામાં આવતું નથી તે ઘણા કારણો પૈકી એક છે લિનક્સ માટે, તે અપવાદોને મંજૂરી આપે છે, જ્યારે રસ્ટને C પસંદ નથી, ત્યારથી કર્નલ પ્રોગ્રામિંગમાં, તેને મંજૂરી આપી શકાતી નથી એક અજાણ્યો અપવાદ ઓપરેટિંગ સિસ્ટમને અક્ષમ કરી શકે છે, અને તમારે કર્નલ ક્યારેય નિષ્ફળ થવા વિશે વિચારવું પણ જોઈએ નહીં.
Y "માનવામાં આવે છે" માં ટોરવાલ્ડ્સ C++ ને ધ્યાનમાં લે છે લિનક્સ પર, આ લાભ કરતાં વધુ હોઈ શકે છે ત્રીજી અથવા વધુ પ્રોગ્રામિંગ ભાષાઓનો સમાવેશ, સમસ્યા બની જશે, ઉદાહરણ તરીકે ના અમલીકરણ સાથે રસ્ટ હાલમાં કેટલીક સમસ્યાઓ પ્રકાશમાં આવવા લાગી છે, જેમ કે અમે પહેલાથી જ પ્રકાશનમાં ઉલ્લેખ કર્યો છે Linux પર રસ્ટની વર્તમાન સ્થિતિ.
વર્તમાન પડકારો પૈકી અમે લેખમાં ઉલ્લેખ કર્યો છે કે તેમાંથી એક છે «કોડ માટે વધુ સમીક્ષકોની ભરતી કરો જે વિકસાવવામાં આવી રહ્યું છે" ઉપરાંત GCC-આધારિત રસ્ટ કમ્પાઇલરની પ્રગતિ ધીમી પડી છે, પણત્યાં બહુ ઓછી તક છે કે તેઓ રસ્ટમાં કર્નલના મોટા ભાગને ફરીથી લખશે ટૂંકા ગાળાની અને તે પણ ખૂબ ઓછી તકો કે તેઓ તમામ પ્રકારની ભૂલો અને ખાસ કરીને સુસંગતતા સમસ્યાઓ રજૂ કર્યા વિના કરી શકે છે.
જો આ સમસ્યાઓ, જે રસ્ટમાં પ્રતિબિંબિત થાય છે અમે તેમને C++ અથવા અન્ય કોઈપણ ભાષામાં ઉમેરીએ છીએ જે Linux માં ઉમેરી શકાય છે, કર્નલના વિકાસને ખૂબ અસર થશે અને આ સાથે શરૂઆતમાં અમને દર બે મહિને સંસ્કરણ પ્રાપ્ત થશે નહીં, પરંતુ તે લાંબા સંસ્કરણો વચ્ચે વિકાસ થશે, વધુ વિકાસકર્તાઓ, વધુ સમીક્ષકોની જરૂર પડશે અને આ બધું વધુ પ્રયત્નોમાં અનુવાદ કરશે.
કોઈ શંકા વિના, ત્રીજી પ્રોગ્રામિંગ લેંગ્વેજ તરીકે C++ને રજૂ કરવાનો અભિગમ વિચારણાથી દૂર છે અને આપણે પહેલેથી જ ઉલ્લેખ કર્યો છે તેમ, આમાં મુખ્ય અવરોધો પૈકી એક પોતે લિનસ ટોરવાલ્ડ્સ છે.