(ডিসি) কাঠামোগত টাইপিংয়ের সুবিধা


15

আমি সবেমাত্র ড্যানিয়েল স্পিয়াকের এই আলোচনাটি দেখেছি যেখানে তিনি স্কালার উত্তর জাভার নামমাত্র টাইপিংয়ের তুলনায় কাঠামোগত টাইপিংয়ের সুবিধার কথা বলেছেন । এই পার্থক্যের জন্য একটি উদাহরণ নিম্নলিখিত জাভা কোড হবে

public interface Foo {
  public int length();
}
public interface Bar {
  public int length();
}

Foo f = ...;
Bar b = f;

কোনটি অবশ্যই সংকলন করবে না কারণ প্রকারের মধ্যে সামঞ্জস্যতা Fooএবং Barনাম দ্বারা নির্ধারিত হয়।

অন্যদিকে স্ট্রাকচারাল টাইপ সিস্টেম উভয় প্রকারকে সমান বা সামঞ্জস্যপূর্ণ বলে ঘোষণা করতে পারে এবং এইভাবে, অন্যান্য জিনিসের মধ্যে, পরীক্ষিত হাঁসের টাইপিংয়ের অনুমতি দেয়।

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

class Foo {
  class Bar { /* ... */ }
  def takeBar(b: Bar) = { /* ... */ }
  def getBar: Bar = new Bar
}

val foo1 = new Foo
val foo2 = new Foo
foo1.takeBar(foo1.getBar) // should compile
foo1.takeBar(foo2.getBar) // should not compile

আমার বোধগম্যটি কি সঠিক যে কাঠামোগত টাইপ সিস্টেমে শেষ লাইনটিও সংকলিত হবে এবং যদি তাই হয় তবে সুরক্ষার প্রকারের ক্ষেত্রে এটি কোনও অসুবিধা হবে না?


3
আপনি কি ব্যাখ্যা করতে পারেন কেন শেষ লাইনটি সংকলন করা উচিত নয়? আমি অসম্পূর্ণতা টাইপটি দেখতে পাচ্ছি না।
স্যাম গোল্ডবার্গ


আসলে, আমি স্ক্যালাল টাইপ সিস্টেম দৃষ্টিকোণ থেকে এটি নিয়ে আলোচনা করতে চেয়েছিলাম। এটা ঠিক ঘটেছে যে আলাপে দেওয়া একটি উদাহরণ জাভাতে।
দেবিলস্কি

উত্তর:


12

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

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

স্ট্রাকচারাল টাইপিংয়ের অনেকগুলি অন্তর্ভুক্ত থাকে তবে (সম্ভবত আশ্চর্যরূপে) আমরা প্রায় একই রকম ধারণাটি জানি এবং নামমাত্র টাইপ সিস্টেমগুলি থেকে ভালবাসা কাঠামোগত মধ্যে বহন করে। স্ট্রাকচারাল টাইপিং ধরণের সামঞ্জস্যতা সংজ্ঞায়নের ভিন্ন উপায় ছাড়া আর কিছুই নয়।


0

কাঠামোগত টাইপিং জেনেরিক লাইব্রেরি কোড লিখতে সহজ করে তোলে। জাভা ইকোসিস্টেমটি কেন স্ফুরিত হওয়ার জন্য # 1 কারণ এটি সহজেই ছোট লাইব্রেরিগুলি লেখা শক্ত। যদি জাভা কাঠামোগতভাবে টাইপ করা হত তবে আমার মনে হয় এটি একটি ভিন্ন গল্প এবং আরও ভাল পরিস্থিতি হবে।

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

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