শুধু তাদের মধ্যে প্রধান পার্থক্য কি জানতে চান? এবং প্রতিটি ভাষার শক্তি (এটি ব্যবহার করা আরও ভাল)।
সম্পাদনা: এটি "বনাম" নয় বিষয় যেমন ঠিক তথ্য।
শুধু তাদের মধ্যে প্রধান পার্থক্য কি জানতে চান? এবং প্রতিটি ভাষার শক্তি (এটি ব্যবহার করা আরও ভাল)।
সম্পাদনা: এটি "বনাম" নয় বিষয় যেমন ঠিক তথ্য।
উত্তর:
চেহারা জন্য, ভাষা sed
, awk
, perl
, python
।
sed
প্রোগ্রাম একটি স্ট্রিম সম্পাদক এবং ইনপুট ফাইল বা ফাইল (লাইন নির্দিষ্ট রেঞ্জ থেকে, বা, আরো সাধারণভাবে) প্রতিটি লাইনে একটি স্ক্রিপ্ট থেকে কর্ম প্রয়োগ করতে ডিজাইন করা হয়েছে। এর ভাষা ed
ইউনিক্স সম্পাদক উপর ভিত্তি করে তৈরি করা হয়েছে এবং যদিও এটিতে শর্তসাপেক্ষ এবং আরও কিছু রয়েছে, জটিল কাজের জন্য এটি কাজ করা কঠিন। আপনি এটি দিয়ে ছোটখাটো অলৌকিক কাজ করতে পারেন - তবে আপনার মাথার চুলের জন্য একটি ব্যয় করে। যাইহোক, এটির রেমিস্টের মধ্যে কাজ করার চেষ্টা করার সময় এটি সম্ভবত প্রোগ্রামগুলির মধ্যে দ্রুততম। (এতে আলোচিত প্রোগ্রামগুলির সর্বনিম্ন শক্তিশালী নিয়মিত এক্সপ্রেশন রয়েছে - অনেকগুলি কাজের জন্য পর্যাপ্ত, তবে অবশ্যই পিসিআরই নয় - পার্ল-সামঞ্জস্যপূর্ণ নিয়মিত এক্সপ্রেশন)
awk
প্রোগ্রাম (এর লেখক আদ্যক্ষর থেকে নাম - Aho, Weinberger এবং Kernighan) রিপোর্ট বিন্যাসের জন্য একটি হাতিয়ার প্রাথমিকভাবে হয়। এটি স্যুপ-আপ হিসাবে ব্যবহার করা যেতে পারে sed
; এর আরও সাম্প্রতিক সংস্করণগুলিতে, এটি কম্পিউটেশনালি সম্পূর্ণ। এটি একটি আকর্ষণীয় ধারণা ব্যবহার করে - প্রোগ্রামটি 'নিদর্শনগুলির সাথে মেলে' এবং 'প্যাটার্ন মেলে যখন নেওয়া হয়' এর উপর ভিত্তি করে। নিদর্শনগুলি মোটামুটি শক্তিশালী (বর্ধিত নিয়মিত এক্সপ্রেশন)। ক্রিয়াগুলির জন্য ভাষা সি এর অনুরূপ, এর অন্যতম প্রধান বৈশিষ্ট্য awk
হ'ল এটি ইনপুটটি স্বয়ংক্রিয়ভাবে রেকর্ডে এবং প্রতিটি রেকর্ডকে ক্ষেত্রগুলিতে বিভক্ত করে।
পার্লকে একটি অংশীদারী-খুনি এবং সেড-কিলার হিসাবে লেখা হয়েছিল। এটা করা হয় সাথে উপলব্ধ করা প্রোগ্রামের দুই a2p
এবং s2p
রূপান্তরের জন্য awk
স্ক্রিপ্ট এবং sed
পার্ল মধ্যে স্ক্রিপ্ট। পার্ল হ'ল স্ক্রিপ্টিং ভাষার পরবর্তী প্রজন্মের প্রথম দিকের মধ্যে একটি (টিসিএল / টাকা সম্ভবত প্রাথমিকতার দাবি করতে পারে)। এটি একটি আরও বেশি শক্তিশালী ভাষার সাথে পরিচালনা করে শক্তিশালী সংহত নিয়মিত অভিব্যক্তি রয়েছে expression এটি প্রায় সমস্ত সিস্টেম কলগুলিতে অ্যাক্সেস সরবরাহ করে এবং এতে সিপিএএন মডিউলগুলির এক্সটেনসিবিলিটি রয়েছে। ( উভয়ই নয় awk
বা sed
এক্সটেনসিবলও নয় ) পার্লের 'অবজেক্টস' রয়েছে তবে ভাষার মৌলিক অংশের চেয়ে এটি অ্যাড-অন বেশি of
পাইথনটি সর্বশেষে লেখা হয়েছিল এবং সম্ভবত এটি পার্লের প্রতিক্রিয়া হিসাবে লেখা হয়েছিল। এটিতে কিছু আকর্ষণীয় সিনট্যাকটিক ধারণা রয়েছে (স্তরগুলি নির্দেশ করতে ইন্ডেন্টিং - কোনও ধনুর্বন্ধনী বা সমতুল্য নয়)। পার্লের চেয়ে এটি মূলত অবজেক্ট-ভিত্তিক; এটি পার্লের মতোই বর্ধমান।
ঠিক আছে - কখন ব্যবহার করবেন?
পার্ল পাইথন যেটা করতে পারে না তার বিপরীতে পার্ল যে কিছু করতে পারে তা আমি জানি না। দুজনের মধ্যে পছন্দ অন্যান্য বিষয়গুলির উপর নির্ভর করবে। পাইথন হওয়ার আগে আমি পার্ল শিখেছি, তাই আমি এটি ব্যবহার করার প্রবণতা রাখি। পাইথনের কম পরিমাণে সিনট্যাক্স রয়েছে এবং এটি শিখতে সাধারণত কিছুটা সহজ। পার্ল 6, এটি উপলভ্য হয়ে উঠলে আকর্ষণীয় বিকাশ হবে।
(দ্রষ্টব্য যে বিশেষত পার্ল এবং পাইথনের 'ওভারভিউ'গুলি ভয়াবহভাবে অসম্পূর্ণ; পুরো বই এই বিষয়টিতে লেখা যেতে পারে))
awk
ওভার sed
শেখার জন্যে (যদিও উভয় এখনও তাদের ব্যবহারসমূহ থাকে)। কাজের আকার হিসাবে: sed
এটি একবারে এক লাইন প্রক্রিয়াকরণে লাইন থেকে লাইনে কোনও স্টোরেজ না রেখেই সবচেয়ে কার্যকর। awk
সমস্ত উত্স থেকে সংগৃহীত ডেটা সহ প্রায়শই সহযোগী অ্যারে তৈরি করতে ব্যবহৃত হয়; এটি আরও মেমরি ব্যবহার করে এবং তাই এর চেয়ে বড় ডেটা সেটগুলির সাথে সমস্যা দেখা দেওয়ার সম্ভাবনা অনেক বেশি sed
। tsawk
আপনি এর সাথে লিঙ্ক করার আগে আমি শুনিনি । আমি যখন পার্সেলের পিছনে পড়ে যাই (তবে পাইথনের সাথে আপনি আরও ভাল করতে পারেন) যখন কোনও কাজ খুব বেশি হয় awk
।
কয়েক ডজন ভাষায় দক্ষতার পরে, আপনি এস লটের মতো লোকদের ক্লান্ত হয়ে পড়েন (উত্তর দেওয়ার ছয় বছর পরে প্রায় অর্ধেকের বেশি ডাউন-ভোট (+ 45 / -22) প্রায় এই প্রশ্নটির তার বিতর্কিত উত্তর দেখুন)।
শেড অত্যন্ত সাধারণ কমান্ড-লাইন পাইপলাইনের জন্য সেরা সরঞ্জাম। একটি সেড মাস্টারের হাতে, এটি স্বেচ্ছাসেবী জটিলতার এক-অফের জন্য উপযুক্ত, তবে এটি খুব সহজ বিকল্প প্রতিস্থাপন পাইপলাইন বাদে উত্পাদন কোডে ব্যবহার করা উচিত নয়। স্টাফ 'এর / এই / এটি /' এর মতো।
কেবলমাত্র একটি ইনপুট উত্স এবং একক আউটপুট (বা একাধিক আউটপুট ক্রমানুসারে লিখিত থাকে) থাকে তখন গাওক (জিএনইউ অ্যাওক) জটিল তথ্য পুনর্নির্মাণের জন্য সর্বোত্তম পছন্দ। যেহেতু রিয়েল-ওয়ার্ল্ডের কাজগুলি এই বিবরণটির সাথে সামঞ্জস্য করে এবং একটি ভাল প্রোগ্রামার দুই ঘন্টার মধ্যে গোক শিখতে পারে, এটি সেরা পছন্দ। এই গ্রহে, সহজ এবং দ্রুত আরও ভাল!
আপনার যখন খুব জটিল ইনপুট / আউটপুট দৃশ্যাবলী থাকে তখন পার্ল বা পাইথন অ্যাডাব্ল্যাড বা সিডের যে কোনও সংস্করণের তুলনায় অনেক ভাল। সমস্যাটি যত জটিল, ততক্ষণ আপনি রক্ষণাবেক্ষণ এবং পাঠযোগ্যতার দিক থেকে অজগরটি ব্যবহার করছেন। দ্রষ্টব্য, তবে কোনও ভাল প্রোগ্রামার যে কোনও ভাষায় পঠনযোগ্য কোড লিখতে পারে এবং কোনও খারাপ প্রোগ্রামার যে কোনও কার্যকর ভাষায় অবিশ্বাস্য ক্রেপ লিখতে পারে, তাই প্রোগ্রামার যদি বলা হয় তবে পার্ল বা পাইথনের পছন্দটি প্রোগ্রামারের পছন্দগুলিতে নিরাপদে রেখে যেতে পারে can দক্ষ এবং চতুর
a?ⁿaⁿ
যান a??ⁿaⁿ
তবে পার্ল 5 এ ⁿ
এটি 1,000,000 এর একটি দিয়ে চালান এটি দুই সেকেন্ডেরও কম সময়ে চলে। time perl -E '$x=1_000_000;$_="a"x$x;$m=("a??"x$x).("a"x$x);say $_=~$m'
আপনি যদি নির্দোষকে চালান তবে ⁿ
মাত্র 25 টির জন্য এটি দুটি সেকেন্ডের বেশি সময় নেয় you আপনি যে জিনিসটি অনুধাবন করতে পারবেন তা হ'ল পার্লের রেজিজের অভ্যন্তরে পার্ল কোড রাখার অনুমতি সহ আরও দ্রুত রেগেক্স বৈশিষ্ট্য রয়েছে যা এটি মিলে যায় তার পরিবর্তনে ters । আপনি চান এমন একটি মডিউল প্রয়োগ করতে পারেন যা অন্যদের মধ্যে একটির জন্য অন্তর্নির্মিত অদলবদল করে।
আমি সেডকে একটি পূর্ণাঙ্গ প্রোগ্রামিং ল্যাঙ্গুয়েজ বলব না, এটি ভাষা স্ট্রিম এডিটর যা প্রোগ্রামিংয়ে টেক্সট ফাইলগুলি সম্পাদনা করার লক্ষ্য নিয়ে তৈরি করা হয়েছে।
ওউক হ'ল সাধারণ উদ্দেশ্য ভাষা কিছুটা হলেও এটি পাঠ্য প্রক্রিয়াকরণের জন্য এখনও সেরা suited
পার্ল এবং পাইথন সম্পূর্ণরূপে উন্নত, সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা languages পার্লের শিকড়টি পাঠ্য প্রক্রিয়াকরণে রয়েছে এবং এর সাথে প্রচুর অজস্র কনস্ট্রাকশন রয়েছে (নেটটিতে প্রায় একটি দৌড়-টু-পার্ল স্ক্রিপ্টও রয়েছে)। পার্ল এবং পাইথনের মধ্যে অনেক পার্থক্য রয়েছে, আপনার সেরা বেট হ'ল উভয় ভাষার সংক্ষিপ্তসারগুলি উইকিপিডিয়া জাতীয় কিছুতে সেগুলি সম্পর্কে ভাল উপলব্ধি অর্জনের জন্য পড়ুন।
প্রথমত, "পার্ল, পাইথন অ্যাজক এবং সেড" তালিকায় দুটি অপ্রাসঙ্গিক জিনিস রয়েছে।
জিনিস 1 - সরল পাঠ্য ম্যানিপুলেশন সরঞ্জাম।
sed। এটিতে একটি ফাইলের প্রতিটি লাইন পড়ার এবং পরীক্ষা করার ধারণা দ্বারা সংজ্ঞায়িত, অপেক্ষাকৃত সহজ স্কোপ রয়েছে। সেড বিশেষভাবে পাঠযোগ্য হিসাবে নকশাকৃত নয়। এটি খুব ক্ষুদ্র এবং খুব ক্ষুদ্র ইউনিক্স সার্ভারে খুব দক্ষ হতে ডিজাইন করা হয়েছে।
awk। এটির কাজটির কিছুটা কম স্থির, কম সরল সুযোগ রয়েছে। যাইহোক, একটি awk প্রোগ্রামের প্রধান লুপটি কোনও উত্স ফাইলের লাইনগুলি অন্তর্ভুক্ত পড়া দ্বারা সংজ্ঞায়িত করা হয়।
এগুলি "সম্পূর্ণ" প্রোগ্রামিং ভাষা নয়। আপনি যখন - কিছু কাজের সাথে - মোটামুটি পরিশীলিত প্রোগ্রামগুলিকে বিশৃঙ্খলভাবে লিখতে পারেন, এটি দ্রুত জটিল হয়ে ওঠে এবং পড়তে অসুবিধা হয়।
জিনিস 2 - সাধারণ উদ্দেশ্যে প্রোগ্রামিং ভাষা। এগুলির বিভিন্ন ধরণের স্টেটমেন্ট ধরণের রয়েছে, অসংখ্য বিল্ট-ইন ডেটা স্ট্রাকচার এবং কোনও ওয়্যার্ড-ইন অনুমান বা শর্টকাট এর কথা বলা যায় না।
পার্ল।
পাইথন।
এগুলি কখন ব্যবহার করবেন।
sed। কখনও। 32K এরও বেশি মেমরির কম্পিউটারগুলির আধুনিক যুগে এটির আসলেই কোনও মূল্য নেই। পার্ল বা পাইথন একই জিনিস আরও স্পষ্টভাবে করে।
awk। কখনও। সেডের মতো এটি গণনার আগের যুগের প্রতিফলন ঘটায়। এই ভাষাটি বজায় রাখার পরিবর্তে (একটি সফল সিস্টেমের জন্য প্রয়োজনীয় সমস্ত অন্যান্য ছাড়াও) কেবল একটি মনোরম ভাষায় সবকিছু করা আরও সুখকর।
পার্ল। যে কোন প্রোগ্রামিং সমস্যা। আপনি যদি মুক্ত চিন্তা-ভাবনা সিনট্যাক্স পছন্দ করেন, যেখানে একই জিনিসটি করার অনেকগুলি উপায় রয়েছে, পার্লটি মজাদার।
পাইথন। যে কোন প্রোগ্রামিং সমস্যা। আপনি যদি মোটামুটি সীমাবদ্ধ সিনট্যাক্স পছন্দ করেন, যেখানে কম পছন্দ, কম সূক্ষ্মতা এবং (সম্ভবত) আরও স্পষ্টতা রয়েছে। পাইথনের অবজেক্ট-ভিত্তিক প্রকৃতি এটিকে বৃহত, জটিল সমস্যার জন্য আরও উপযুক্ত করে তোলে।
পটভূমি - আমি অজ্ঞতার কারণে সেডকে আঘাত করছি না। আমি বিশ বছর আগে বিশ্রী শিখলাম। এটি দিয়ে অনেক কিছুই করেছে; এটি একটি কোর ইউনিক্স দক্ষতা হিসাবে শেখানোর জন্য ব্যবহৃত। আমি প্রায় 15 বছর আগে পার্ল শিখেছি। এটি দিয়ে অনেক পরিশীলিত জিনিস করেছেন। আমি উভয়কেই পিছনে ফেলেছি কারণ পাইথনে একই জিনিস আমি করতে পারি - এবং এটি সহজ এবং আরও স্পষ্ট।
সেড এবং অ্যাজকের সাথে দুটি গুরুতর সমস্যা রয়েছে যার মধ্যে দুটিই তাদের বয়স নয়।
তাদের বাস্তবায়নের অসম্পূর্ণতা। সিড এবং অযৌক্তিক কাজগুলি পাইথন বা পার্লে করা যেতে পারে, প্রায়শই আরও সাধারণ এবং কখনও কখনও দ্রুতও। শেল পাইপলাইনের মাল্টি-প্রসেসিংয়ের কারণে কিছু কার্যকারিতা সুবিধা রয়েছে। পাইথন subprocess
আমাকে সেই সুবিধাগুলি পুনরুদ্ধার করার জন্য মডিউল সরবরাহ করে offers
আরেকটি ভাষা শেখার দরকার। পাইথন (বা পার্ল) এ জিনিসগুলি করার মাধ্যমে আপনার বাস্তবায়ন কম ভাষার উপর নির্ভর করে যার ফলস্বরূপ স্পষ্টতা বৃদ্ধি।
এগুলি কখন ব্যবহার করবেন: awk - never - এস লট।
আমি মনে করি এস লট এই সুপারিশটি দিয়ে চিহ্নটি কিছুটা মিস করেছেন। বাস্তবতা হল লিনাক্স এবং অন্যান্য ইউনিক্স এনভায়রনমেন্টগুলিতে, দ্রুত পাঠ্য প্রসেসিংয়ের জন্য ব্যাশ, শ, এবং কেএসএস ব্যবহার করার জন্য অ্যাড্ক একটি দরকারী সরঞ্জাম। নিজেই স্ক্রিপ্ট করার ধারণাটি হল আপনি এই সরঞ্জামটি, সেই সরঞ্জামটিকে একসাথে আটকিয়ে আপনার সমস্যার সমাধান করবেন। সুতরাং অ্যাডমিন স্ক্রিপ্টগুলিতে, এলএস, গ্রেপ, |, অবাক, টাইম, পিএস ইত্যাদি পাওয়া সাধারণ বিষয় Each প্রতিটিই একটি সরঞ্জাম যা স্ক্রিপ্টর একটি বিল্ডার ইটের মতো একত্রে বিল্ডিং শেষ করার জন্য (হাতের সমস্যাটি সমাধান করার জন্য) ইট দিয়ে সংযুক্ত করে is ।
উদাহরণস্বরূপ আমি টিম ম্যানেজিংয়ের একটি টিম সদস্য পেইন্টবল গিয়ার সরবরাহDotcom। এই ই-কমার্স সাইটটি ল্যাম্প স্ট্যাকের উপর ভিত্তি করে। পিছনে শেষ ডাটাবেসে বিভিন্ন সরবরাহকারীর থেকে ডেটা ফিডগুলি স্বয়ংক্রিয়ভাবে প্রক্রিয়াকরণ এবং সাধারণকরণের জন্য, আমরা ব্যাশ, পারল, পিএইচপি, এমনকি প্রত্যাশা সহ স্ক্রিপ্টগুলির বিবিধ মিশ্রণ নিয়োগ করি এবং বজায় রাখি। উপলব্ধ মডিউল এবং এপিআই উপর ভিত্তি করে প্রত্যেকের এর শক্তি রয়েছে। বাশ স্ক্রিপ্টগুলিতে আমরা পিআরএল-এ স্যুইচ করার প্রয়োজন ছাড়াই জাজ ব্যবহার করে প্রয়োজনীয় প্যাটার্নগুলিতে দ্রুত প্যাটার্নগুলি মেলাতে এবং উপযুক্ত ক্রিয়াগুলি করি। একটি জিনিস আমি উল্লেখ করতে চাই, যা থ্রেডে জোর দেওয়া হয়নি, তা হ'ল এই স্ক্রিপ্টগুলির ন্যায্য সংখ্যা ক্রয় করা হয়েছিল, বা মুক্ত উত্স থেকে অর্জিত হয়েছিল। যদি স্ক্রিপ্ট পার্ল হিসাবে আসে তবে আমরা এটি পার্ল হিসাবে বজায় রাখি; যদি স্ক্রিপ্টটি পিএইচপি হিসাবে আসে তবে আমরা এটিকে পিএইচপি হিসাবে বজায় রাখি; যদি এটি বাশ হিসাবে আসে তবে আমরা এটিকে ব্যাশের মতো বজায় রাখি;
ls
, পরিবর্তে গ্লোব ব্যবহার করুন। এটি পড়ুন।