আপনি যদি প্রোগ্রামার হন তবে নিজেকে "কম্পিউটার বিজ্ঞানী" মনে করবেন না; কম্পিউটার বিজ্ঞানীরা কম্পিউটারগুলির পরবর্তী প্রজন্ম তৈরি করছেন, যার মধ্যে কিছু এখনও বিজ্ঞান কল্পকাহিনীতে অবধি অবধি উপকরণ, মিনিয়েটাইজেশন এবং গণনা তত্ত্বের সঠিক মিশ্রণ না পাওয়া পর্যন্ত until এগুলি কেবল পাইপলাইনটির শুরু। এখানে এবং এখন সফ্টওয়্যার বিকাশকারী লোকেরা "সফটওয়্যার ইঞ্জিনিয়ার"; তারা তাত্ত্বিক এবং সরঞ্জাম গ্রহণ করে, কখনও কখনও ব্যবহারিক তত্ত্ব এবং বাস্তব-বিশ্বের সরঞ্জামগুলিকে শীর্ষে রাখে, এই জটিল ইলেক্ট্রোইনিক উইজার্ডির ক্ষমতার শক্তিকে বাড়িয়ে তোলার জন্য এবং আমরা যা চাই তা করতে এটি তৈরি করে। এটি "কম্পিউটার ইঞ্জিনিয়ারিং" ক্ষেত্রের একটি বিশেষত্ব যা কম্পিউটার বিজ্ঞানীদের তত্ত্ব গ্রহণ করে এবং তাদের, হার্ডওয়্যার এবং সফ্টওয়্যার প্রয়োগ করে বাস্তব-বিশ্বের শেষ-ব্যবহারকারী ইলেকট্রনিক সমাধানগুলিতে।
এটি, আইএমও, যেখানে ব্যবসায়ের তত্ত্বটি পূরণ হয়। এই ধরণের ক্ষেত্রে, "যথেষ্ট ভাল শত্রু আরও ভাল" পড়তে পুরানো প্রবাদটি "ভাল শত্রু যথেষ্ট ভাল" সহজেই ঘুরিয়ে ফেলা যায়। নিজেকে একজন "বিজ্ঞানী" এর পরিবর্তে একজন "ইঞ্জিনিয়ার" হিসাবে বিবেচনা করে এবং আপনি যা করেন তা অন্যান্য ইঞ্জিনিয়ারিং শাখার সাথে সমান্তরালে রেখে পার্থক্যগুলিকে স্বস্তিতে ফেলে দেয়।
আসুন বলি যে একজন ক্লায়েন্ট আপনার কাছে একজন সিভিল / স্ট্রাকচারাল ইঞ্জিনিয়ার এসেছেন এবং আপনাকে একটি সেতু তৈরি করতে বলেন। এই ব্রিজটির 20 ফুট দৈর্ঘ্য প্রয়োজন, নিজেই সমর্থন করা এবং এক টন বহন বোঝা দরকার, এটি নিয়মিত রক্ষণাবেক্ষণের সাথে 10 বছর স্থায়ী হয় এবং তারা এটি মাসে মাসে 20,000 ডলারে চান want এগুলি আপনার প্রতিবন্ধকতা; সর্বাধিকের বেশি না হওয়াতে সর্বনিম্ন পূরণ করুন। এটি করা "যথেষ্ট ভাল", এবং আপনাকে বেতন প্রদান করে। গোল্ডেন গেট ব্রিজটি তৈরি করা আপনার পক্ষে নিখুঁত প্রকৌশল হতে পারে, বেশ কয়েকটি আদেশের দ্বারা নকশা নকশাগুলি এবং বাজেট উভয়ই ছাড়িয়ে যায়। আপনি সাধারণত ব্যয়কে ছাড়িয়ে যান এবং সময় ওভারেজের জন্য জরিমানা প্রদান করেন। সময় ও উপকরণগুলির জন্য কেবলমাত্র 1000 ডলার ব্যয় হওয়াতে 5 প্রাপ্তবয়স্ক পুরুষের ওজনের জন্য নির্ধারিত একটি দড়ি সেতু নির্মাণ করা আপনার পক্ষে খারাপ ইঞ্জিনিয়ারিংও হবে; আপনি ভাল ক্লায়েন্ট পর্যালোচনা এবং প্রশংসাপত্র পাবেন না,
সফ্টওয়্যারটিতে ফিরে আসুন, বলুন আপনার কাছে এমন একটি ক্লায়েন্ট রয়েছে যার ফাইল ফাইল প্রক্রিয়াকরণ সিস্টেমের দরকার যা ফাইলগুলি ডাইজেস্ট করার জন্য তৈরি করা হয় এবং তথ্যটি সিস্টেমে রাখে। তারা এটি এক সপ্তাহের মধ্যে সম্পন্ন করতে চায় এবং এটি দিনে পাঁচটি ফাইল পরিচালনা করতে হয়, প্রায় 10 এমবি মূল্যের ডেটা, 'কারণ এটি বর্তমানে তাদের ট্র্যাফিক। আপনার মূল্যবান তত্ত্বগুলি মূলত উইন্ডোর বাইরে চলে যায়; আপনার কাজ হ'ল এমন একটি পণ্য তৈরি করা যা এক সপ্তাহের মধ্যে সেই চশমাগুলিকে পূরণ করে, কারণ এটি করে আপনি ক্লায়েন্টের ব্যয় বাজেটও পূরণ করেন (যেহেতু উপকরণ সাধারণত এই আকারের একটি সফ্টওয়্যার চুক্তির জন্য বালতিতে একটি ড্রপ হয়)। দু'সপ্তাহ ব্যয় করা, এমনকি দশগুণ লাভের জন্যও কোনও বিকল্প নয়, তবে সম্ভবত, কোনও দিনই এমন একটি প্রোগ্রাম তৈরি করা হয়নি যা কেবলমাত্র দুটি কপি চালু রাখার নির্দেশ দিয়ে কেবল অর্ধপরিবর্তন পরিচালনা করতে পারে।
আপনি যদি মনে করেন এটি একটি সীমান্তের মামলা, আপনি ভুল; এটি বেশিরভাগ ইন-হাউসারের দৈনন্দিন পরিবেশ। কারণটি আরওআই; এই প্রাথমিক প্রোগ্রামটির জন্য খুব বেশি খরচ হয় না এবং এটি খুব দ্রুত নিজের জন্য অর্থ প্রদান করবে। যখন শেষ ব্যবহারকারীদের আরও বেশি কিছু করা বা দ্রুত যেতে হয় তখন কোডটি রিফ্যাক্টর করে ছোট করে দেওয়া যায়।
প্রোগ্রামিংয়ের বর্তমান অবস্থার পিছনে এটিই মূল কারণ; অনুমানটি, কম্পিউটিংয়ের পুরো ইতিহাস দ্বারা বহন করা হয় যে কোনও প্রোগ্রাম স্থির হয় না। এটি সর্বদা আপগ্রেড করা প্রয়োজন এবং অবশেষে এটি প্রতিস্থাপন করা হবে। সমান্তরালভাবে, কম্পিউটারগুলির ধ্রুবক উন্নতি যা প্রোগ্রামগুলি উভয়ই চালিত করে তাত্ত্বিক দক্ষতার দিকে মনোযোগ হ্রাস করার সুযোগ দেয় এবং স্কেলাবিলিটি এবং সমান্তরালনের দিকে মনোযোগ বাড়িয়ে তোলে (এন-স্কোয়ার্ড সময়ে চালিত একটি অ্যালগোরিদম তবে এটি এন কোরগুলিতে চলার জন্য সমান্তরালভাবে হতে পারে) লিনিয়ার উপস্থিত হয়, এবং প্রায়শই আরও হার্ডওয়ারের দাম আরও কার্যকর সমাধান প্রস্তুত করার জন্য বিকাশকারীদের তুলনায় সস্তা is
তার উপরে, খুব সাধারণ টেনেটটি রয়েছে যে বিকাশকারী কোডের প্রতিটি লাইনই অন্য কিছু যা ভুল হতে পারে। একজন বিকাশকারী যত কম লেখেন, তত কমই তার লেখায় সমস্যা হয়। এটি কারও "বাগ রেট" এর সমালোচনা নয়; এটি সত্য একটি সাধারণ বিবৃতি। আপনি MergeSort কীভাবে 5 টি ভাষায় পিছনে এবং ফরওয়ার্ড লিখতে পারেন তা জানেন তবে আপনি যদি এক লাইনের কোডের মধ্যে কেবল একটি শনাক্তকারী পুরো ফটোগুলি ব্যবহার করেন না এবং সংকলকটি এটি না ধরলে এটি আপনাকে নিতে পারে may এটি ডিবাগ করতে ঘন্টা। এর সাথে বৈঠক করুন। তালিকা অনুসারে বাছাই করুন (); এটি সেখানে রয়েছে, এটি সাধারণ ক্ষেত্রে দক্ষ এবং এখানে সর্বোত্তম জিনিস এটি ইতিমধ্যে কাজ করে।
সুতরাং, আধুনিক প্ল্যাটফর্মগুলির অনেকগুলি বৈশিষ্ট্য এবং আধুনিক নকশা পদ্ধতিগুলির টিনেটগুলি এটিকে মাথায় রেখে নির্মিত হয়েছিল:
- ওওপি - সম্পর্কিত কোনও ডেটা এবং যুক্তিকে কোনও বস্তুর মধ্যে তৈরি করুন এবং যেখানেই সেই বস্তুর ধারণাটি বৈধ, তাই এটি বস্তু বা আরও বিশেষায়িত ডেরিভেশন।
- প্রাক-বিল্ট টেম্পলেটগুলি - একটি ভাল 60% বা তার বেশি সংখ্যক কোডটি সিনট্যাক্টিক্যাল ক্রাফ্ট এবং অন স্ক্রিনে কিছু প্রদর্শন করার জন্য প্রোগ্রাম পাওয়ার মূল বিষয়গুলি। এই কোডটি মানীকৃত এবং স্বয়ংক্রিয়ভাবে উত্পাদন করে আপনি বিকাশকারীর কাজের চাপ অর্ধেক কমানো, উত্পাদনশীলতা বৃদ্ধির অনুমতি দিয়ে।
- অ্যালগরিদম এবং ডেটা স্ট্রাকচারের গ্রন্থাগারগুলি - উপরের মত, আপনি স্ট্যাক, ক্যু, কুইকসোর্ট ইত্যাদি লিখতে জানেন তবে আপনি যখন কেন কোড লাইব্রেরিতে এই সবগুলি তৈরি করে থাকতে পারেন কেন? আপনি আইআইএস বা অ্যাপাচি পুনর্লিখন করবেন না কারণ আপনার একটি ওয়েবসাইটের প্রয়োজন ছিল, তাই বেশ কয়েকটি দুর্দান্ত বাস্তবায়ন পাওয়া গেলে কেন কুইকসোর্ট অ্যালগরিদম বা লাল-কালো গাছের বস্তুটি প্রয়োগ করবেন?
- সাবলীল ইন্টারফেস - একই লাইন বরাবর, আপনার কাছে একটি অ্যালগরিদম থাকতে পারে যা রেকর্ড ফিল্টার করে এবং বাছাই করে। এটি দ্রুত, তবে সম্ভবত এটি খুব পঠনযোগ্য নয়; আপনার জুনিয়র বিকাশকারীকে এটি বুঝতে কেবল একদিন সময় লাগবে, রেকর্ড অবজেক্টের অতিরিক্ত ক্ষেত্রের জন্য বাছাইয়ের জন্য প্রয়োজনীয় সার্জিকাল পরিবর্তন করতে দিন। পরিবর্তে, লিনকের মতো লাইব্রেরিগুলি অনেকগুলি কুরুচিপূর্ণ, প্রায়শই একটি বা দুটি লাইনের কনফিগার পদ্ধতি পদ্ধতির কলমযুক্ত কোডগুলি ফিল্টার, সাজানো, প্রজেক্টযুক্ত বস্তুগুলিতে পরিবর্তনের জন্য প্রতিস্থাপন করে।