পাইথন বনাম বাশ - কোন ধরণের কার্যক্রমে প্রত্যেকে অন্য পারফরম্যান্সের ভিত্তিতে ছাড়িয়ে যায়? [বন্ধ]


97

স্পষ্টতই পাইথন আরও ব্যবহারকারী বান্ধব, গুগলে একটি দ্রুত অনুসন্ধান অনেক ফলাফল দেখায় যা বলে যে পাইথন যেমন বাইট-সংকলন করা হয় সাধারণত দ্রুত হয়। আমি এমনকি পাওয়া এই যে দাবী আপনি অভিধান ভিত্তিক অপারেশন উপর% 2000 এর একটি উন্নতি দেখতে পারেন।

এই বিষয়ে আপনার অভিজ্ঞতা কি? কোন ধরণের কার্যক্রমে প্রত্যেকেই স্পষ্ট বিজয়ী?

উত্তর:


96

সাধারণ মেইনফ্রেম প্রবাহ ...

Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
                                   |                          ^
                                   v                          |
                                   `--> COBOL Program --------' 

সাধারণ লিনাক্স প্রবাহ ...

Input Disk/SSD/User (runtime) --> sh/bash/ksh/zsh/... ----------> Output Disk/SSD/Screen/Printer
                                   |                          ^
                                   v                          |
                                   `--> Python script --------'
                                   |                          ^
                                   v                          |
                                   `--> awk script -----------'
                                   |                          ^
                                   v                          |
                                   `--> sed script -----------'
                                   |                          ^
                                   v                          |
                                   `--> C/C++ program --------'
                                   |                          ^
                                   v                          |
                                   `--- Java program ---------'
                                   |                          ^
                                   v                          |
                                   :                          :

শেলগুলি লিনাক্সের আঠালো

লিনাক্স শেলগুলি sh / ksh / bash / ... এর মতো ইনপুট / আউটপুট / ফ্লো-কন্ট্রোল ডিজাইনিং সুবিধাগুলি পুরানো মেইনফ্রেম জব কন্ট্রোল ল্যাঙ্গুয়েজের মতো সরবরাহ করে ... তবে স্টেরয়েডগুলিতে! ও / এস সমর্থন করে যে কোনও ভাষায় লিখিত অন্যান্য নির্বাহী প্রক্রিয়াগুলিতে দক্ষতার সাথে ডেটা এবং নিয়ন্ত্রণ পাস করতে অপ্টিমাইজ হওয়ার সময় তারা নিজেরাই সম্পূর্ণ ভাষাগুলি টুরিং করছে

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

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

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

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

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

কর্মক্ষমতা

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

ব্যবহারকারী ইন্টারফেস

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

বাশ কেবল পাঠ্য বোঝে। অন্যান্য সরঞ্জামগুলিকে একটি জিইউআই এবং তাদের কাছ থেকে পাস করা ডেটা পাঠাতে হবে। একটি পাইথন স্ক্রিপ্ট এক বিকল্প। দ্রুত কিন্তু কম নমনীয় বিকল্পগুলি হ'ল YAD, Zenity এবং GTKDialog এর মত বাইনারি

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

সারসংক্ষেপ

শেল স্ক্রিপ্টগুলির সাহায্যে বিল্ডিং হ'ল ডেস্কটপ পিসি যেমন হয় তেমন শেল্ফ উপাদানগুলির সাথে একটি কম্পিউটারকে একত্রিত করার মতো।

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

সর্বোত্তম ফলাফলগুলি সাধারণত ভাষার সংমিশ্রণ ব্যবহার করে প্রাপ্ত হয় যেখানে প্রত্যেকে তাদের সর্বোত্তম কাজটি করতে পারে। একজন বিকাশকারী এটিকে " বহুভুত প্রোগ্রামিং " বলেছেন calls


17
আমি কীভাবে এটি উত্তর গৃহীত হতে পারে তা চিনতে ব্যর্থ। এই দুটি কাজের জন্য আরও উপযুক্ত কী তা সম্পর্কে কোনও অন্তর্দৃষ্টি সরবরাহ করে না।
ভিজিল্যান্সার

4
@ ভিজিল্যান্সার আমি আশা করি সদ্য পোস্ট হওয়া পরিবর্তনগুলি এবং সংযোজনগুলি সহায়ক।
ডকসালভেজার

4
যদিও আমি অন্যান্য মন্তব্যে একমত, এটি প্রশ্নের সঠিক উত্তর দেয় না। এটি আমার পড়া সেরা উত্তরগুলির মধ্যে একটি!
জিম মিচিটনার

72

সাধারণত বাশ কেবলমাত্র সেই পরিবেশে পাইথন পাওয়া যায় না যেখানে পাইথন পাওয়া যায় না। :)

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

যদিও এটি সত্য যে কিছু বাছাই করা কাজের জন্য বাশ পাইথনের চেয়ে দ্রুততর হতে পারে তবে এটি কখনই বিকাশ তত দ্রুত বা বজায় রাখা তত দ্রুত হতে পারে না (কমপক্ষে 10 টি কোড বা তার পরে লাইন পাওয়ার পরে)। বাশের একমাত্র দৃ strong় বিন্দু আর্ট পাইথন বা রুবি বা লুয়া ইত্যাদি এর সর্বব্যাপী।


5
পাইথন কি ইতিমধ্যে প্রতিটি লিনাক্স / ইউনিক্স, এমনকি ম্যাকওএসে নেই? আমি কৌতূহলবশত কীভাবে অপারেশন দ্রুততর হয় - যা আমি বুঝতে পেরেছি, এর থেকে পৃথক পৃথক কমান্ড কল করা এটি পাইথনের osবা shutilমডিউল কমান্ডের চেয়ে অনেক ধীর করে তোলে ।
NoBugs

4
@ NoBugs এটি অবশ্যই প্রতিটি একক লিনাক্স / ইউনিক্স বিতরণে থাকবে না। এটি অবশ্যই প্রতিটি বড় লিনাক্স বিতরণে (উদাহরণস্বরূপ ডেবিয়ান-ভিত্তিক বিতরণ, স্ল্যাকওয়্যার ইত্যাদি) এবং ম্যাক ওএস এক্সে আসে, তবে, আপনি যদি নিজের ইওসোটি ইয়োটো ( ইয়োকট্রোগ্রেক্ট.অর্গ.অর্গ ) দিয়ে তৈরি করেন, তবে আপনি এটিটি রাখতে পারবেন না আপনি প্রতিটি প্যাকেজ নিজেই কাস্টমাইজ করুন। তবে এটি সম্ভবত নিরাপদে বলা যায় যে এখনকার কোনও বড় ইউনিক্স ওএসের জন্য এটি পাইথন 2 (কমপক্ষে) এবং সম্ভবত পাইথন 3 দিয়ে ইনস্টল করা হবে।
dylnmc

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

34

ব্যাশ এবং পাইথন উভয়ই বোধগম্য পছন্দ এমন দৃশ্যে বিকাশকারীর দক্ষতা আমার কাছে অনেক বেশি গুরুত্বপূর্ণ।

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

যখন এটা আছে একটি বড় সুবিধা পাইথন আছে, ফাইলের নাম হ্যান্ডলিং প্রায় কোণ ক্ষেত্রে হয় উল্লিখিত glob , shutil , subprocess , এবং অন্যদের সাধারণ স্ক্রিপ্টিং প্রয়োজনের জন্য।


5
প্রশ্নটি "পারফরম্যান্স-ওয়াইজ" তুলনার দিকে লক্ষ্য করে যা মেশিনের কর্মক্ষমতা বোঝায় এবং বিকাশকারীর কার্যকারিতা নয়। অন্য উত্তরে আমার পারফরম্যান্স পরীক্ষা দেখুন।
গ্রজেগোর্স লুজনিও

26

আপনি যখন স্ক্রিপ্টগুলি লেখেন তখন পারফরম্যান্স কিছু যায় আসে না (বেশিরভাগ ক্ষেত্রে)।
যদি আপনি পারফরম্যান্সটির বিষয়ে চিন্তা করেন তবে 'পাইথন বনাম বাশ' একটি মিথ্যা প্রশ্ন।

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

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

তাহলে এক একটি স্ক্রিপ্ট 100 বড় চেয়ে এলওসি লিখছি: চয়ন পাইথন
যদি স্ক্রিপ্টের মধ্যে এক প্রয়োজন পাথ ম্যানিপুলেশন: চয়ন পাইথন (3)
কিছুটা মত প্রয়োজন হলে এক aliasকিন্তু সামান্য জটিল: চয়ন ব্যাশ / SH

যাইহোক, উভয় পক্ষের চেষ্টা করা উচিত তারা কী সক্ষম সে সম্পর্কে ধারণা পেতে।

উত্তরটি প্যাকেজিং এবং আইডিই সমর্থন পয়েন্টগুলির সাথে বাড়ানো যেতে পারে তবে আমি এই দিকগুলির সাথে পরিচিত নই।

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


4
হ্যাঁ, বাশ সহ একটি কোড চিরকাল বেঁচে থাকে। আমি পার্লকে অনেক কোড করেছিলাম, তারা এখন অকেজো।
রেমন্ড gsh

কেবলমাত্র দৃষ্টিভঙ্গির জন্য ... বর্তমানের বৃহত্তম স্ক্রিপ্টটি আমি wriiten করেছি, যা আমি প্রতিদিন সারাদিন ব্যবহার করি, ওজনটি 4121 লাইনে প্রকৃত, মন্তব্য না করার জন্য বা ফাঁকা লাইন বাশ কোডের ওজনের হয়। বিস্তৃত মন্তব্য এবং এর সাথে এটি 7261 লাইনে পরিণত হয় lines এটির সাথে সাথে প্রতিটি ফাংশনের ম্যানপেজের মতো ডক্সের একটি সহায়তা ফাইল যা আরও another 66৫০ লাইন। প্রতিটি ফাংশনটিতে একটি বিকল্প রয়েছে যা তাত্ক্ষণিকভাবে তার উপলব্ধ পাঠ্যটিকে সেরা উপলভ্য আউটপুট ফর্মটিতে পুনরুদ্ধার এবং প্রদর্শন করতে পারে যার মধ্যে বর্তমানে YAD, Zenity, কথোপকথন বা কেবল সরল CLI পাঠ্যের 3 সংস্করণ অন্তর্ভুক্ত রয়েছে। আমি এটাকে 'কিট' বলি। এটি এই লেখার হিসাবে 44 সংস্করণে রয়েছে।
ডকসালভ্যাজার

এই ভারী! (সি)
ভিজিল্যান্সার

4
আমি মনে করি না এলওসি সত্যই পাইথন বেছে নেওয়ার সিদ্ধান্ত গ্রহণকারী উপাদান। আরও, আপনি যে কাজটি করছেন তা কতটা জটিল? যদি আপনি কেবলমাত্র 100 টি কমান্ড শৃঙ্খলাবদ্ধ হন যা সম্ভবত ভাল, যদি এটি কেবল 30 এলওসি বাশ হয় তবে পাইথনে এটি বোঝা আরও সহজ হতে পারে - পাইথন ব্যবহার করুন।
জেফোর্ড

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

22

কর্মক্ষমতা অনুসারে বাশ প্রক্রিয়া প্রারম্ভকালে পাইথনকে ছাড়িয়ে যায়।

লিনাক্স মিন্টে চালিত আমার মূল আই 7 ল্যাপটপ থেকে এখানে কিছু পরিমাপ রয়েছে:

Starting process                       Startup time

empty /bin/sh script                   1.7 ms
empty /bin/bash script                 2.8 ms
empty python script                    11.1 ms
python script with a few libs*         110 ms

* পাইথন বোঝাই libs হ'ল: ওএস, ওস.পথ, জসন, সময়, অনুরোধ, থ্রেডিং, সাবপ্রসেস

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

আপনি যদি পারফরম্যান্সের জন্য ব্যাশ ব্যবহার করেন তবে শুধুমাত্র:

  • সত্যিই সহজ এবং প্রায়শই বলা স্ক্রিপ্টস
  • স্ক্রিপ্টগুলি যা মূলত অন্যান্য প্রক্রিয়াগুলিকে কল করে
  • যখন আপনাকে ম্যানুয়াল প্রশাসনিক ক্রিয়াকলাপ এবং স্ক্রিপ্টিংয়ের মধ্যে ন্যূনতম ঘর্ষণ প্রয়োজন - দ্রুত কয়েকটি কমান্ড পরীক্ষা করে এগুলি ফাইল.শ এ রাখুন

... এবং এ /bin/echoজাতীয় মাত্রার দ্বারা বাশকে ছাপিয়ে যায়, এটি পরিমাপ করা কঠিন। সুতরাং বাশ চালানোর পরিবর্তে, আপনি ব্যবহার করতে পারেন /bin/echo mycommand > named_pipe(নামযুক্ত পাইপ বা সকেটের আউটপুট কমান্ড / বার্তা) ... এবং পাইপ থেকে পাইথন প্রক্রিয়া পড়ার আদেশ / নির্দেশাবলী পড়া এবং সেগুলি চালনা করতে পারেন। সুতরাং বাশ সত্যিই কোনও ভাল "স্টার্টআপ কস্ট অপ্টিমাইজেশন" নয়।
সেজারি বাগিনস্কি

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

16

বাশ মূলত একটি ব্যাচ / শেল স্ক্রিপ্টিং ভাষা যা বিভিন্ন তথ্য প্রকারের এবং কন্ট্রোল স্ট্রাকচারের চারপাশে সকল প্রকারের স্ফুলিঙ্গের পক্ষে কম সাপোর্ট করে - সামঞ্জস্যতার বিষয়গুলি উল্লেখ না করে।

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

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


13
সুতরাং আমার অভিমানের পুরো নৈতিকটি হ'ল: সঠিক কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করুন।
জাস্টিন

4
ভাসমান পয়েন্টটি awk, bc এর মতো সরঞ্জাম এবং zsh / ksh এর মতো শাঁস সহ সমর্থিত, সুতরাং আপনি কেন পাইথন হাত নীচে জিতেন?
ghostdog74

4
কারণ সেই সরঞ্জামগুলি বাশ নয়। আমি একটি স্বতন্ত্র পার্থক্য নির্দেশ ছিল। এই সরঞ্জামগুলি শেল স্ক্রিপ্টে ব্যবহৃত হয়, তবে নেটিভ বাশ নিজেই ভাসমান পয়েন্টটি সমর্থন করে না।
জাস্টিন

4
না, নিজে চেষ্টা করে দেখুন একটি বড় লগ ফাইল gzip এবং কিছু ফিল্টারিং করতে zcat, বাছাই করা ইত্যাদি ব্যবহার করুন এবং তারপরে নেটিভ পাইথন libs ব্যবহার করুন। এটি নেটিভ সরঞ্জামগুলি ব্যবহার করে উল্লেখযোগ্যভাবে দ্রুত।
জাস্টিন

6
@ জাস্টিন, হ্যাঁ, এই সরঞ্জামগুলি বাশ নয় তবে এটি প্রাচীন কাল থেকেই রয়েছে এবং প্রায়শই শেল স্ক্রিপ্টিংয়ে ব্যবহৃত হয়। যদি আপনি ভাসমান পয়েন্ট চান, তবে awk / বিসি ব্যবহার করুন। এটি এই সরঞ্জামগুলির সংমিশ্রণ যা শেল স্ক্রিপ্টিং পাইথনের মতোই শক্তিশালী করে তোলে।
ghostdog74

12

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

উন্নতি যুক্ত করতে আপনি যে-কোনও বিষয় ফিরে আসতে পেরেছেন তা পাইথনের মতো ভাষার ক্ষেত্রে সম্ভবত (যদিও সর্বদা নয়) ভাল উপযুক্ত কারণ 1000 লাইনের উপরের বাশ কোড বজায় রাখতে খুব বেদনাদায়ক হয়ে ওঠে। বাশ কোডটি দীর্ঘ হয়ে গেলে ডিবাগ করতেও বিরক্ত হয় .......

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


8

এমন দুটি দৃশ্য রয়েছে যেখানে বাশ অভিনয় অন্তত সমান আমার বিশ্বাস:

  • কমান্ড লাইন ইউটিলিটিগুলির স্ক্রিপ্টিং
  • যে স্ক্রিপ্টগুলি কার্যকর করতে খুব অল্প সময় নেয়; যেখানে পাইথন ইন্টারপ্রেটার শুরু করতে অপারেশন নিজেই বেশি সময় নেয়

এটি বলেছিল, আমি সাধারণত নিজেকে স্ক্রিপ্টিং ভাষার পারফরম্যান্সের সাথে নিজেকে চিন্তিত করি না। পারফরম্যান্স যদি আসল সমস্যা হয় তবে আপনি স্ক্রিপ্ট না করে প্রোগ্রাম করবেন না (সম্ভবত পাইথনে)।


4

আমি এই দেরি উত্তরটি মূলত পোস্ট করছি কারণ গুগল এই প্রশ্নটি পছন্দ করে।

আমি বিশ্বাস করি যে সমস্যা এবং প্রসঙ্গটি সত্যই ওয়ার্কফ্লো সম্পর্কে হওয়া উচিত, সরঞ্জামগুলি নয়। সামগ্রিক দর্শন সর্বদা "কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করুন।" তবে এটি আসার আগে অনেকে যখন সরঞ্জামগুলিতে হারিয়ে যায় তখন প্রায়শই তারা ভুলে যায়: "কাজ শেষ করুন" "

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

তবে কখন বাশকে বলা উচিত সমস্যাটি ছাড়িয়ে যেতে শুরু করে? আমাকে সতর্কবার্তা দেওয়ার জন্য আমার কিছু চেক রয়েছে:

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

তালিকাটি এগিয়ে যায়। বটম লাইন, আপনি যখন আপনার স্ক্রিপ্টগুলি বৈশিষ্ট্যগুলি যুক্ত করছেন তা চালিয়ে রাখতে কঠোর পরিশ্রম করছেন, তখন বাশ ছাড়ার সময় এসেছে।

ধরে নেওয়া যাক আপনি নিজের কাজটি পাইথনে স্থানান্তরিত করার সিদ্ধান্ত নিয়েছেন। আপনার বাশ স্ক্রিপ্টগুলি যদি পরিষ্কার থাকে তবে প্রাথমিক রূপান্তরটি বেশ সোজা। এমনকি বেশ কয়েকটি রূপান্তরকারী / অনুবাদক রয়েছে যা আপনার জন্য প্রথম পাসটি করবে।

পরবর্তী প্রশ্নটি হল: আপনি পাইথনে চলে যাওয়ার কি হাল ছেড়ে দেন?

  1. বাহ্যিক ইউটিলিটিগুলিতে সমস্ত কল অবশ্যই subprocessমডিউল (বা সমতুল্য) থেকে কোনও কিছুতে আবৃত থাকতে হবে । এটি করার একাধিক উপায় রয়েছে এবং ৩.7 অবধি এটি সঠিক করার জন্য কিছুটা প্রচেষ্টা নেওয়া হয়েছিল ( subprocess.run()সমস্ত সাধারণ কেসগুলি নিজেই পরিচালনা করার জন্য ৩. 3. উন্নতি হয়েছে)।

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

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

  4. একবারে চালানো এবং দ্রুত প্রস্থান করা স্ক্রিপ্টগুলির জন্য পাইথনের প্রারম্ভকালীন সময় বাশের চেয়ে অনেক বেশি দীর্ঘ হতে পারে। তবে স্ক্রিপ্টে উল্লেখযোগ্য গণনা থাকলে পাইথন দ্রুত এগিয়ে যায়।

  5. পাইথন গ্রহে সর্বাধিক বিস্তৃত প্যাকেজ সিস্টেম রয়েছে। বাশ যখন কিছুটা জটিল হয়ে যায় তখন পাইথনের সম্ভবত একটি প্যাকেজ থাকে যা বাশের পুরো খণ্ডগুলিকে একক কল করে তোলে। যাইহোক, সঠিক প্যাকেজ (গুলি) ব্যবহার করার জন্য পাইথনিস্তা হওয়ার সবচেয়ে বড় এবং সবচেয়ে ভয়ঙ্কর অংশ। ভাগ্যক্রমে, গুগল এবং স্ট্যাক এক্সচেঞ্জ আপনার বন্ধু।


2

এটি সঠিক কিনা আমি জানি না তবে আমি খুঁজে পেয়েছি যে অজগর / রুবি প্রচুর গাণিতিক গণনা রয়েছে এমন স্ক্রিপ্টগুলির জন্য আরও ভাল কাজ করে। অন্যথায় আপনাকে dcবা অন্য কোনও "স্বেচ্ছাচারিত নির্ভুলতা ক্যালকুলেটর" ব্যবহার করতে হবে । এটি কেবল একটি খুব বড় ব্যথা হয়ে যায়। পাইথনের সাথে আপনার ফ্লোট বনাম ইনটসের উপর আরও বেশি নিয়ন্ত্রণ থাকে এবং অনেক সময় এবং কখনও কখনও প্রচুর গণনা সম্পাদন করা আরও সহজ।

বিশেষত, বাইনারি তথ্য বা বাইটগুলি হ্যান্ডেল করার জন্য আমি কখনই ব্যাশ স্ক্রিপ্টের সাথে কাজ করব না। পরিবর্তে আমি পাইথন (সম্ভবত) বা সি ++ বা এমনকি নোড.জেএস এর মতো কিছু ব্যবহার করব


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

0

পারফরম্যান্স বুদ্ধিমান উভয়ই সমানভাবে একই কাজ করতে পারে, তাই প্রশ্নটি হয়ে ওঠে যে বেশি বিকাশের সময় বাঁচায়?

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

এটি সাব-কমান্ডগুলির পরিবর্তনের প্রতিরোধের পার্শ্ব প্রতিক্রিয়াটিকেও বেশ ভালভাবে প্রভাবিত করে, কারণ তাদের মধ্যে ইন্টারফেসটি কেবল সরল পাঠ্য।

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

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

তবে অন্যান্য কমান্ড কল করার পক্ষে এটি সহজ নয়। সুতরাং যদি আপনার অপারেটিং সিস্টেমটি সম্ভবত ইউনিক্স হয় তবে আপনি দেখতে পাবেন যে ব্যাশের উপর বিকাশ সবচেয়ে দ্রুত বিকাশ way

বাশ কখন ব্যবহার করবেন:

  • এটি একটি গ্রাফিকাল প্রোগ্রাম, বা কোনও গ্রাফিকাল ইঞ্জিন।
  • এটি কেবল ইউনিক্সের জন্য।

পাইথন কখন ব্যবহার করবেন:

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