যদি আমি সি ++ এর জন্য লিনিয়ার বীজগণিত প্যাকেজটি ব্যবহার করি তবে কী অলস হিসাবে বিবেচিত হবে?


11

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

প্রচুর কলেজ কোর্স সি ++ তে রয়েছে তা বিবেচনা করে, ম্যাটল্যাবের অনুরূপ সিনট্যাক্স সহ একটি লিনিয়ার বীজগণিত প্যাকেজ (আর্মাদিলো) ব্যবহার করা কি অলস হিসাবে বিবেচিত হবে?

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

এটি বাস্তব জীবনে কীভাবে কাজ করে? আপনাকে কোন প্যাকেজগুলি ব্যবহারের অনুমতি রয়েছে?

উদাহরণস্বরূপ, আমি আর্মাডিলো দিয়ে আমার সি ++ জ্ঞান তৈরি করতে চাই না এবং "ভেক্টর এইচ" "" অ্যালগরিদম "" তালিকা "ইত্যাদির মতো আরও বহুল ব্যবহৃত প্যাকেজগুলির গভীর জ্ঞান নেই not


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


আপনার পাঠ্যক্রমটি এগুলি অন্তর্ভুক্ত বলে ধরে নিচ্ছি, আমি সন্দেহ করি যে নিজেই একটি রৈখিক বীজগণিত প্যাকেজ ব্যবহার করা আপনাকে <vector>, <algorithm> এবং <list> শিখতে বাধা দেবে।
ব্র্যান্ডিন

@ রিচার্ডটিঙ্গল: যতক্ষণ না উর্ধ্বতনরা এটি নিষিদ্ধ না করে, কোনওটিকে কিছু ব্যবহার করার অনুমতি দেওয়া হয় ;-)
ডক ব্রাউন

পরিবর্তন lazyকরার জন্য sensibleআপনার শিরোনাম, এবং উত্তর "হ্যাঁ" (আপনি, একটি টাস্ক যে রৈখিক বীজগণিত জড়িত করছেন অবশ্যই অভিমানী) হয়।
জেরি কফিন

উত্তর:


21

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

কোড পুনরায় ব্যবহারের সুবিধাগুলি হ'ল:

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

এখানে কিছু বিষয় বিবেচনা করতে হবে:

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

প্রবাদটি যেমন চলে যায়, একজন প্রোগ্রামারে, অলসতা একটি পুণ্য।


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

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

1

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

আপনি যখন একটি বাস্তব জীবনের প্রোগ্রামিং প্রকল্প করছেন, আপনি কিছু ধারণা / জ্ঞান শেখার সহায়ক হিসাবে কোড লিখছেন না; আপনি একটি ইঞ্জিনিয়ারিং পণ্য উত্পাদন করার চেষ্টা করছেন। ইঞ্জিনিয়ারিং আসলে আবিষ্কার সম্পর্কে নয়, তবে ইতিমধ্যে অন্যের দ্বারা নির্মিত একটি ভিত্তি তৈরি করা, যাতে একটি নির্দিষ্ট ব্যবহারিক প্রয়োজনের সমাধান করা যায়। একটি প্রবাদ আছে যে প্রোগ্রামিংটি 80% অন্যের লাইব্রেরি / কোডগুলি পড়ার / পুনরায় ব্যবহার এবং 20% আপনার নিজের লেখা is কিছুটা অতিরঞ্জিত হতে পারে তবে আপনি আত্মা পান।

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

এই পার্থক্যটি পরিষ্কার হয়ে নিন এবং আপনি কী করছেন তা আপনি বুঝতে পারবেন।

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