C ට වඩා වේගවත්, “හොඳ” භාෂාවක් එළියට ආවේ නැත්තේ ඇයි? [වසා ඇත]


150

අද වන විට සියලුම නව “නවීන” භාෂා සමඟින්, සී තවමත් වේගවත්ම සහ “යන්ත්‍රයට ආසන්නතම” ලෙස නම් කර ඇත්තේ කෙසේද? දේවල් කිරීමට ඇත්තේ එකම නිවැරදි ක්‍රමයක් බව මම විශ්වාස නොකරමි, සහ සී ඉතා දීර් time කාලයක් තිස්සේ (60 ගණන්වල සිට!). මීට වසර 50 කට පමණ පෙර ලියා ඇති දෙයකට වඩා හොඳ දෙයක් අප සැබවින්ම ඉදිරිපත් කර නැද්ද?

නවීන භාෂාවන් ඉහළ මට්ටමක පවතින බවත්, කසළ එකතු කිරීම සහ මතක වෙන් කිරීම වැනි ඇතැම් කාර්යයන් ගැන සැලකිලිමත් වන බවත් පුස්තකාල භාවිතා කරන බවත් මම දනිමි. මම අහන්නේ සී ට සැබෑ දෙවන විකල්පයක් නොතිබුණේ මන්ද යන්නයි.

පරිගණකය ක්‍රියාත්මක කිරීමට වෙනත් ක්‍රමයක් කළ නොහැකි තරමට සී කොතරම් පරිපූර්ණද? (සංවර්ධක-දරුකමට හදා ගැනීම පසෙකට)?

සංස්කරණය කරන්න බලන්න, මම සී හෝ ඔබේ ප්‍රියතම භාෂාව කුමක් වුවත් තට්ටු කිරීමට උත්සාහ නොකරමි. මම කල්පනා කරන්නේ සී ප්‍රමිතිය බවට පත්ව ඇත්තේ ඇයි සහ වෙනත් විකල්ප කිසි විටෙකත් මතු නොවූයේ ඇයි සහ සී හුදෙක් “පිළිගනු ලැබුවේ” ඇයි කියායි.


44
C ++ ලිවීමට තරම් වේගවත් හා වඩා
tive ලදායී

6
u ++ ඔබට c ++ ගැන අමතක නොවේද?

23
එකලස් කිරීම යන්ත්‍රයට වේගවත්ම හා “සමීපතම” යැයි මම තර්ක කරමි.

27
සියලු චලනයන් වසා දැමිය යුත්තේ ඇයි? මම ඇත්තටම කුතුහලයෙන් සිටිමි ... මම ගිනි යුද්ධ හෝ කිසිවක් ආරම්භ කිරීමට උත්සාහ නොකරමි
ජේසන්

15
නැවත වසා තිබේද? ජෙෆ් ඇට්වුඩ් විසින් නැවත විවෘත කිරීමෙන් පසුවද? ඔබට මෙය වසා දැමීමට අවශ්‍ය ඇයි?
ජේසන්

Answers:


164

සී යනු ඉතා සරල භාෂාවක් වන අතර එයට හේතුව එහි දීර් onge ායුෂ සමඟ එය වේගවත් හා ප්‍රශස්ත කිරීමයි. කාවැද්දූ පරිසරයන්, මයික්‍රොප්‍රොසෙසර ආදිය සම්බන්ධයෙන් සැලකිලිමත් වන විට එය අසාමාන්‍ය ලෙස පුළුල් ලෙස සහාය වේ.

ඇත්තෙන්ම සරල හා වේගවත් භාෂාවක් පරාජය කිරීම දුෂ්කර ය. එවැනි භාෂාවක් මත වැඩිදියුණු කළ හැකි එකම දෙය වන්නේ භාවිතාවයි: සමාන, සාමාන්‍ය කේතයක් සෑදීමට ගතවන කාලය අඩු කිරීම සහ වියුක්ත කිරීම් සමඟ ආකෘතිගත කිරීම පහසු කිරීම.

C ++ පැමිණෙන්නේ මෙහිදීය. C ++ සී තරම් වේගවත් විය හැකිය. කාරණය නම්, C ++ යනු වඩාත් සංකීර්ණ භාෂාවක් වන අතර එයින් අදහස් කරන්නේ එය අනිවාර්යයෙන්ම tivity ලදායිතාව වැඩි කරන බවයි; මිනිසුන් එය භාවිතා කරන්නේ කෙසේදැයි දන්නා තාක් කල්. C ++ හා C වේ නොහැකි පාහේ එකම භාෂාව තවදුරටත්.

දැන් ඩී තවත් පියවරක් ඉදිරියට ගියේය. වේගවත් කේත, විකල්ප කසළ එකතු කිරීම යනාදිය සඳහා එකම හැකියාව, නමුත් එය කිසි විටෙකත් හසු නොවීය. C ++ වලට පීඩා කරන දේ පහත වැටෙන හෙයින් එය වෙනස් වනු ඇතැයි අපේක්‍ෂා කරමු.

එබැවින් ඔබේ ප්‍රශ්නයට පිළිතුරු දීමට “වඩා හොඳ” යන්න විනිශ්චය කිරීම දුෂ්කර දෙයකි. සරල බව සහ වේගය අනුව, සී බොහෝ විට අපට කළ හැකි හොඳම දේට සමීප වේ. Tivity ලදායිතාවයට එදිරිව සරල බව සම්බන්ධයෙන් ගත් කල, සී ++ අපට කළ හැකි හොඳම දේ විය හැකි නමුත් එම මතය ඊට වඩා බොහෝ වෙනස් වේ. අවසාන වශයෙන්, සී හි වේගය හා සරල බව සමඟ මාංසමය හා පිරිසිදු කරන ලද භාෂාවක් අනුව ඩී මෙම සන්දර්භය ජය ගනී.


32
"සරල" යන්නෙන් ඔබ අදහස් කරන්නේ "POV සම්පාදකයින්ගෙන් සරලයි, ක්‍රමලේඛකයන් POV නොවේ" යන්නයි. සී සරල ය, මන්ද එය මූලික වශයෙන් ප්‍රකාශ හා ප්‍රකාශන සමඟ එකලස් කර ඇති බැවිනි. පයිතන් සරල වන ආකාරයට එය සරල නැත.
මාරියස්

15
නමුත් පැහැදිලි කිරීමට, සම්පාදකවරයා සඳහා සරල කරන්නේ එසවීමට අදහස් සරල. සංකීර්ණ අදහස් ක්‍රියාත්මක කිරීම සමහර විට සරල නැත.
GManNickG

2
ඔබ C # හි මෙහෙයුම් පද්ධතියක් ලියන්නේ නැත. (අපි කතා කරන්නේ පද්ධති ක්‍රමලේඛන භාෂා, ස්වදේශීය එකලස් කිරීම සඳහා සම්පාදනය කරන ක්‍රමලේඛන භාෂා ය. ඔබට වෙනත් ඕනෑම භාෂාවකින් කළ හැකි ඕනෑම දෙයක් ඔබට සී / සී ++ / ඩී වලින් කළ හැකිය, නමුත් වෙනත් ආකාරයකින් නොවේ.)
GManNickG

17
එහි වටිනාකම සඳහා, OCaml විසින් C සහ C ++ තරම් වේගයෙන් ස්වදේශීය කේතයක් නිපදවන අතර කේතයම පයිතන් තරම් දැඩි වේ. මඳක් ඔප දැමීමෙන්, උපරිම වේගය සහ අවම මතක සටහන් සඳහා කේත ලිවීමට අවශ්‍ය වූ විට OCaml හට C තේරීමේ භාෂාව ලෙස ගැලපීමට හෝ පරාජය කිරීමට හැකිය. පරමාර්ථ-සී ද ඉතා හොඳ කාර්යයක් ඉටු කරයි, එය සෑම විටම සී තරම් වේගවත් නොවුනත්, එය සී ++ කිසි විටෙකත් කළ නොහැකි හා කිසි විටෙකත් සිදු නොවන ආකාරයෙන් සමස්ත “සී වස්තූන් සමඟ” ලබා ගනී.
ජුලියට්

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

64

සී භාෂාවන්ට වඩා වේගවත් ඇත.

සී ට වඩා වේගවත් භාෂා ඇත. නිදසුනක් ලෙස ෆෝට්රාන් දැනටමත් සඳහන් කර ඇති පරිදි ඉතා හොඳින් ක්‍රියා කරයි.

භාෂා වැනි පර්යේෂණාත්මක එකලස් කිරීම් ද ඇත, එය ඉදිරිපස C ට පහර දෙන අතර එය ඉහළ මට්ටමේ ඇසෙම්බර් භාෂාවක් ලෙස භාවිතා කරයි. සී-- හෝ ජැනස් ගැන කවදා හෝ අසා තිබේද? නමුත් එල්එල්වීඑම් ව්‍යාපෘතියෙන් එම දෙදෙනා මිය ගියහ.

ඒපීඑල් හෝ වෙනත් ගණිතමය භාෂාවන් දෛශික සැකසුම් ඒකක සඳහා ආධාරක ලෙස ගොඩනගා ඇති බැවින් විශේෂ යෙදුම් වසම්වල සී ජලයෙන් ඉවතට විසිවනු ඇතැයි මම ඔට්ටු තබමි. මෙය සී සඳහා කළ නොහැකි දෙයකි (සහ යාලුවනේ: නැත! සී සම්බන්ධතාවය සහිත විශේෂ ප්‍රශස්තිකරණය කළ පුස්තකාලවලට භාෂාවක් ලෙස සී සමඟ කිසිදු සම්බන්ධයක් නැත).

CPU නිෂ්පාදකයින් වෙනත් භාෂාවලින් සම්පාදක ලේඛකයින්ට උදව් කරන සියලු දේ ඉවත් කර ඇත - SPARC හි LISP ක්‍රියාත්මක කිරීම වේගවත් කිරීම සඳහා ටැග් කරන ලද අංක ගණිත එකලස් කිරීමේ කේත මතකද? සුළඟ සමඟ ගියා.

ඔබ ක්ෂුද්‍ර මිණුම් සලකුණු වලින් යෙදුම් සංවර්ධනයට ගියහොත් යෙදුම් සංවර්ධනය සඳහා වේගවත් භාෂා ඇත. මෙහි මගේ පෞද්ගලික උදාහරණය සැමවිටම ස්මාර්ට් අයිෆල් ය. එය C ඉලක්ක කරන නමුත් ගෝලීය පද්ධති ප්‍රශස්තිකරණය භාවිතා කරන අතර එමඟින් සැබෑ ලෝක යෙදුම් සංවර්ධනයේ දී සී වේගවත් කරයි.

මෙම වසම තුළ සරල වැරදි හෝ පහත් මට්ටමේ වියුක්ත කිරීම් පවා සමස්ත භාෂා ක්‍රියාකාරිත්වය විනාශ කළ හැකිය. සී ඉහළ වියුක්ත කිරීම් ඉදිරිපත් නොකරන නිසා බොහෝ අය පවසන්නේ එය ක්‍රමලේඛන ගැටලුවක් නමුත් එය එසේ නොවන බවයි. උදාහරණයක් ලෙස ජනකතා හිඟකම දෙස බලන්න. C හි ඔබ "qsort" පුස්තකාල ශ්‍රිතය වැනි මන්දගාමී ක්‍රියාත්මක කිරීම් සමඟ අවසන් වනු ඇති අතර එය ජනක විද්‍යාව සමඟ වේගයෙන් ලිවිය හැකිය (එහිදී ප්‍රධාන සැසඳීම් සඳහා වන ක්‍රියාකාරී ඇමතුම ඉවත් කරනු ලැබේ).

මෙගාබයිට් අඟල් ගණනක qsort ඇමතුමක් හොඳ අතින් ලිඛිත ක්‍රියාත්මක කිරීමක් සමඟ සසඳන්න, එය අරාව ප්‍රවේශය සහ බිල්ඩින් << ක්‍රියාකරු භාවිතා කරයි.


9
ඉතා හොඳ අදහස් දැක්වීමක්. සී භාෂා පිරිවිතරයේ සමහර කරුණු (පොයින්ටර් අන්වර්ථ නීති වැනි) සැබවින්ම ප්‍රශස්ත යන්ත්‍ර කේත ජනනය කළ නොහැකි බව වටහා ගැනීම වැදගත්ය. ඉහළ මට්ටමේ එකලස් කරන්නෙකු වන සී, “වේගවත්ම” නොව හුදෙක් “තරමක් වේගවත්” ය.

1
ස්තූතියි මට බහු ප්‍රති result ල අගයන් ආපසු ලබා දිය නොහැකි බව සඳහන් කිරීමට අමතක විය. ඉහළ මට්ටමේ එකලස් කරන්නෙකු ලෙස භාවිතා කිරීමේදී මට එය මග හැරී ඇති තවත් පහත් මට්ටමේ අංගයකි.

5
නූතන සී, නිසි ලෙස ලියා ඇති අතර, වෙනත් ඕනෑම භාෂාවකට සමාන අන්වර්ථ උපකල්පන සංකේතවත් කළ හැකි අතර එමඟින් සම්පාදකයාට එකම ප්‍රශස්තිකරණයක් ලබා දේ. එය භාෂාවේ වැදගත් ලක්ෂණයකි, එම අවශ්‍යතා අදාළ නොවන විට ඒවා උපකල්පනය නොකිරීමට ක්‍රමලේඛකයාට ඉඩ දෙයි. ඔබගේ අනෙක් කරුණු ක්‍රියාත්මක වේ, එබැවින් +1.
ස්ටීවන් කැනන්

1
Asc රාස්චර්: එය නිවැරදියි, එහිදී ඔබට CPU නිර්මාණකරුවන්ට C හි බලපෑම පෙනේ, එය සෑම විටම CPU ABI එකක් නියම කරයි. බහුවිධ ප්‍රතිලාභ අගයන් යනු රෙජිස්ටර් ගණන ගැටළුවක් නොවුනත් එහි මතකයට එන්නේ නැති දෙයක් (SPARC, PowerPC, Itanium)

13
C හි පොයින්ටර් අන්වර්ථකරණය restrictC99 දී (මීට වසර 10 කට පෙර!) ගනුදෙනු කර ඇත .

35

හොඳ ප්රශ්නයක්. මම හිතන්නේ භාෂාවන් සාර්ථක වන්නේ නිකේතනයක් සොයා ගැනීමෙනි. C ට වඩා හොඳ නව භාෂා ඕනෑ තරම් ඇති බව සැලකිල්ලට ගැනීම වැදගත්ය.

  • සී වරෙක යෙදුම් භාෂාවක් ලෙස බහුලව භාවිතා වූ අතර, එම වසම තුළ එය සී ++, ජාවා සහ මෑතකදී අනෙකුත් සියලු භාෂා (විශේෂයෙන් ගතික භාෂා) වෙත අහිමි වී ඇත.

  • C සේවාදායක කේත ලිවීම සඳහා භාෂාවක් විය. පර්ල්, ජාවා, පයිතන්, වී.බී.එස්.එස්.පී.

  • සී විද්‍යාත්මක පරිගණකකරණය සඳහා භාවිතා කර ඇත, නමුත් එය මැට්ලැබ් සහ ගණිතමය වැනි වසම්-විශේෂිත භාෂාවන්ගෙන් මෙන්ම SciPy වැනි පුස්තකාල වලින් ද තරඟයට මුහුණ දෙයි . මෙම නිකේතනයේ කේත ලියන බොහෝ දෙනෙක් වෙළඳාමෙන් කේත රචකයන් නොවන අතර C ඔවුන්ට එතරම් සුදුසු නොවේ.

නමුත් C හි නිකේතනය පද්ධති කේතයයි. මෙහෙයුම් පද්ධති කර්නල්. රියදුරන්. ධාවන කාල පුස්තකාල. එම අවකාශය තුළ එය කෙතරම් ස්ථාපිත වී ඇත්ද යත් C ++ පවා එය සෙමින් විස්ථාපනය කරයි.

1970 දශකයේ දී සී නැවත දිනා ගත්තේ යුනික්ස් නිසා, තරඟකාරී භාෂාවන් ඉතා සීමිත හෝ මන්දගාමී වූ නිසාත්, සී කේතය සාධාරණ ලෙස අතේ ගෙන යා හැකි යැයි සැලකූ නිසාත් (බොරු, එසේ වුවද). නමුත් අද එහි ඇති ලොකුම වාසි අතර සම්බන්ධයක් නැති අතර ප්‍රධාන වශයෙන් දශක ගණනාවක සිට එහි ස්ථානය ආධිපත්‍යය දරයි. සී සඳහා හොඳ මෙවලම් තිබේ: සම්පාදකයින් ප්‍රශස්තිකරණය කිරීම, කර්නල් නිදොස්කරණය, ධාවක කේතයේ දෝෂ සොයා ගැනීම සඳහා stat ලදායී ස්ථිතික විශ්ලේෂණය යනාදිය. C කේත කරන්නේ කෙසේදැයි දන්නා සහ C හි ගැටළු සහ අන්තරායන් මොනවාදැයි දන්නා ක්‍රමලේඛකයන් සමූහයක් ඇත.

දිගු කාලීනව, මෙම ස්ථානය පහව යන්නේ නැත; සහ සී හට ගැටළු කිහිපයක් ඇත. එහෙත් ඕනෑම නවකයෙකුට තරඟ කිරීම තවමත් අතිශයින් දුෂ්කර වනු ඇත.


9
C තවමත් සේවාදායක කේතය සඳහා බහුලව භාවිතා වේ. වෙබය පමණක් නොවේ, බොහෝ ඩීඑන්එස්, ඊමේල් යනාදී සේවාදායකයන් සී හි ලියා ඇත. වෙබය සඳහා වුවද, අපාචේ සී හි ඇත.

ortbortzmeyer: අපාචේ වයසයි. මම කියන්නේ නැහැ එය ප්‍රයෝජනවත් නොවන බව හෝ අතිරික්තයක් ඇති බව, එය නිර්මාණය වී ඇත්තේ සී වන විට පමණක් වන අතර හොඳ විකල්ප බොහොමයක් නොතිබුණි.
මැකේ

1
විද්‍යාත්මක පරිගණනය සඳහා සී “විශාල සුදුසුකමක් නොවේ” යැයි ඔබ සිතන්නේ මන්දැයි මට කුතුහලයක් ඇත. පයිතන් වැඩ කිරීමට වඩා ප්‍රසන්න බව පිළිගත හැකි නමුත් වේගවත් කේතයක් අවශ්‍ය වූ විට සී යනු alternative න විකල්පයක් බව මට පෙනී ගොස් ඇති අතර හැකි බොහෝ විකල්ප (සී ++) විශාල ප්‍රමාණයක් මේසය වෙත ගෙන එන්නේ නැත. .
ෆොමයිට්

1
ඉන් ඔබ්බට, සී හි ලියා ඇති SciPy / NumPy යනාදියෙහි ඇති දේවල් දැන ගැනීම ප්‍රයෝජනවත් වේ.
ෆොමයිට්

1
P එපිග්‍රෑඩ් සමහර විට සී ඔබට ස්ථිර විකල්පයකි. නමුත් සී හි සුපිරි ඉගෙනුම් වක්‍රයක් ඇත, විශේෂයෙන් කේතීකරණයේ පසුබිමක් නොමැති පුද්ගලයින් සඳහා. විශේෂයෙන්, සමහර විට එය බිඳ වැටෙන අතර, ඔබ කෝඩරයක් නොවේ නම් එය හදුනා ගැනීමට ඔබට එතරම් බලාපොරොත්තුවක් නැත. ගණිතය විශාල දේවල් ගණනක් ලිවීමට පහසු කරවන අතර ඔබ අවසන් කරන්නේ සිය ගණනක සාධකය අනුව අඩු කේතයකින් ය. එය කඩා වැටෙන්නේ නැත.
ජේසන් ඔරෙන්ඩෝෆ්

25

ඉතා හොඳ අදහස් දැක්වීමක්: භාෂාවක් වේගවත් කිරීමට සහ “යන්ත්‍රයට සමීප” කිරීමට විවිධ ක්‍රම නොමැත - සී එය හොඳින් කළ අතර, එය වැඩිදියුණු කිරීමට ඉඩක් නැත.

මුල් පිළිතුර:

ක්‍රියාත්මක කිරීමට වේගවත්ද? නැතහොත් දේවල් ලිවීමට වේගවත්ද?

භාෂා ක්‍රියාත්මක කිරීමට වේගවත් හෝ මන්දගාමී නොවේ, නිශ්චිත ක්‍රියාත්මක කිරීම් වේ. වෙහෙස මහන්සි වී වැඩ කිරීම අනෙක් අයට වඩා වේගයෙන් සලකා බැලිය හැක්කේ එය කෙසේ හෝ වේගවත් ක්‍රියාත්මක කිරීමක් පහසු කරවන විට පමණි . නොවරදවාම, එයින් අදහස් වන්නේ "යන්ත්‍රයට සමීප" යන්නයි. නමුත් යන්ත්‍ර වේගයෙන් on ාතීය ලෙස වේගවත් වීමත් සමඟ එය කාලයත් සමඟ ක්‍රමයෙන් අඩු උනන්දුවක් දක්වයි. ඒ වෙනුවට, සංවර්ධනයේ පහසුව සහ වේගය සහ අතේ ගෙන යා හැකි බව වඩා වැදගත් වී ඇති බැවින් “වඩා හොඳ” යන්නෙන් අදහස් වන්නේ “යන්ත්‍රයෙන් away ත්වීම” යන්නයි . පසුගිය දශක 5 තුළ භාෂා නිර්මාණයේ සියලු උත්සාහයන් එම දිශාවට ගමන් කර ඇත.

එහෙයින් ඔබ සිටින්නේ: යන්ත්‍රයට සමීප වන අතර C ට වඩා වේගවත් භාෂා පවතී; ඒවා C ට පෙර පැමිණි අයයි: එකලස් කරන්නා, ෆෝට්රාන්. සමහර විට අමතක වූ ඒවා විය හැකිය.


@ මයිකල් - නමුත් සුපිරි සිහින්, සුපිරි වේගවත් වැඩසටහන් සඳහා තවමත් වෙළඳපොළක් ඇත, විශේෂයෙන් මෙම සියලුම ජංගම උපාංගවල ප්‍රහාරයත් සමඟ ... සී තවමත් මෙම සමහර උපාංග සඳහා හොඳම විකල්පය වන්නේ ඇයි, එනම් තවත් එකක් නැත්තේ ඇයි? .NET-vs-Python-esque වැනි එම මට්ටමේ භාෂාවෙන්?
ජේසන්

5
ලිස්ප්. නිදිමත නමුත් අමතක නොවේ! :)

2
Ason ජේසන්: ප්‍රශ්නය නම්, ඔබට අතේ ගෙන යා හැකි එකලස් කරන්නන් කීයක් අවශ්‍යද? සී හොඳින් දන්නා අතර වේගයෙන් ක්‍රියාත්මක කිරීම සමඟ භාෂාවක් ලිවීම ඉතා අපහසුය, එබැවින් කරදර වන්නේ ඇයි? ඇඳුම් කට්ටලයේදී, අවශ්‍යතාවයක් නැත, වෙළඳපොළක් නැත, පෙළඹවීමක් නැත.

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

1
-1 සඳහා "සහ එය වැඩිදියුණු කිරීමට ඉඩක් නැති තරම්ය" - කාර්ය සාධනයට බලපෑමක් නොකර C / C ++ වැඩි දියුණු කිරීමට ඕනෑ තරම් ඉඩ තිබේ.
බ්ලූරාජා - ඩැනී ප්ලග්ගොෆ්ට්

21

ෆෝට්‍රාන් සංඛ්‍යාත්මක කාර්යයන් සඳහා සී ට වඩා වේගවත් වන්නේ එය මතක යොමු කිරීම් හසුරුවන ආකාරය නිසාය (සී පොයින්ටර්ස් ප්‍රශස්තිකරණය කිරීම වඩා දුෂ්කර ය). මැට්ලැබ් සහ නැම්පි වැනි දේවල පාදයේ ඇති හෙවිවේට් සංඛ්‍යාත්මක පුස්තකාල තවමත් ෆෝට්රාන් හි ලියා ඇත.

අනෙක් අතට, C ++ සී තරම් වේගවත් විය හැකි නමුත් තවත් බොහෝ උසස් ක්‍රමලේඛන විශේෂාංග ඇත. 80 දශකයේ මැද භාගයේ සිට එය වඩාත් නව භාෂාවකි.


1
C ++ තවමත් යාවත්කාලීන වෙමින් පවතී.
GManNickG

5
@ ජී මෑන්: සී.


3
මම වැරදියි නම් මාව නිවැරදි කරන්න, නමුත් C99 restrictදර්ශකයෙහි ෆෝට්රාන් යන අන්වර්ථ නාමයන් සමාන නොවේද? වෙනසක් ඇති කළ හැකි වෙනත් මොනවාද?

9
කේතනය කර ඇති දේ සහ එය කරන්නේ කවුරුන්ද යන්න මත පදනම්ව ෆෝට්රාන් සී ට වඩා වේගවත්ය යන අදහස තරමක් මිථ්‍යාවක් යැයි මම සිතමි. හෙවිවේට් සංඛ්‍යාත්මක පුස්තකාල ෆෝට්රාන්හි ඇති වීමට හේතුව ෆෝට්රාන් වේගවත් වීම නිසා නොව, චාරිත්ර මුලින් ෆෝට්රාන් හි කේතනය කර ඇති නිසාත්, ස්වල්ප දෙනෙකුට ස්නායුව හෝ නැවත ලිවීමට අවශ්ය නිසාත් ය. මෙම ඇල්ගොරිතම ලිවීමට හා විමසා බැලීමට ගණිත-ගුරු වරුන් සුළු පිරිසක් ෆෝට්රාන් හි සතුටට පත්වන අතර වෙනස් වීමේ අවශ්‍යතාවයක් නොපෙනේ, විශේෂයෙන් ඔවුන් සිතන්නේ ෆෝට්රාන් වේගවත් බවය.
මයික් ඩන්ලාවි

16

මොන මගුලක්ද, මම මගේ ඩොලර් 0.02 සමඟ සම්බන්ධ කරමි.

බොහෝ අවස්ථාවන්හීදී “පද්ධති” භාෂා සහ ඉහළ මට්ටමේ භාෂා අතර සැබෑ හෝ වටහාගත් වෙනසක් ඇත. බොහෝ කාර්යයන් සඳහා, පයිතන්, රූබි වැනි භාෂා වැඩ කිරීමට වඩා සරල යැයි කිසිවෙකු (අවම වශයෙන් බොහෝ දෙනෙක් වත්) තර්ක නොකරන බැවින් මම බොහෝ "ඉහළ මට්ටමේ" භාෂාවන් නොසලකා හරිමි.

සී නිර්මාණය කර ඇත්තේ පද්ධති භාෂාවක් ලෙස වන අතර එයින් අදහස් වන්නේ එය යුනික්ස් මෙහෙයුම් පද්ධතිය ලියා ඇති භාෂාව ලෙස නිර්මාණය කර ඇති බවයි. එනිසා එය සරල, බලවත් හා වේගවත් ලෙස නිර්මාණය කර ඇත. පද්ධති නොවන ක්‍රමලේඛකයින් බොහෝ විට භයානක යැයි සලකන සරල භාෂාවක් මඟින් බලය ලබා ගනී: දර්ශකයන්, අතින් මතක කළමනාකරණය යනාදිය. දැනටමත් සඳහන් කර ඇති පරිදි, සී තරමක් සරල ය. කේ ඇන්ඩ් ආර් යනු මගේ ක්‍රමලේඛන රාක්කයේ ඇති කුඩාම පොතයි (ඕ'රෙයිලි පොකට් යොමු ගණන් නොගනී) එය මගේ රූබි පොකට් යොමුවලට වඩා සුළු වශයෙන් “විශාල” ය. සී තරමක් බලවත් ය. ඔබට දෘඩාංග සමඟ කතා කිරීමට අවශ්‍ය නම්, අතින් පරීක්ෂා කර මතකයෙන් ඇඹරීම යනාදිය C ට හැකියාවක් ඇත.

ක්‍රමලේඛකයෙකුගේ දෘෂ්ටි කෝණයෙන් බලන කල, සී එතරම් සරල නැත. වේගය සහ බලය පැමිණෙන්නේ අතින් මතක කළමනාකරණයේ මිලට වන අතර භාෂාවට වැඩි OOP සහය නොලැබේ. සී ++ (මගේ ප්‍රියතම භාෂාව නොවේ) ක්‍රමලේඛකයෙකුගේ දෘෂ්ටිකෝණයෙන් වඩා සරල ය, නමුත් සම්පාදකයාගේ දෘෂ්ටිකෝණයට වඩා බෙහෙවින් අඩු ය. පරමාර්ථය-සී (සමහර විට මගේ ප්‍රියතම භාෂාව) එකම වෙළඳාමක් ඇති අතර, භාෂාව සරල ලෙස තබා ගැනීමේ දිශාවට මඳක් නැඹුරු වේ (කසළ එකතු කිරීම පරමාර්ථ-සී වෙත නවකයෙකි, උදාහරණයක් ලෙස). අප බොහෝ දෙනා දන්නා පරිදි පරිගණක ලෝකය සී හි ලියා ඇති බැවින්, පුළුල්, සම්මත කර ගැනීම ලබා ගැනීම නව, වඩා සංකීර්ණ නමුත් “පහසු” භාෂාවන්ට අපහසුය.

සමහර අවස්ථා වලදී, විශේෂයෙන් වර්තමාන “ප්‍රමිතිය” සී තරම් “හොඳ” වන විට, කම්පනය ලබා ගැනීම සඳහා “වඩා හොඳ” (සී ++, පරමාර්ථ-සී, ඩී යනාදිය) සඳහා විශාල දිරිගැන්වීමක් නොමැත. "වඩා හොඳ" දෙයක් නිර්මාණය කිරීමට පවා ප්‍රමාණවත් දිරිගැන්වීමක්.

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.