সংক্ষিপ্ত উত্তর: না, কারণ টিউরিং সমতা।
দীর্ঘ উত্তর: এই লোকটি ট্রল হচ্ছে। যদিও এটি সত্য যে টাইপ সিস্টেমগুলি "আপনাকে একটি উপসেটে সীমাবদ্ধ রাখে", সেই উপসেটের বাইরের স্টাফটি সংজ্ঞা অনুসারে কাজ করে না এমন স্টাফ।
আপনি যে কোনও টিউরিং-সম্পূর্ণ প্রোগ্রামিং ল্যাঙ্গুয়েজে (যা সাধারণ-উদ্দেশ্য প্রোগ্রামিংয়ের জন্য ডিজাইন করা ভাষা, এবং প্রচুর পরিমাণে নয়) এটি করতে সক্ষম হচ্ছেন, এটি পরিষ্কার করার জন্য এটি বেশ কম বার এবং একটি সিস্টেম টুরিং- হওয়ার কয়েকটি উদাহরণ রয়েছে there অনিচ্ছাকৃতভাবে সম্পূর্ণ করুন) আপনি অন্য কোনও টিউরিং-সম্পূর্ণ প্রোগ্রামিং ভাষায় করতে সক্ষম। এটিকে "টিউরিং সমতুল্য" বলা হয় এবং এর অর্থ যা বোঝায় কেবল তার অর্থ। গুরুত্বপূর্ণভাবে, এর অর্থ এই নয় যে আপনি অন্য জিনিসটি অন্য ভাষায় যেমন সহজেই করতে পারেন - কেউ কেউ যুক্তি দেখিয়েছেন যে এটিই প্রথম স্থানটিতে একটি নতুন প্রোগ্রামিং ভাষা তৈরির পুরো বিষয়টি: আপনাকে নির্দিষ্ট কিছু করার আরও ভাল উপায় দেওয়ার জন্য বিদ্যমান ভাষাগুলি এমন জিনিসগুলিকে চুষে ফেলে।
একটি গতিশীল টাইপ সিস্টেম, উদাহরণস্বরূপ, সমস্ত ভেরিয়েবল, প্যারামিটার এবং রিটার্ন মানগুলি বেস Object
টাইপ হিসাবে ঘোষণা করে এবং তারপরে নির্দিষ্ট ডেটা অ্যাক্সেস করার জন্য প্রতিবিম্ব ব্যবহার করে স্ট্যাটিক ওও টাইপ সিস্টেমের শীর্ষে অনুকরণ করা যায়, সুতরাং যখন আপনি এটি উপলব্ধি করেন আপনি দেখতে পাচ্ছেন যে গতিশীল ভাষায় আপনি আক্ষরিক কিছুই করতে পারবেন না যা আপনি অচল ভাষায় করতে পারবেন না। তবে সেভাবে করা অবশ্যই একটি বিশাল গণ্ডগোল হবে।
উদ্ধৃতিটির লোকটি সঠিক যে স্থির ধরনের আপনি যা করতে পারেন তা সীমাবদ্ধ করে তবে এটি একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, সমস্যা নয়। রাস্তার লাইনগুলি আপনি নিজের গাড়িতে যা করতে পারেন তা সীমাবদ্ধ করে তবে আপনি সেগুলি প্রতিবন্ধী বা সহায়ক বলে মনে করেন? (আমি জানি যে আমি কোনও ব্যস্ত, জটিল রাস্তায় গাড়ি চালাতে চাই না যেখানে গাড়িগুলি তাদের পাশের দিকে রাখার জন্য বিপরীত দিকে যেতে বলছে না এবং যেখানে আমি গাড়ি চালাচ্ছি সেদিকে না আসুন!) এমন বিধিগুলি স্থাপন করে যা স্পষ্টভাবে বর্ণনা করেছে যে অবৈধ আচরণ হিসাবে বিবেচিত এবং তা নিশ্চিত হবে না যে, আপনি একটি বাজে ক্র্যাশ হওয়ার সম্ভাবনা হ্রাস করে।
এছাড়াও, তিনি অন্যদিকে ভুল পথে চালাচ্ছেন। এটি এমন নয় যে "আপনি যে সমস্ত আকর্ষণীয় প্রোগ্রাম লিখতে চান তা টাইপ হিসাবে কাজ করবে", বরং "আপনি যে সমস্ত আকর্ষণীয় প্রোগ্রাম লিখতে চান তাতে ধরণের প্রয়োজন হবে ।" জটিলতার একটি নির্দিষ্ট স্তরের বাইরে গেলে, দুটি কারণে আপনাকে লাইনে রাখার জন্য টাইপ সিস্টেম ব্যতীত কোডবেস বজায় রাখা খুব কঠিন হয়ে যায়।
প্রথমত, কারণ কোনও প্রকার টিকা নেই এমন কোডটি পড়া শক্ত। নিম্নলিখিত পাইথন বিবেচনা করুন:
def sendData(self, value):
self.connection.send(serialize(value.someProperty))
আপনি কীভাবে ডেটা দেখতে দেখতে প্রত্যাশা করবেন যে সংযোগের অন্য প্রান্তের সিস্টেমটি পায়? এবং যদি এটি এমন কোনও কিছু পেয়ে থাকে যা পুরোপুরি ভুল দেখায়, কী হচ্ছে তা কীভাবে আপনি আবিষ্কার করবেন?
এটি সব কাঠামোর উপর নির্ভর করে value.someProperty
। তবে দেখতে কেমন লাগে? ভাল প্রশ্ন! কি ডাকছে sendData()
? এটা কি পাস? সেই পরিবর্তনশীলটি দেখতে কেমন? এটা কোথা থেকে এসেছে? যদি এটি স্থানীয় না হয় তবে value
কী চলছে তা ট্র্যাক করার জন্য আপনাকে পুরো ইতিহাসটি সন্ধান করতে হবে। হতে পারে আপনি অন্য কোনও কিছু দিয়ে যাচ্ছেন যার একটি someProperty
সম্পত্তি আছে তবে এটি যা মনে করে তা তা করে না?
এখন এটি টাইপ টীকাগুলির সাথে দেখুন, যেমন আপনি বু ভাষায় দেখতে পাবেন, যা খুব অনুরূপ সিনট্যাক্স ব্যবহার করে তবে স্ট্যাটিকালি টাইপ করা হয়:
def SendData(value as MyDataType):
self.Connection.Send(Serialize(value.SomeProperty))
যদি কোনও সমস্যা হয়ে থাকে, হঠাৎ আপনার ডিবাগিংয়ের কাজটি কেবল মাত্রার একটি সহজ আদেশ পেয়েছে: এর সংজ্ঞাটি দেখুন MyDataType
! এছাড়াও, খারাপ আচরণ হওয়ার সম্ভাবনা কারণ আপনি কিছু অসম্পূর্ণ প্রকারটি পাশ করেছেন যা একই নামে সম্পত্তি রয়েছে হঠাৎ শূন্যে চলে যায়, কারণ টাইপ সিস্টেম আপনাকে ভুল করতে দেয় না।
দ্বিতীয় কারণটি প্রথমটিতে তৈরি করে: একটি বৃহত এবং জটিল প্রকল্পে, আপনি সম্ভবত একাধিক অবদানকারী পেয়েছেন। (এবং যদি তা না হয় তবে আপনি এটি নিজেকে দীর্ঘ সময় ধরে গড়ে তুলছেন, যা মূলত একই জিনিস 3 বছর আগে আপনি লিখেছেন কোডটি পড়ার চেষ্টা করুন আপনি যদি বিশ্বাস না করেন!) এর অর্থ হল আপনি জানেন না কী ছিল সেই ব্যক্তির মাথার মধ্য দিয়ে যাচ্ছেন যে তারা কোডটি লেখার সময় প্রায় কোনও অংশই লিখেছিল, কারণ আপনি সেখানে ছিলেন না, বা মনে রাখবেন না এটি অনেক আগে আপনার নিজের কোড ছিল কিনা। প্রকারের ঘোষণাপত্রগুলি আপনাকে কোডটির উদ্দেশ্য কী তা বুঝতে সাহায্য করে!
উদ্ধৃতিতে থাকা লোকটির মতো লোকেরা প্রায়শই সীমাহীন হার্ডওয়্যার রিসোর্সগুলিকে এমন একটি পৃথিবীতে "সংকলককে সহায়তা করা" বা "দক্ষতার বিষয়ে সমস্ত কিছু" হিসাবে স্ট্যাটিক টাইপিংয়ের সুবিধাগুলির সম্পর্কে দুর্ব্যবহার করে। তবে আমি যেমনটি দেখিয়েছি, যদিও এই সুবিধাগুলি অবশ্যই রয়েছে তবে প্রাথমিক উপকারটি হ'ল মানব উপাদানসমূহ, বিশেষত কোড পাঠযোগ্যতা এবং রক্ষণাবেক্ষণের ক্ষেত্রে। (যুক্ত দক্ষতা অবশ্যই একটি দুর্দান্ত বোনাস, যদিও!)