স্ট্যান্ডার্ড সংখ্যাসূচক অ্যালগরিদমের জন্য লাইব্রেরি ব্যবহার না করা কি সাধারণ এবং কেন?


54

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

আমি জিজ্ঞাসা করি কারণ আমি কোড পুনরায় ব্যবহারের একটি বড় অনুরাগী , যা প্রস্তাব দেয় যে আমি যখন সম্ভব হয় তখন বিদ্যমান বাস্তবায়নগুলি ব্যবহার করার চেষ্টা করি। তবে আমি কৌতূহলী যে কারণগুলি আছে যেগুলি সাধারণ প্রোগ্রামিংয়ের তুলনায় বৈজ্ঞানিক গণনায় নীতিটি কম মূল্যবান নয় whether


উল্লেখ করতে ভুলে গেছি: আমি পাইথনের মতো ভাষার যেখানে একটি গ্রন্থাগার ব্যবহারের সুস্পষ্ট সুবিধা (মৃত্যুর গতি) রয়েছে তার বিপরীতে আমি বিশেষত সি এবং সি ++ সম্পর্কে জিজ্ঞাসা করছি।


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

2
আপনি যে সমস্ত উপপাদ্যটি এসেছেন তা কি আপনি তিরস্কার করেন? হতে পারে আপনি এটিকে শট দিন এবং কিছু শিশুর ক্ষেত্রে এটি খেলুন, তবে এটি যদি আপনার গবেষণার কেন্দ্রবিন্দু না হয় তবে আপনি সম্ভবত এটি গ্রহণ করুন এবং জীবন নিয়ে অগ্রসর হন।
dls

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

উত্তর:


45

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

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

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

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


5
"আপনি উন্নতি করতে বা বাগ খুঁজে বের করে পিছনে অবদান রাখতে পারেন, যা অন্য অনেক লোককে উপকৃত করবে।" - এটি "টিঙ্কারিং / শেখার" তাগিদ এবং অলসতা উভয়ই মেটায় (ইতিমধ্যে সম্পন্ন কাজগুলি না করে)। :)
জেএম

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

34

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

পাইথন পিপ / ইজিল_ইনস্টল এবং অভিন্ন ডেটা স্ট্রাকচার ইন্টারফেসের (যেমন প্রতিটি লাইব্রেরি মনে করে যে একটি ন্যারেজ অ্যারে তৈরি করে এবং উত্পাদন করে) এর সাহায্যে এই ওভারহেড হ্রাস করতে পারদর্শিতা অর্জন করেছে।


19

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

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

এইবার কল্পনা করুন যে আপনি কিছু সরঞ্জাম যা প্রয়োজন সম্মুখীন নয় যে হাতিয়ার-শৃঙ্খল (ঠিক গত মাসে আমার ঘটেছে) এ। আপনার তিনটি পছন্দ আছে

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

এটি চয়ন করা খুব সহজ (1)। খুব সহজ।


হ্যাঁ, যুক্ত নির্ভরতা গ্রন্থাগারগুলি ব্যবহারের একটি গুরুত্বপূর্ণ অপূর্ণতা।
ডেভিড কেচসন

নির্ভরতা হ'ল আমার মনের
মধ্যেও

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

* আপনার পয়েন্ট 3. (নাইটপিকের জন্য দুঃখিত।)
299792458

Er কোন. এটা বলতে চাইছি।
ডিএমকেকে

12

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

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

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

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


12
"তবে অবশ্যই আপনি যা করছেন তা সত্যই আপনার জানতে হবে: সাধারণ অ্যালগরিদমগুলি প্রয়োগ করাও জটিল trick" - এই যথেষ্ট জোর করা যাবে না.
জেএম

10

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

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

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


1
বোঝার উন্নতির জন্য +1। যদিও এটি আপনার নিজের অ্যালগরিদমের পক্ষে আরও একটি সমস্যা যা একটি লাইব্রেরি রুটিনের জন্য।
ফাহিম মিঠা

8

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


7

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

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

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


6

আমার 2 সেন্ট।

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

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

  1. তাদের প্রয়োগের ভাষায় লিখিত একটি গ্রন্থাগার ব্যবহার করুন, সাধারণভাবে এমন কিছু যা স্ট্যান্ডার্ড লাইব্রেরির অংশ, বা অন্যথায় ব্যাপকভাবে উপলভ্য, বা

  2. এফএফআই ভাষাগুলির মাধ্যমে একটি সি / সি ++ লাইব্রেরি কল করুন। এটি ধরে নিয়েছে যে একটি মোড়ক ইতিমধ্যে বিদ্যমান নেই, কারণ এটি যদি হয় তবে এটি সহজেই (1) থেকে পৃথক নয়।

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

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

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

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


6

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


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

5

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


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

আমি সম্মত, এটি একটি দুর্দান্ত সমাধান এবং যদি সম্ভব হয় তবে লোকদের কিছু করা উচিত।
mhucka

5

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

সুতরাং, সত্যিকারের একটি ভাল গ্রন্থাগারের প্রয়োজন যেমন জ্ঞানটি অ্যাপ্লিকেশন থেকে পাঠাগারে পাঠানো উচিত, যাতে পাঠাগারটিও এটির সুবিধা নিতে পারে।


3

ইতিমধ্যে উপরে উল্লিখিত সমস্ত বিষয় ছাড়াও, আমি "ফোর্টরান বনাম সি ++" প্রশ্ন থেকে আমার উত্তরটি পুনরাবৃত্তি করব: একজন প্রোগ্রামার সবচেয়ে মূল্যবান সম্পদ হ'ল তার সময়। হ্যাঁ, বাহ্যিক নির্ভরতা প্রায়শই বিশ্রী হয়। তবে অন্যরা ইতিমধ্যে বাস্তবায়ন করেছে এমন আলগোরিদিমগুলি পুনরায় বাস্তবায়ন, ডিবাগ এবং পরীক্ষার জন্য সময় ব্যয় করা প্রায় বোকামি, এবং ফলাফলটি খুব কমই কোনও কোডের মতো কোড হিসাবে কার্যকর হতে পারে যা বিশেষজ্ঞের দ্বারা লিখেছিল written অন্যরা যা করেছে তা পুনরায় ব্যবহার করুন!


আমি এই বিষয়ে আমার নিজস্ব উত্তর দিতে। আপনি সমস্ত বিবরণ আবার লিখলে আপনি আরও অনেক কিছু শিখতে পারেন। আমি এখন পয়েন্ট মেঘের সাথে 5-6 বছর ধরে কাজ করি। প্রথম তিন বছর আমি নিজেই সমস্ত চমকপ্রদ কথা লিখেছি। দ্বিতীয়ার্ধটি আমি পয়েন্ট ক্লাউড লাইব্রেরি ব্যবহার করে ব্যয় করেছি। আমি প্রমাণ করতে পারছি না, তবে অন্যরা ইতিমধ্যে সরবরাহ করা সমাধানগুলির বিষয়ে চিন্তা করতে প্রথম তিন বছর ব্যয় করে আমি নিজেকে পিসিএলে আরও শক্তিশালী বিশেষজ্ঞ হিসাবে বিবেচনা করি।
জান হ্যাকেনবার্গ

@ জ্যানহ্যাকেনবার্গ - হ্যাঁ, তবে আমাকেও ভোঁতা হতে দিন: আপনি আপনার জীবনের তিন বছর পুনরায় উদ্ভাবনের চাকা নষ্ট করেছেন। অন্যরা যা করেছে তা যদি আপনি ব্যবহার করে থাকেন তবে আপনি কত নতুন জিনিস তৈরি করতে পারতেন তা কল্পনা করুন !?
ওল্ফগ্যাং ব্যাঙ্গার্থ

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

বিটিডব্লিউ আমি আমার জীবনের বিশাল তিন বছরের সাথে একমত নই। এর অর্থ হ'ল পিএইচডি পোস্ট-ডক অভিজ্ঞতাতে আমার কেবল দুটি দরকারী বছর ছিল। আজ আমি বনাঞ্চল বিন্দু মেঘে 10 বিলিয়ন সিলিন্ডার ফিট করতে পারি এবং গাছটিকে উপস্থাপন করতে কোনটি ভাল তা মেশিনটিকে সিদ্ধান্ত নিতে দেয়। আমার 50 ডলার ব্যবহারকারীরাও তা করতে পারেন। 1 ঘন্টা hour হার্ড এবং সময় সাশ্রয়ী উপায় শিখার মাধ্যমে আমি শিখেছি সমস্ত কৌশল। আমি সিদ্ধান্ত নিয়েছিলাম যে কীভাবে vi ব্যবহার করতে হয় তা কখনই শিখতে হবে না, তবে প্রয়োজনীয় শেখার বক্ররেখার লোকেরা কোড উত্পন্ন করার জন্য সবচেয়ে কার্যকরী উপায় ব্যবহার করার দাবি করে থাকে আমি তাদের বিশ্বাস করি।
জান হ্যাকেনবার্গ

2

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


2

"পুনরায় ব্যবহার করা মূলত একটি সামাজিক ঘটনা I আমি অন্য কারও সফ্টওয়্যার ব্যবহার করতে পারি provided

  1. এটা কাজ করে
  2. এটা বোধগম্য
  3. এটি সহ-বিদ্যমান থাকতে পারে
  4. এটি সমর্থিত (বা আমি নিজেই এটি সমর্থন করতে ইচ্ছুক, বেশিরভাগ আমি নই)
  5. এটা অর্থনৈতিক
  6. আমি এটি খুঁজে পেতে পারেন।

"- বি স্ট্রস্ট্রপ, দ্য সি ++ প্রোগ্রামিং ল্যাঙ্গুয়েজ 2 এড। (1991) পৃষ্ঠা 383।


1

লাইব্রেরি ব্যবহারের জন্য এবং আপনার নিজস্ব রুটিনগুলি ঘূর্ণনের জন্যও বেশ কয়েকটি ভাল কারণ দেওয়া হয়েছে given

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

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


0

যোগ করার মতো সামান্য, আমাদের কোডটি পুনরায় ব্যবহার করতে হবে, এটি কোডের স্থায়িত্ব এবং সমাজে অবদান সম্পর্কে, তবে এটি সর্বোপরি।

আমরা কোডটি পুনরায় ব্যবহার না করার কারণটি হ'ল আপনি যদি প্রোগ্রামার শুরু করেন তবে অন্যের কোড বোঝা শক্ত। এটি উন্নত সি ++ সহ বিশেষত কঠিন এবং আপনি খাঁটি সিতেও কিছু কৌশল করতে পারেন।

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

বাস্তবতা হ'ল আমরা স্ক্র্যাচ থেকে নিজের প্রোগ্রামিংয়ের চেয়ে কোড ব্যবহার এবং পড়ার মাধ্যমে আরও শিখতে পারি।

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


-1

লাইব্রেরিগুলি অ্যালগোরিদমগুলি নিজস্ব বাস্তবায়নের বিপরীতে সরবরাহ করে:

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

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

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

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

আপনার নিজের দ্বারা একটি অ্যালগরিদম পুনরায় লেখালেখি দেয় স্বাধীনতার। আপনার প্রকল্প উদাহরণস্বরূপ জিএসএল এর জিপিএল লসেন্স সমর্থন করবে না ।

অনুগ্রহটি একমাত্র বাধা হতে পারে যা গবেষকদের দৃষ্টিকোণ থেকে স্বতন্ত্র।


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

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

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

@ ওল্ফগ্যাংবাঙ্গার্থ আমি আপনার সমস্ত যুক্তির সাথে একমত। আমার একমাত্র পয়েন্ট হ'ল আপনি যখন সেই কর্নার কেসগুলি নিজে পরিচালনা করতে চান তখন আপনি অনেক বেশি তত্ত্ব শিখেন। আমার উত্তরটির আমার প্রথম সংস্করণটি সত্যই শোনাচ্ছে এটির কোনও পার্থক্য নেই। আমি ভয়াবহ ক্লান্ত ছিলাম। আমি লাইব্রেরির স্থিতিশীলতা বেনিফিট সম্পর্কে আরও অনেক উন্নত উত্তরে লিখি। আমার জন্য এটি ব্যয় করা সময় এবং জ্ঞান অর্জনের মধ্যে একটি বাণিজ্য।
জান হ্যাকেনবার্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.