পাইথন সি তে লেখা হয় এবং সি ++ তে লেখা হয় না কেন?


76

ইন পাইথন টিউটোরিয়াল এক পড়তে পারেন সি যে পাইথন মূল বাস্তবায়ন;

অন্যদিকে, সিটিতে লিখিত পাইথন বাস্তবায়ন, (...)

আমি খুব কৌতূহলী পাই যে পাইথন সি তে লেখা হয়েছিল এবং সি ++ কেন নয়?

আমি এই সিদ্ধান্তের পিছনে যুক্তি জানতে চাই এবং উত্তরটি historicalতিহাসিক উল্লেখগুলি দ্বারা সমর্থন করা উচিত (এবং মতামত ভিত্তিক নয়)।


10
আমি জানি তুমি কেন লাগেনা, কিন্তু আমি এই পাসে কিছু সন্দেহ: thread.gmane.org/gmane.comp.version-control.git/57643/... :)
Matthieu

13
@ ল্যারি কোলম্যান: লিনাসের অনুদান কখনই দেখেনি? আপনি অবশ্যই "আন্তঃব্যক্তিকে" এড়িয়ে চলেছেন ...> _>
ডাঃ হ্যানিবাল লেেক্টর

18
@ ল্যারি আমি এই ফাঁক দেখেছি এবং লিনাস পড়ার পরে প্রায় সমস্ত সম্মান হারিয়ে ফেলেছি। লজ্জা তার।
পাইওটর ডব্রোগস্ট

5
ঠিক আছে, এটি লিনাসের অভিমানের
avi

6
"কেন (জনপ্রিয় প্রোগ্রাম) (ভাষা এক্স) এবং (ভাষা Y) নয়?" জিজ্ঞাসার বিন্দুটি দেখতে আমি ব্যর্থ হই। বা বরং, একই প্রশ্নটি বিপরীত হতে পারে: কেন Y এবং X নয়?
আন্দ্রেস এফ।

উত্তর:


119

আমি যা কিছু দেখেছি তা থেকে এটি ব্যবহারিক এবং historicalতিহাসিক কারণগুলির সংমিশ্রণ। (বেশিরভাগ) reasonতিহাসিক কারণটি হ'ল 1989 সালে সিপিথন 1.0 প্রকাশিত হয়েছিল that সেই সময়ে সি সম্প্রতি সমিত করা হয়েছিল। সি ++ প্রায় অজানা এবং সিদ্ধান্তে অ-বহনযোগ্য, কারণ প্রায় কারও কাছেই সি ++ সংকলক ছিল না।

যদিও আজ সি ++ অনেক বেশি বিস্তৃত এবং সহজেই সহজলভ্য, তবুও সি-সিটির উপসেটে সিপিথনকে আবার লিখতে যথেষ্ট পরিমাণ কাজ লাগবে যা সি ++ এর সাথে সামঞ্জস্যপূর্ণ। নিজেই, এই কাজটি সামান্য বা কোনও সত্য উপকার সরবরাহ করবে।

এটি শুরু করার এবং একটি সম্পূর্ণ পুনর্লিখনের বিষয়ে জোএলের ব্লগ পোস্টের মতো কিছুটা একটি সফ্টওয়্যার সংস্থা সবচেয়ে খারাপ ভুল হতে পারে। আমি মাইক্রোসফ্টকে উইন্ডোজ 3.0.০ কোর থেকে উইন্ডোজ এনটি কোর এবং ম্যাপস ৯ থেকে ম্যাক ওএস / এক্সে অ্যাপলের রূপান্তরকে ইঙ্গিত করে এটিকে মোকাবিলা করব। কেউই এই সংস্থাটিকে হত্যা করেনি - তবে উভয়ই অবশ্যই বড়, ব্যয়বহুল, দীর্ঘমেয়াদী প্রকল্প। উভয়ই সাফল্যের পক্ষে গুরুত্বপূর্ণ এমন কিছু বিষয়ের দিকেও ইঙ্গিত করে: দীর্ঘকাল ধরে উভয় কোড বেসগুলি বজায় রাখা (বেশিরভাগ) ব্যবহারকারীরা তাদের অবসর সময়ে (কমপক্ষে অনুভূত) সুবিধার ভিত্তিতে নতুন কোড বেসটিতে স্যুইচ করতে পারেন।

একটি ডেভেলপমেন্ট দলের পক্ষে পাইথনের আকার, তবে, এই ধরণের পরিবর্তন আরও বেশি কঠিন। এমনকি পাইথন 2 থেকে 3 এর পরিবর্তনও বেশ কিছুটা কাজ নিয়েছে এবং এর জন্য একই ধরণের ওভারল্যাপের প্রয়োজন। কমপক্ষে সেই ক্ষেত্রে, তবে পরিবর্তনের সরাসরি উপকারিতা রয়েছে, যা সি ++ (নিজেই) এ পুনরায় লেখা (কমপক্ষে অবিলম্বে) সরবরাহ করবে না।

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

আমি আরও মনে করি যে আপেক্ষিক স্বাচ্ছন্দ্যের সাথে প্রচুর সি কোডকে সি ++ তে রূপান্তর করা সম্ভব হলেও , সি ++ থেকে সত্যিকারের সুবিধা পাওয়ার জন্য কেবল তার চেয়ে কিছুটা বেশি পুনর্লিখনের প্রয়োজন নেই, তবে জড়িত বেশিরভাগ বিকাশকারীদের যথেষ্ট পুনর্-শিক্ষার প্রয়োজন রয়েছে। বেশিরভাগ সু-লিখিত সি ++ একই কাজগুলি করতে লিখিত সি থেকে যথেষ্ট আলাদা sub এটা না পরিবর্তন ব্যাপার mallocথেকে newএবং printfথেকে cout, কল্পনার কোনো প্রসারিত দ্বারা।


2
+1 আপনি অনেক উদ্ধৃতি; তারা আকর্ষণীয়। লিঙ্কগুলি যুক্ত করা গেলে এটি আরও ভাল হবে বলে মনে হয়।
n611x007


এটি একটি দুর্দান্ত উত্তর ছিল। আমি এটি থেকে অনেক কিছু শিখেছি।
গেমস ব্রেনিয়াক

1
+1 বিশেষত সি উল্লেখ করার জন্য যা আপেক্ষিক স্বাচ্ছন্দ্যে সি ++ এ পোর্ট করা যায় সম্ভবত এটি করার পক্ষে উপযুক্ত নয়। আমি এটি ইতিমধ্যে অনেক দিন জানতে পেরেছিলাম তবে উত্তরটি সত্যই দৃ strengthened়তরূপে দেখতে এটিকে দেখার জন্য বেশ কয়েকটি মাত্রা যুক্ত করেছে।
fkl

1
"ম্যাকস 9 থেকে ম্যাক ওএস / এক্সে অ্যাপলের রূপান্তর" নোট করুন যে ওএস / এক্স স্ক্র্যাচ থেকে পুনর্লিখন নয়: এটি ম্যাকোএস 9 থেকে নেক্সটিস্টেপ পরিবর্তিত হয়েছিল, অ্যাপলের উন্নতি হয়েছে এবং পুনরায় ব্র্যান্ড হয়েছে
জিভান

30

আমি মনে করি এটি মূলত এএনএসআই সি 89 এ লেখার কারণটি যথেষ্ট সহজ কারণ তখন, সি ++ কেবল একটি কার্যকর পছন্দ ছিল না যা বিভিন্ন সংকলক এবং এর মধ্যে অসম্পূর্ণতাগুলির সাথে কী ছিল। আমি বলতে চাইছি, এটি 2005 সাল পর্যন্ত কী হয়েছিল, এটি একটি এবিআই স্পেসিফিকেশন নিয়ে আসে যা একটি সংকলক সহ সংকলিত কোডকে একটি ভিন্ন সংকলক দিয়ে সংকলিত কোড কল করতে দেয়?

আরও আকর্ষণীয় প্রশ্ন হ'ল কেন এটি এখনও সি 89 এ লেখা হয়।

এবং একটি আশ্চর্যজনক উত্তর আছে: কারণ লোকেরা আসলে প্ল্যাটফর্মগুলিতে পাইথন ব্যবহার করে যার জন্য কোনও সি ++ এবং কোনও সি 99 সংকলক উপস্থিত নেই! যখন চতুর্থ-অনুপ্রাণিত থ্রেডেড-কোড ইন্টারপ্রিটার অপ্টিমাইজেশানগুলি মার্জ করা হয়েছিল, তখন এটি সম্পর্কে একটি বিশাল আলোচনা হয়েছিল , কারণ কোডটি (প্রয়োজনীয়ভাবে) গণনা করা হয়েছে gotoযা C89 এর অংশ নয়। আপাতদৃষ্টিতে বাস্তব আশঙ্কা ছিল যে পাইথন বর্তমানে ব্যবহৃত প্ল্যাটফর্মগুলির কয়েকটিতে এই বৈশিষ্ট্যটি নাও পাওয়া যেতে পারে।

একই জিনিস আনলাডেন গেলাতে ঘটেছিল, যা এলএলভিএম ব্যবহার করে, যা সি ++ এ লেখা হয়। এটি খুব স্পষ্টভাবে জানিয়ে দেওয়া হয়েছিল যে আনলাডেন গিলে সিপিথনে মার্জ করার জন্য একটি প্রয়োজনীয়তা হ'ল আপনি এটি জেআইটি সংকলক ছাড়াই সংকলন করতে পারবেন, যেহেতু প্ল্যাটফর্মগুলি পাইথন চালিত রয়েছে, যার জন্য কোনও সি ++ সংকলক বিদ্যমান নেই।

অবশ্যই, আজকাল, সিপিথন আর একমাত্র পাইথন বাস্তবায়ন হয় না। পাইপাই রয়েছে, যা আরপিথনে (পাইথনের একটি স্ট্যাটিকালি টাইপড সাবসেট), জাভাতে জাইথন, সি # তে আয়রন পাইথন, এনকিউপি এবং পিআইআর-এ পিনি এবং আরও কিছুতে লেখা আছে।


3
আমি এটি উত্সাহিত করার জন্য অর্ধেক প্রলুব্ধ, কিন্তু আমি এমন কোনও প্ল্যাটফর্ম সম্পর্কে জানি না যেখানে সি ++ সংকলক উপস্থিত না থাকে (বিশেষত প্রদত্ত যে কমেউ সি ++ সি এর সাথে সংকলন করে)
বিলি ওনেল

1
এবিআই
জে কে

3
@ আবদুল: না, পাইথন মোটেও কোনও সফ্টওয়্যার নয়। এটি একটি স্পেসিফিকেশন। একাধিক ভাষায় লিখিত সেই স্পেসিফিকেশনের একাধিক বাস্তবায়ন রয়েছে। আয়রন পাইথন সি সি, জাভাতে জাইথন, পিপিথ পিপি, আরকিউ, পিআইআর, এবং পার্ল 6, পাইস্টন সি ++, সিপিতে সিপিথন এই বক্তব্যটির অর্থ নেই। পাইথন কোনও সফ্টওয়্যার নয়। এটি একটি স্পেসিফিকেশন। এটি ইংরেজিতে লেখা, কোনও প্রোগ্রামিং ভাষায় নয়। "জাভা সি এর একটি ডেরাইভেটিভ" মূলত ভুল। জাভা অবজেক্টিভ-সি দ্বারা অনুপ্রাণিত, তবে এটি বেশিরভাগ সি অংশগুলি থেকে মুক্তি পায় এবং বেশিরভাগ ক্ষেত্রেই ছোট ছোট অংশ নেয়।
জার্গ ডব্লু মিট্টাগ

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

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

10

এর চেয়ে আরও ভাল প্রশ্ন হতে পারে: "পাইথন পাইথনে লেখা হয় না কেন?"

মূল বিষয় হল, পাইথন ক্লাস এবং অবজেক্টের জন্য একবার পর্যাপ্ত আদিমগুলি সিতে লেখা হয়েছিল, সেগুলি বাকী দোভাষীর লেখার জন্য ব্যবহার করা যেতে পারে, সুতরাং আপনি পরিবর্তে সি ++ ব্যবহার করে কিছুই অর্জন করতে পারবেন না।


1
আপনি যদি আমার উত্তরের প্রথম লিঙ্কটি অনুসরণ করেন তবে আপনি পাইথনে পাইথন প্রয়োগের একটি রেফারেন্স দেখতে পাবেন। এটি এখনও উত্পাদন প্রস্তুত নয়। এটি ইউরোপীয় ইউনিয়ন দ্বারা অর্থায়ন করা হয়। আমার উত্তর থেকে খুঁজে পাওয়া যদি মুশকিল হয় তবে কোডপেক.নেট /পিপি / ডিস্ট /পিপি / ডক লিঙ্কটি।
vpit3833

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

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

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