C ++ ට වඩා C ++ සහ C ++ C ට වඩා භාවිතා කරන්නේ කවදාද?


164

මම දැන් වසරකට වැඩි කාලයක් පරිගණක විද්‍යාවට හඳුන්වා දී ඇති අතර, මගේ අත්දැකීම් අනුව සී සහ සී ++ යන දෙකම "අල්ට්‍රාෆාස්ට්" භාෂාවන් ලෙස සලකනු ලබන අතර, පයිතන් සහ වෙනත් ස්ක්‍රිප්ටින් භාෂාවන් සාමාන්‍යයෙන් තරමක් මන්දගාමී යැයි සැලකේ .

නමුත් මෘදුකාංග ව්‍යාපෘතියක් හෝ කුඩා එකක් පවා ලිපිගොනු අතරට එක්වන සංඛ්‍යාවක් එම ලිපිගොනු C හි ලියා ඇති අතර එම ලිපිගොනු වල නිශ්චිත සංඛ්‍යාවක් C ++ හි ලියා ඇති අවස්ථා ද මම දැක ඇත්තෙමි.

(C ++ ලිපිගොනු සෑම විටම පාහේ අනුරූප ශීර්ෂයන් ඇති බවත්, C ගොනු එතරම් නොමැති බවත් මම දුටුවෙමි). නමුත් මගේ ප්‍රධාන විමසුම වන්නේ C ++ ට වඩා C භාවිතා කිරීම සුදුසු විට සහ C ට වඩා C ++ භාවිතා කිරීම වඩා හොඳ විට සාමාන්‍ය බුද්ධියක් ලබා ගැනීමයි. (1) C ++ වස්තු-නැඹුරු වන කරුණු හැරුණු විට C එසේ නොවේ, සහ (2) වාක්‍ය ඛණ්ඩ ඉතා සමාන වන අතර, C ++ හිතාමතාම නිර්මාණය කර ඇත්තේ බොහෝ ආකාරවලින් C ට සමාන වන පරිදි ය, ඒවායේ වෙනස්කම් මොනවාදැයි මට විශ්වාස නැත. බොහෝ වසම්වල ඒවා (පාහේ) පරිපූර්ණ ලෙස හුවමාරු කළ හැකි බව මට පෙනේ.

එබැවින් යමෙකුට තත්වය නිරවුල් කර ගත හැකි නම් එය අගය කරනු ඇත! ස්තූතියි


4
සී ++ කේතයේ සී පේළිය භාවිතා කිරීම සාමාන්‍යයෙන් ඉහළ මොඩියුලයන් සඳහා වන අතර, දෘඩාංග වලට සමීපව ඉතා පහත් මට්ටමේ වැඩ කිරීම හෝ දත්තවල අඛණ්ඩතාව හෝ මානව ආරක්ෂාව සඳහා තීරණාත්මක වන අතර විගණනය කළ හැකි සහ නිවැරදි බව ඔප්පු කළ යුතුය. මේ සියල්ලම සී වලින් කරනවා වෙනුවට, ව්‍යාපෘතියේ වැඩි කොටසකට නම්යශීලී මෝස්තර සඳහා සී ++ විශේෂාංග වලින් ප්‍රයෝජන ගත හැකි අතර, අවශ්‍ය ස්ථානවල සී හි තදබදයේ ප්‍රතිලාභ ලබා ගත හැකිය.
kylben

30
@kylben: බොහෝ C ++ යාලුවෝ ඔබට කියනු ඇත: (1) කාර්ය සාධනය C වෙත වැටීමට හේතුවක් නොවේ (සමහර විට වළක්වා ගැනීමට virtualසහ ප්‍රශස්තිකරණය වළක්වන තවත් විශේෂාංග කිහිපයක්, නමුත් උදා: virtualපන්ති නොවන අය සහජයෙන්ම අකාර්යක්ෂම නොවන අතර සැකිලි a සැබවින්ම වඩා කාර්යක්ෂම වීමට හේතු විය හැකි ප්‍රබල වියුක්ත මෙවලම - උදා. qsortඑදිරිව std::sort). (2) නිවැරදි බව මහ වැදගත්කම C ++ (typesafety, භාවිතා කිරීමට හේතුවක් වේ constකුත්තේරු, privateඒ ගැන කතා කිරීම, භාවිතා කිරීම අද හෝ ප්රථම ස්ථානය දෙයක් සී නැත්නම් කට, සම්පත් කළමනාකරණ කළමනාකරණය කිරීමට RAII, ආදිය).

11
@ පබ්බි 8 මම මේකට එකඟ නැහැ. මම .c ගොනුවක වැඩ කරන්නේ නම් සහ මිනිසුන් මෙය කරන බව මට පෙනේ නම්, ඔවුන් කරන්නේ කුමක්දැයි නොදැන මම ඔවුන්ව මානසිකව සලකුණු කිරීමට නැඹුරු වෙමි. නිදසුනක් ලෙස, void*සී කේතයේ වෙනත් දර්ශක වර්ගයකට දැමීමේ අවශ්‍යතාවයක් නොමැත , එය සී නොදන්නා අයගේ අවධානය වෙනතකට යොමු කිරීම හා සාමාන්‍යය වේ.
asveikau

4
@kylben: (ඔබේ අදහස් දැක්වීමේ පිළිතුරු වල අන් අයව නිසි ලෙස ආමන්ත්‍රණය කිරීමට ඔබට ඉගෙන ගැනීමට අවශ්‍ය විය හැකිය, එබැවින් ඔවුන්ට ඒවා සැබවින්ම දැකීමට අවස්ථාවක් තිබේ .) “සම්පාදකයා C ලෙස asm බවට හරවන ආකාරය ගැන හොඳින් දන්නා ක්‍රමලේඛකයෙක්” C ++ සඳහාද ක්‍රියා කරයි. හොඳින්. නමුත් එය හුදෙක් අදාල නොවේ: ඔබට asm හි සැරිසැරීමට අවශ්‍ය නම්, සම්පාදකයෙකු වෙනත් භාෂාවකින් එය නිර්මාණය කිරීම වෙනුවට asm ලියන්න. සෑම සම්පාදක යාවත්කාලීනයක් සමඟම මෙය කරන ආකාරය වෙනස් විය හැකිය.
sbi

9
මගේ නිහතමානී මතය අනුව ... ඔබ මට අවශ්‍ය විට C භාවිතා කරයි, මට: C යනු C ++ ට වඩා සරල හා භාවිතා කිරීමට පහසුය ... C ++ "පන්ති සමඟ C" ලෙස පෙනෙන්නට පුළුවන, නමුත් එය තවදුරටත් නොවේ, දැන් එය අතථ්‍ය ඉදිකිරීම්කරුවන් සහ ආකෘති වැනි දේ සහිත ඉතා සංකීර්ණ භාෂාවක්.
dsocolobsky

Answers:


184

ඔබ සී තෝරා ගන්නා විට

  • කුමන හේතුවක් නිසා හෝ ඔබට අතේ ගෙන යා හැකි එකලස් කිරීමේ යන්ත්‍රය (ඇත්ත වශයෙන්ම C යනු එයයි),
  • ඔබේ වේදිකාව C ++ ලබා නොදේ (C සම්පාදකය ක්‍රියාත්මක කිරීමට වඩා පහසුය),
  • ඔබට C සමඟ පමණක් අන්තර්ක්‍රියා කළ හැකි වෙනත් භාෂා සමඟ අන්තර් ක්‍රියා කළ යුතුය (සාමාන්‍යයෙන් ඕනෑම වේදිකාවක අවම පොදු හරය) සහ ඔබේ කේතය අතුරු මුහුණතට වඩා මඳක් වැඩි ය, C ++ කේතයට වඩා C අතුරු මුහුණතක් තැබීම වටී නැත,
  • ඔබ විවෘත මූලාශ්‍ර ව්‍යාපෘතියක අනවසරයෙන් ඇතුළු වේ (ඒවායින් බොහොමයක් විවිධ හේතූන් මත C ට ඇලී සිටී),
  • ඔබ C ++ දන්නේ නැත.

අනෙක් සියලුම අවස්ථාවන්හිදී ඔබ C ++ තෝරා ගත යුතුය.


15
ව්‍යතිරේක ආකෘතියක් සහිත C ++ සමහර විට එය වටිනාකමට වඩා කරදර ගෙන එනු ඇතැයි මම කියමි. අවම වශයෙන් එය දේවල් ගැන කියවන විට මා තුළ ඇති සාමාන්‍ය හැඟීමයි.
කෝඩර්

12
@SF: C යනු භාෂාවද? ඒක අලුත් දෙයක්. නැත්නම්, ඉතා පැරණි ය. සමහර විට ඔබ පසුගිය අවුරුදු 20 තුළ නව භාෂා ඉගෙන නොගත් අය සමඟ පමණක් සංවාදයේ යෙදෙන්නේ නම්, නමුත් මම කියන්නේ සී දැනුම තවදුරටත් සුලභ නොවන බවයි.
DeadMG

13
@SF .: මම වෙනත් තැනක ලියා ඇති ලෙස, මම ප්රමාණය ව්යාපෘති කටයුතු සිදු කර ඇති මිලියන ගණනක් ඔවුන්ගේ අනිවාර්ය හා සාර්වත්රික සාර්ව hackery සමඟ C ව්යාපෘති සාපේක්ෂව LOC, දැක, ඉතා සුළු පාර-දේවල්. . මධ්‍යස්ථ ක්‍රමලේඛන කුසලතා ඇති පුද්ගලයින් OS කර්නලයකින් අනවසරයෙන් ඇතුළුවීම මට අවශ්‍ය නොවනු ඇත.
sbi

18
Ax මැක්ස්: මම සම්පූර්ණයෙන්ම එකඟ නොවෙමි. සී යනු නිෂ් less ල භාෂාවක් වන අතර සමහර ප්‍රායෝගික ප්‍රායෝගික බාධක මඟින් සී ++ භාවිතය වළක්වනු නොලැබේ.
DeadMG

17
Ut බොත්තම්: හිමිකම් පෑමක් කළේ ඔබයි ("C ++ ට වැඩි මතකයක් අවශ්‍යයි"), එබැවින් ඔබ එය අනුමත කළ යුතුය. තවද, C ++ ට අඩු මතකයක් අවශ්‍ය බව මම නොකියමි . මම කියන්නේ බව ය විශේෂාංග පිරිවැය, ඒවා ඔබ (කාර්යය සූචක පෙළගැස්මකින්) කරන්න ඔබ (අථත්ය කාර්යයන්) සඳහා සම්පාදකවරයා උපකරණ ඔවුන් හෝ ඔබ උනත්.
sbi

88

සී වලට වැඩි කැමැත්තක් දැක්වීමට හේතු කිහිපයක් තිබේ. ප්‍රධානතම දෙය නම් සී ++ සමඟ සැබවින්ම කුඩා ක්‍රියාත්මක කළ හැකි නිෂ්පාදන නිපදවීම වඩා දුෂ්කර වීමයි. ඇත්ත වශයෙන්ම කුඩා පද්ධති සඳහා, ඔබ කෙසේ හෝ බොහෝ කේත ලිවීම කලාතුරකින් සිදු කරන අතර, C ට වඩා C ++ සඳහා අවශ්‍ය වන අමතර ROM අවකාශය සැලකිය යුතු ය.

මම ද එම, කෙසේ වෙතත්, එකතු කළ යුතුය ඇත්තටම කුඩා පද්ධති, C assembly භාෂාව හරියටම එම හේතුව නිසා ගැටළු, හා එකම සාධාරණ තේරීමකි ආසන්න වේ ඇත. සී සැබවින්ම අර්ථවත් වන පද්ධති ප්‍රමාණයේ පරාසය තරමක් කුඩා වන අතර නිරන්තරයෙන් හැකිලෙමින් පවතී (මම පිළිගත්තද තරමක් සෙමින්).

C භාවිතා කිරීමට තවත් කාලයක් / හේතුවක් නම්, ඔබට වෙනත් ඕනෑම භාෂාවකින් බැඳිය හැකි කාර්යයන් සමූහයක් සැපයීමයි. ඔබට මෙම කාර්යයන් C ++ ලෙස ලිවිය හැකිය, ඒවා ශ්‍රිත ලෙස අර්ථ දැක්වීමෙන් extern "C", නමුත් එසේ කිරීමෙන් එම කාර්යයන් අත්‍යවශ්‍යයෙන්ම C- ජීවිත "මුහුණක්" ලොවට ඉදිරිපත් කිරීම සීමා කරයි - පන්ති, අධි බර පැටවූ කාර්යයන්, සැකිලි සහ සාමාජික ක්‍රියාකාරකම් ආදිය අවශ්‍ය නොවේ. අයදුම් කරන්න. මෙය අනිවාර්යයෙන්ම C ට සංවර්ධනය සීමා නොකරයි - බාහිර අතුරුමුහුණත C ලෙස පෙනෙන තාක් කල් ඕනෑම ආකාරයක C ++ විශේෂාංග අභ්‍යන්තරව භාවිතා කිරීම සාධාරණ ය .

ඒ අතරම, මට කියන්නට ඇත්තේ ol ටෝල්ගේ පිළිතුරු (එක් පැහැදිලි උදාහරණයක් සඳහා) බොහෝ ආකාරවලින් පසුපසට යන දේවල් ඇති බවය. සාධාරණ ලෙස ලියා ඇති C ++ සාමාන්‍යයෙන් අවම වශයෙන් C තරම් වේගවත් වන අතර බොහෝ විට අවම වශයෙන් ටිකක් වේගවත් වේ. කියවීමේ හැකියාව සාමාන්‍යයෙන් වඩා හොඳය, ඔබ ඉතා සුළු ඇල්ගොරිතම සහ දත්ත ව්‍යුහයන්, සියලු දෝෂ හැසිරවීම යනාදිය සඳහා පවා සියලු කේතයන්හි සුළි සුළඟක වළලනු නොලබන්නේ නම් පමණි.

සැකිලි "භාෂාවේ වර්ග පද්ධතිය සමඟ ගැටළුවක් නිරාකරණය නොකරයි", ඒවා හුදෙක් සැකිලි නොමැතිව C සහ / හෝ C ++ වලින් සම්පූර්ණයෙන්ම නැති මූලික හැකියාවන් ගණනාවක් එක් කරයි. මුල් අභිප්‍රායයන්ගෙන් එකක් වූයේ ටයිප්-ආරක්ෂිත බහාලුම් සඳහා සැපයීමයි, නමුත් යථාර්ථයේ දී ඒවා ඉන් ඔබ්බට ගොස් ඇත - අත්‍යවශ්‍යයෙන්ම C කිසිවක් සපයන්නේ නැත.

ස්වයංක්‍රීය මෙවලම් බොහෝ දුරට රතු හුරුල්ලන් ද වේ - සී පාර්සර් එකක් ලිවීම සී ++ පාර්සර් එකක් ලිවීමට වඩා අඩු කාර්යයක් බව සත්‍යයක් වුවත් යථාර්ථය නම් එය අවසානයේ කිසිදු වෙනසක් සිදු නොකරන බවයි. එක් අයෙකු සඳහා භාවිතා කළ හැකි විග්‍රහයක් ලිවීමට කැමැත්තෙන් හෝ හැකියාවක් ඇත්තේ ඉතා සුළු පිරිසකි. එනිසා සාධාරණ ආරම්භක ස්ථානය ක්ලැන්ග් වේ.

එය සිදු වන විට, C සහ C ++ එකම පුද්ගලයින් විසින් නඩත්තු කරනු ලබන එකම ව්‍යාපෘති වල තරමක් නිතර භාවිතා වේ. මෙය වෙනත් ආකාරයකින් දුර්ලභ දෙයකට ඉඩ දෙයි: සමස්තයක් වශයෙන් සමානව දක්ෂ පුද්ගලයින් (එනම් හරියටම එකම පුද්ගලයින්) විසින් භාෂා දෙකෙන් ලියා ඇති කේතයේ නඩත්තු හැකියාව කෙලින්ම, වෛෂයිකව සංසන්දනය කරන අධ්‍යයනයකි . අවම වශයෙන් සම්බන්ධිත අධ්‍යයනයේ දී එක් නිගමනය පැහැදිලි හා පැහැදිලි ය: "සී වෙනුවට සී ++ භාවිතා කිරීමෙන් මෘදුකාංගවල ගුණාත්මක භාවය වැඩි වන අතර නඩත්තු කටයුතු අඩු වේ ..."


12
මෙවලම සහාය ද වැදගත් වෙයි නොවන රතු හුරුල්ලා. ඇත්ත, මේ දිනවල අපි ගැටගැසී සිටිමු. නමුත් C ++ සඳහා මෙවලමක් සහයෝගය කරන්නේ පමාව නියෝගයෙන් භාෂා පිටුපස සැලකිය යුතු, පවා විශාල-වෙඩි කරන්නේ XAMPP දී. ඇයි ඒ? සරලයි, මන්ද මෑතක් වන තුරුම ගැටගැසීමක් නොතිබූ හෙයිනි (සහ GCC කිසි විටෙකත් විකල්පයක් නොවීය). මීට වසර භාගයකට පෙර, ඔබට C ++ කේතයේ AST අවශ්‍ය නම්, ඔබ මූලික වශයෙන් වාසනාවන්ත හෝ ඩොලර් දහස් ගණනින් (ඔබ EDG ෆ්‍රොන්ටෙන්ඩ් මිලදී ගත්තා නම්) විය.
කොන්රාඩ් රුඩොල්ෆ්

5
+1, සහ වාර්තාව සඳහා, 4KiB ROM සහිත 8-බිට් ප්‍රොසෙසර සඳහා මම නිතිපතා C ++ කේතය ලියමි.
avakar

2
සමස්ත විශිෂ්ට පිළිතුරක් සඳහා +1. මම නැහැ තේරුම් (මම අත්දැකීම් නැහැ wrt ඇත. මෙම) (මම හිතන්නේ අපි කාවැද්දූ කතා කරන්නේ අනුමාන?) ඇයි එය C කම්පයිලරය එය C ++ compiler වඩා කුඩා ක්රියාත්මක කේතය නිෂ්පාදනය කළ යුතු භාවිතා එවැනිම විශේෂාංගයක් කට්ටලයක් ලබා ? සමහර විට ඔබට යම් යොමු කිරීම් ලබා දිය හැකිද?
මාටින් බා

2
Art මාටින්: ප්‍රධාන දෙය නම් C ++ ට ව්‍යතිරේක හැසිරවීම ඇතුළත් වන අතර (අවම වශයෙන් සාමාන්‍යයෙන්) ක්‍රියාත්මක කළ හැකි ප්‍රමාණයට අවම වශයෙන් එකතු කරයි. බොහෝ සම්පාදකයින් ඔබට ව්‍යතිරේක හැසිරවීම අක්‍රිය කිරීමට ඉඩ දෙනු ඇත, නමුත් ඔබ එසේ කරන විට ප්‍රති result ලය තවදුරටත් C ++ නොවේ. බොහෝ සී ++ සම්පාදක වෙළෙන්දන් හැකි තරම් කුඩාම නිමැවුම් කේතය නිපදවීමේදී එතරම් වෙහෙස මහන්සි වී වැඩ නොකරන බව මම දනිමි.
ජෙරී කොෆින්

3
"සී වෙනුවට සී ++ භාවිතා කිරීමෙන් මෘදුකාංගවල ගුණාත්මක භාවය වැඩි වන අතර නඩත්තු කිරීමේ උත්සාහය අඩු වන බව අපට පෙනී ගියේය ..." එය මතක තබා ගත යුතු නිගමනයයි.
ස්ටෙෆාන් රෝලන්ඩ්

24

සී සහ සී ++ අතර ඇති වෙනස්කම් දැනටමත් මෙහි විස්තරාත්මකව ගණනය කර ඇත . සමහර විට මිනිසුන්ට එකක් හෝ වෙනත් එකක් තෝරා ගැනීමට නීත්‍යානුකූල හේතු තිබිය හැකි අතර (C ++ හි අමතර අංගයන් අනවශ්‍ය පොදු කාර්යයක් හඳුන්වා දෙන බවක් හැඟෙන විට OOP හෝ C සඳහා C ++), මගේ අත්දැකීම් අනුව එය සාමාන්‍යයෙන් මනාපයට පැමිණේ. මෙම ගොනුවේ වැඩ කරන පුද්ගලයින් වඩා හොඳින් දන්නා සහ වඩා හොඳ කුමක්ද? මෙම භාෂා දෙකම කාර්ය සාධන විවේචනාත්මක යෙදුම් සමඟ කටයුතු කරන බව සත්‍යයක් බැවින් බොහෝ විට මෙය හේතුව බව මම විශ්වාස කරමි.

(පැති සටහන: ලිනස් ටෝර්වාඩ්ස් ඔහු C ++ ට වඩා කැමති වන්නේ ඇයිද යන්න පිළිබඳව බලන්න. මම ඔහුගේ කරුණු සමඟ එකඟ නොවිය යුතුය, නමුත් C ++ ට වඩා C තෝරා ගත හැක්කේ මන්ද යන්න පිළිබඳව එය ඔබට අවබෝධයක් ලබා දෙයි. ඒ වෙනුවට, ඔහු සමඟ එකඟ වන පුද්ගලයින් මෙම හේතු නිසා C තෝරා ගත හැක.)


51
-1ලිනස්ගේ කෝපය සඳහා. : - {
sbi

12
ඒ සඳහා මට us ණ කරන්න එපා! හාහා. මම ලිනස් සමඟ එකඟ නොවෙමි, නමුත් එය මිනිසුන්ට C ++ ට වඩා C තෝරා ගත හැකි බවට හොඳ උදාහරණයකි (ලිනස් විශ්වාස කරන දේ ඔවුන් විශ්වාස කරන්නේ නම්). මම ඒ හේතු වල නීත්‍යානුකූලභාවය ගැන අදහස් දක්වන්නේ නැහැ.
කේසි පැටන්

10
As කේසි පැටන්: මූලික වශයෙන්, මෙම වාචාල කතා ඉදිරිපත් කරන සෑම පිළිතුරක්ම අවතක්සේරු නොකරන්නේ එය සැබෑ තර්කයක් ලෙස ය.
sbi

11
Od කෝඩර්: ඔබ STL ක්‍රියාත්මක කිරීම කිසිසේත් දැන සිටිය යුතු නැත. එස්ටීඑල් හි වැදගත්ම දෙය නම්, ඔබ ප්‍රමිතිය මගින් නිර්වචනය කර නොමැති හැසිරීම මත විශ්වාසය තබන්නේ නම් මිස, එය ක්‍රියාත්මක කිරීම පිළිබඳව ඔබ දැනගත යුතු නැත - එවැනි අවස්ථාවකදී, සම්මත පුස්තකාලය භාවිතා කිරීමට කරදර වන්නේ ඇයි? එපමණක් නොව, භාෂාවක් සංවර්ධකයින් හැසිරෙන ආකාරය නිසා එයට අකමැති වීම උමතු පිස්සුවකට වඩා වැඩිය. සී ක්‍රමලේඛකයින් හැසිරෙන්නේ සී යනු දෙවියන් වහන්සේ මිනිසාට දුන් තෑග්ගක් ලෙස වන අතර, සී ++, RAII වැනි C ට වඩා මූලික වශයෙන් සහ අභ්‍යන්තරව directly ජුවම උසස් වන ලක්ෂණ ඉදිරිපත් කරයි යන පැහැදිලි සත්‍යය දැකීමට නොහැකි තරම්ය.
DeadMG

8
Od කෝඩරය: ඔබ අභ්‍යන්තර කවුන්ටරය පිරී ඉතිරී යන තනි වස්තුවකට බොහෝ හවුල්_පෙටර් සමඟ අවසන් වන්නේ නම්, ඔබ එය වැරදිය. ස්ටෑන්ඩර්ඩ් විසින් කවුන්ටරය සඳහා අවම ප්‍රමාණයක් 32 බිට් 32 ක් නියම කරනු ඇති අතර එක් වස්තුවකට හවුල්_පත්‍ර බිලියන 2 කට වඩා තිබිය යුතුය යන්න යථාර්ථවාදී නොවේ. වස්තුවෙහිම ප්‍රමාණය 0 ක් තිබුණත්, ඔබට ශුන්‍ය-උඩිස් මතක විබෙදීමක් තිබුණත්, ඔබ තවමත් බෙදාගෙන ඇති_පර්ස් මත පමණක් 16GB මතකයක් පරිභෝජනය කරයි.
DeadMG

13

පවත්නා පිළිතුරු වල නොමැති ප්‍රධාන ගැටළුව (මෙම පළ කරන වේලාව අනුව) තේරීම වේ.

ඒක සරලයි. කිසියම් අතාර්කික හේතුවක් නිසා, ව්‍යතිරේකයන් පොදු කාර්යයට වඩා වටින්නේ නැති බව ඔබට හැඟේ නම්, ඔබ ඒවා භාවිතා කළ යුතු නැත . ඔබට තවමත් සැකිලි, සහ RAII සහ සම්මත පුස්තකාලය තිබිය හැකි අතර කිසි විටෙකත් එක "විසි කිරීමක්" ලියන්න එපා. සැකිලි සඳහා ද එයම වේ. කිසියම් හේතුවක් නිසා, ඒවා ආපසු හැරවිය නොහැකි (ඇත්ත වශයෙන්ම වැදගත්, එය කාවැද්දූ විට පමණක්) ක්‍රියාත්මක කළ හැකි පිපිරීමක් ඇති කරයි යැයි ඔබට හැඟේ නම්, පුදුමයට පත් කරන්න- ඔබට දවස පුරාම අවලංගු * සහ ප්‍රමාණයේ (ටී) භාවිතා කළ හැකිය. C ට වඩා C ++ විශේෂාංග භාවිතා කිරීමට කිසිවක් ඔබට බල කරන්නේ නැත.

C ++ සහජයෙන්ම උසස් භාෂාවක් වන්නේ එබැවිනි- ඔබට අවශ්‍ය අංග චෙරි තෝරා ගත හැකි අතර, ඔබ ලබා දී ඇති අංගයක් අකමැති විට C- විලාසිතාවේ වැඩසටහන්කරණය වෙත ආපසු යන්න. එබැවින්, C ++ යනු සෑම දෙයක්ම C සහ ඊට වැඩි බව සලකන විට, C ++ යනු උසස් භාෂාවක් බව පැහැදිලිය. වෙනත් ආකාරයකින් යෝජනා කිරීම 4 ට 5 ට වඩා වැඩි යැයි යෝජනා කිරීමට උත්සාහ කිරීමක් වැනිය.


1
ඔබේ තර්කය අනුගමනය කිරීමෙන් මුල් ප්‍රශ්නයේ කිසිදු තේරුමක් නැති අතර එබැවින් එය වසා දැමිය යුතුය. මම හිතන්නේ ප්‍රශ්නය මෙවැනි දෙයක් කියවිය යුතුයි: අපි සී ++ හි සී උප කුලකයට සීමා විය යුත්තේ කවදාද (සරල සී භාවිතා කරන්න) සහ සම්පූර්ණ සී ++ භාවිතා කිරීම අර්ථවත් වන්නේ කවදාද?
ජෝජියෝ

මෙය සත්‍යයකි, නමුත් එක් පුද්ගලයෙකු තමන්ගේම කුඩා ව්‍යාපෘතියක වැඩ කරන අවස්ථා සඳහා පමණි. සැබෑ ජීවිතයේ දී සෑම දෙනාම පාහේ ඔවුන්ගේ කාලය අඩක් වැය කරන්නේ වෙනත් පුද්ගලයින්ගේ කේත මත වැඩ කිරීමට ය. අවාසනාවකට මෙන් අනෙක් බොහෝ අය එම අතාර්කික හේතු සම්බන්ධයෙන් "වැරදි ලෙස සිතති".
DarenW

1
EadDeadMG: ව්‍යතිරේකයන් විසි නොකර දෝෂ වාර්තා කිරීමට අදහස් කරන්නේ කෙසේද? එසේම, වැඩි විශේෂාංග එකතු කිරීම අවශ්‍ය වන්නේ සංකීර්ණ හෝ අතිරික්තයක් එකතු කරන විට නොවේ.
මාන්කර්ස්

Ank මාන්කාර්ස්: ඔබ ව්‍යතිරේකයන් අක්‍රීය කිරීමේ විකල්පයන් සමඟ සම්පාදනය කරන්නේ නම්, විබෙදන්නන් විසින් වැඩසටහන අහෝසි කිරීම හෝ පුස්තකාල ක්‍රියාත්මක කිරීම මත පදනම්ව ශුන්‍ය දර්ශකයක් භාවිතා කිරීම සතුටින් සිදු කරයි.
සැන් ලින්ක්ස්

4
Ank මාන්කාර්ස්: 2007 දී මා 1 GB RAM හා හුවමාරුවක් නොමැති ලිනක්ස් පද්ධතියක් ධාවනය කිරීමට උත්සාහ කළ අත්දැකීමෙන් පසුව, මතක වෙන් කිරීම කෙසේ හෝ අසමත් වූ විට ඩෙස්ක්ටොප් මෘදුකාංග සියල්ලම පාහේ භයානක ආකාරවලින් අසමත් වේ.
සැන් ලින්ක්ස්

9

C ක්‍රමලේඛකයින් නොසන්සුන් කරන C ++ පිළිබඳ දේවල්

කබාය යට මැජික් ගොඩක් සිදුවෙමින් පවතී; ඉදිකිරීම්කරුවන්, ඩිස්ට්‍රැක්ටර්ස්, අථත්‍ය ක්‍රම, සැකිලි ආදිය, සී ++ කේතයට සමාන සී කේතයට වඩා ලිවීමට පහසු සහ වේගවත් කළ හැකි නමුත් තේරුම් ගැනීමට හා තර්ක කිරීමට අපහසු වේ (ඔබ සී ++ සහ ඒ ආශ්‍රිත සම්මුතීන් කොතරම් හොඳින් ද යන්න මත පදනම්ව). පංතිය සඳහා ඉදිකිරීම්කරු (සහ එය රඳා පවතින ඕනෑම පංතියක්) නිර්වචනය කර ඇති ආකාරය මත පදනම්ව, බොහෝ කේතයන් Foo newFoo;කැඳවිය හැකි තරම් සරල දෙයක් . පෝස්ට්ෆික්ස් බොහෝ විට මිල අධික පිටපත් මෙහෙයුමකට සම්බන්ධ වන බැවින්, බහාලුමක් හරහා නැවත ගමන් කරන විට වෙනුවට සම්මුතිය ලිවීමට හේතුව මෙයයි . Foo++itit++++

ඔයා කරන දේ මත පදනම්ව, එහි හැක විශේෂයෙන් සරල කාර්යයන් සඳහා, සමහර-නොවැදගත් නොවන පොදු කාර්ය විය. පහත දැක්වෙන වැඩසටහන් දෙක ගන්න, පළමුවැන්න සී, දෙවන සී සී ++:

/* C version */
#include <stdio.h>
int main(void)
{
  char greeting[] = "Hello, world";
  printf("%s\n", greeting);
  return 0;
}
/* end C version */

/* C++ version */
#include <iostream>
#include <string>
int main(void)
{
  std::string greeting("Hello, world");
  std::cout << greeting << std::endl;
  return 0;
}
/* end C++ version */

අනන්‍යතා හැසිරීම, ප්‍රභවය අනුව විශාල වෙනසක් නොව, මම gcc 4.1.2 සමඟ වැඩ කරන SLES 10 කොටුව මත, කලින් උත්පාදනය කළ හැකි ප්‍රමාණය k 9kb ප්‍රමාණයෙන් ක්‍රියාත්මක වන අතර දෙවැන්න 12.5kb ඉක්මවා යයි (ප්‍රශස්තිකරණය නැත ), පාහේ 28% විශාලයි. C ++ stringවර්ගය, C, සංගීත පුස්තකාලය වඩා එක් රටකින් සමග වැඩ ගොඩක් පහසු වන අතර, C ++ ධාරා සී විෂය ධාරා වඩා ගොඩක් වඩාත් නම්යශීලී සහ රුචි වේ, නමුත් මේ වගේ ඇත්තටම මොළයේ-මිය ගිය කේතය සඳහා, ඔවුන් හැකි මගී වටිනා වනු නැත.

C ++ යනු C හා සසඳන විට විශාල භාෂාවකි, සමහර අතිශය සංකීර්ණ අර්ථකථන ඇත. C ට වඩා C ++ සමඟ ප්‍රවීණතාවයක් ලබා ගැනීමට බොහෝ කාලයක් ගත වේ, එයින් අදහස් කරන්නේ C ++ දන්නා බව කියා සිටින බොහෝ දෙනෙක් එය නොදන්නා අතර ඔවුන් සිතන ආකාරයට ය.

C ++ දේවල් C ++ ක්‍රමලේඛකයින් නොසන්සුන් කරයි

C යනු ඕනෑම පරිකල්පනයකින් ආරක්ෂිත ක්‍රමලේඛන භාෂාවක් නොවේ; සීමාවන් සූරාකෑම් හැසිරීම ගොඩක් කිරීමට පෙලගැස්මක් නායකත්වය මත පරීක්ෂා (එය දැන් මිය ගොස් හරහා විය getsකාර්යය, හෝ හරහා scanfසමග %sහා %[පරිවර්තනය නිශ්චයකක්). C ++ අවම වශයෙන් ඔබට දැනට අර්ථ දක්වා ඇති පරාසයෙන් පිටත ප්‍රවේශ වීමට උත්සාහ කරන්නේ නම් ව්‍යතිරේකයන් විසි කරන බහාලුම් ඔබට ලබා දෙයි; සී ඔබට ලබා දෙන සියල්ලම (ඔබ වාසනාවන්ත නම්) ඛණ්ඩනය උල්ලං is නය කිරීමකි.

C ++ මඟින් ඔබට ලබා දෙන මෙවලම් හා සසඳන විට C හි මතක කළමනාකරණය ඉතා ශ්‍රමයෙන් හා දෝෂ සහිත වේ. ඔබ ඔබේම කන්ටේනරයක් ගොඩනඟන්නේ නම්, සියලු ඇමතුම් mallocහා freeඇමතුම් ගැලපීම , ප්‍රතිපාදන සාර්ථක බව සහතික කිරීම, දෝෂයක් ඇති වුවහොත් අර්ධ වශයෙන් ප්‍රතිපාදන ලබා දීම යනාදිය ඔබ වගකිව යුතුය . C ++ හි, ඔබ අයිතම එකතු කරන්නේ හෝ කන්ටේනරයෙන් අයිතම ඉවත් කරන්න. ගැටලුවක් තිබේ නම්, ව්යතිරේකයක් විසි කරනු ලැබේ.

ඒ හා සමානව, සී ++ සපයන මෙවලම් හා සසඳන විට සී හි දෝෂ හැසිරවීම බූරුවාගේ වේදනාවකි (එනම්, ව්‍යතිරේක). ඇත්තෙන්ම විනෝදජනක දෙය නම් ඔබ මතක පොකුරක් වෙන් කර ඔබේ සැකසීමේදී බිත්තියකට පහර දීමයි; ඔබට පිටතට යා යුතු බැවින්, ඔබට එම මතකය නිවැරදි පිළිවෙලට මුදා හැරිය යුතුය. C ++ සහ RAII මූලධර්ම සමඟ, මෙය (සාපේක්ෂව) කිරීමට පහසුය.

ඉතින් මම එකකට වඩා එකක් භාවිතා කරන්නේ කවදාද?

ඔබ ලියන දෙය ව්‍යාජ එකක් නම්, එය කියවන්න / එය සමඟ මුසු කරන්න / යෙදුමෙන් ඉවත් වන්න, යෙදවුම් සහ ප්‍රතිදානයන් සහ කාර්ය සාධන කාරණා අනුව ඔවුන්ගේ හැසිරීම පිරිසිදුව විස්තර කළ හැකි නම්, C ++ ට වඩා C ට වැඩි කැමැත්තක් දක්වන්න. එසේ නොමැතිනම් C ++ ට වැඩි කැමැත්තක් දක්වන්න


2
මතක කළමනාකරණය සමහර අවස්ථාවල සංකීර්ණ හා දෝෂ සහිත වේ, නමුත් විශේෂයෙන් කාවැද්දූ ලෝකයේ සම්පූර්ණයෙන්ම ස්ථිතික මතක වෙන් කිරීම භාවිතා කරමින් සී වැඩසටහන් ලිවීම බොහෝ විට ප්‍රායෝගිකයි. වැඩසටහන සම්බන්ධ වන්නේ නම්, එය ක්‍රියාත්මක වන විට මතකයෙන් ඉවතට යා නොහැක . C ++ හි එවැනි සහතික පහසුවෙන් ලබා ගත හැකිද?
සුපර්කැට්

9

Bjarne Stroustrup විසින් C ++ භාවිතා කරන යෙදුම් සහ සමාගම් ලැයිස්තුවක් පවත්වාගෙන යයි ; ඔබට අවශ්‍ය සියල්ලට එදිරිව OOP ක්‍රමලේඛනය පිළිබඳව තර්ක කළ හැකිය, නමුත් පසුගිය අවුරුදු 20 තුළ කර්මාන්ත ප්‍රති results ල සමඟ ඔබට තර්ක කළ නොහැක.

සී ++ බහුලව භාවිතා වන්නේ මහා පරිමාණ, බහු-මිනිසා, සංකීර්ණ ව්‍යාපෘති සඳහා වෙනම පුද්ගලයින්ට මොඩියුලරීකරණය කරන ලද සංරචක මත වැඩ කිරීමට අවශ්‍ය වේ. ඇත්ත වශයෙන්ම ඔබට C හි මොඩියුලරීකරණය කළ කේතයක් තැනීමට හා නඩත්තු කිරීමට හැකිය, නමුත් C ++ හි ආවේනික OOP ස්වභාවය උසස් මොඩියුලරීකරණය, පරීක්ෂණ හැකියාව සහ කේත නැවත භාවිතා කිරීම සඳහා මග පාදයි.

සී ++ සම්මත පුස්තකාලය (එස්ටීඑල්), දෛශික සහ සිතියම් සහිතව, සී ++ භාවිතා කිරීමට ප්‍රමාණවත් වේ.

සී බහුලව භාවිතා වන්නේ කාවැද්දූ පද්ධති සඳහා ය.

මම පුද්ගලිකව C භාවිතා කරන්නේ C API පමණක් ඇති පුස්තකාලයක් ඇත්නම් පමණි.


19
ඔබේ අවසාන වාක්‍යය සී භාවිතා කිරීමට හේතුවක් නොවේ. ඔබට සී ++ වෙතින් සී පුස්තකාල ඇමතිය හැකිය.
user207421

2
මම ඩීඑස්පී ව්‍යාපෘතියක් සඳහා සී ++ භාවිතා කළෙමි - සී නොවේ
බී

9

මම කියන්නේ C ++ ට වඩා C තෝරා ගැනීමට ප්‍රධාන හේතුව, “මෙය 1000% ස්ථායී” නාසා ආකාරයේ දේවල් වෙත යොමුවීමට සිදු වූ විට පමණක් බවයි.

අපි කාර්ය සාධනය දෙස බලන විට C ++ ~ 99% C වන අතර එය වඩා .ලදායී වේ. එබැවින් C හි සිටියදී පවා ඔබට C ++ ට වඩා වේගවත් කේතයක් ලිවිය හැකිය (ව්‍යතිරේක, අථත්‍ය, ප්‍රවාහ, වියුක්ත කිරීම් ආදිය නොමැතිව ඔබට C ++ උප කුලකයක් භාවිතා කළ හැකිය, නමුත් එය මූලික වශයෙන් C), සෑම අශෝභන දෙයක්ම ප්‍රශස්තිකරණය කිරීමට කාලයයි එස්ටීඑල් පරීක්‍ෂා කර ඇති අතර දැනටමත් එය සිදු කර ඇති අතර, ඔබ ලබා ගත හැකි ඉතා කුඩා කාර්ය සාධනයට වඩා වැඩි මුදලක් වැය වනු ඇත, නැතහොත් එස්ටීඑල් ඇල්ගොරිතම විශේෂ experts කණ්ඩායම් විසින් ලියා ඇති නිසා ඔබ පරිත්‍යාග කරනු ඇත.

අනෙක් අතට C ++ ටොන් ගණනක් වියුක්ත කිරීම් ඇත. යම් තත්වයක් යටතේ ඒවා කාන්දු වන විට, මෙය ඔබව කරදරයට පත් කරයි. සී ++ ගොචා වලින් 100% ක් දන්නා පුද්ගලයන් ස්වල්ප දෙනෙක් සිටින අතර, මම සිතන්නේ, සියලු සී ගොචා දන්නා බොහෝ දේ ඇත, එබැවින් කණ්ඩායමේ සෑම සාමාජිකයෙකුටම සෑම පියවරක්ම සම්පූර්ණයෙන් වටහා ගත හැකි විසඳුමක් ලිවීම සී හි වඩා පහසු ය.

උදාහරණය: shared_ptr<smthn>එහි විමර්ශන ගණන පිරී ඉතිරී යන්නේ කවදාදැයි ඔබ දන්නවාද , එය ව්‍යතිරේකයක් දමයිද? ෂටලයට වායුගෝලය නැවත ඇතුල් කිරීමට සිදු වූ විට මෙවැනි දේ සිසිල් නොවේ, අවම වශයෙන් මම අනුමාන කරමි.

දෝෂ කේත හා සසඳන විට ව්‍යතිරේක හැසිරවීම ඉතා දුෂ්කර ය. පංතිය 100% ව්‍යතිරේකය ආරක්ෂිතද, කාන්දුවීම් වලට පහසුද යන්න බැලීමට අපහසුය. ඉහළ නියෝජිතයින් විශාල පිරිසක් මෙම මතය ප්‍රකාශ කර ඇත.


12
C ++ හි වියුක්ත කිරීම් std::stringහා ඒ හා සමාන ඒවාට වඩා මතකය "වඩා ස්ථායී" ලෙස අතින් කළමණාකරනය කරන්නේ කුමන ආකාරයෙන්ද ? shared_ptrකවුන්ටරය පිරී ඉතිරී යන වේදිකාවක් සඳහන් කිරීමට ඔබ කවදා හෝ උත්සාහ කර තිබේද? එය විහිලු වේදිකාවක එක් අංගයක් වනු ඇත. ව්‍යතිරේකය හැසිරවීම අසීරු යැයි ඔබ සිතන්නේ නම්, සෑම ශ්‍රිත ඇමතුමකම ඇතිවිය හැකි සෑම දෝෂයක්ම පරික්ෂා කරන සී කේතයක් දෙස බැලිය යුතුය. (එවැනි කේතයක් පැමිණීම දුෂ්කර ය, මම පිළිගනිමි, නමුත් මෙය ඔබේ ප්‍රකාශයට එරෙහි ඊටත් වඩා ප්‍රබල තර්කයක් පමණි.) කණගාටුයි, නමුත් මෙය අව්‍යාජ බොවින් බැහැර කිරීමකි.
sbi

12
Und ලුන්ඩින්: '' එය 1000% ස්ථායී විය යුතුයි. C ++ හි එය හරියටම කිරීමෙන් ඔබව වළක්වන්නේ කුමක්ද? (කිසිදු තර්කයක් ඉදිරිපත් කරනවාට වඩා මගේ දැනුම හා අත්දැකීම් පිළිබඳව
හිස් ප්‍රකාශ

10
Und ලුන්ඩින්: වාචාලකමට වඩා ඔබ තර්ක ඉදිරිපත් කිරීමට පටන් ගෙන තිබීම හොඳයි. නමුත් ඔවුන් දුර්වලයි. C ++ (සැකිලි) හි එක් ප්‍රධාන අංගයක් ඔබට "අමතක" වී ඇති අතර, එය කේත ආරක්ෂිත කරයි (එය ඇල්ගොරිතම ක්‍රියාත්මක කිරීමට ඉඩ සලසන හෙයින් - සහ අසමත් වේ - සම්පාදනය කරන වේලාවේදී , ධාවන කාල දෝෂ ඉවත් කිරීම), ඔබ විනිශ්චය කරන භාෂාව පිළිබඳ ඔබේ දැනුමට පක්ෂව කතා කරන්න. O ++ භාෂාවකට C ++ අඩු කිරීම මෙයට පෙර විවේචනයට ලක්ව ඇති අතර හොඳ හේතු නිසා. (ඊට අමතරව, නිර්ණායක විනාශය සහිත පන්ති ඉතා හොඳ මෙවලමක් වන අතර එය හුදෙක් මතකයට වඩා වෙනත් සම්පත් කළමනාකරණයට උපකාරී වේ.)
sbi

9
Und ලුන්ඩින් ඇත්ත වශයෙන්ම ඔබට std::stringගතික වෙන් කිරීමක් අවශ්‍ය නැතිනම් භාවිතා කිරීමට අවශ්‍ය නොවනු ඇත. ඔබ භාවිතා කරනු std::basic_string<char, std::char_traits<char>, some_allocator_here>ඇත.
ලූක් ඩැන්ටන්

10
Od කෝඩර්: ඔබ සිතන්නේ මේවායින් ඔබ ඔප්පු කරන්නේ කුමක්ද? පළමුවැන්න හුදෙක් නරක කේතයකි (සහ ප්‍රතිලාභ අගයන් තරම්ම නරක වාර්තා කිරීමේ දෝෂයන් වනු ඇත), දෙවැන්න RAII සඳහා අතින් පිරිසිදු කිරීම සම්බන්ධයෙන් නඩුවක් ඉදිරිපත් කරයි, සෑම අර්ධ ශිෂ් C සම්පන්න C ++ dev එකකටම සතුටු විය හැකි අතර ජොයෙල්, මම තරම් ඔහුට ගරු කරන්න, මම තදින්ම එකඟ නොවන කරුණු කිහිපයක් පැවසුවාද? ඔහු තනි පිවිසුම්-තනි-පිටවීම සඳහා වූ ප්ලග් එක නොදන්නා පැරණි දුරදිග නොබලා, වසර 25 කට පෙර ඔහු ඉගෙන ගත් දෙය ඉක්මවා ඇති බව කිසි විටෙකත් එකඟ නොවනු ඇත. (ඔබ සිත, මම කරන ලදී සෙසේ කලාව රාජ්ය විට මීට වසර 25 කට පෙර වැඩසටහන්ගත,.)
රාජරත්නම්

6

C යනු වඩා හොඳ සින්ටැක්ස් සහිත අතේ ගෙන යා හැකි එකලස් කිරීමකි, ක්‍රමලේඛකයාට සෑම දෙයක්ම පූර්ණ ලෙස පාලනය කරයි .

C ++ අනෙක් අතට, විනෝදජනක මැජික් (අථත්ය කාර්යයන්, අධි බර පැටවීම, ස්වයංක්‍රීය පරිවර්තනය යනාදිය) කරයි.

  • ඔබට අවශ්‍ය ප්‍රමාණයට වඩා වැඩි මතකයක් භාවිතා නොකරන්න
  • මතක පිටු වලට ප්‍රවේශ නොවන්න විලී නිලි (vtable ඕනෑම තැනක විය හැකිය)
  • අහම්බෙන් බොහෝ කේත වලට යොමු නොවන්න

ඔබ කාර්ය සාධනය කෙරෙහි අවධානය යොමු කර ඇති බැවින්, වැඩ කිරීමට ඉතා සරල දෙයක් අවශ්‍යය.

එයට පුදුමයක් නැත, එය ඉතා වටිනා ය.

ඔබට අවශ්‍ය නම් (සහ මම එය නිර්දේශ කරමි), මිලිටරි ගුවන් යානා පාලනය සඳහා C ++ ලිවීමේදී ඔබ සිතිය යුතු දේ පිළිබඳ JSF කේතීකරණ මාර්ගෝපදේශ කියවන්න . එය ඔබ දැන සිටිය යුතු උගුල් රාශියක් වන අතර එය ඔබව අල්ලා ගනු ඇත. බර්න් එම ලේඛනයේ කොටසක් විය, එබැවින් ඔහු එය කුමක් දැයි දනී.

එසේම, සී සම්පාදනය කරන්නේ අකුණු සැර වැදීමෙනි. C ++, OTOH, බොහෝ විට අනුග්‍රහය දැක්වූයේ SSD සමාගම්වල ආයෝජනය කළ අයමයි. :)

(පුද්ගලිකව, මම C ++ ට වඩා කැමතියි, නමුත් මම එයට කැමති නැත ...... එක්කෝ. ;-P)


1
සී පාලනය නොකරන බොහෝ දේ ඇත. Uint32_t ප්‍රති result ලයක් ලබා දීම සඳහා uint32_t uint32_t කින් ගුණ කිරීම සඳහා කාර්යක්ෂම අතේ ගෙන යා හැකි කේතයක් ලිවීමට උත්සාහ කරන්න (නිෂ්පාදනයේ පහළ බිටු 32). ඇති නම් int64 බිට්, එක් විය යුතු කාස්ට් යන අගයද අවම වශයෙන් එක් කිරීම uint64_t"පුදුම" - මෘදු එය ඉදිරිපත් -. අනිශ්චිත හැසිරීම වැළැක්වීම සඳහා, නමුත් එය 32-bit ප්රතිඵලයක් ගණනය කිරීමේ අරමුණ සඳහා බිටු 64 කිරීමට ගම්බිම් සහිත වේ
සුපර් කැට්

එය නෙමෙයි. සම්පාදකයා ඔබ වෙනුවෙන් ලියාපදිංචි ප්‍රතිපාදන වැනි දේ කරයි. එකලස් කිරීමේදී මට නඩත්තු කළ හැකි කේත ලිවිය නොහැක.
නිල්ස්

2

(ඔබට භාෂා දෙකම සමඟ සමාන දැනුමක් ඇති බැවින්)

ඔබේ වේදිකාව සඳහා C ++ සම්පාදකයෙකු නොමැති නම් C ++ සමඟ යන්න. ඔබ අකමැති භාෂාවේ කිසිදු කොටසක් නොමැතිව ඔබට C ++ කේතය ලිවිය හැකිය (පන්ති, ව්‍යතිරේක, අතථ්‍ය උරුමය, ඔබ අයදුම් කිරීමට බලාපොරොත්තු වන පුද්ගලික සීමාවන් කුමක් වුවත්), පසුව අනාගතයේ යම් වේලාවක ඔබට අවශ්‍ය යැයි ඔබ තීරණය කරන්නේ නම් එම අංග සියල්ලටම පසුව ඔබට පහසුවෙන් ඒවා භාවිතා කළ හැකිය. C ++ හි කිසිවක් C-style කේතය ලිවීමෙන් ඔබව වළක්වන්නේ නැත.

(සමාන මෙවලම් සහ සංවර්ධක දැනුම ලබා දී ඇත) ඔබේ වේදිකාවට C ++ සම්පාදකයක් තිබේ නම් C ++ ට වඩා C තෝරා ගැනීමට හේතුවක් නැත. ඔබට අද දින කැමති භාෂාවේ උප කුලකයට පමණක් සීමා විය හැකි අතර පසුව දීර් extension කිරීම සඳහා දොර විවෘත වේ.


1

භාෂා දෙකම විශිෂ්ටයි. මම හිතන්නේ පෝස්ටර් ගණනාවක එක් එක් සඳහා ශක්තීන් සහ විවිධ භාවිතයන් සවිස්තරව දක්වා ඇත. මම මෙය සරලව එකතු කරමි:

අංශ 4 කින් සී භාෂාව පරිපූර්ණ ලෙස මම දකිමි: 1) ඕනෑම ආකාරයක ක්‍රමලේඛයක් ප්‍රථම වරට ඉගෙන ගැනීමේදී භාවිතා කළ හැකි හොඳම භාෂාව එය යැයි මම සිතමි. මෘදුකාංග, සහ 4) පද්ධති මෘදුකාංග අවම මට්ටමේ.

C ++ යනු වස්තු-නැඹුරු භාෂාවක් වන නමුත් එය ක්‍රියා පටිපාටිය ද විය හැකිය (C ක්‍රමයට බොහෝ සෙයින්). ඔබ මහා පරිමාණ ව්‍යාපෘති, GUI මත පදනම් වූ මෘදුකාංග, සූදු මෘදුකාංග සහ වෙනත් ආකාරයේ ග්‍රැෆික්-තීව්‍ර මෘදුකාංග මත වැඩ කරන්නේ නම්, C ++, Java, හෝ Objective-C පවා ඔබේ හොඳම තේරීම ලෙස මම දකිමි. කෙසේ වෙතත්, විධාන රේඛා වැඩසටහන් හෝ පද්ධති මෘදුකාංග ඕනෑ තරම් තිබේ, එහිදී ඔබට C ++ C ට වඩා හොඳ හෝ වඩා හොඳ යැයි පෙනේ.


0

මගේ මතය අනුව මෙම සාකච්ඡාවේ එක් කරුණක් මග හැරී ඇත: පුස්තකාලයකින් ස්ථාවර ද්විමය අතුරු මුහුණතක් සැපයීම C හි සරල ය. දෙකම වෙනත් භාෂාවන් සමඟ භාවිතා කිරීම සඳහා මෙන්ම C ++ ද වේ.

සී ++ හි විවිධ සම්පාදකයින් විවිධ නම් මැන්ග්ලිං භාවිතා කරයි, එබැවින් පුස්තකාලයේ වෙනස් සම්පාදකයෙකු සමඟ සම්පාදනය කරන ලද පුස්තකාලයක පාරිභෝගිකයින්ට එය භාවිතා කිරීමේදී ගැටළු ඇති විය හැකිය. C සමඟ ද්විමය අතුරුමුහුණත, සාමාන්‍යයෙන්, වේදිකාව සඳහා ප්‍රමිතිකරණය කර ඇත.

වර්තමානයේ සම්පාදකයින්ට බොහෝ විට gcc- අනුකූල දේවල් නිපදවීමට ස්විච ඇති බව මම දනිමි, නමුත් එය සැමවිටම උදව් නොකරයි.

මම මෙය බොහෝ විට සොලාරිස් මත නිරීක්ෂණය කරමි. බෙදා හැරීම සහ විවිධ මෘදුකාංග වෙළෙන්දෝ සාමාන්‍යයෙන් සන් ස්ටුඩියෝ භාවිතා කරති, විශේෂයෙන් ස්පාර්ක් පද්ධති වල, එය බොහෝ විට වඩා හොඳ ප්‍රති .ල ලබා දෙයි. මිනිසාගේ විවෘත කේත ව්‍යාපෘති gcc විශේෂිත කේතයකින් ලියා ඇත. එකට වැඩ කරන අය ලබා ගැනීම තරමක් වේදනාවක් විය හැකිය.


0

සී කේතය ජනනය කරන විට සී ++ ට වඩා යෝග්‍ය වේ (උදා: ඉහළ මට්ටමේ භාෂා ක්‍රියාත්මක කිරීමේදී). උදාහරණයක් ලෙස, සී කේතය විමෝචනය කරන ලිස්ප් වැනි සම්පාදක කිහිපයක් තිබේ (උදා: චිකන් , යෝජනා ක්‍රමය 48 ...), නමුත් අව්‍යාජ සී ++ කේතය විමෝචනය කරන කිසිවක් මම නොදනිමි (මගේ මෙල්ට් මෙවලම සී ++ කේතය විමෝචනය කරයි, නමුත් මම එම කේතය අව්‍යාජ යැයි නොකියමි C ++ කේතය, එය භාවිතා කරන්නේ ඉතා සුළු C ++ විශේෂාංග පමණි).

සී කේතය අර්ධ ස්වයංක්‍රීයව ඔප්පු කිරීමටද පහසුය. Frama-C වැනි ස්ථිතික විශ්ලේෂක (ඔබේ කේතය පිළිබඳ හිතෝපදේශ හේතුව සඳහා ACSL අදහස් සමඟ ඔබේ C කේතය විවරණය කරන තැන) C සඳහා ලබා ගත හැකි නමුත් සම්පූර්ණ C ++ 11 සඳහා එතරම් නොවේ.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.