প্রতিটি ভাষা সি লেখা হয়?


180

কখনও কখনও বিভিন্ন ভাষায় প্রোগ্রামিং করার সময় (সি / সি ++, সি #), এই চিন্তা আমার মনে আসে:

  • প্রতিটি প্রোগ্রামিং সি প্রোগ্রামিং ভাষায় লেখা আছে?
  • সি ভাষা কি সব ভাষার জনক / পিতা?
  • প্রতিটি ধারণা ( ওওপি , ইত্যাদি) সমস্তই সিতে প্রয়োগ করা হয়?

আমি কি সঠিক দিকে আছি?


58
@ এক্সএল্যান্ট: অনেকগুলি (সম্ভবত সবচেয়ে বেশি) সি সংকলক সি তে লিখিত আছে
জার্গ ডব্লু মিত্তাগ

32
@ নীল: সি ++ কোনও কিছুর সংকলন করে না। সি ++ একটি ভাষা। ভাষা সংকলন করে না, সংকলকগুলি করে।
Jörg ডব্লু মিট্টাগ

12
@ এক্স্লান্ট: আমি তা মনে করি না। তবে প্রথম ওবেরন সংকলক, উদাহরণস্বরূপ, ওবারনে লেখা হয়েছিল এবং তারপরে হস্তান্তরিত (যা সংকলনের একটি রূপ, আমি অনুমান করি) ফোর্টরনে। এই সংকলকটি তখন একটি ফোর্টরান সংকলক দিয়ে সংকলিত হয়েছিল, ফলে ওবেরন সংকলক ওবেরন সংকলকটি সংকলিত করতে ব্যবহৃত হয়েছিল এবং সেদিক থেকে, সংকলকটির পূর্ববর্তী সংস্করণটি পরেরটি সংকলন করতে ব্যবহৃত হয়েছিল।
Jörg ডব্লু মিটাগ

18
@ নীল এটি সত্যিকারের পেডেন্টিক নয়। এটি সঠিক: একটি ভাষা একটি অনুমান। এটি সংকলক হিসাবে, দোভাষী, একটি হাইব্রিড ইত্যাদি হিসাবে প্রয়োগ করা যেতে পারে আপনি কোনও ভাষার জন্য একটি সংকলক লিখতে পারেন , তবে সংকলকটি ভাষা নয়। আমি অনুমান করি বিষয়টি বিভ্রান্তিকর হয়ে পড়ে কারণ এমন ভাষাগুলি রয়েছে যার জন্য উল্লেখের প্রয়োগ ব্যতীত কোথাও কোনও লিখিত লেখা নেই । তবে সেই ক্ষেত্রেও আমি ভাষাটি বিতর্ক করব (অর্থাত্ লেখকের মনে যে আদর্শ ছিল) বাস্তবায়ন / সংকলক / দোভাষী / ইত্যাদি থেকে আলাদা।
আন্দ্রেস এফ।

21
ডাউনভোটার্স: এটি একটি সুস্পষ্ট উত্তর সহ বেশ যুক্তিসঙ্গত প্রশ্ন। উত্তরটি "না" হ্রাস করার কোনও কারণ নয়। পরিবর্তে, উত্তর এবং ব্যাখ্যা বিবেচনা করুন।
আন্দ্রেস এফ।

উত্তর:


207

না।

ওসিএএমএল, হাস্কেল, স্কিমের মতো লিস্প উপভাষা এবং অন্যান্য বেশ কয়েকটি ভাষা প্রায়শই শখের ভাষার বিকাশে ব্যবহৃত হয়।

অনেকগুলি ভাষা সিতে প্রয়োগ করা হয়েছে কারণ এটি একটি সর্বব্যাপী ভাষা এবং লেক্সার-পার্সার জেনারেটরের মতো সংকলক-লেখার সরঞ্জামগুলি (যেমন ইয়্যাক এবং বাইসন) ভালভাবে বোঝা যায় এবং প্রায় সর্বব্যাপী।

কিন্তু সি নিজেই সি তৈরি করা হয়েছিল যখন এটি প্রথম তৈরি হয়েছিল। এটি প্রকৃতপক্ষে বি ভাষা ব্যবহার করে তৈরি হয়েছিল । পূর্বের ভাষাগুলি (ফোরট্রানের মতো) সাধারণত সি এর অস্তিত্বের অনেক আগেই স্থানীয় আঞ্চলিক ভাষা বা এমনকি মেশিন কোড ব্যবহার করে বুটস্ট্র্যাপ করা হত ।

অবাস্তবভাবে, ওওপির মতো ভাষার দৃষ্টান্তগুলি সাধারণত ভাষা-অজ্ঞাস্তিক। উদাহরণস্বরূপ, কার্যকরী দৃষ্টান্তটি কোনও প্রোগ্রামিং ভাষার অস্তিত্বের অনেক আগেই (অ্যালোনজো চার্চ দ্বারা) গণিতের ভিত্তি হিসাবে বিকশিত হয়েছিল। পদ্ধতিগত এবং কাঠামোগত প্রোগ্রামিং দৃষ্টান্ত জন ভন নিউম্যানের মত তাত্ত্বিকদের গাণিতিক কাজ থেকে বেরিয়ে এসেছিল। অ্যালান কেএর দ্বারা জেরক্স পিএআরসি-তে স্মার্টটালকের মতো কিছু লাম্বডা ক্যালকুলাসের (ফাংশনাল দৃষ্টান্ত) বাইরে এবং কিছুতে গতিশীল প্রোগ্রামিং সিস্টেমের বাইরে কিছু বিভিন্ন এবং সম্পর্কিত সম্পর্কযুক্ত প্রচেষ্টা দ্বারা অবজেক্ট-ওরিয়েন্টেশন তৈরি করা হয়েছিল ।

সি এই গল্পগুলির একমাত্র ছোট্ট অংশ, এই ধারণাগুলি বাস্তবে আসার কয়েক দশক পরে।


40
যদিও এটি সত্য যে প্রথম সি সংকলক স্পষ্টতই সিটিতে লেখা যায় না, এটি সম্ভবত এখনই সম্ভব।

17
@ রিরব পজিবল এবং সত্য। জিসিসি সি তে লেখা হয় এবং জিসিসি ব্যবহার করে সাধারণভাবে সংকলিত হয় ।
দারখোগ

9
অবশ্যই, জিসিসি এখন সি ++ তে নতুন করে লেখা হচ্ছে, তবে এটি
এতটা

10
@greyfade gcc কিছু সময়ের জন্য সি হয়নি। এটি "এখন নতুন করে লেখা হচ্ছে না" এটি "দুই বছরেরও বেশি সময় ধরে সি ++ তে লেখা হয়েছে" (এটি এর চেয়ে পুরনো হলেও এটি যখন মার্জটি ঘটল তখন এটি সি ++ এ স্থানান্তরিত হয়েছিল)।

13
@ গ্রেফ্যাড "সি নয় তবে সি ++ বৈশিষ্ট্য সহ" সি ++ এর সংজ্ঞাটি সাজান?
কুতুলু মাইক

91

প্রতিটি ভাষা সি ভাষায় লেখা হয়?

একটি ল্যাঙ্গুয়েজ বিমূর্ত গাণিতিক নিয়ম এবং সীমাবদ্ধতা ( "যদি আমি লিখি একটি সেট এই , যে ঘটবে")। এটি আসলে কিছুই লেখা হয় নি।

এটি সাধারণত ইংরেজি, গাণিতিক স্বরলিপি এবং সম্ভবত কিছু বিশেষ স্পেসিফিকেশন ভাষার ভাষার একটি আনুষ্ঠানিক উপসেটের মিশ্রণে নির্দিষ্ট করা হয়। সিনট্যাক্স প্রায়ই একটি বৈকল্পিক উল্লেখ করা হয় EBNF বা ABNF

উদাহরণস্বরূপ, forআইএসও রুবি ল্যাঙ্গুয়েজ স্পেসিফিকেশন থেকে প্রকাশের স্পেসিফিকেশনটি এখানে:

.511.5.2.3.4 forএক্সপ্রেশন

বাক্য গঠন

  • ফর-এক্সপ্রেশন for ফর-ভেরিয়েবল [এখানে কোনও লাইন-টার্মিনেটর নেই] in এক্সপ্রেশন ডু-ক্লজ end
  • পরিবর্তনশীল বাম-পাশের | একাধিক-বাম-হাত-পাশ

শব্দার্থবিদ্যা

একটি প্রকাশের জন্য নিম্নলিখিত হিসাবে মূল্যায়ন করা হয়:

  1. এক্সপ্রেশন মূল্যায়ন । যদি এক্সপ্রেশন , পরের-এক্সপ্রেশন বা পুনরায়-প্রকাশের মাধ্যমে অভিব্যক্তির মূল্যায়ন অবসান হয় তবে আচরণটি অনির্দিষ্ট। অন্যথায়, Oফলাফল মান হতে দিন ।
  2. যাক Eহতে প্রাথমিক-পদ্ধতি-আবাহন ফর্মের প্রাথমিক প্রকাশ [কোন লাইন-টারমিনেটর এখানে] .each do | ব্লক-প্যারামিটার-তালিকা | ব্লক-বডি end , যেখানে এর মান প্রাথমিক প্রকাশ হয় O, ব্লক-প্যারামিটার-তালিকা নেই for- পরিবর্তনশীল , ব্লক-বডি হয় যৌগ-বিবৃতি এর Do-দফা

    মূল্যায়ন E; যাইহোক, যদি একটি ব্লক যার ব্লক-বডি হয় যৌগ-বিবৃতি এর Do-দফা এর জন্য প্রকাশ ছাড়া ধাপ গ §11.3.3 পদক্ষেপ) এই মূল্যায়নের সময় বলা হয় এবং ধাপ ঙ) 4) হইবে এই কল মূল্যায়নের জন্য নেওয়া হবে।

  3. এর মান জন্য-অভিব্যক্তি আবাহন ফলে মান।

স্কেলার ধরণের কনফরমেশন নিয়মের থেকে আলাদা উদাহরণ এখানে রয়েছে:

পলিমারফিক টাইপ [এ 1 >: এল 1 <: ইউ 1 ,…, একটি এন >: এল এন <: ইউ এন ] টি পলিমারফিক টাইপ [a1>: এল ′ 1 <: ইউ ′ 1 ,…, এ n >: L ′ n <: U ′ n ] টি ′ যদি, L ′ 1 <: a 1 <: U ′ 1 ,…, L ′ n <: a n <: U′n এর টি আছে : <টি ′ এবং এল আমি <: এল ′ i এবং ইউ ′ i<: ইউ আমি জন্য আমি ∈ {1, ..., এন}


সি ভাষার জননী কি সব ভাষার জনক?

না এটা না. সি বেশ তরুণ। পুরানো ভাষা প্রচুর আছে। যেহেতু সময় ভ্রমণ শারীরিকভাবে অসম্ভব, তাই সি এর পক্ষে সেই পুরানো ভাষাগুলির উপর যে কোনও প্রভাব ছিল তা কেবল অসম্ভব।

  • প্ল্যানকালকাল (1943)
  • স্পিডকোডিং (1953)
  • ফোর্টরান (1954)
  • আইপিএল (1956)
  • লিস্প (1958)
  • অ্যালগল (1958)
  • কোবল (1959)
  • আনন্দময় (1960)
  • এপিএল (1962)
  • সিমুলা (1962)
  • এসএনওবোল (1962)
  • সিপিএল (1963)
  • বেসিক (1964)
  • পিএল / আই (1964)
  • আরপিজি (1964)
  • বিসিপিএল (1966)
  • আইএসবিআইএম (1966)
  • এমএমপিএস (1967)
  • চতুর্থ (1968)
  • লোগো (1968)
  • রেফাল (1968)
  • বি (1969)
  • ব্লাস (1970)
  • পাস্কাল (1971)
  • কেআরএল (1971)
  • স্মলটাক (1972)

সি এর আগে যাঁর অস্তিত্ব ছিল তাদের সকলেরও আবিষ্কার হয়েছিল। এবং অন্যান্য অনেকের মধ্যে সেগুলির প্রভাব নেই, এমনকি এটি বিদ্যমান থাকার পরেও। ভাষার প্যাসিকাল-পরিবার (ALGOL-58, ALGOL-60, ALGOL-X, ALGOL-W, PASCAL, Modula-2, Oberon, Oberon-2, Active Oberon, কম্পোনেন্ট পাস্কাল) সম্পূর্ণ পৃথক বংশ। পুরো লিস্প পরিবার (এলআইএসপি, ফ্রেঞ্জ লিস্প, ইন্টারলিপস, ম্যাকলিস্প, স্কিম, স্বাদ, এলইউপিএস, কমনলুপস, ডিলান, কমনলিস্প, আর্ক, ক্লোজার, র‌্যাকেট ইত্যাদি) সম্পর্কহীন। কার্যকরী ভাষা (আইএসডব্লিউএম, কেআরএল, মিরান্ডা, এমএল, এসএমএল, সিএএমএল, ওক্যামেল, এফ #, হাস্কেল, গোফার, ক্লিন) এবং সম্পূর্ণ নির্ভরশীল-টাইপ করা পরিবার (আগদা, কোক, গুরু, ইদ্রিস) যতটা সম্ভব সি থেকে দূরে। স্মার্টটাক পরিবার (স্মলটালক, সেল্ফ, নিউজপেয়াক, ইউএস, কর্জ), লজিক প্রোগ্রামিং ফ্যামিলি (প্ল্যানার, প্রোলজ, বুধ), এসকিউএল এবং আরও অনেকের ক্ষেত্রে একই কথা সত্য।

প্রতিটি ধারণা (ওওপি ইত্যাদি) সবই সি ভাষায় প্রয়োগ করা হয়?

ওও ধারণাগুলি সহ প্রথম ভাষা হ'ল সিমুলা (১৯60০) এবং স্মলটালক (১৯ 197২), তবে বস্তু-ভিত্তিক সিস্টেমগুলি ১৯৫৩ সাল পর্যন্ত নির্মিত হয়েছিল (এগুলি না বলে)। আবার, সিটির অস্তিত্বের অনেক আগে, তাই ওও সম্ভবত সি এর সাথে কোনও সম্পর্ক রাখতে পারে না O



2
@ লেফট্রাউন্ডেবাউট: এটি একটি দুর্দান্ত ব্লগপোস্ট, যা বছরের পর বছর ধরে আমার অন্যতম প্রিয়।
Jörg ডব্লু মিটাগ

1
@ ফ্রেঞ্চিস্যাডি: ধন্যবাদ আমি স্মৃতি থেকে তালিকাটি সংকলন করতে শুরু করেছি, তারপরে আমি উইকিপিডিয়ায় খোঁজ করে তারিখগুলি আমার মনে নেই। এর পরে, আমি উইকিপিডিয়ায় ভাষার একটি টাইমলাইন পেয়েছি এবং সেখান থেকে আরও কয়েকটি ভাষা বেছে নিয়েছি। যেহেতু বিসিপিএল সম্পর্কিত নিবন্ধটি 1966 উদ্ধৃত করেছে, কিন্তু টাইমলাইনটি 1967 উল্লেখ করেছে, আমি খেয়াল করিনি যে আমি ইতিমধ্যে বিসিপিএল যুক্ত করেছি। আমি নকলটি সরিয়ে ফেলব।
Jörg W Mittag

1
আপনার তালিকায় "htroF" পেছনের দিকে বানান নয়?
chux

2
"সময় ভ্রমণ শারীরিকভাবে অসম্ভব" - এটি একটি অত্যন্ত বিতর্কিত দাবি। অবশ্যই এই উত্তরটির মান থেকে বিচ্যুত হয় না।
কনরাড রুডল্ফ

50

অনেকগুলি গুরুত্বপূর্ণ ভাষার মূল অংশটি সিতে লেখা হয়, তবে বিষয়গুলি পরিবর্তন হয়:

  • পাইথনের রেফারেন্স বাস্তবায়ন ( সিপিথন ) সি-তে লেখা আছে (তবে অন্যান্য ভাষায় লিখিত অন্যান্য প্রয়োগ রয়েছে, যেমন জাইথন ​​/ জাভা, পাইপাই / পাইথন, আয়রন পাইথন / সি # ...)
  • পিএইচপি জেন্ড ইঞ্জিন সি লেখা হয়
  • সান মাইক্রোসিস্টেমস দ্বারা বিকাশ করা খুব প্রথম জাভা সংকলক সি-তে লেখা হয়েছিল, তবে এখন ক্লাসের পাঠাগারগুলি সর্বদা জাভাতে লেখা হয় (যেহেতু তারা জাভা ভিএম নিজেই ব্যবহার করে চালানো হবে)। জেএনআই (জাভা নেটিভ ইন্টারফেস) ব্যবহার করে নির্দিষ্ট কিছু গ্রন্থাগারগুলি আংশিকভাবে বিভিন্ন ভাষায় লেখা যেতে পারে, কারণ তারা জেভিএম ছাড়াই ব্যবহার করার উদ্দেশ্যে রয়েছে to

    সান / ওরাকল ভিএম সি ++ তে লেখা আছে। বিএএ / ওয়েবলজিক / ওরাকল ভিএম সি তে লেখা আছে তবে জাভা, লিস্প, স্মলটালকের (আইবিএম) লিখিত জেভিএম রয়েছে ...

  • পার্ল একটি মূল দোভাষী হিসাবে প্রয়োগ করা হয়েছে, সি-তে লিখিত, একসাথে পার্ল এবং সি-তে লিখিত মডিউলগুলির একটি বৃহত সংগ্রহের সাথে (তবে পার্স 6 প্রোগ্রামিং ভাষার সংকলক এবং দোসর হ্যাসকেলে লেখা)
  • সরকারী রুবি ইন্টারপ্রেটার, যা প্রায়শই ম্যাটজের রুবি ইন্টারপ্রেটার বা এমআরআই হিসাবে পরিচিত, সি তে লেখা হয় এবং এটি নিজস্ব রুবি-নির্দিষ্ট ভার্চুয়াল মেশিন ব্যবহার করে (তবে সেখানে জাআরবি রয়েছে, জাভা বাস্তবায়ন যা জাভা ভার্চুয়াল মেশিনে চলে; রুবিনিয়াস, একটি সি ++ বাইটকোড ভার্চুয়াল মেশিন যা রানটাইম সময়ে মেশিন কোডটি সংকলন করতে এলএলভিএম ব্যবহার করে ...)
  • প্রায় 50% আর সি লেখা হয়
  • এবং, অবশ্যই, সিতে সি লেখা হয়েছিল ! (তবে প্রথম সি সংকলক, পিডিপি -11-র লক্ষ্যবস্তু ছিল বি এবং এসেম্বলারের মিশ্রণ)।

সি প্রায়শই বাছাই করার অনেক কারণ রয়েছে: কার্য সম্পাদন, বহনযোগ্যতা, অভিজ্ঞতা।

সর্বশেষ সম্ভবত সবচেয়ে গুরুত্বপূর্ণ: পাইথন 1991 সালে শুরু হয়েছিল, 1994/1995 সালে পিএইচপি, 1988 সালে পার্ল, 1995 সালে রুবি। সেই বছরগুলিতে জাভা প্রকাশিত হয়েছিল এবং সি ++ এখনও ভাল মানসম্পন্ন হয়নি।


কিছুটা সম্পর্কিত:


5
সংকলক / দোভাষী বাস্তবায়নের দৃষ্টিকোণ থেকে, সি একটি রেফারেন্স পয়েন্ট / হয়েছে। উপরন্তু এটি প্রত্যক্ষ বা অপ্রত্যক্ষভাবে পরবর্তীকালে বহু ভাষাকে প্রভাবিত করেছে (কমপক্ষে সিনট্যাক্টিক্যালি)।
ম্যানলিও

2
খুব শীঘ্রই, আপনি বলতে সক্ষম হবেন যে সি # তে সি লেখা হয়েছিল! (ধরণের)
DLeh

1
বেশিরভাগ মনো (যার মধ্যে একটি সি # সংকলক রয়েছে এবং অনেকগুলি .NET বেস শ্রেণীর পাঠাগার রয়েছে) সি # তে লেখা রয়েছে।
চার্লি কিলিয়ান

3
"সি কি সমস্ত ভাষার জনক / জনক?" প্রশ্নের উত্তর? "না", তাই আমি সি তে লিখিত প্রচুর উদাহরণ সরবরাহ করা সহায়ক বলে মনে করি না পাল্টা-উদাহরণগুলি সাহায্য করবে তবে আপনার পছন্দগুলি এখনও সি থেকে নেমে এসেছে উদাহরণস্বরূপ, জাভা, পাইথন ইত্যাদি থাকলেও etc. এখন তারা স্ব-হোস্টিং করছে, তারা তখনও সি থেকে বুটস্ট্র্যাপড ছিল, সুতরাং তারা সি'র "নাতি-নাতনি" এর মতো, এলআইএসপি, ফরট্রান, এমএল এবং (অবশ্যই) মেশিন কোডের মতো ভাষাগুলি সত্যিকারের পাল্টা উদাহরণ, কারণ সি এর সাথে কখনও জড়িত ছিল না since তাদের সৃষ্টি।
ওয়ার্বো

2
অনেক ভাষার আকাঙ্ক্ষা অবশ্যই নিজের মধ্যে যথাসম্ভব বাস্তবায়ন করা। তবে এটি বেশিরভাগ ভাষা সি এর উপর নির্ভর করে বলে মনে হয় কারণ বেশিরভাগ ভাষাগুলি সিটিকে দরকারী হতে ডাকতে সক্ষম হতে হবে; বেশিরভাগ আধুনিক অপারেটিং সিস্টেমের এপিআই এবং দরকারী গ্রন্থাগারগুলিতে সি বাইন্ডিং থাকে। "লিখিত" দ্বারা আপনি কী বোঝাতে চাইছেন সে সম্পর্কে আপনাকেও যত্নবান হতে হবে। একটি ভাষা প্রয়োগের সাধারণত একাধিক অংশ থাকে: কমপক্ষে একটি সংকলক এবং একটি রানটাইম সিস্টেম। ওএসের সাথে আরও ভাল ইন্টারফেসের জন্য রানটাইম সিস্টেমগুলি প্রায়শই সি তে লেখা হয়।
ছদ্মনাম

10

না, কিছু কিছু ভাষায় প্রাক তারিখ সি এবং অনেক C- এর স্বাধীনভাবে প্রয়োগ করা হয়, যেমন দেখতে http://en.wikipedia.org/wiki/Lisp_%28programming_language%29


2
জাভা অনেক বাস্তবায়ন আছে, বেশিরভাগ জাভা লেখা হয়। অবজেক্টিভ-সি এর জিএনইউ বাস্তবায়ন সিতে লেখা হয়েছে (বা সি ++, তারা সম্প্রতি পরিবর্তিত হয়েছে, আমি বিশ্বাস করি), এলএলভিএম বাস্তবায়ন সি ++ তে লেখা হয়, এবং সেখানে সি # তে দোভাষী দিতেন। পাইথনের অনেকগুলি বাস্তবায়ন রয়েছে, একটি আরপিথনে লেখা আছে, একটি জাভাতে, একটি সিতে #, এবং সিটিতে একটি পিএইচপি'র ছয়টি মূল বাস্তবায়ন রয়েছে, দুটি জাভাতে, দুটি সি #, একটি সিতে এবং একটি সি ++ এ রয়েছে।
Jörg ডব্লু মিত্তাগ

1
ভাষা নং ডিজাইনারগণ অবশ্যই অন্যান্য ভাষার দ্বারা প্রভাবিত, তবে তারা যদি চান তবে সেই প্রভাবগুলিকে উপেক্ষা করে বেছে নিতে পারেন।
Jörg W Mittag

2
@ ফাইজান রাব্বানী ভাষাগুলি সংক্ষেপে ধারণা ও নকশাগুলি, প্যাটার্নগুলি এবং সমঝোতার পছন্দসমূহ - প্রায়শই একটি "ভাষা অন্য ভাষা (ভাষা) থেকে তৈরি করা / তৈরি করা হয়" তবে এটি সম্পূর্ণরূপে এর সংকলকটির প্রয়োগকরণ ভাষার সাথে সম্পর্কিত নয়; ভাষা এক্স ভাষা Y থেকে উদ্ভূত হতে পারে তবে সি বা অন্য কোনও ক্ষেত্রে প্রয়োগ করা হয় - এবং এটি প্রায়শই ঘটে। এবং এই ক্ষেত্রে, 'ধারণাগত পূর্বপুরুষ' গুরুত্বপূর্ণ তবে সংকলক ভাষাটি সবেমাত্র প্রাসঙ্গিক প্রযুক্তিগত উপাত্ত যা সময়ের সাথে সাথে পরিবর্তিত হতে পারে।
পিটারিস

3
সন্দেহজনক মান যদি এটি শেষ লিঙ্ক - সত্যই এটি গুরুত্ব সহকারে নিতে এটি অনেক ভুল।
অজানা কোডার

4
@ সেবাস্তিয়ানগোডলেট: হটস্পট জাভা ভাষার প্রয়োগ নয়। এটি জেভিএম বাইটকোড ভাষার বাস্তবায়ন। এগুলি দুটি সম্পূর্ণ ভিন্ন ভাষা। জাভা ভাষার সর্বাধিক ব্যবহৃত বাস্তবায়নগুলি javacহ'ল 100% জাভাতে মার্টিন ওডারস্কি (স্কাল ফেমের) রচিত ওরেল জেডিকে / ওপেনজেডি কে , 100% জাভাতে লেখা ইক্লিপস কম্পাইলার (আইবিএম এর জাইকস সংকলক থেকে প্রাপ্ত ) থেকে সংকলক আইবিএম এর জে 9, জিকস এবং 100% জাভা থেকে প্রাপ্ত। আফাইক, জাভাতে লেখা নেই এমন কিছু বিস্তৃত ব্যবহারের একমাত্র জাভা সংকলক হলেন জিসিজে
জার্গ ডব্লু মিতাগ

4

আমি যদি এটি করতে পারি তবে আমি এটি একটি মন্তব্য করব, তবে আমি এখানে যেতে পারি না:

সিটিকে সর্বব্যাপী বলে মনে করার অন্যতম কারণ হ'ল এটি বিকাশ করা প্রাচীনতম ভাষাগুলির মধ্যে একটি, এবং প্রচুর পরিমাণে আধুনিক ভাষাগুলি এর কাঠামোর (জাভা, গো, পিএইচপি, পার্ল ইত্যাদি) উপর ভিত্তি করে তৈরি করা হয়েছে - এটিকে দেখে মনে হচ্ছে এটি এর মতো এটির চেয়ে বেশি জায়গা

অন্য একটি ভুলে যাওয়া কারণ হ'ল 1973 সালে ইউনিক্স সিতে পুনরায় লেখা হয়েছিল এবং ইউনিক্সের অনেকগুলি সিস্টেম কল সি প্রোগ্রাম / ফাংশন হিসাবে উপলব্ধ ছিল, যার ফলে দুটি অত্যন্ত সংযুক্ত ছিল। যেহেতু ইউনিক্স সামগ্রিকভাবে আধুনিক প্রোগ্রামিংয়ের বিকাশের একটি শক্তিশালী অংশ ছিল, তাই সি এটির সাথে কুখ্যাত হয়ে উঠেছে।

সব বলার পরেও, আপনার প্রশ্নের উত্তরটি "না"। সি ALGOL নামক একটি ভাষার ভিত্তিতে তৈরি, এবং ALGOL (ফরট্রান, লিস্প, সিওবিএল) এবং সি উভয়ের সাথে অনেক প্রতিযোগী ছিল (কারও মনে আসে না)। অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং, তত্ক্ষণাত প্রোগ্রামিং ডিজাইনের বৃহত্তম দৃষ্টান্ত-শিফ্টের উৎপত্তি হয়নি - সি ++ খুব জনপ্রিয় ওওপি ভাষা হওয়া সত্ত্বেও (আপনি কাকে জিজ্ঞাসা করেছেন তার উপর নির্ভর করে এটি লিস্প বা সিমুলা in 67 এ প্রথম প্রদর্শিত হয়েছিল)। ওওপির আগমনের সময়, সি এমন একটি জনপ্রিয় ভাষা ছিল যে এটির প্রথম হওয়া দরকার ছিল না - এটি এতই জনপ্রিয় ছিল যে সি ++ "সম্প্রসারণ", তাই কথা বলতে গেলে, ওও প্রাথমিক ওওপি ভাষার একটি হয়ে ওঠে। এটি আধুনিক ব্যবহারে রয়েছে মূলত এর শক্তিশালী মেমরি নিয়ন্ত্রণ বৈশিষ্ট্যগুলির কারণে (আপনি সরাসরি আপনার কাঠামোগুলি তৈরি করা মেমরিটি বরাদ্দ করতে এবং হ্রাস করতে পারেন), এটি টাইট মেমরি বাজেটগুলিতে (ভিডিও গেমগুলি ভাবেন) এবং এটির সর্বোচ্চ অনুকূলিত সংকলক (স্পষ্টতই সংকলকের উপর নির্ভর করে) প্রোগ্রাম তৈরি করার অনুমতি দেয়। স্বীকার করা যায় যে, জাভা জেআইটি সংকলন এবং ইন-ল্যাঙ্গুয়েজ মেমরির পরিচালকরা আরও উন্নত হওয়ার সাথে সাথে এই বৈশিষ্ট্যগুলিও হারাচ্ছে।


1
এই কিছু তৈরি পয়েন্ট উপর সারগর্ভ প্রস্তাব এবং বলে মনে হচ্ছে না পূর্বে উত্তর ব্যাখ্যা, বিশেষ করে শীর্ষ এক একটি সন্দেহজনক বিবৃতি যে "সি কম্পিউটারে কাজ করার একটি ভাষা নামক একটি ভাষা ভিত্তিক বন্ধ হয়" ছাড়া,
মশা

4
সি এর কম্পিউটারে কাজ করার একটি ভাষা মধ্যে ভিত্তিতে কমই প্রশ্নবিদ্ধ ... দেখুন cm.bell-labs.com/who/dmr/chist.html , en.wikipedia.org/wiki/C_%28programming_language%29 )
WannabeCoder

প্রকৃত কাহিনী আরো অনেক কিছু জটিল এবং যে এর চেয়ে আকর্ষণীয়; আমি বলব যে জিনিসগুলি এখানে কীভাবে রাখা হয়েছে তা পাঠকদের পক্ষে খুব উপকারী
জিনাত

3

অবশ্যই না. সি এর আগে উপস্থিত না থাকলে সি তে প্রথম সি সংকলক কীভাবে রচনা করা যায়? এটি মুরগি এবং ডিমের সমস্যা নয়।

কোনও ভাষার প্রথম সংকলক লেখার অনেকগুলি উপায় রয়েছে যা বুটস্ট্র্যাপিং বলে

তদুপরি বেশিরভাগ সংকলক স্বয়ং-হোস্টিং অর্জনের চেষ্টা করেন বা মূলত ভাষা এবং সংকলককে নিজেরাই প্রচার করার জন্য এটিকে নিজের ভাষা সংকলন করার চেষ্টা করেন


12
প্রথম Oberon কম্পাইলার ছিল Oberon লেখা। এটি পুরোপুরি ঠিক আছে, তবে আপনি যদি প্রফেসর হন এবং প্রচুর ছাত্র-ছাত্রী থাকেন যা আপনার জন্য সংকলকটি হ্যান্ড-ট্রান্সলেট করে দেবে (যা প্রফেসর ওয়ার্থের ছিল)।
Jörg ডব্লু মিত্তাগ

@ জর্গে যেটির উপরে লিখিত বুটস্ট্র্যাপিং নিবন্ধে উল্লেখ করা হয়েছিল তাই আমি লিখতে বিরক্ত করি না কারণ এই প্রশ্নটি সি সম্পর্কে এবং কোনও সি সংকলক
সেভাবে

14
@ জার্গডব্লিউমিটাগ - প্রথম স্বয়ংক্রিয় ওবারন সংকলক ওবারনে রচিত হয়েছিল। প্রকৃত প্রথম ওবেরন সংকলকটি ছিল একগুচ্ছ ছাত্র।
nnnnnn

4
@nnnnn: আমি এই "শিক্ষার্থীদের একগুচ্ছ" একজন অনুবাদক, সংকলক হিসাবে বিবেচনা করব না।
পাওলো ইবারম্যান

4
@ পাওলো ইবারম্যান আরেকটি মানব উপাদান যুক্ত করতে: "কম্পিউটার" মূলত একটি কাজের শিরোনাম ছিল
chux

2

এখানে কিছু প্রোগ্রামিং ভাষা সি সব লেখা হয়, ভাষা পাশাপাশি তারা একটি তালিকা রয়েছে করছে বাস্তবায়িত:

  • হাস্কেল - হাস্কেল
  • ইদ্রিস - হাস্কেল
  • আদগা - হাস্কেল
  • সংঘর্ষ - হাস্কেল
  • খাঁটি স্ক্রিপ্ট - হাস্কেল
  • এলম - হাস্কেল
  • বুধ - বুধ
  • মরিচা - মরিচা (শুরুতে ওক্যামল)
  • যাও - যাও
  • স্ফটিক - স্ফটিক
  • ওক্যামল - ওক্যামল l
  • ফ্রিজ - ফ্রিজ + জাভা
  • Haxe - OCaml + Haxe
  • স্কালা - স্কেলা
  • ফুথার্ক - হাস্কেল
  • এটিএস - এটিএস

সংকলক বাস্তবায়নের জন্য সেরা ভাষাগুলি সম্ভবত সি থেকে বেশ দূরে হতে চলেছে কার্যকরী ভাষাগুলি আপনাকে পুনরাবৃত্তি স্কিম এবং মোনাডিক পার্সার সংযুক্তকারীগুলির (যেমন আপনার টাইপক্লাস রয়েছে) সরবরাহ করে, যা তাদের বিশেষত সংকলক কাজের জন্য উপযুক্ত করে তোলে।

দ্বিতীয়ত, সি "" সমস্ত প্রোগ্রামিং ভাষার জনক / জনক "কিনা তা আপনার প্রশ্নের সমাধান করার জন্য - সত্যই নয়। সি এটি প্রকাশের সময় একটি সু-নকশিত ভাষা ছিল এবং এটি কোনও সন্দেহ নেই যে ভাষা ডিজাইনাররা তখন খুব আলাদা কাজ করতে গিয়ে প্রভাবিত করেছিল। তবে দিনের শেষে, হাস্কেল সি থেকে প্রস্থান করে মূলত সম্ভাব্য সমস্ত উপায়ে। সি এর বয়স 45 বছর এবং এটি অবাক হওয়ার কিছু নেই যে আমরা এর মধ্যে আরও ভাল করতে শিখেছি।

শেষ পর্যন্ত, আপনার তৃতীয় প্রশ্নের উত্তর দেওয়ার জন্য, সি এটি "সমস্ত ধারণার" প্রয়োগ করে এমনটি হয় না। বিশেষত, সি তে ক্রিয়ামূলক প্রোগ্রামিং (যেমন রূপক, বা, godশ্বর নিষেধ, সিঙ্ক্রোমরফিজম) থেকে কিছু উন্নত ধারণা বাস্তবায়নের চেষ্টা করা ভয়ানকভাবে কঠিন হবে। আমি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের সাথে বিশেষভাবে পরিচিত নই, তবে আমি এমন একটি সত্যের জন্য জানি যে কয়েকটি বস্তু-কেন্দ্রিক ভাষার সমষ্টি রয়েছে।


সি কখনও "একটি অবিশ্বাস্যভাবে সু-নকশিত ভাষা" ছিল না। আমরা আজ এটিতে যে ওয়ার্সগুলি দেখি তা প্রথম থেকেই ওয়ার্ট হিসাবে পরিচিত ছিল। তবে, এটি বিকাশকারী-বান্ধব ইউনিক্স অপারেটিং সিস্টেমের মাতৃভাষা হওয়ার পক্ষে যথেষ্ট ছিল এবং বেল ল্যাবগুলি ইউনিক্সকে বিশ্ববিদ্যালয়গুলিতে সরিয়ে দেওয়ার পরে, সি / ইউনিক্স কম্পিউটার প্রজন্মের একটি প্রজন্মের জন্য একটি প্রিয় ভাষা / ওএস হয়ে উঠেছে।
সোলায়মান

পি। এস।, সি তে প্রচুর মূল ধারণা ছিল না আপনি যদি সমস্ত ব্লক-কাঠামোগত, পদ্ধতিগত প্রোগ্রামিং ল্যাঙ্গুয়েজের মা / বাবার সন্ধান করেন তবে আপনি ALGOL এ একবার দেখতে চান ।
সোলায়মান ধীরগতিতে

লিস্প ম্যাক্রোস সি এর চেয়ে অনেক ভাল ছিল এবং কোড সংগঠিত করতে সহায়তা করতে ALGOL এবং স্মলটকের ব্লক, ক্লোজার এবং নেস্টেড ফাংশন ছিল। প্রকৃতপক্ষে লিস্পকে এসেম্বলারের জন্য তৈরি ম্যাক্রো-প্রসেসর হিসাবে ব্যবহার করা যেতে পারে এবং কোডটি তৈরি করা যেতে পারে যা সি এর বহু আগে থেকেই সিমুলা বের হওয়ার আগে শুরুর দিকে সি আর সিমুলার চেয়ে কম এবং দ্রুত (এস-এক্সপ্রেশনগুলির কাস্টম প্রসেসিং) ছিল code লিস্প, এপিএল এবং স্মলটকের "শেলস" ছিল যা ইউনিক্সের "শে" বনাম "সি" এর বিপরীতে বর্ণিত এবং সংকলিত কোডটিকে আন্তঃলিখনিত করার অনুমতি দেয় পুরোপুরি কার্যকরী (শেল এবং প্রোগ্রামগুলির মধ্যে একই কোড)। পয়েন্টারগুলি লিস্পে সহজ ছিল (rplaca / rplacd)।
aoeu256

সি এর সর্বাধিক সুবিধা হ'ল সি এর জন্য "সংকলক" তৈরি করা সহজ ছিল, এবং তাই এটি আরও সহজেই ছড়িয়ে পড়েছিল ... ভাইরাসের মতো, এবং সি আধুনিক প্রোগ্রামারদের ধন্যবাদ কীভাবে প্রোগ্রামগুলি তৈরি করা যায় তা সম্পর্কে মডুলার কিছু নেই ular (পরিবর্তনশীলতা মড্যুলারিটিকে ব্যথা দেয়), অ্যাডওয়ানস / কম্বিনেটর / উচ্চতর ক্রমের ক্রিয়াগুলির কোনও ধারণা নেই [প্রতিটি সময় নিজের লুপগুলি ম্যানুয়ালি লিখুন], এবং আমাদের সিপিইউগুলি "ভন নিউম্যান" বাধা দ্বারা সীমাবদ্ধ কারণ আমাদের ওএস সি-তে লেখা রয়েছে তাই আমাদের আমাদের প্রয়োজন পিছনের সামঞ্জস্যের জন্য সি কোড চালানোর জন্য সিপিইউ।
aoeu256

1

প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি স্পেসিফিকেশন (সফ্টওয়্যার নয়!) সাধারণত কিছু ইংরেজি নথিতে লেখা থাকে (কিছু ফর্মালাইজেশন সহ, উদাহরণস্বরূপ বেশিরভাগ সিনট্যাক্সের জন্য EBNF ; কখনও কখনও তাদের শব্দার্থবিজ্ঞানও আংশিকভাবে আনুষ্ঠানিক হয়)।

উদাহরণস্বরূপ, সি 11 n1570 দ্বারা সংজ্ঞায়িত করা হয়েছে (যা আপনার পড়া উচিত)। স্কিমের কয়েকটি উপভাষা আর 5 আরএস দ্বারা সংজ্ঞায়িত করা হয়েছে (যা আপনারও পড়া উচিত, এটি খুব ভাল লেখা আছে)।

প্রোগ্রামিং ভাষাগুলি কিছু সফ্টওয়্যার দ্বারা প্রয়োগ করা যেতে পারে । কখনও কখনও সেই সফ্টওয়্যার প্রোগ্রামিং ভাষায় লেখা একটি সংকলক। বুটস্ট্র্যাপিং সংকলকগুলি সম্পর্কে পড়ুন ।

সংকলিত প্রোগ্রামিং ভাষায় নিজেই একটি সংকলক লিখতে পারেন। যদি ভাষাটি এক্সএক্স নতুন হয় তবে আপনাকে একটি অস্থায়ী পদক্ষেপের মধ্য দিয়ে যেতে হবে যা অন্য কোনও প্রয়োগকারী ভাষায় (সম্ভবত সি) সেই ভাষার একটি উপসেটের একটি সংক্ষিপ্ত অনুবাদক বা সংকলক লেখার সাথে জড়িত রয়েছে এবং পরে আপনার সেই অস্থায়ী সংকলকটি ফেলে দিতে পারে বা দোভাষী (যা "ভাল" হওয়ার দরকার নেই, কেবলমাত্র অন্য সংকলকটি সংকলনের জন্য যথেষ্ট)। আপনি একবার XX এ লেখা আপনার XX সংকলকটি সঙ্কলন করলে আপনি আপনার অস্থায়ী সংকলকটি ফেলে দিতে পারেন।

প্রায়শই (তবে সর্বদা নয়) রানটাইম সিস্টেমটি আংশিকভাবে সিতে লেখা হয় (বিশেষত আবর্জনা সংগ্রহকারী )।

লক্ষ্য করুন যে হাড়গুলি একটি স্কিম সংকলক এবং রানটাইম সম্পূর্ণরূপে নিজের মধ্যে লেখা (এবং আপনি সম্পূর্ণরূপে বুটস্ট্র্যাপযুক্ত প্রয়োগের অন্যান্য অনেক উদাহরণ খুঁজে পেতে পারেন)।

বিটিডাব্লু সিটি সংকলকগুলির লক্ষ্য ভাষা হিসাবে ব্যবহার করা সুবিধাজনক ।

বর্তমানে, প্রচুর প্রোগ্রামিং ভাষার বাস্তবায়ন হ'ল ফ্রি সফটওয়্যার বা ওপেন সোর্স । অবিরাম তাদের উত্স কোড অধ্যয়ন করতে (এবং সম্ভবত অবদান রাখতে)!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.