সি ++ এ বিল্ড স্ক্রিপ্টগুলি লেখার অর্থ কী?


15

আমি আমার প্রকল্পগুলি আইডিই / মেকফিলগুলি তৈরি করতে সিএমকে ব্যবহার করছি, তবে আমার সংকলিত ফাইলগুলি পরিচালনা করতে বা কোড তৈরি করতে আমার এখনও কাস্টম "স্ক্রিপ্টগুলি" কল করতে হবে।

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

কেউ আমাকে কেবল তার জন্য একটি ভাষা নির্ভরতা যুক্ত না করে আমার বিল্ড স্ক্রিপ্টগুলি লেখার জন্য সি ++ ব্যবহার করার পরামর্শ দিয়েছিলেন। প্রকল্পগুলি নিজেই ইতিমধ্যে সি ++ ব্যবহার করে তাই আমি দেখতে পাচ্ছি বিভিন্ন সুবিধা রয়েছে:

  • পুরো প্রকল্পটি তৈরি করতে কেবল একটি সি ++ সংকলক এবং সিএমকেক প্রয়োজন হবে, অন্য কিছুই নয় (অন্যান্য সমস্ত নির্ভরতা সি বা সি ++);
  • সি ++ প্রকার সুরক্ষা (আধুনিক সি ++ ব্যবহার করার সময়) "সঠিক" হওয়া সহজ করে তোলে;
  • এটি আমি যে ভাষাটি আরও ভাল জানি সেই ভাষাটিও তাই আমি এটির সাথে আরও স্বাচ্ছন্দ্য বোধ করি এমনকি আমি কিছু ভাল পাইথন কোড লিখতে সক্ষম হলেও;
  • কার্যকর করার গতিতে সম্ভাব্য লাভ (তবে আমি মনে করি না এটি সত্যিই উপলব্ধিযোগ্য হবে);

যাইহোক, আমি মনে করি কিছু অসুবিধা থাকতে পারে এবং আমি এখনও চেষ্টা না করায় বাস্তব প্রভাব সম্পর্কে আমি নিশ্চিত নই:

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

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


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

মোটামুটি ভাল নির্ভরযোগ্যতার সাথে আপনি পাঠ্যের এনকোডিংটি অনুমান করতে পারেন।
ডেডএমজি

@ ডিএডএমজি হ্যাঁ, তবে হাতে কাজ করে যদি খুব বেশি কাজ হয় (আপনি যদি ভাল অনুমান করতে চান এবং নিজেকে সীমাবদ্ধ না করেন তবে "এটি কি এএসসিআই বা ইউনিকোড, এবং যদি এটি ইউনিকোড হয় তবে কত বিট এবং কী বাইট ক্রম?") এবং আরেকটি নির্ভরতা যুক্ত করা (যদি এর জন্য কোনও নিখরচায় ও মুক্ত-স্থায়ী লাইব্রেরি থাকে) পাইথনের উপর নির্ভর করে সি ++ এ নেমে যাওয়ার পয়েন্টটি পরাস্ত করে।

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

2
আপনি আপনার সি ++ বিল্ড স্ক্রিপ্টটি তৈরি করতে কী ব্যবহার করবেন?
জে কে।

উত্তর:


24

শুধু পাইথন ব্যবহার করুন।

আমি সি ++ তে বিকাশ করি এবং পাইথনে আমার বিল্ড স্ক্রিপ্টগুলি করি এবং সি ++ এ স্ক্রিপ্টগুলি তৈরি করা আমার কাছে বেদনাদায়ক মনে হবে:

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

আপনি সি ++ এর জন্য তালিকাভুক্ত সুবিধাগুলি সম্পর্কে:

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

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

1

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

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


1

স্ক্রিপ্টগুলি নিজেকে লিখবেন না, আপনি চেষ্টার সদৃশ এবং চাকাগুলি পুনরায় উদ্ভাবন করছেন।

সিসিএনএস বা এমনকি ম্যাভেন 3 এর মতো কিছু ব্যবহার করুন যা সি ++ বিল্ড সিস্টেমের জন্য সমর্থন করে

একটি কার্যকর বিল্ড সিস্টেম, ভাষা নির্বিশেষে একটি কার্যক্ষম এক্সিকিউটেবল আর্টিক্ট তৈরি করতে স্ক্রিপ্ট আকারে কাস্টম লজিকের প্রয়োজন হবে না।

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


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

1
আমি মাভেনকে ভালবাসি - "হেল ওয়ার্ল্ড" সি প্রোগ্রাম তৈরির জন্য স্ক্রিপ্টটির প্রয়োজন প্রোগ্রামটির চেয়ে দীর্ঘ!
কোয়ান্ট_দেব

@ কোয়ান্ট_দেব, আমি মনে করি প্রথমবারের মত মাভেনকে ব্যবহার করার জন্য আমি তাদের নিজের ওয়েব পৃষ্ঠায় দেখেছি তারা প্রথমবারের মত সেটআপ করা শক্ত হওয়ার কারণে, ইতিমধ্যে ম্যাভেনকে জানা এমন কারও সাথে শুরু করার পরামর্শ দেয় recommend এটিই ছিল প্রথম চিহ্ন যে আমি এর সাথে কিছুই করার চাই না!
ব্র্যাডি

আমি স্ক্যানসকে পছন্দ করেছি, এটি কিছুটা ধীর হলেও ব্যবহার করা খুব সহজ।
কোয়ান্ট_দেব

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

0

প্রশ্নের উপর ফোকাস করতে:

সি ++ এ বিল্ড স্ক্রিপ্টগুলি লেখার অর্থ কী?

উত্তরটি একটি সহজ নম্বর

বর্তমানে গৃহীত উত্তরটি অজগরকে জুম করে, এবং সম্পূর্ণ উদ্বেগের বৈধ উদ্বেগের তালিকা করে তবে আমি একটি ভাষা-স্বাধীন কারণ যুক্ত করতে চাই:

আপনি যদি সত্যিই কোনও সঙ্কলিত ভাষায় কিছু স্ক্রিপ্ট করতে চান না যদি আপনি এটির সহায়তা করতে পারেন:

  • স্ক্রিপ্ট বুটস্ট্র্যাপ করার জন্য আপনার একটি স্ক্রিপ্ট দরকার হবে!
  • অথবা আপনার সংকলিত স্ক্রিপ্টটি সোর্স কন্ট্রোলের মধ্যে চেক করা দরকার (এবং এটি পরীক্ষিত উত্সগুলির সাথে সিঙ্কে রাখুন!)
  • স্ক্রিপ্টটি হঠাৎ সংযুক্ত স্ক্রিপ্টের জন্য একটি বিল্ড কনফিগারেশনও রয়েছে। (এটি বজায় রাখা দরকার!)

তদতিরিক্ত, অন্যান্য উত্তর সাথে যেতে:

সম্ভবত আপনি আপনার বিল্ড স্ক্রিপ্টগুলি লেখার জন্য একটি "কাঁচা" স্ক্রিপ্টিং ভাষা ব্যবহার করতে চান না (আমি পেয়েছি যে সি ++ অন্তর্ভুক্তি সিএমকে হ্যান্ডেল করবে)।

আপনার সম্ভবত যা করা উচিত তা হ'ল বিল্ডের মধ্যে একটি বেছে নিন । সিস্টেমআউটসেখানে । এবং দেখুন যে কোনওটি আপনার বিলের কব্জি ফিট করে কিনা। স্ক্রিপ্টিবিলিটি / এক্সটেনডিবিলিটি / সিএমকে / ক্রসপ্ল্যাটফর্মনেস-সহ চমৎকার।

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