অভিনন্দন! আপনি যেখান থেকে চলে গেছেন সেখান থেকে বিশ্বের অন্যদিকে পৌঁছে আপনি কেবল প্রোগ্রামিং ভাষা / টাইপ সিস্টেম গ্লোবকে অবরুদ্ধ করেছেন। আপনি সবেমাত্র গতিশীল ভাষা / প্রোটোটাইপ-ভিত্তিক অবজেক্ট জমির সীমানায় অবতরণ করেছেন!
অনেকগুলি গতিশীল ভাষা (যেমন জাভাস্ক্রিপ্ট, পিএইচপি, পাইথন) রানটাইমে কোনও ব্যক্তির বৈশিষ্ট্য প্রসারিত বা পরিবর্তন করতে দেয় or
এর চরম রূপটি স্ব বা জাভাস্ক্রিপ্টের মতো একটি প্রোটোটাইপ ভিত্তিক ভাষা । তাদের ক্লাস নেই, কড়া কথা বলতে হবে। আপনি উত্তরাধিকার সহ শ্রেণীবদ্ধ, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের মতো দেখতে এমন কিছু করতে পারেন তবে জাভা এবং সি # এর মতো আরও তীক্ষ্ণ সংজ্ঞায়িত, শ্রেণিভিত্তিক ভাষার তুলনায় নিয়মগুলি বেশ স্বাচ্ছন্দ্যযুক্ত।
পিএইচপি এবং পাইথনের মতো ল্যাঙ্গাউজগুলি মাঝের মাটিতে থাকে live তাদের নিয়মিত, প্রতিমা সংক্রান্ত ক্লাস-ভিত্তিক সিস্টেম রয়েছে systems তবে অবজেক্টের বৈশিষ্ট্যগুলি রানটাইমে যুক্ত করা, পরিবর্তন করা বা মুছতে পারে - কিছু সীমাবদ্ধতা থাকা সত্ত্বেও (যেমন "অন্তর্নির্মিত প্রকারগুলি বাদে") যা আপনি জাভাস্ক্রিপ্টে খুঁজে পান না।
এই গতিশীলতার জন্য বড় বাণিজ্য হ'ল পারফরম্যান্স। ভুলে যান ভাষাটি কতটা দৃ strongly় বা দুর্বলভাবে টাইপ করা হয়েছে, বা এটি কতটা মেশিন কোডে সংকলন করা যেতে পারে। গতিশীল অবজেক্টগুলি সরল স্ট্রাক্টের পরিবর্তে নমনীয় মানচিত্র / অভিধান হিসাবে উপস্থাপন করতে হবে। এটি প্রতিটি বস্তুর অ্যাক্সেসে ওভারহেড যুক্ত করে। কিছু প্রোগ্রাম এই ওভারহেড হ্রাস করতে দারুণ মাত্রায় যায় (উদাহরণস্বরূপ ফ্যান্টম কোয়ার্গ অ্যাসাইনমেন্ট এবং পাইথনের স্লট-ভিত্তিক ক্লাস সহ) তবে অতিরিক্ত ওভারহেড সাধারণত কোর্সের জন্য এবং ভর্তির দামের সমান হয়।
আপনার ডিজাইনে ফিরে আসার পরে, আপনি আপনার ক্লাসের একটি উপসেটে গতিশীল বৈশিষ্ট্য রাখার ক্ষমতাটি কল্পনা করছেন। এ-এর Product
ভেরিয়েবল অ্যাট্রিবিউট থাকতে পারে; সম্ভবত একটি Invoice
বা একটি Order
হবে এবং না পারে। এটি কোনও খারাপ উপায় নয়। এটি আপনাকে কঠোর, শৃঙ্খলাবদ্ধ ভাষা এবং টাইপ সিস্টেমে থাকার সময় যেখানে প্রয়োজন সেখানে তারতম্য আনতে নমনীয়তা দেয়। নীচের দিকে, আপনি এই নমনীয় বৈশিষ্ট্যগুলি পরিচালনা করার জন্য দায়বদ্ধ এবং আপনাকে সম্ভবত এমন ব্যবস্থা ব্যবহার করতে হবে যা আরও স্থানীয় বৈশিষ্ট্য থেকে কিছুটা আলাদা দেখায়। p.prop('tensile_strength')
বরং p.tensile_strength
, উদাহরণস্বরূপ, এবং p.set_prop('tensile_strength', 104.4)
বরংp.tensile_strength = 104.4
। তবে আমি পাসকাল, আডা, সি, জাভা এবং এমনকী গতিশীল ভাষায় অনেকগুলি প্রোগ্রামের সাথে কাজ করেছি এবং তৈরি করেছি যা অ-মানক বৈশিষ্ট্য প্রকারের জন্য ঠিক এইরকম গেটর-সেটার অ্যাক্সেস ব্যবহার করেছিল; পদ্ধতির স্পষ্টভাবে কার্যক্ষম।
প্রসঙ্গত, স্থির ধরণের এবং একটি উচ্চ বৈচিত্রময় বিশ্বের মধ্যে এই উত্তেজনা অত্যন্ত সাধারণ। ডাটাবেস স্কিমা ডিজাইন করার সময় প্রায়শই একটি অভিন্ন সমস্যা দেখা যায়, বিশেষত সম্পর্কিত এবং প্রাক-সম্পর্কের আগে ডেটা স্টোরগুলির জন্য। কখনও কখনও এটি "সুপার-সারি" তৈরি করে এর সাথে মোকাবিলা করা হয় যা সমস্ত কল্পনাযুক্ত বৈচিত্রগুলির ইউনিয়নকে সংযোজন বা সংজ্ঞায়িত করার জন্য পর্যাপ্ত নমনীয়তা রাখে, তারপরে সেই ক্ষেত্রগুলিতে যে কোনও ডেটা আসে stuff ওয়ার্ডপ্রেস wp_posts
টেবিল , উদাহরণস্বরূপ, মত ক্ষেত্র রয়েছে comment_count
, ping_status
, post_parent
এবং post_date_gmt
যে শুধুমাত্র কিছু পরিস্থিতিতে কার্যকর আকর্ষণীয়, এবং বাস্তবে প্রায়ই ফাঁকা হয়ে যেতে পারে। আরেকটি পদ্ধতির মতো অনেকটা অতিরিক্ত, সাধারণ টেবিলের মতো wp_options
, আপনার মতোProperty
বর্গ। যদিও এর জন্য আরও সুস্পষ্ট ব্যবস্থাপনার প্রয়োজন, এতে থাকা আইটেমগুলি খুব কমই ফাঁকা থাকে। অবজেক্ট-ওরিয়েন্টেড এবং ডকুমেন্ট ডাটাবেসগুলির (যেমন: মঙ্গোডিবি) প্রায়শই পরিবর্তিত বিকল্পগুলির সাথে কাজ করার জন্য একটি সহজ সময় থাকে কারণ তারা ইচ্ছায় অনেকগুলি বৈশিষ্ট্য তৈরি করতে এবং সেট করতে পারে।