একটি প্রারম্ভিক প্রোগ্রামার হিসাবে, আমি কি তৃতীয় পক্ষের লাইব্রেরিগুলি ব্যবহার করে নিজের লাইব্রেরি তৈরির পক্ষপাতী?


12

পাইথন প্রোগ্রামার হিসাবে শুরুর দিকে, আমার প্রয়োজনীয় কার্যকারিতা সম্বলিত উন্নত তৃতীয় পক্ষের লাইব্রেরিগুলিতে ঝাঁপ দেওয়ার আগে নিজের লাইব্রেরিগুলি তৈরি করা এবং বোঝা কি ভাল ধারণা?

কিছু প্রকল্প (যেমন জ্যাঙ্গোর মতো ওয়েব ফ্রেমওয়ার্ক) সম্ভবত এই পদ্ধতির জন্য খুব বড়। তবে অন্যান্য প্রকল্পগুলি (যেমন ওয়েব ক্রলার, গ্রাফ লাইব্রেরি, এইচটিএমএল পার্সার) সম্ভবত ব্যবহারযোগ্য বলে মনে হচ্ছে।

আমি আশঙ্কা করি যে তৃতীয় পক্ষের গ্রন্থাগারগুলির উপর প্রাথমিক নির্ভরতা আমার বৃদ্ধিকে স্তব্ধ করবে।

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


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

2
"লাইব্রেরী ইন্টিগ্রেটার" এবং "প্রোগ্রামার" এর মধ্যে আপনি কী পার্থক্য তৈরি করছেন। 30 বছরে - এমনকি এম্বেড করা চিপ-স্তরের ডিভাইস কন্ট্রোলার তৈরি করেও - আমি কখনও লাইব্রেরি ছাড়া কাজ করি না। আপনি এই পার্থক্য ব্যাখ্যা করতে পারেন?
এস.লট

খারাপভাবে শব্দযুক্ত। সম্পাদনা করেছেন।
মাইক্র্যান্ড

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

উত্তর:


12

এটি সর্বদা একটি বাণিজ্য বন্ধ।

প্রারম্ভিক প্রোগ্রামার হিসাবে, কোড বনাম পুনরায় ব্যবহারের বিষয়ে বিবেচনা করার সময় আপনার নিজেকে দুটি প্রশ্ন জিজ্ঞাসা করা উচিত the

  1. আমি স্ক্র্যাচ থেকে সবকিছু লিখে, বা সমস্যা ডোমেনটির দিকে মনোনিবেশ করে এবং আমার আগ্রহী যে সমস্যার জন্য জটিল তা জটিল করে না রেখে সমস্যার সমাধান করতে চাই তা সম্পর্কে আরও শিখব?
  2. হাতে থাকা সমস্যাটি সমাধান করা কি আমার পক্ষে বেশি গুরুত্বপূর্ণ বা আমি কিছু মৌলিক ধারণাটি বোঝা আরও গুরুত্বপূর্ণ?

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

নিয়ন্ত্রণ ছেড়ে দেওয়ার বিষয়ে উদ্বিগ্ন হবেন না কারণ আপনি অন্য কারও চিন্তাভাবনাকে পিছিয়ে দিচ্ছেন; আপনি কী সম্পাদন করতে চাইছেন তার প্রতি আরও ফোকাস দিন।

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

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


সমস্যা সম্পর্কে চিন্তাভাবনা করার জন্য দুর্দান্ত কাঠামো। অনেক প্রশংসিত.
মাইক্যান্ড এবং

8

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

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

  • ত্রুটিযুক্ত এইচটিএমএল।
  • একাধিক অক্ষর এনকোডিংস (পুরো বিশ্ব ASCII- তে চলে না)।
  • জাভাস্ক্রিপ্ট দ্বারা উত্পাদিত বা সংশোধিত লিঙ্কগুলি।
  • মাল্টি-গিগাবাইট বাইনারি ফাইলগুলির লিঙ্ক।
  • ভুল মাইম-প্রকার।
  • ক্রল সেশনের মাঝখানে ক্রাশ sh
  • আলকাতরা pits.
  • এসইও পরামর্শদাতা।
  • মাইক্রোসফট।

6

আমি আশঙ্কা করি যে তৃতীয় পক্ষের গ্রন্থাগারগুলির উপর প্রাথমিক নির্ভরতা আমার প্রবৃদ্ধি আটকে দেবে এবং আমাকে প্রোগ্রামারের চেয়ে লাইব্রেরি ইন্টিগ্রেটারের চেয়ে বেশি কিছু না করে দেবে।

এটা মিথ্যা।

তৃতীয় পক্ষের গ্রন্থাগারের উপর প্রাথমিক নির্ভরতা শিখিয়ে দেবে যে কতটা ভাল গ্রন্থাগার কাজ করে।

অকাল বিকাশ সবসময় সময় নষ্ট করে। আপনার নিজের লাইব্রেরিগুলি সাবধানতার সাথে অধ্যয়ন না করে (অর্থাত্ ব্যবহার করে) আপনার চাকাটি পুনর্বহাল করতে ডুম করে - আপনার ক্যারিয়ারের বাকি সময়গুলিতে।

আমি এই সমস্যাগুলি পরিষ্কার করার জন্য অনেক বিলযোগ্য ঘন্টা ব্যয় করেছি।


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

রয়ে বলেন যে, হয় বিদ্যমান এপিআই অধ্যয়নরত :) সুবিধা
Demian ব্রেখট

2
@ ডেমিয়ান ব্রেচট: "কখনও কখনও তৃতীয় পক্ষের গ্রন্থাগারগুলি খারাপভাবে লেখা হয় এবং এটি খারাপ অভ্যাসগুলি শিখিয়ে দিতে পারে" যদিও এটি সত্য হতে পারে, বেশিরভাগ ওপেন সোর্স প্রকল্পগুলি ব্যবহারকারীদের একটি সম্প্রদায় দ্বারা তীব্রভাবে পরীক্ষা করা হয় এবং খারাপ ধারণা জনতার বুদ্ধি প্রতিরোধ করে না। তদুপরি, "খারাপভাবে লেখা" এমন রায় যা কোনও এন 100 বি কার্যকরভাবে করতে পারে না।
এস.লট

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

2
@ ডেমিয়ান ব্রেচট: আপনি বিভিন্ন লাইব্রেরি না দেখা পর্যন্ত আপনি কোনও রায় বিকাশ করতে পারবেন না। কোনও n00b ব্যবহারের জন্য লাইব্রেরিগুলিকে "প্রাক-ফিল্টার" করার কোনও সম্ভাব্য উপায় নেই। এটি সমস্ত গ্রন্থাগার বা কোনও গ্রন্থাগার।
এস.লট

4

এই বাক্যটি যা প্রথমটি আমার জন্য খুব যুক্তিযুক্তভাবে সমস্যাযুক্ত:

পাইথন প্রোগ্রামার হিসাবে শুরুর দিকে, আমার প্রয়োজনীয় কার্যকারিতা সম্বলিত উন্নত তৃতীয় পক্ষের লাইব্রেরিগুলিতে ঝাঁপ দেওয়ার আগে নিজের লাইব্রেরিগুলি তৈরি করা এবং বোঝা কি ভাল ধারণা?

আপনি কীভাবে বিশ্বাস করতে পারেন যে আপনি উন্নত (আপনার শব্দ) কার্যকারিতা গ্রন্থাগারগুলিকে একটি শিক্ষানবিশ হিসাবে কার্যকরভাবে লিখতে পারেন যা বিদ্যমান লাইব্রেরি হিসাবে সঠিক, বৈশিষ্ট্য সম্পূর্ণ এবং পরীক্ষিত হবে?

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

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

আমার মতামতটি হ'ল অন্য ব্যক্তিরা কী করেছে এবং ইতিমধ্যে আপনার জন্য আপনার সমস্যার সমাধান করেছে, যতক্ষণ না আপনি আপনার সমস্যার সমাধান করে এমন কিছু খুঁজে না পান।


1

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


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