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


10

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


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

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

ধন্যবাদ. প্রশ্নটিকে কেন্দ্রীভূত করতে আমি কিছু সম্পাদনা করব এবং তারপরে একটি উত্তর পোস্ট করব।
জিফ অক্সবেরি

উত্তর:


10

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

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

আমি ভাবতে পারি কেবলমাত্র অন্যান্য পরিস্থিতিতে (যেমন, অন্যেরাও থাকতে পারে):

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

10

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

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

প্রিন্সটনে অনুষ্ঠিত ২০১১ সালের গবেষণা জরিপ থেকে, "গণনার বিজ্ঞানের অনুশীলনের একটি জরিপ" :

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

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

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

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

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


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


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

6

আমি মনে করি ব্যয়-বেনিফিট বিশ্লেষণ আপনার পড়াশোনার সময় আপনি যে পছন্দসই বৈজ্ঞানিক কম্পিউটিং সাক্ষরতার অর্জন করতে চান তার উপর নির্ভর করে।

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

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

দক্ষতার সঠিক স্তরটি আপনার ক্যারিয়ারের উপর নির্ভর করে। আপনার ক্ষেত্রের শ্রমজীবী ​​লোকেরা কী স্তরের দক্ষতা ব্যবহার করে তা দেখুন।

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