মেকফাইলগুলি শেখার জন্য এটি কতটা গুরুত্বপূর্ণ? [বন্ধ]


12

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


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

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

আপনি মেকফাইলস, নির্ভরতা এবং বিকল্পগুলি ইত্যাদির বেসিকগুলি কম সময়ে শিখতে পারেন যে আপনাকে এই প্রশ্নের সমস্ত উত্তর পড়তে সময় লাগবে :)
জনবি

উত্তর:


14

হ্যাঁ, মেকফিলস কীভাবে কাজ করে তা এটি অবশ্যই মূল্যবান। এটি এখনই আপনার পক্ষে প্রাসঙ্গিক নাও হতে পারে (কারণ আপনি একটি আইডিই ব্যবহার করছেন যা সেগুলি তৈরি করে) তবে সম্ভাবনাটি এই যে ভবিষ্যতে জ্ঞানটি কার্যকর হবে।

"মূল্যবান শেখার" দ্বারা আমি বোঝাতে চাইছি, আমার কি সমস্ত কিছু ফেলে দেওয়া উচিত এবং সি ++ শিখার আগে কীভাবে সেগুলি লিখতে হবে?

সত্যই, এটি "মূল্যবান শেখার" একটি উদ্ভট ধারণা ...

তবে না আমি মনে করি না যে আপনার এটি করা দরকার।

তাদের শেখা কি সত্যিই প্রয়োজনীয় হতে চলেছে?

ভবিষ্যতে আপনার সত্যিকার অর্থে এই জ্ঞানের প্রয়োজন হবে কিনা তা আমরা ভবিষ্যদ্বাণী করতে পারি না। এটি আপনি সি ++ প্রোগ্রামিং দিয়ে চালিয়ে যাচ্ছেন কিনা এবং কোন প্রসঙ্গে আপনি এটি করছেন তার উপর নির্ভর করে।

যদি তা হয় তবে আমি তাদের সম্পর্কে (সাধারণ বাক্য গঠন এবং তারা কীভাবে কাজ করে তা বোঝা ইত্যাদি) বা তাদের কীভাবে লিখতে হয় তা সত্যই শিখতে হবে?

আমি উভয় সুপারিশ করব। আপনি যদি কোনও মেকফিল লিখতে না পারেন তবে এটি বিতর্কযোগ্য যে আপনি কী জানেন কী চলছে।

অন্য দৃষ্টিভঙ্গি রয়েছে যা বলে যে অত্যধিক জ্ঞান সহায়ক নয়।

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


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


8

আপনি যদি ওপেন সোর্স বা ইউনিক্সের মতো অপারেটিং সিস্টেমের সাথে কাজ করছেন তবে হ্যাঁ। মনে রাখবেন যদিও তারা এতো জটিল নয়। makeদীর্ঘমেয়াদে শেখা আপনাকে অনেক সময় সাশ্রয় দেবে।


লেখার জন্য পড়া বা শেখার জন্য শেখা?

উভয়। আপনি কীভাবে এটি পড়তে চান তা জানতে চান যাতে আপনার ব্যবহার করা সফ্টওয়্যার, বা লেখার বিষয়গুলি ডিবাগ করতে পারেন যাতে আপনি নিজের তৈরি করতে পারেন।
এহভুটোভ

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

3

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

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

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


সিএমকে শেখা হ'ল আকারের আদেশগুলি আরও উপকারী। মেকফিলগুলি বাস্তবায়ন বিশদ হিসাবে দেখা যেতে পারে - ভিজ্যুয়াল স্টুডিও প্রকল্প ফাইলগুলির মতো এগুলি (সত্যই বাধ্য করার আগে পর্যন্ত) শিখতে বিরক্ত করবেন না।

2

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


মেকফাইলগুলি কেন একটি ভয়ঙ্কর সিস্টেম তা বোঝানোর জন্য যত্নশীল? কিসের তুলনায়?
জনিজেডি

@ জনিজেডি: একটি জিনিস আমি বিশ্বাস করি না যে ভাল বিল্ড সিস্টেমের উচিত আপনার প্রতিটি উপ ডিরেক্টরিতে একটি ফাইল ফাইল রাখা উচিত। তবে এটি খারাপ কারণ এটি ব্যবহার করা খুব সহজ নয়, তবে ব্যাট ফাইলটি লিখে যা সত্যই কিছু বলছে।

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

2

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

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

কী চলছে তা বোঝার জন্য আমি উচ্চ প্রস্তাব দিচ্ছি ... আপনি পরবর্তীকালে কোনও বিদ্যমান সম্পাদনা করা বা নিজের তৈরি করা বেছে নেওয়া কিনা তা পৃথক সমস্যা।


2

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


1

মেকফিলস কীভাবে লিখতে হয় তা বিভিন্ন কারণে বেশ ভাল ধারণা।

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

0

আপনি যে বিল্ড সিস্টেমটি ব্যবহার করছেন তা সর্বদা বোঝার চেষ্টা করা উচিত।

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

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

মেকফিলগুলি কেন / কখন শিখবেন

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

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

আপনি যদি বিভিন্ন প্ল্যাটফর্মের জন্য প্রোগ্রাম করতে চান তবে অবশ্যই আপনার একটি বিস্তৃত বিল্ড সিস্টেম ব্যবহার করা দরকার।

তারপরেও এর অর্থ এই নয় যে অটোজেনারেটেড মেকফিলগুলি কীভাবে বিশদে কাজ করে তা আপনাকে জানতে হবে। আপনাকে কেবল বিল্ড সিস্টেমের কাজ করার জন্য ইনপুট ফাইলগুলি জানতে হবে। এগুলি কেবল কখনও কখনও একই ধরণের সিনট্যাক্সের সাথে ঘটে।


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

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

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

যদি আপনার কাছে সমস্ত কিছুর জন্য সরঞ্জাম / জিইআইআই / আইডিই থাকে এবং আপনি ব্যবহার করেন তবে আপনি সেই জ্ঞান থেকে কিছু নাও পেতে পারেন।

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