සෑම භාෂාවක්ම C හි ලියා තිබේද?


186

සමහර විට විවිධ භාෂාවලින් (C / C ++, C #) වැඩසටහන් කරන අතරතුර, මෙම සිතුවිල්ල මගේ මතකයට එයි:

  • සෑම භාෂාවක්ම සී ක්‍රමලේඛන භාෂාවෙන් ලියා තිබේද?
  • සී භාෂාව සියලු භාෂාවල මව / පියාද?
  • සෑම සංකල්පයක්ම ( OOP , ආදිය) සියල්ල C හි ක්‍රියාත්මක වේද?

මම නිවැරදි දිශාවටද?


58
@XLAnt: බොහෝ (සමහර විට බොහෝ විට) සී සම්පාදකයින් සී හි ලියා ඇත.
ජෝර්ග් ඩබ් මිට්ටාග්

32
E නීල්: සී ++ කිසිවක් සම්පාදනය නොකරයි. සී ++ යනු භාෂාවකි. භාෂා සම්පාදනය නොකරයි, සම්පාදකයින් එසේ නොකරයි.
ජෝර්ග් ඩබ් මිට්ටාග්

12
@XLAnt: මම හිතන්නේ නැහැ. නමුත් පළමු ඔබෙරොන් සම්පාදකයා ඔබෙරොන්හි ලියා පසුව අතින් පරිවර්තනය කරන ලදි (එය සම්පාදනය කිරීමේ ආකාරයකි, මම අනුමාන කරමි) ෆෝට්රාන් වෙත. මෙම සම්පාදකයා පසුව ෆෝට්රාන් සම්පාදකයෙකු සමඟ සම්පාදනය කරන ලද අතර, එහි ප්‍රති ing ලයක් ලෙස ඔබෙරොන් සම්පාදකයා ඔබෙරොන් සම්පාදකයා සම්පාදනය කිරීම සඳහා භාවිතා කරන ලද අතර එතැන් සිට ඊළඟට සම්පාදනය කිරීම සඳහා සම්පාදකයාගේ පෙර අනුවාදය භාවිතා කරන ලදී.
ජෝර්ග් ඩබ් මිට්ටාග්

18
E නීල් ඇත්තෙන්ම එය එතරම් ප්‍රබල නොවේ. එය නිවැරදි ය: භාෂාවක් යනු පිරිවිතරයකි. එය සම්පාදකයෙකු ලෙස, පරිවර්තකයෙකු ලෙස, දෙමුහුන් යනාදිය ලෙස ක්‍රියාත්මක කළ හැකිය. ඔබට භාෂාවක් සඳහා සම්පාදකයෙකු ලිවිය හැකිය , නමුත් සම්පාදකයා භාෂාව නොවේ. මම හිතන්නේ ගැටලුව අවුල් සහගත වන්නේ එහි විමර්ශන ක්‍රියාත්මක කිරීම හැර වෙනත් තැනක කිසිදු පිරිවිතරයක් ලියා නැති භාෂා ඇති බැවිනි . නමුත් එවැනි අවස්ථාවන්හිදී පවා මම තර්ක කරන්නේ භාෂාව (එනම් කතුවරයාගේ / ඇයගේ මනසෙහි තිබූ පරමාදර්ශය) ක්‍රියාත්මක කිරීම / සම්පාදකයා / පරිවර්තකයා / යනාදියට වඩා වෙනස් බවය.
ඇන්ඩ්‍රස් එෆ්.

21
Downvoters: මෙය පැහැදිලි පිළිතුරක් සහිත තරමක් සාධාරණ ප්‍රශ්නයකි. පිළිතුර “නැත” යන්න පහත් කොට සැලකීමට හේතුවක් නොවේ. ඒ වෙනුවට, පිළිතුරු දීම සහ පැහැදිලි කිරීම සලකා බලන්න.
ඇන්ඩ්‍රස් එෆ්.

Answers:


211

නොමැත.

OCaml, Haskell, Scheme වැනි Lisp උපභාෂා සහ තවත් භාෂා කිහිපයක් විනෝදාංශ භාෂා සංවර්ධනය සඳහා බොහෝ විට භාවිතා වේ.

බොහෝ භාෂාවන් සී හි ක්‍රියාත්මක වන්නේ එය සර්වසම්පූර්ණ භාෂාවක් වන අතර, ලෙක්සර්-පාර්සර් උත්පාදක යන්ත්ර (යක් හා බයිසන් වැනි) වැනි සම්පාදක-ලිවීමේ මෙවලම් හොඳින් වටහාගෙන ඇති අතර එය සර්වසම්පූර්ණ ය.

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

Unrelatedly, OOP වැනි භාෂා රටාවක් ද සාමාන්යයෙන් භාෂාව අඥේයවාදියෙක්. නිදසුනක් ලෙස, ක්‍රියාකාරී උපමාව ගණිතයේ පදනමක් ලෙස (ඇලොන්සෝ පල්ලිය විසින්) වර්ධනය කරන ලද්දේ ඕනෑම ක්‍රමලේඛන භාෂාවක් පැවතීමට බොහෝ කලකට පෙරය. කාර්ය පටිපාටික හා ව්‍යුහාත්මක ක්‍රමලේඛන ආදර්ශයන් ජෝන් වොන් නියුමාන් වැනි න්‍යායවාදීන්ගේ ගණිතමය කාර්යයන්ගෙන් එළියට පැමිණියේය. වස්තු-දිශානතිය විවිධාකාර හා සම්බන්ධ නොවූ උත්සාහයන් කිහිපයකින් වර්ධනය කරන ලදී , සමහරක් ලැම්බඩා කැල්කියුලස් (ක්‍රියාකාරී ආදර්ශය) සහ ඇලන් කේ විසින් ස්මාල්ටෝක් ඇට් සෙරොක්ස් පාර්ක් වැනි ගතික ක්‍රමලේඛන පද්ධති වලින් සමහරක්.

සී යනු හුදෙක් කතාවේ ඉතා කුඩා කොටසකි, මෙම අදහස් ඇති වී දශක ගණනාවකට පසුව.


40
පළමු සී සම්පාදකයින් සී හි ලිවිය නොහැකි බව සත්‍යයක් වුවත්, එය දැන් කළ හැකි ය.
රීරාබ්

17
@eirab ධනාත්මක සහ සත්‍යය. GCC C හි ලියා ඇති අතර GCC භාවිතා කර සාමාන්‍යයෙන් සම්පාදනය කරනු ලැබේ.
ඩාර්ක්හෝග්

9
ඇත්ත වශයෙන්ම, GCC දැන් C ++ වලින් නැවත ලියා ඇත, නමුත් එය පළමු C සම්පාදකයා C හි ලිවිය නොහැකි වීම තරම් වැදගත් නොවේ
ග්‍රේෆේඩ්

10
regreyfade gcc කාලයක් තිස්සේ C නොවේ. එය "දැන් නැවත ලිවීම" නොවේ "එය" වසර දෙකකට වැඩි කාලයක් තිස්සේ C ++ හි ලියා ඇත "(එය ඊටත් වඩා පැරණි වුවද, ඒකාබද්ධය සිදු වූ විට එය C ++ වෙත ගෙන යන ලදී).

13
@ ග්‍රේෆේඩ් "සී නොව සී ++ විශේෂාංග සහිතව" සී ++ අර්ථ දැක්වීමේ වර්ග කිරීම නොවේද?
කුටුලුමයික්

91

සෑම භාෂාවක්ම සී භාෂාවෙන් ලියා තිබේද?

ඒ භාෂාව වියුක්ත ගණිතමය නීති රීති හා සීමා කිරීම් ( "මම ලියන්න නම් සමූහයක් වේ මෙම , බව සිදු"). එය කිසිම දෙයකින් ලියා නැත.

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

උදාහරණයක් ලෙස, forඅයිඑස්ඕ රූබි භාෂා පිරිවිතරයෙන් ප්‍රකාශනයේ පිරිවිතර මෙන්න :

§11.5.2.3.4 forප්‍රකාශනය

සින්ටැක්ස්

  • for-expression for for-variable [මෙහි රේඛීය-පර්යන්තයක් නොමැත] in ප්‍රකාශන do-clause end
  • for-variable වම් පස | බහු-වම්-පැත්ත

අර්ථ නිරූපණය

සඳහා ප්රකාශනය පහත පරිදි ඇගයීමට ලක් වේ:

  1. ප්‍රකාශනය තක්සේරු කරන්න . ප්‍රකාශනය ඇගයීම බිඳීම් ප්‍රකාශනයක් , ඊළඟ ප්‍රකාශනය හෝ නැවත ප්‍රකාශනය මගින් අවසන් කරන්නේ නම් , හැසිරීම නිශ්චිතව දක්වා නැත. එසේ නොමැති නම්, Oඑහි ප්‍රති value ලයක් වශයෙන් ලැබෙන අගය විය යුතුය.
  2. ඉඩ Eඇති විය ප්රාථමික-ක්රමය-පිහිට පැතීමක් ආකෘති ප්රාථමික-ප්රකාශනය [කිසිදු මෙතන රේඛීය ටර්මිනේටර්] .each do | වාරණ-පරාමිතිය-ලැයිස්තුව | වාරණ-ශරීරය end , එම වටිනාකම එහිදී ප්රාථමික-ප්රකාශනය වේ O, එම වාරණ-පරාමිතිය-ලැයිස්තුව යනු වානාවකට විචල්ය වන වාරණ-ශරීරය යනු සංයෝගයක්-ප්රකාශය පිළිබඳ කරන්නද-වගන්තිය .

    තක්සේරු කරන්න E; කෙසේ වෙතත්, සිය වාරණ නම් වාරණ-ශරීරය වේ ද සංයෝගයක්-ප්රකාශය පිළිබඳ කළ-වගන්තිය පිළිබඳ සඳහා ප්රකාශනය මෙම ඇගයීම, එම පියවර ඇ හැර §11.3.3 දී පියවර) සහ පියවර ඊ තුළ ලෙස හැඳින්වේ) 4) ය මෙම ඇමතුම ඇගයීම සඳහා ගනු ලැබේ.

  3. මෙම වටිනාකම සඳහා ප්රකාශනය යාදින්න එහි ප්රතිඵලයක් අගය වේ.

Scala හි අනුකූලතා රීති වලට වඩා වෙනස් උදාහරණයක් මෙන්න:

බහුමාමක වර්ගය [a 1 >: L 1 <: U 1 ,…, a n >: L n <: U n ] T බහුමාමක වර්ගයට අනුකූල වේ [a1>: L ′ 1 <: U ′ 1 ,…, a n >: L ′ n <: U ′ n ] T ′ නම්, L ′ 1 <: a 1 <: U ′ 1 ,…, L ′ n <: a n <: U′n කෙනෙකුට T <: T ′ සහ L i <: L ′ i සහ U ′ i<: U i සඳහා i {{1,…, n} .


සී භාෂාවේ මව / සියලු භාෂාවල පියාද?

නැත, එසේ නොවේ. සී තරමක් තරුණයි. පැරණි භාෂා ගොඩක් තිබේ. කාල චාරිකාව භෞතිකව කළ නොහැකි බැවින්, එම පැරණි භාෂාවන්ට කිසියම් බලපෑමක් කිරීමට සී හට නොහැකි ය.

  • ප්ලැන්කල්කල් (1943)
  • ස්පීඩ්කෝඩින් (1953)
  • ෆෝට්රාන් (1954)
  • අයිපීඑල් (1956)
  • ලිස්ප් (1958)
  • ඇල්ගෝල් (1958)
  • COBOL (1959)
  • ජොවියල් (1960)
  • ඒපීඑල් (1962)
  • සිමුල (1962)
  • SNOBOL (1962)
  • සීපීඑල් (1963)
  • BASIC (1964)
  • පීඑල් / අයි (1964)
  • ආර්පීජී (1964)
  • BCPL (1966)
  • ISWIM (1966)
  • MUMPS (1967)
  • ෆෝර්ත් (1968)
  • ලොගෝ (1968)
  • REFAL (1968)
  • බී (1969)
  • BLISS (1970)
  • පැස්කල් (1971)
  • කේආර්එල් (1971)
  • ස්මාල්ටෝක් (1972)

සී සොයා ගැනීමට පෙර ඒවා සියල්ලම පැවතුනි. තවත් බොහෝ දෙනෙකුට C හි බලපෑමක් නැත. පැස්කල්-භාෂා පවුල (ALGOL-58, ALGOL-60, ALGOL-X, ALGOL-W, PASCAL, Modula-2, Oberon, Oberon-2, Active Oberon, Component Pascal) යනු සම්පූර්ණයෙන්ම වෙනම පෙළපතකි. මුළු ලිස්ප් පවුලම (LISP, Franz Lisp, InterLisp, MacLisp, Scheme, Flavors, LOOPS, CommonLoops, Dylan, CommonLisp, Arc, Clojure, Racket, ආදිය) සම්බන්ධයක් නැත. ක්‍රියාකාරී භාෂා (ISWIM, KRL, Miranda, ML, SML, CAML, OCaml, F #, Haskell, Gofer, Clean) සහ යැපෙන මුළු පවුලම (Agda, Coq, GURU, Idris) හැකිතාක් දුරට C ට වඩා දුරින් පවතී. ස්මාල්ටෝක් පවුලට (ස්මාල්ටෝක්, සෙල්ෆ්, නිව්ස්පීක්, අප, කෝර්ස්), තාර්කික ක්‍රමලේඛන පවුල (ප්ලැනර්, ප්‍රොලොග්, මර්කරි), එස්.කේ.එල් සහ තවත් බොහෝ අය සඳහා ද මෙය අදාළ වේ.

සෑම සංකල්පයක්ම (ඕඕපී යනාදිය) සී භාෂාවෙන් ක්‍රියාත්මක වේද?

OO සංකල්ප සහිත පළමු භාෂා සිමියුලා (1960) සහ ස්මාල්ටෝක් (1972), නමුත් වස්තු-නැඹුරුවන පද්ධති 1953 තරම් back ත අතීතයේ සිටම ගොඩනගා තිබුණි (ඒවා එසේ නොකියයි). නැවතත්, එය C පැවතීමට බොහෝ කලකට පෙරය, එබැවින් OO හට C සමඟ කිසිදු සම්බන්ධයක් තිබිය නොහැක.



2
ftleftaroundabout: එය විශිෂ්ට බ්ලොග් පෝස්ට් එකක්, වසර ගණනාවක් තිස්සේ මගේ ප්‍රියතම එකක්.
ජෝග් ඩබ් මිට්ටාග්

1
RanFrancisDavey: ස්තූතියි. මම මතකයෙන් ලැයිස්තුව සම්පාදනය කිරීමට පටන් ගත්තෙමි, පසුව විකිපීඩියාවෙන් බැලීමෙන් මට මතක නැති දිනයන් එකතු කළෙමි. ඊට පසු, මම විකිපීඩියාවේ භාෂා කාලරාමුවක් සොයා ගත් අතර, එතැන් සිට තවත් භාෂා කිහිපයක් තෝරා ගතිමි. BCPL පිළිබඳ ලිපියේ 1966 උපුටා දක්වා ඇති නමුත් කාලරාමුව 1967 උපුටා දක්වයි, මම දැනටමත් BCPL එකතු කර ඇති බව මා දුටුවේ නැත. මම අනුපිටපත ඉවත් කරන්නම්.
ජෝර්ග් ඩබ් මිට්ටාග්

1
ඔබේ ලැයිස්තුවේ, "htroF" අක්ෂර වින්‍යාසය පසුපසට නොවේද?
chux - මොනිකා නැවත ස්ථාපනය කරන්න

2
“කාල චාරිකාව භෞතික වශයෙන් කළ නොහැකි ය” - එය අතිශය විවාදාත්මක ප්‍රකාශයකි. ඇත්ත වශයෙන්ම මෙම පිළිතුරේ වටිනාකමෙන් ract ත් නොවේ.
කොන්රාඩ් රුඩොල්ෆ්

50

බොහෝ වැදගත් භාෂාවල හරය බොහෝමයක් C වලින් ලියා ඇත, නමුත් තත්වය වෙනස් වේ:

  • පයිතන් ( සීපයිතන් ) හි විමර්ශන ක්‍රියාත්මක කිරීම සී වලින් ලියා ඇත (නමුත් වෙනත් භාෂාවලින් ලියා ඇති වෙනත් ක්‍රියාත්මක කිරීම් තිබේ, උදා: ජයිතන් / ජාවා, පයිපයි / පයිතන්, අයන්පයිතන් / සී # ...)
  • PHP සෙන්ඩ් එන්ජිම C හි ලියා ඇත
  • සන් මයික්‍රො සිස්ටම්ස් විසින් නිර්මාණය කරන ලද පළමු ජාවා සම්පාදකයා සී හි ලියා ඇත, නමුත් දැන් පන්ති පුස්තකාල නිතරම ජාවා භාෂාවෙන් ලියා ඇත (ඒවා ජාවා වීඑම් භාවිතයෙන් ක්‍රියාත්මක කිරීමට අදහස් කරන බැවින්). JNI (Java Native Interface) භාවිතා කරන සමහර පුස්තකාල අර්ධ වශයෙන් වෙනත් භාෂාවලින් ලිවිය හැකිය, මන්ද ඒවා JVM ට පිටතින් භාවිතා කිරීමට අදහස් කරයි.

    සන් / ඔරකල් වීඑම් සී ++ හි ලියා ඇත. බීඊඒ / වෙබ්ලොජික් / ඔරකල් වීඑම් සී හි ලියා ඇත. නමුත් ජාවා, ලිස්ප්, ස්මාල්ටෝක් (අයිබීඑම්) හි ලියා ඇති ජේවීඑම් ඇත ...

  • Perl බසට ලං ඇත ක්රියාත්මක සී ලියා තිබෙන ප්රධාන භාෂා පරිවර්තක ලෙස, එකට එක්ව, perl බසට ලං හා C ලියා මොඩියුල විශාල එකතුවක් සමග (නමුත් Pugs එම perl බසට ලං 6 පරිගණක බසින් ඉතා සම්පාදක හා භාෂණ Haskell ලියා ඇත)
  • නිල රූබි පරිවර්තකය බොහෝ විට හැඳින්වෙන්නේ මැට්ස්ගේ රූබි ඉන්ටර්ප්‍රෙටර් හෝ එම්ආර්අයි ලෙසිනි. එය සී හි ලියා ඇති අතර එයටම ආවේණික වූ රූබි විශේෂිත අතථ්‍ය යන්ත්‍රයක් භාවිතා කරයි (නමුත් ජාවා අතථ්‍ය යන්ත්‍රය මත ක්‍රියාත්මක වන ජාවා ක්‍රියාත්මක කරන ජේ රූබි ඇත; රුබිනියස්, සී ++ ධාවන වේලාවේදී යන්ත්‍ර කේතයට සම්පාදනය කිරීමට LLVM භාවිතා කරන බයිට්කෝඩ් අතථ්‍ය යන්ත්‍රය ...)
  • R හි 50% ක් පමණ C හි ලියා ඇත
  • ඇත්ත වශයෙන්ම, C යනු C හි ලියා ඇත . (නමුත් පීඩීපී -11 ඉලක්ක කරගත් පළමු සී සම්පාදකයා බී සහ එකලස් කිරීමේ සංයෝගයකි).

C බොහෝ විට තෝරා ගැනීමට හේතු බොහොමයක් ඇත: කාර්ය සාධනය, අතේ ගෙන යා හැකි හැකියාව, අත්දැකීම්.

අවසාන වරට වඩාත්ම වැදගත් දෙය නම්: පයිතන් 1991 දී ආරම්භ කරන ලදි, 1994/1995 දී පීඑච්පී, 1988 දී පර්ල්, 1995 දී රූබි ය. එම වර්ෂවල ජාවා නිකුත්වූ අතර සී ++ තවමත් ප්‍රමිතිගත වී නොමැත.


තරමක් සම්බන්ධ:


5
සම්පාදකයින් / පරිවර්තකයන් ක්‍රියාත්මක කිරීමේ දෘෂ්ටි කෝණයෙන්, සී යනු යොමු ලක්ෂ්‍යයකි. ඊට අමතරව එය පසුකාලීන භාෂාවන් බොහොමයකට සෘජුව හෝ වක්‍රව බලපෑම් කර ඇත (අවම වශයෙන් කෘතිමව).
manlio

2
ඉතා ඉක්මනින්, C # C හි ලියා ඇති බව ඔබට පැවසිය හැකිය! (කාරුණික)
ඩීඑල්

1
බොහෝ මොනෝ (එයට C # සම්පාදකයෙකු සහ බොහෝ / බොහෝ .NET මූලික පන්ති පුස්තකාලය ඇතුළත් වේ) C # හි ලියා ඇත.
චාලි කිලියන්

3
"සී සියලු භාෂාවල මව / පියාද?" යන ප්‍රශ්නයට පිළිතුර. "නැත", එබැවින් සී හි ලියා ඇති උදාහරණ රාශියක් සැපයීම ප්‍රයෝජනවත් යැයි මම නොසිතමි. කවුන්ටර-උදාහරණ උපකාරී වනු ඇත, නමුත් ඔබේ තේරීම් තවමත් සී වෙතින් පැවත එයි. උදාහරණයක් ලෙස, ජාවා, පයිතන් යනාදිය. දැන් ස්වයං සත්කාරක සමාගම් වන අතර, ඔවුන් තවමත් සී වෙතින් ආරම්භ කර ඇත, එබැවින් ඔවුන් සී හි "මුනුබුරු මිනිබිරියන්" වැනි ය. LISP, FORTRAN, ML සහ (ඇත්ත වශයෙන්ම) යන්ත්‍ර කේතය වැනි භාෂා සැබෑ ප්‍රති-උදාහරණ වේ, C කිසි විටෙකත් සම්බන්ධ නොවූ නිසා ඔවුන්ගේ නිර්මාණය.
වෝර්බෝ

2
බොහෝ භාෂාවන්ගේ අභිලාෂය ඇත්ත වශයෙන්ම, හැකි තාක් දුරට ක්‍රියාත්මක විය යුතුය. කෙසේ වෙතත්, බොහෝ භාෂාවන් C මත යැපෙන බව පෙනේ, මන්ද බොහෝ භාෂාවන්ට ප්‍රයෝජනවත් වීමට C ලෙස හැඳින්විය හැකි බැවිනි; නවීන මෙහෙයුම් පද්ධති ඒපීඅයි සහ ප්‍රයෝජනවත් පුස්තකාල වලින් බහුතරයකට සී බන්ධන තිබේ. "ලියා ඇති" යන්නෙන් ඔබ අදහස් කරන දේ ගැනද සැලකිලිමත් විය යුතුය. භාෂා ක්‍රියාත්මක කිරීමේදී සාමාන්‍යයෙන් කොටස් කිහිපයක් ඇත: අවම වශයෙන් සම්පාදකයෙකු සහ ධාවන කාල පද්ධතියක්. මෙහෙයුම් පද්ධතිය සමඟ වඩා හොඳ අතුරු මුහුණතක් සඳහා ධාවන පද්ධති බොහෝ විට C හි ලියා ඇත.
අන්වර්ථ නාමය

10

නැත, සමහර භාෂා පෙර දින සී. සහ බොහෝ ඒවා සී වලින් ස්වාධීනව ක්‍රියාත්මක වේ, උදා: http://en.wikipedia.org/wiki/Lisp_%28programming_language%29 බලන්න


2
ජාවා බොහෝ ක්‍රියාත්මක කිරීම් ඇත, බොහෝ ඒවා ලියා ඇත්තේ ජාවා හි ය. පරමාර්ථ-සී හි GNU ක්‍රියාත්මක කිරීම C හි ලියා ඇත (හෝ C ++, ඒවා මෑතකදී වෙනස් විය, මම විශ්වාස කරමි), LLVM ක්‍රියාත්මක කිරීම C ++ වලින් ලියා ඇති අතර C # හි ලියා ඇති පරිවර්තකයෙකු විය. පයිතන් බොහෝ ක්‍රියාත්මක කිරීම් ඇත, එකක් ආර්පයිතන්හි ද, එකක් ජාවාහි ද, සී # හි ද, සී සී පීඑච්පී හි ද ප්‍රධාන ක්‍රියාත්මක කිරීම් හයක් ඇත.
ජෝර්ග් ඩබ් මිට්ටාග්

1
භාෂා නිර්මාණකරුවන්ට වෙනත් භාෂාවලින් නිසැකවම බලපෑම් ඇති නමුත් ඔවුන් කැමති නම් එම බලපෑම් නොසලකා හැරීමට ඔවුන්ට හැකිය.
ජෝර්ග් ඩබ් මිට්ටාග්

2
Ai ෆයිසාන් රබ්බානි භාෂා යනු සාර්‍ථක, රටා සහ සම්මුතීන් පිළිබඳ සංකල්ප හා තේරීම් ය - බොහෝ විට “භාෂාවක් වෙනත් භාෂාවෙන් (භාෂාවෙන්) නිර්මාණය වී / අනුවර්තනය වී ඇත” නමුත් එය එහි සම්පාදකයාගේ ක්‍රියාත්මක කිරීමේ භාෂාවට සම්පූර්ණයෙන්ම සම්බන්ධ නැත; X භාෂාව Y භාෂාවෙන් ව්‍යුත්පන්න කළ හැකි නමුත් C හෝ වෙනත් ආකාරයකින් ක්‍රියාත්මක කළ හැකිය - බොහෝ විට එය එසේ වේ. මේ අවස්ථාවේ දී, 'සංකල්පීය මුතුන් මිත්තෙකු' වැදගත් වන නමුත් සම්පාදක භාෂාව කාලයත් සමඟ වෙනස් විය හැකි යන්තම් අදාළ තාක්ෂණික සූක්ෂ්මතාවයක් පමණි.
පීටර්ස්

3
සැක සහිත වටිනාකමක් තිබේ නම් එම අන්තිම සබැඳිය - එහි ඇති බොහෝ වැරදි ඇත්ත වශයෙන්ම එය බැරෑරුම් ලෙස සලකයි.
නොදන්නා කෝඩරය

4
E සෙබස්තියන් ගොඩ්ලට්: හොට්ස්පොට් යනු ජාවා භාෂාව ක්‍රියාත්මක කිරීමක් නොවේ. එය ජේවීඑම් බයිට්කෝඩ් භාෂාව ක්‍රියාත්මක කිරීමකි. ඒවා සම්පූර්ණයෙන්ම වෙනස් භාෂා දෙකකි. ජාවා භාෂාවේ වැඩිපුරම භාවිතා javacකරනු ලබන්නේ 100% ජාවා හි මාටින් ඔඩර්ස්කි (ස්කාලා කීර්තියට පත්) විසින් ලියන ලද ඔරකල් ජේඩීකේ / ඕපන් ජේඩීකේ ය . අයිබීඑම් හි ජේ 9, ජයික්ස් සහ 100% ජාවා වලින් ද ව්‍යුත්පන්න කර ඇත. ජාවා හි ලියා නොමැති තරමක් පුළුල් භාවිතයේ ඇති එකම ජාවා සම්පාදකයා වන AFAIK යනු GCJ
Jörg W Mittag

4

මට හැකි නම් මම මෙය අදහස් දැක්වීමක් කරමි, නමුත් මට එසේ කළ නොහැකිය.

සී මෙතරම් සර්වසම්පූර්ණ යැයි පෙනෙන්නට එක් හේතුවක් වන්නේ එය දියුණු කළ මුල්ම භාෂාවන්ගෙන් එකක් වන අතර නවීන භාෂාවන් විශාල ප්‍රමාණයක් එහි ව්‍යුහයෙන් (ජාවා, ගෝ, පීඑච්පී, පර්ල්, ආදිය) පදනම් වී තිබීමයි. ඊට වඩා ස්ථාන.

බොහෝ විට අමතක වූ හේතුවක් නම්, 1973 දී යුනික්ස් සී හි නැවත ලිවීම සහ යුනික්ස් හි බොහෝ පද්ධති ඇමතුම් සී වැඩසටහන් / ශ්‍රිත ලෙස ලබා ගත හැකි වීම නිසා ඒවා එකිනෙකට සම්බන්ධ වී තිබීමයි. සමස්තයක් ලෙස නූතන ක්‍රමලේඛන සංවර්ධනයේ යුනික්ස් ප්‍රබල කොටසක් වූ බැවින්, සී ඒ සමඟම අපකීර්තියට ඇද දැමීය.

ඒ සියල්ල පැවසීමෙන් පසු ඔබේ ප්‍රශ්නයට පිළිතුර “නැත” යන්නයි. C පදනම් වී ඇත්තේ ALGOL නම් භාෂාවෙන් වන අතර ALGOL (FORTRAN, Lisp, COBOL) සහ C සමඟ තරඟකරුවන් බොහෝ දෙනෙක් සිටියහ (කිසිවක් මතකයට එන්නේ නැත). වස්තු-නැඹුරු වැඩසටහන්කරණය, ක්‍රමලේඛන නිර්මාණයේ විශාලතම පරමාදර්ශී මාරුව වන සී සමඟ ආරම්භ නොවීය - සී ++ ඉතා ජනප්‍රිය ඕඕපී භාෂාවක් වුවද (එය මුලින්ම පෙන්වූයේ ලිස්ප් හෝ සිමියුලා 67, ඔබ ඉල්ලන අය අනුව). OOP ආරම්භ වන විට, C යනු එතරම් ජනප්‍රිය භාෂාවක් වූ අතර එය මුලින්ම අවශ්‍ය නොවීය - එය කොතරම් ජනප්‍රියද යත්, C ++ “ප්‍රසාරණය”, කථා කිරීමට නම්, ප්‍රාථමික OOP භාෂාවන්ගෙන් එකක් බවට පත්විය. එය නවීන භාවිතයේ පවතින්නේ එහි ප්‍රබල මතක පාලන අංගයන් නිසාය (ඔබේ ව්‍යුහයන් විසින් නිර්මාණය කරන ලද මතකය ඔබට කෙලින්ම වෙන් කර වෙන් කළ හැකිය), තද මතක අයවැය (වීඩියෝ ක්‍රීඩා සිතන්න) සහ එහි ඉහළ ප්‍රශස්තිකරණය කළ සම්පාදකය (පැහැදිලිවම සම්පාදකයා මත පදනම්ව) මත වැඩසටහන් නිර්මාණය කිරීමට එයට ඉඩ දෙයි. ජාවා JIT සම්පාදනය සහ භාෂා මතක කළමණාකරුවන් වඩාත් දියුණු වීමත් සමඟ මෙම අංග පවා නැති වී යන බව පිළිගත යුතුය.


1
"සී ඇල්ගෝල් නම් භාෂාවෙන් පදනම් වී ඇත" යන සැක සහිත ප්‍රකාශයක් හැරුණු විට , විශේෂයෙන් ඉහළ පිළිතුරුවලින්, පෙර පිළිතුරු වලින් පැහැදිලි කර ඇති කරුණු වලට වඩා සැලකිය යුතු කිසිවක් මෙය ඉදිරිපත් නොකරන බව පෙනේ
gnat

4
ALGOL හි C හි පදනම සැක සහිත ය ... cm.bell-labs.com/who/dmr/chist.html , en.wikipedia.org/wiki/C_%28programming_language%29 බලන්න )
වන්නබෙකෝඩර්

මෙම සත්ය කතාව තවත් බොහෝ සංකීර්ණ හා වඩා රසවත් ය; මෙහි සඳහන් කර ඇති ආකාරය
කයන්ට

3

පැහැදිලිවම නැහැ. C මීට පෙර නොතිබුනේ නම් පළමු C සම්පාදකය C හි ලිවිය හැක්කේ කෙසේද? මෙය කුකුළු මස් හා බිත්තර ගැටලුව නොවේ.

බූට්ස්ට්‍රැපින් ලෙස හැඳින්වෙන භාෂාවක පළමු සම්පාදකයා ලිවීමට බොහෝ ක්‍රම තිබේ

එපමණක් නොව බොහෝ සම්පාදකයින් ස්වයං සත්කාරකත්වය ලබා ගැනීමට උත්සාහ කරයි , නැතහොත් එය තම භාෂාව සම්පාදනය කරයි, ප්‍රධාන වශයෙන් භාෂාව සහ සම්පාදකයා ප්‍රවර්ධනය කිරීම සඳහා


13
පළමු Oberon සම්පාදක විය Oberon ලියා. ඔබ මහාචාර්යවරයකු වන අතර ඔබ වෙනුවෙන් සම්පාදකයා අතින් පරිවර්ථනය කරන ශිෂ්‍යයන් විශාල ප්‍රමාණයක් සිටී නම් (මහාචාර්ය වර්ත් සතුව තිබූ) එය ඉතා හොඳයි.
ජෝර්ග් ඩබ් මිට්ටාග්

Link ඉහත සම්බන්ධ කර ඇති බූට්ස්ට්‍රැපිං ලිපියේ සඳහන් ජෝර්ජ්, එබැවින් මෙම ප්‍රශ්නය සී ගැන වන අතර සී සම්පාදකයෙකු ඒ ආකාරයෙන් ලියා නැති නිසා මම එය ලිවීමට කරදර
නොවෙමි

15
@ ජෝර්ග් ඩබ්ලිව් මිට්ටාග් - පළමු ස්වයංක්‍රීය ඔබෙරොන් සම්පාදකයා ලියා ඇත්තේ ඔබෙරොන්හි ය. ඇත්ත වශයෙන්ම පළමු ඔබෙරොන් සම්පාදකයා සිසුන් සමූහයකි.
nnnnnn

4
nnnnnn: මම මෙම "ශිෂ්‍ය සමූහය" පරිවර්තකයෙකු ලෙස සලකමි, සම්පාදකයෙකු නොව.
Paŭlo Ebermann

5
@ Paŭlo Ebermann තවත් මානව අංගයක් එකතු කිරීම සඳහා: “පරිගණකය” මුලින් රැකියා මාතෘකාවක් විය .
chux - මොනිකා නැවත ස්ථාපනය කරන්න

2

C හි ලියා නොමැති සමහර ක්‍රමලේඛන භාෂාවන් ලැයිස්තුවක් මෙන්න, ඒවා ක්‍රියාත්මක කරන භාෂා සමඟ :

  • හස්කල් - හැස්කෙල්
  • ඉඩ්‍රිස් - හැස්කෙල්
  • ඇඩ්ගා - හැස්කෙල්
  • ගැටුම - හස්කල්
  • PureScript - හැස්කෙල්
  • එල්ම් - හැස්කෙල්
  • බුධ - බුධ
  • මලකඩ - මලකඩ (මුලින් OCaml)
  • යන්න යන්න
  • ස් ry ටික - ස් ry ටික
  • OCaml - OCaml
  • Frege - Frege + Java
  • හැක්ස් - ඕකාම් + හැක්ස්
  • පරිමාණය - පරිමාණය
  • ෆුතාර්ක් - හැස්කෙල්
  • ATS - ATS

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

දෙවනුව, සී යනු “සියලු ක්‍රමලේඛන භාෂාවල මව / පියා” ද යන්න පිළිබඳ ඔබේ ප්‍රශ්නයට පිළිතුරු සැපයීම - ඇත්ත වශයෙන්ම නොවේ. සී එය දර්ශනය වන විට හොඳින් සැලසුම් කරන ලද භාෂාවක් වූ අතර, එය පසුව වෙනස් දේ කිරීමට ගිය භාෂා නිර්මාණකරුවන්ට බලපෑම් කර ඇති බවට සැකයක් නැත. නමුත් දවස අවසානයේදී, හැස්කෙල් සී වෙතින් ඉවත්ව යන්නේ හැකි සෑම ආකාරයකින්ම ය. සීගේ වයස අවුරුදු 45 ක් වන අතර මේ අතරතුර වඩා හොඳ දේ කිරීමට අප ඉගෙන ගැනීම පුදුමයක් නොවේ.

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


සී කිසි විටෙකත් “ඇදහිය නොහැකි තරම් හොඳින් සැලසුම් කරන ලද භාෂාවක්” නොවීය. අද අප දකින ඉන්නන් මුල සිටම ඉන්නන් බව දැන සිටියේය. එහෙත්, සංවර්ධක-හිතකාමී යුනික්ස් මෙහෙයුම් පද්ධතියේ මව් භාෂාව වීමට එය ප්‍රමාණවත් වූ අතර, බෙල් ලැබ්ස් යුනික්ස් විශ්ව විද්‍යාල වෙත තල්ලු කිරීමෙන් පසුව, සී / යුනික්ස් පරිගණක වෘත්තිකයින්ගේ පරම්පරාවක ප්‍රියතම භාෂාවක් / මෙහෙයුම් පද්ධතියක් බවට පත්විය.
සොලමන් මන්දගාමී

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

Lisp Macros C ට වඩා බෙහෙවින් යහපත් වූ අතර ALGOL සහ Smalltalk හි කේත සංවිධානය කිරීමට උපකාරී වන කොටස්, වසා දැමීම් සහ කැදැලි කාර්යයන් තිබුණි. ඇත්ත වශයෙන්ම ලිස්ප් එකලස් කිරීම සඳහා මැක්‍රෝ ප්‍රොසෙසරයක් ලෙස භාවිතා කළ හැකි අතර මුල් සී. සිමියුලාට වඩා කෙටි හා වේගවත් (එස්-ප්‍රකාශන අභිරුචි සැකසුම්) කේතයක් නිර්මාණය කිරීමට ඉඩ තිබුණි. ලිස්ප්, ඒපීඑල් සහ ස්මාල්ටෝක් සතුව “ෂෙල් වෙඩි” තිබී ඇති අතර ඒවා යුනික්ස් හි “ෂ” එදිරිව “සී” මෙන් නොව පූර්ණ ක්‍රියාකාරී (ෂෙල් සහ වැඩසටහන් අතර එකම කේතයක්) විය. Lisp (rplaca / rplacd) හි දර්ශකයන් පහසු විය.
aoeu256

C හි ඇති ලොකුම වාසිය නම් C සඳහා "සම්පාදක" සෑදීම පහසු වීමයි, එබැවින් එය වඩාත් පහසුවෙන් පැතිර යා හැකිය ... වෛරසයක් වැනි ය, සහ C ට ස්තූතියි නූතන ක්‍රමලේඛකයන්ට වැඩසටහන් ගොඩනඟන්නේ කෙසේද යන්න පිළිබඳ හෝඩුවාවක් නොමැත. . පසුගාමී අනුකූලතාව සඳහා සී කේතය ධාවනය කිරීමට CPU.
aoeu256

1

ක්‍රමලේඛන භාෂාවන් යනු සාමාන්‍යයෙන් සමහර ඉංග්‍රීසි ලේඛනයක ලියා ඇති පිරිවිතරයන් (මෘදුකාංග නොවේ!) (සමහර විධිමත් කිරීම සමඟ, උදා: බොහෝ වාක්‍ය ඛණ්ඩ සඳහා ඊබීඑන්එෆ් ; සමහර විට ඒවායේ අර්ථ නිරූපණය ද අර්ධ වශයෙන් විධිමත් කරනු ලැබේ).

උදාහරණයක් ලෙස, C11 අර්ථ දැක්වෙන්නේ n1570 (ඔබ කියවිය යුතු) ය. යෝජනා ක්‍රමයේ සමහර උපභාෂාව R5RS මගින් අර්ථ දක්වා ඇත (ඔබද කියවිය යුතුය, එය ඉතා හොඳින් ලියා ඇත).

ක්‍රමලේඛන භාෂා සමහර මෘදුකාංග මඟින් ක්‍රියාත්මක කළ හැකිය . සමහර විට එම මෘදුකාංගය ක්‍රමලේඛන භාෂාවෙන් ලියා ඇති සම්පාදකයෙකි. ඇරඹුම් සම්පාදක ගැන කියවන්න .

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

බොහෝ විට (නමුත් සෑම විටම නොවේ) ධාවන කාල පද්ධතිය අර්ධ වශයෙන් C හි ලියා ඇත (විශේෂයෙන් කසළ එකතු කරන්නා ).

සිටින බව දැනුම් ඇටකටු සම්පූර්ණයෙන්ම ම ලියන ලද යෝජනා ක්රමය සම්පාදක හා ධාවන වේ (සහ ඔබ සම්පූර්ණ ලෙස ගලවා ක්රියාවට තවත් බොහෝ උදාහරණ සොයා ගත හැකි).

BTW සම්පාදකයින්ගේ ඉලක්ක භාෂාව ලෙස C භාවිතා කිරීම පහසුය .

අද, බොහෝ ක්‍රමලේඛන භාෂා ක්‍රියාත්මක කිරීම නිදහස් මෘදුකාංග හෝ විවෘත ප්‍රභවයකි . ඔවුන්ගේ ප්‍රභව කේතය අධ්‍යයනය කිරීමට (සහ සමහර විට දායක වීමට) නිදහස් වන්න!

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.