বিতর্ক পার্শ্ববর্তী দৃঢ় মতামত অনেকটা আছে কিন্তু সম্ভবত এই আসলে মতামত একটি ব্যাপার নয়, এটা একটি ব্যাপার ঘটনা । সুতরাং আমাদের অভিজ্ঞতামূলক গবেষণার দিকে নজর দেওয়া উচিত । এবং এ থেকে প্রমাণ স্পষ্ট:
হ্যাঁ , স্ট্যাটিক টাইপিং ট্রেড-অফের জন্য মূল্যবান - এবং কেবলমাত্র কিছুটা নয়, তবে বাস্তবে যথেষ্ট পরিমাণে । প্রকৃতপক্ষে, নিখুঁত প্রমাণগুলি দেখায় যে স্থির টাইপিং কমপক্ষে 15% দ্বারা কোডে বাগের সংখ্যা হ্রাস করতে পারে (এবং এটি একটি কম অনুমান, প্রকৃত শতাংশটি প্রায় অবশ্যই আরও বড়)। এটি একটি মর্মান্তিকভাবে উচ্চ সংখ্যা: আমি মনে করি যে স্থির টাইপিংয়ের বেশিরভাগ সমর্থকরাও ভাবেন নি যে এটি এতই তীব্র পার্থক্য করেছে made
এটি বিবেচনা করুন: যদি কেউ আপনাকে বলে যে আপনার প্রকল্পের বাগগুলি রাতারাতি 15% হ্রাস করার একটি সহজ উপায় ছিল, তবে এটি কোনও অ-বুদ্ধিমান হওয়া উচিত। 1 এটি প্রায় প্রবাদ বাক্য রূপালী বুলেট।
প্রবন্ধটি টাইপ করতে বা টাইপ করতে হবে না: কাগজটিতে জাভাস্ক্রিপ্টে সনাক্তকরণযোগ্য বাগগুলি জাং গাও, ক্রিশ্চিয়ান বার্ড এবং আর্ল টি। বার দ্বারা প্রমান করা হয়েছে । আমি সবাইকে এটি পড়তে উত্সাহিত করি, এটি একটি লিখিত কাগজ যা অনুকরণীয় গবেষণা উপস্থাপন করে।
লেখকরা কতটা দৃously়তার সাথে তাদের বিশ্লেষণ সম্পাদন করেছেন তা সংক্ষিপ্তভাবে সংক্ষিপ্ত করে বলা খুব কঠিন তবে এখানে একটি (খুব রুক্ষ) রূপরেখা দেওয়া হয়েছে:
টাইপস্ক্রিপ্ট এবং ফ্লো জাভাস্ক্রিপ্টের উপর ভিত্তি করে দুটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা অন্যথায় সামঞ্জস্যপূর্ণ থাকার পরেও টাইপ হিন্টিং এবং স্ট্যাটিক টাইপ চেকিং যুক্ত করে। এটি প্রকারভেদে বিদ্যমান কোডকে বাড়ানোর অনুমতি দেয় এবং তারপরে এটি পরীক্ষা করে টাইপ করে।
গবেষকরা গিটহাব থেকে জাভাস্ক্রিপ্টে লিখিত ওপেন সোর্স প্রকল্পগুলি সংগ্রহ করেছেন, সমাধান করা বাগের প্রতিবেদনগুলি দেখেছেন এবং প্রতিবেদনিত প্রতিটি বাগকে কোডের টুকরোতে হ্রাস করার চেষ্টা করেছেন যা টাইপস্ক্রিপ্ট বা প্রবাহের স্ট্যাটিক ধরণের পরীক্ষক দ্বারা ধরা পড়বে। এটি তাদের স্থিতিশীল টাইপিং ব্যবহার করে বাগের শতাংশের কম পরিমাণ নির্ধারণ করতে পারে।
গবেষকরা তাদের বিশ্লেষণে কোনও টাইপযুক্ত সম্পর্কিত বাগটিকে প্রকারের সাথে সম্পর্কিত বলে বিবেচনা করবেন না তা নিশ্চিত করার জন্য কঠোর সতর্কতা অবলম্বন করেছিলেন। 2
বিগত অধ্যয়নের তুলনায় এই নতুন গবেষণার বিশেষ শক্তি রয়েছে:
- একটি নেই সরাসরি স্ট্যাটিক তুলনা বনাম গতিশীল টাইপিং, কয়েক (যদি থাকে) বিভ্রান্তি কারণের সঙ্গে, যেহেতু জাভাস্ক্রিপ্ট এবং টাইপ করা বিষয় / ফ্লো মধ্যে একমাত্র পার্থক্য টাইপ করছে।
- তারা টাইপস্ক্রিপ্ট এবং প্রবাহ উভয়ই (যেমন বিভিন্ন ধরণের সিস্টেম) পরীক্ষা করে এবং বিভিন্ন লোককে বাগগুলি ঠিক করার জন্য (ম্যানুয়াল) প্রকারের টীকাটি পুনরুত্পাদন করে একাধিক মাত্রা জুড়ে প্রতিলিপি সম্পাদন করে। এবং তারা বিভিন্ন প্রকল্পের কোড সংখ্যক সংখ্যক জুড়ে এটি সম্পাদন করে।
- কাগজ স্থিরযোগ্য বাগের উপর স্ট্যাটিক টাইপিংয়ের সরাসরি প্রভাবের পরিমাপ করে (আরও কিছু অস্পষ্ট মানের চেয়ে)।
- লেখকরা কী পরিমাপ করবেন এবং কীভাবে আপ-ফ্রন্টের একটি কঠোর মডেল নির্ধারণ করেন। তদুপরি, তাদের বিবরণ অবিশ্বাস্যভাবে পরিষ্কার এবং ত্রুটিগুলির জন্য বিশ্লেষণ করা সহজ করে তোলে (যখন কোনও গবেষণামূলক কাগজ আক্রমণগুলির জন্য নিজেকে খোলে তখন সর্বদা উত্তম: যদি কোনও আক্রমণগুলি তার যুক্তিগুলিকে আটকানো পরিচালনা না করে তবে তা আরও শক্তিশালী হয়)। 3
- তারা যথাযথ শক্তি বিশ্লেষণ করে যাতে তাদের নমুনার আকার পর্যাপ্ত হয় এবং তাদের পরবর্তী পরিসংখ্যান বিশ্লেষণটি বায়ুচঞ্চল।
- বিস্ময়কর ব্যাখ্যাগুলি বাদ দিতে তারা অত্যধিক রক্ষণশীল, এবং কেবল একটি চলমান অংশ পরিমাপ করে। তদুপরি, তারা প্রকারগুলি অন্তর্ভুক্ত করে তাত্ক্ষণিকভাবে স্থিরযোগ্য বাগগুলিতে তাদের বিশ্লেষণকে সীমাবদ্ধ করে এবং টাইপিংয়ের সাথে সামঞ্জস্য করার জন্য আরও উন্নত রিফ্যাক্টরিংয়ের প্রয়োজন হতে পারে এমন কোনও কিছু বাদ দেয়। সুতরাং বাস্তবে, প্রভাবটি প্রশংসনীয়ভাবে অনেক বড়, তবে তারা যা বলেছিল তার চেয়ে কোনও ছোট নয়।
- এবং পরিশেষে, তারা একটি সামান্য প্রভাব কিন্তু একটি বিস্ময়কর পার্থক্য খুঁজে না। তাদের অত্যধিক রক্ষণশীল প্রক্রিয়া সত্ত্বেও, এমনকি 95% আত্মবিশ্বাসের ব্যবধানের স্বল্প প্রান্তে তারা দেখতে পান যে কমপক্ষে 10% বাগ রয়েছে যা খুব কম সংখ্যক প্রকারের চেকগুলি দিয়ে কেবল অদৃশ্য হয়ে যায়।
কাগজটিতে এখনও কেউ আবিষ্কার করেনি এমন মৌলিক ত্রুটি না থাকলে কাগজটি প্রায় কোনও ব্যয়েই স্থির টাইপিংয়ের বৃহত সুবিধা দেখায়। 4
একটি noteতিহাসিক নোটে, প্রোগ্রামিংয়ে শাখাগুলি টাইপ করার বিষয়ে গবেষণার এক জোরালো শুরু হয়েছিল কারণ দীর্ঘদিন ধরে, প্রমাণগুলি মোটেই পরিষ্কার ছিল না । এর কারণ হ'ল স্থির বনাম গতিশীল টাইপিংয়ের প্রভাব পরীক্ষা করার জন্য নিয়মতান্ত্রিক পরীক্ষা-নিরীক্ষা করা সহজ নয়: একটি পদ্ধতিগত পরীক্ষা অবশ্যই আমাদের তদন্তের প্রভাবকে আলাদা করতে হবে। এবং দুর্ভাগ্যক্রমে আমরা টাইপিং শৃঙ্খলার প্রভাবটি আলাদা করতে পারি না, কারণ এটি প্রোগ্রামিং ভাষার সাথে আবদ্ধ tied
বাস্তবে এমন কোনো ছিলেন প্রোগ্রামিং ভাষা (সঙ্গে যেমন ভিবি বিভিন্ন উপভাষা উভয় স্ট্যাটিক এবং ডাইনামিক টাইপিং অনুমতি Option Strict
On
বা Off
, বা স্ট্যাটিক্যালি পাতার মর্মর টাইপ করা)। যাইহোক, এগুলি সরাসরি তুলনার জন্য উপযুক্ত ছিল না, সর্বাধিক গুরুত্বপূর্ণ কারণ কোনও বিদ্যমান, পর্যাপ্ত বৃহত কোড বেস ছিল না যা সরাসরি তুলনা করতে দেয়। সর্বোপরি আমরা তাদের "পরীক্ষাগার সেটিংসে" তুলনা করতে পারি, যেখানে পরীক্ষার বিষয়গুলি এলোমেলোভাবে ভাষার কোনও স্ট্যাটিক বা গতিশীল টাইপ করা রূপগুলিতে কোনও কাজ সমাধান করে solve
দুর্ভাগ্যক্রমে এই কৃত্রিম প্রোগ্রামিং অ্যাসাইনমেন্টগুলি বাস্তব-জগতের ব্যবহারের পক্ষে মডেল দেয় না। বিশেষত, তাদের মধ্যে অনেকগুলি স্কোপ ছোট এবং একটি সংজ্ঞায়িত সমস্যা সমাধান করুন যা পাঠ্যের অর্ধেক পৃষ্ঠায় সংক্ষিপ্ত করা যেতে পারে।
ভাগ্যক্রমে এটি অতীতে ছিল, কারণ টাইপস্ক্রিপ্ট, ফ্লো এবং জাভাস্ক্রিপ্ট প্রকৃত স্ট্যাটিক টাইপিং ব্যতীত একই ভাষা এবং কারণ এখানে কোড এবং বাগগুলির থেকে একটি নমুনা দেওয়ার জন্য একটি বিস্তৃত বাস্তব-বিশ্বের ডেটাসেট রয়েছে sample
1 মূল কাগজ থেকে একটি উদ্ধৃতি দ্বারা অনুপ্রাণিত।
2 আমি এতে পুরোপুরি সন্তুষ্ট নই: স্ট্যাটিক্যালি টাইপ করা ভাষার অন্যতম প্রধান শক্তি হ'ল স্থিরভাবে টাইপ-সম্পর্কযুক্ত সমস্যাগুলিকে স্ট্যাটিকালি টাইপ-চেক করা যায় এমন পদ্ধতিতে অঙ্কিত করা যায়। এটি অনেক যুক্তি ত্রুটিগুলিকে টাইপ ত্রুটিতে রূপান্তরিত করে, যা স্থির টাইপের দ্বারা ধরা পড়তে পারে এমন ব্যাগের হারকে মারাত্মকভাবে বাড়ায়। প্রকৃতপক্ষে, কাগজটি মোটামুটি টাইপ-সম্পর্কযুক্ত বাগগুলিকে শ্রেণিবদ্ধ করে এবং আমি দাবি করি যে বাস্তবে এগুলির একটি বড় শতাংশ স্থির টাইপিংয়ের দ্বারা ধরা যেতে পারে।
3 আমি বিশ্লেষণে শৃঙ্খলাবদ্ধ ত্রুটিগুলি খুঁজে পাওয়ার চেষ্টা করার জন্য যে কাউকে, বিশেষত গতিশীল টাইপিংয়ের প্রবক্তাদের আমন্ত্রণ জানাচ্ছি। আমি মনে করি না অনেকগুলি আছে (যদি থাকে) এবং আমি বিশ্বাস করি যে কোনও সম্ভাব্য ত্রুটি বস্তুগতভাবে ফলাফলকে পরিবর্তন করবে না।
4 আমি সন্দেহ করি যে বাস্তব, বৃহত আকারের প্রকল্পগুলিতে স্ট্যাটিক টাইপিংয়ের প্রকৃত ব্যয় অস্তিত্বহীন, যেহেতু এটি পরে আর্কিটেকচারের একটি প্রাকৃতিক অঙ্গ হয়ে যায় এবং এমনকি পরিকল্পনাটি আরও সরল করে তুলতে পারে । স্থির ধরণের ত্রুটিগুলি স্থির করতে সময় লাগে তবে পরে অনুসন্ধান করা ত্রুটির চেয়ে অনেক কম। এটি ব্যাপকভাবে গবেষণামূলকভাবে অধ্যয়ন করা হয়েছে এবং কয়েক দশক ধরে এটি পরিচিত (উদাহরণস্বরূপ কোড সম্পূর্ণ )।