পাইথনে প্রোগ্রামিং কি সি, সি ++ বা জাভার চেয়ে দ্রুত হয়? [বন্ধ]


27

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

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

এই সমস্যাটি কি বৈজ্ঞানিকভাবে সঠিকভাবে মূল্যায়ন করা হয়েছে? না হলে সম্ভবত , বা মতো ভাইবোনের স্ক্রিপ্টিং ভাষার জন্য ?

আমি যুক্তি, উপমা বা ব্যাখ্যা কেন খুঁজছি না কেন এটি সম্ভবত উত্তর দেওয়া শক্ত হতে পারে, যদি না এটি গবেষক বা বিশেষজ্ঞদের মতামত প্রকাশ করে যা ইস্যুটি দেখার জন্য সময় নিয়েছে।

আমি প্রথমে সংশয়বাদী.এসইতে এই প্রশ্নটি জিজ্ঞাসা করেছি এবং কেউ পরামর্শ দিয়েছে আমারও এটি এখানে জিজ্ঞাসা করা উচিত।


25
ঠিক আছে, যেহেতু আপনি সম্ভাব্য উত্তরের সেটাকে সীমাবদ্ধ রেখেছেন, আমি কেবলমাত্র অন্য একটি প্রশ্ন জিজ্ঞাসা করে একটি মন্তব্য করার সাহস পেয়েছি যা প্রথমে উত্তর দেওয়া উচিত (imho): "প্রোগ্রামারের উত্পাদনশীলতা" পরিমাপের জন্য কি কোনও নির্ভরযোগ্য এবং প্রতিষ্ঠিত মেট্রিক রয়েছে?
পল মিশালিক

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

1
@ পাওল মিশালিক - অবশ্যই তবে প্রোগ্রামারদের বই, ব্লগ, আলোচনা এবং নিবন্ধগুলিতে আপনি যে বিবৃতি পড়েছেন সেগুলির মধ্যে কতটি সত্যই পরীক্ষামূলকভাবে পরীক্ষা করা হয়? আমি নিশ্চিত যে উত্পাদনশীলতা পরিমাপের আরও ভাল বা আরও খারাপ উপায় আছে। এই ক্ষেত্রে. "কফি খরচ / সময়" সম্ভবত ধ্রুপদী "কোডের / লাইনের লাইন" এর চেয়েও খারাপ একটি হতে পারে। আমি নির্দিষ্ট উত্পাদনশীলতা দাবির বিষয়ে রায় ফিরিয়ে দেব যা আমরা একটি দেখেছি এবং তার ভিত্তিতে যোগ্যতার পক্ষে তর্ক করতে পারি। উত্পাদনশীলতার দাবিগুলি কেবল সাধারণ ভুল নয়, লোকেরা মেট্রিককে ধ্বংস করার চেষ্টা না করার পরে আমি নিশ্চিত "কোড / টাইমের লাইন" এমন কিছু পরিমাপ করি ।
কিট সুন্দে

1
আপনি এই নিবন্ধটিতে আগ্রহী হতে পারেন: citeseerx.ist.psu.edu/viewdoc/…
ডিস্ট্যান্টএকো

1
@ ক্রিসএফ - আপনি কি বলছেন যে এই ক্যুইসিটনটি প্রোগ্রামার্স.এসই-র ক্ষেত্রে প্রযোজ্য নয়? এটি অবশ্যই সংশয়ীদের কাছে এবং এটি এখানেও খাপ খায় বলে মনে হয়। আমি এই ধারণায় রবার্ট কার্টেইনোর সাম্প্রতিক মন্তব্যটি না পড়া পর্যন্ত আমার তাত্পর্য ছিল না: skeptics.stackexchange.com/q/1963/631 যা মূলত বলেছে যে এটি উভয় সম্প্রদায়েরই আগ্রহের বিষয় হলে একেবারে ঠিক আছে, এবং অন্য একজন ব্যবহারকারীকে এটি করার অনুরোধ জানানোর পরে আমি এটি করেছি। প্রশ্নটি উত্সাহ পাচ্ছে তা বিবেচনা করে দেখে মনে হবে এটি এই সম্প্রদায়েরও আগ্রহী।
কিট সুন্দে

উত্তর:


17

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

যেহেতু স্ক্রিপ্টিং ভাষাগুলি সাধারণ কাজের জন্য তৈরি ইউটিলিটিগুলিতে প্রচুর নির্ভর করে (উদাহরণস্বরূপ ডেটা স্ট্রাকচার, স্ট্রিং ম্যানিপুলেশন), তাদের মূল ব্যবহারটি হ'ল ধীর গতির ব্যয়ের সাথে উত্পাদনশীলতা বৃদ্ধি করে শিখতে সহজ এবং একটি দক্ষ কর্মসূচি সংরক্ষণের জন্য একটি সিনট্যাক্স সরবরাহ করে produc সঙ্গে. শীর্ষ সম্পাদনের গতির প্রয়োজন হলে কেউ স্ক্রিপ্টিং ভাষার অবলম্বন করে না।

[১]: জে কে অস্টারহাউট, স্ক্রিপ্টিং: উচ্চ স্তরের প্রোগ্রামিং ফর ২১ শতক , কম্পিউটার (আইইইই), 1998
[2]: বি বোহেম, সফটওয়্যার ইঞ্জিনিয়ারিং ইকোনমিক্স , প্রিন্টাইস হল, 1981


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

@ ক্রমিন, কোনও তুচ্ছ প্রকল্পের জন্য আপনাকে প্রচুর কোড লিখতে হবে। আপনার কাছে প্রচুর লেগো ইট থাকলেও বায়োনিকালস যাদুতে একত্রিত হয় না।

2
@ থোর তবে প্রথমে তেল ড্রিল, একটি প্লাস্টিকের কারখানা এবং একটি লেগো ব্লক এক্সট্রুডার তৈরির পরিবর্তে এই লেগো ইটগুলি সামনের দিকে রাখতে সত্যিই সহায়তা করবে।
রোমান স্টারকভ

2
সি ++ এবং জাভা উভয়েরই জেনেরিক পাত্রে রয়েছে এবং সি ++ 11 এর মধ্যে সাজানো অ্যালগরিদম এবং পুনরাবৃত্তকারী ইত্যাদির জন্য এমন একটি সম্পূর্ণ স্ট্যান্ডার্ড লাইব রয়েছে I'm তবুও আমি আমার প্রোগ্রামিংয়ের বেশিরভাগ সময়টি টাইপ করে না করে আমার কী করা দরকার তা ব্যয় করি সুতরাং আমি মনে করি যে কোনও কাজ করতে কেবল যে পরিমাণ রেখাগুলি লাগবে তা গণনা করা আপনার কোনও ভাষায় একজন প্রোগ্রামার কতটা দ্রুত হবে তার সুস্পষ্ট সূচক নয়।
স্যাম রেডওয়ে

7

আপনি যদি উত্পাদনশীলতাটিকে "একটি নির্দিষ্ট সাধারণ প্রোগ্রাম লেখার সময়" হিসাবে পরিমাপ করেন তবে ভাষাটির চেয়ে আপনি যে প্রোগ্রামারকে সত্যই মূল্যায়ন করছেন তার চেয়ে প্রোগ্রামার অভিজ্ঞতা এবং দ্রুত মনের উপর এটি অনেক বেশি নির্ভর করে।

আমি বিশ্বাস করি সময়সীমার কোড প্রতিযোগিতা ইঙ্গিত দেয় যে ভাষা এই ধরণের কাজের জন্য সত্যই গুরুত্বপূর্ণ নয়। এমন চ্যালেঞ্জ অন্যদের চেয়ে সহজেই জিততে পারে এমন কোনও ভাষা নেই (ভাষাগুলির আপেক্ষিক জনপ্রিয়তার জন্য অনুমতি দিলে অন্তত নয়)।

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

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


7
"আপনি প্রকৃতপক্ষে প্রোগ্রামারটির মূল্যায়ন করছেন, ভাষা নয়" - এটি যদি বৈজ্ঞানিকভাবে করা হয় না তবে। 100 জন প্রোগ্রামার নিন। একটি সাধারণ প্রকল্প যেমন "এই নির্দিষ্ট প্রয়োজনীয়তার সাথে একটি ক্যালেন্ডার অ্যাপ্লিকেশন লিখুন" নির্বাচন করুন। প্রয়োজনীয়তা স্বয়ংক্রিয় ইউনিট পরীক্ষার সাথে আবদ্ধ। 50 প্রোগ্রামার সি ++ এ 50 টি পাইথনে অ্যাপ লিখেছেন, এলোমেলোভাবে বেছে নেওয়া হয়েছে যাতে মানের বিকাশকারীরা সমানভাবে বিতরণ করা হয় disp ফলাফলগুলি পাসের ইউনিট পরীক্ষার সংখ্যার সাথে সমাপ্তির গড় সময়ের সাথে সংযুক্ত স্কোর হবে। সি ++ ফলাফল এবং ... বিজ্ঞানের গড়ের সাথে পাইথনের ফলাফলের গড়ের তুলনা করুন!
মরগান হের্লোকার

2
@ প্রফ্ট হয়ত আপনি যদি প্রত্যেকে এক হাজার পেয়ে থাকেন ... তবে তবুও আপনি কীভাবে নিয়ন্ত্রণ করবেন যে কেবলমাত্র একটি নির্দিষ্ট মানসিকতা এবং একটি নির্দিষ্ট স্তরের দক্ষতা সম্পন্ন লোকেরা সি ++ জানতে পারবেন?
রোমান স্টারকভ

আপনি আপনার নমুনা কেবল সেই লোকদের কাছ থেকে টানতে পারেন যারা সি ++ এবং পাইথনে দক্ষতার পরীক্ষায় উত্তীর্ণ হতে পারেন। আমার অনেক প্রবীণ অধ্যাপক খুব অনুরূপ পড়াশোনা করছিলেন। এছাড়াও আপনি এখানে বেশ কয়েকটি অনুমান তৈরি করেছেন যা অন্যরা এখানে আলোচনা করেছেন: প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জার
কিউ / 7737১15 / 99৯২

6

http://page.mi.fu-berlin.de/prechett/Biblio/jccpprtTR.pdf আমি যে কয়েকটি গবেষণার বিষয়ে অবগত তা হল বিভিন্ন ভাষায় উত্পাদনশীলতার মধ্যে প্রকৃত প্রত্যক্ষ তুলনা করেছিল। এটি পুরানো, তবে আপনি যদি বিষয়টিকে আকর্ষণীয় মনে করেন তবে এটি পড়ার মতো। তুলনাটিতে বেশ কয়েকটি বড় ত্রুটি রয়েছে যা সম্পর্কে নিবন্ধটি খুব সৎ।

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

নোট করুন যে জাভার সমস্ত পারফরম্যান্স নম্বর লবণের একটি প্রধান শস্যের সাথে নেওয়া উচিত - 90 এর দশকে জাভা সম্পর্কে লোকদের অনেক অভিজ্ঞতা থাকার আগে এবং জেভিএম ভালভাবে অনুকূলিত হওয়ার আগে কাগজটি তৈরি করা হয়েছিল। উভয় কারণের উল্লেখযোগ্য প্রভাব থাকা উচিত।


1

এটি সাধারণভাবে বলতে গেলে পাইথনে একটি প্রোগ্রাম লেখা সাধারণত সি, সি ++, জাভাতে একই প্রোগ্রাম লেখার চেয়ে দ্রুততর হয়।

এটি ধীর গতিতে চলার সম্ভাবনাও রয়েছে।

অবশ্যই কিছু নির্দিষ্ট অ্যাপ্লিকেশন রয়েছে যার জন্য অন্যান্য ভাষাগুলি দ্রুত হতে পারে কারণ কিছু নির্দিষ্ট কাজকে 'আরও নেটিভালি' সমর্থিত।

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

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

এটি ভাষার সারণী অনুপাতের অনুমানের জন্য একটি সারণী দেখায়। এটি লবণের এক দানা দিয়ে নেওয়া উচিত, এটি যে পাদটীকাগুলির উল্লেখ করেছে তা খুব সার্থক।

http://en.wikipedia.org/wiki/Comparison_of_programming_languages#Expressiveness


-5

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

স্পষ্টতই ভাষাগুলির সকলের নিজস্ব শক্তি এবং দুর্বলতা রয়েছে তবে বেশিরভাগ কাজের জন্য পাইথনটি দ্রুত লেখার পক্ষে দ্রুত হবে।


6
"কোনও ফাইল খুলতে এবং লিখতে কোডের পূর্ণ স্ক্রিন নিয়েছিল": এটি দুটি পদ্ধতির সাহায্যে একটি ইউটিলিটি ক্লাসে রাখুন write()এবং read()আপনার জাভা প্রকল্পের বাকী অংশে অজগর পাইথনের মতো সংক্ষিপ্ত হবে। আমি মনে করি পাইথন এবং জাভা তুলনা করার জন্য আপনার উদাহরণটি কিছুটা সীমিত is (যদিও আমি সম্মত হয়েছি যে জাভা আরও ভার্বোস হতে পারে)।
জর্জিও

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

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