নাল-সেফ অপারেটরগুলি (যেমন "এলভিস অপারেটর") জাভা's এর "প্রকল্পের মুদ্রার" অংশ হিসাবে কেন প্রত্যাখ্যান করা হয়েছিল?


10

জাভা 7 এর "প্রজেক্ট কয়েন" এর প্রস্তাবিত বৈশিষ্ট্যগুলির মধ্যে একটি হ'ল "এলভিস অপারেটর"। প্রজেক্ট কয়েনে ২০০৯ সালের জাভাওনের উপস্থাপনার একটি প্রতিবেদন এটিকে বর্ণনা করেছে:

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

প্রকল্প কয়েনের অন্যান্য দিকগুলি চূড়ান্তভাবে বাস্তবায়িত হওয়ার পরে, এটি ছিল না। অন্তর্ভুক্তির সম্ভাব্য প্রার্থী হিসাবে জাভাওনে উপস্থাপিত হওয়া সত্ত্বেও কেন এলভিস অপারেটরকে চূড়ান্তভাবে প্রত্যাখ্যান করা হলো?

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


4
সন্দেহপ্রবণ মন?
ইভান

1
মোট সম্ভবত কারণ এটি নালীর ব্যবহারকে বৈধ মান হিসাবে সমর্থন করে এবং উত্সাহ দেয় এবং আরও মূলত ওও নীতিগুলির বিরোধী কারণ আপনি কোনও পদ্ধতি কার্যকর করার আগে কোনও বস্তুর প্রকার পরীক্ষা করেন।
জ্যাকবিবি

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

1
@ এমন: আমি নির্দ্বিধায় স্বীকার করেছি যে আমার উত্তরটি আমার পোস্টের শুরুতে জল্পনা ছিল। যাইহোক, আমি যাইহোক যাইহোক একটি উত্তর পোস্ট করেছি কারণ ১। আমি কীভাবে মাছ দেওয়ার পরিবর্তে মাছ ধরতে শেখাচ্ছি, এবং ২. যদি আমাদের কার্ডগুলি সঠিকভাবে খেলতে হয় তবে এই পোস্টটি কাছাকাছি ডুপসের লক্ষ্য হিসাবে ব্যবহার করা যেতে পারে। একটি সাধারণ বিশ্লেষণ প্রদানের উত্তরের পিছনে ধারণাটি হ'ল মিনিট ভাষার সিদ্ধান্ত সম্পর্কে অন্তহীন যুক্তিগুলিকে নিরুৎসাহিত করা এবং অন্যকে সামগ্রিক বিষয়গুলির একটি বিস্তৃত দর্শন দেখতে সহায়তা করে।
রবার্ট হার্ভে

@ রবার্টহারভে একটি "কেন ভাষা এক্সের বৈশিষ্ট্য Y নেই" ক্যানোনিকাল ডুপ লক্ষ্যটি সুবিধাজনক হবে তবে এটির বর্তমান আকারে প্রশ্নটির পক্ষে উপযুক্ত মনে হয় না। যদি এই সাধারণ প্রশ্নটি জিজ্ঞাসা করার জন্য এটি সম্পাদনা করা হয় ( উদাহরণ?. হিসাবে এক্স = জাভা / ওয়াই = ব্যবহার করে ) এটি অবশ্যই একটি সাধারণ প্রশ্ন হিসাবে খুব বিস্তৃত হবে, তবে আপনার একটি ভাল উত্তর হবে।
আমন

উত্তর:


15

স্বভাবতই, এই প্রশ্নটি করার পক্ষে সবচেয়ে ভাল ব্যক্তি হলেন জাসিপি এক্সিকিউটিভ কমিটির একজন, আমাদের নয়। যাইহোক, এটি আমাকে কিছু নিষ্ক্রিয় জল্পনা জড়িত থেকে আটকাবে না।

প্রতি "কেন এই বৈশিষ্ট্যটি প্রয়োগ করা হয়নি" প্রশ্নের উত্তর সর্বদা কারণ সুবিধাগুলি ব্যয় অতিক্রম করে না।

এরিক লিপার্ট (সি # টিমের প্রাক্তন সদস্য) বলেছেন যে কোনও পণ্যের কোনও বৈশিষ্ট্য পেতে হলে সেই বৈশিষ্ট্যটি অবশ্যই:

  • প্রথম জায়গায় চিন্তা
  • আকাঙ্ক্ষিত
  • পরিকল্পিত
  • নিদিষ্ট
  • বাস্তবায়িত
  • প্রমাণিত
  • নথিভুক্ত
  • গ্রাহকদের কাছে প্রেরণ

অন্য কথায়, কোনও নতুন প্রোগ্রামিং ভাষার বৈশিষ্ট্য উপলব্ধি করার আগে অবশ্যই অনেকগুলি গুরুত্বপূর্ণ বিষয় অবশ্যই ঘটবে। ব্যয়গুলি আপনি যে ভাবেন তার চেয়ে বেশি are

সি # টিমে প্রতিটি নতুন বৈশিষ্ট্যের অনুরোধটি 100 এর বিয়োগফলের স্কোর দিয়ে শুরু হয় Then যদি স্কোর শূন্যের উপরে না যায়, প্রস্তাবিত বৈশিষ্ট্যটি সংক্ষেপে বাতিল করা হয়। অন্য কথায়, নতুন বৈশিষ্ট্যটি অবশ্যই বাধ্যতামূলক সুবিধা প্রদান করবে।

তবে এলভিস অপারেটর এটিকে সি # তে পরিণত করেছে। তবে এটি কেন এটি জাভা তৈরি করে নি?

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

এই রেডডিট এক্সচেঞ্জ বিবেচনা করুন :

এলভিস অপারেটরটি ১৯ since০ সাল থেকে জাভার প্রতিটি সংস্করণের জন্য প্রস্তাবিত এবং প্রতিবার প্রত্যাখ্যান করা হয়েছে। "খাঁটি" থেকে "বাস্তববাদী" পর্যন্ত বর্ণালীতে বিভিন্ন ভাষা বিভিন্ন পয়েন্টে পড়ে এবং এলভিস অপারেটর প্রয়োগকারী ভাষাগুলি জাভা থেকে বর্ণালীটির ব্যবহারিক প্রান্তের দিকে আরও ঝোঁক করে।

আপনার যদি 15+ বছরের জাভা পেশাদারদের একটি দল থাকে তবে উচ্চমানের বিতরণযোগ্য, উচ্চ-যুগ্ম ব্যাকএন্ড প্রসেসিং সিস্টেমটি কোনও ধরণের লেখা থাকে, তবে আপনি সম্ভবত স্থাপত্য শক্তির একটি দুর্দান্ত ডিগ্রি চান।

তবে, আপনার যদি মধ্য-স্তরের টিমের জুনিয়র থাকে, যাদের অর্ধেক ভিজ্যুয়াল বেসিক থেকে চলে এসেছিল এবং আপনি তাদের একটি এএসপি.নেট ওয়েব অ্যাপ লিখেছেন যা বেশিরভাগই কেবল সিআরইউডি অপারেশন করে ... তবে গুচ্ছের নকশা করা ওভারকিল হতে পারে এর AbstractFactoryFactoryবিমূর্ত দূরে আসলে আপনি কোন নিয়ন্ত্রণ যার উপর কলাম শিটি উত্তরাধিকার ডাটাবেসের যা আপনি ব্যবহার করতে হবে এ nullable আছে যে ক্লাস।

ভাষা দর্শনে এই গভীর পার্থক্যগুলি কেবলমাত্র ভাষা ব্যবহৃত হয় তা নয়, বরং ভাষা নকশা প্রক্রিয়া নিজেই যেভাবে চালিত হয়েছিল তাও প্রসারিত। সি # হিতৈষী স্বৈরশাসকের ভাষা। সি # তে একটি নতুন বৈশিষ্ট্য পেতে আপনাকে কেবল একজন ব্যক্তিকে বোঝাতে হবে: আন্ডারস হেজলসবার্গ

জাভা আরও রক্ষণশীল পদ্ধতির গ্রহণ করে। জাভাতে একটি নতুন বৈশিষ্ট্য পেতে, এটি অবশ্যই ওরাকল, আইবিএম, এইচপি, ফুজিৎসু এবং রেড হ্যাট এর মতো বড় বিক্রেতাদের একটি কনসোর্টিয়ামের কাছ থেকে sensক্যমত্য পেতে হবে। স্পষ্টতই, এই প্রক্রিয়াটি ধীর হতে চলেছে এবং নতুন ভাষার বৈশিষ্ট্যগুলির জন্য একটি উচ্চতর বার উপস্থাপন করবে।

"এক্স বৈশিষ্ট্যটি কেন প্রয়োগ করা হয়নি ..." প্রশ্নটিতে সর্বদা স্পষ্টভাবে শব্দগুলি অন্তর্ভুক্ত থাকে, "... যদি এটি স্পষ্টতই এত ভাল ধারণা হয়?" আমি এখানে পর্যাপ্তরূপে প্রদর্শিত হয়েছে যে, পছন্দ কখনও সহজ হয় না।


8
বিদ্রূপ: কারণ অ্যাবস্ট্রাক্ট ফ্যাক্টরি ফ্যাক্টরি ক্লাসগুলি আর্কিটেকচারাল দৃ rig়তার সূচক, এবং কোড ফুলে যাওয়া নয়। / বিদ্রূপ।
মাচাডো

2
@ রবার্টহারভে জাভা ভাষার নকশায় কমিটির ভূমিকা সম্পর্কে আপনার সিদ্ধান্তগুলি অত্যন্ত সরল। যদিও সম্প্রদায়ের সাথে এবং শিল্প অংশীদারদের সাথে সত্যই সহযোগিতা রয়েছে, জাভা ভাষাটি "কমিটির দ্বারা নকশা করা" এই বক্তব্যটি পুরোপুরি সম্পূর্ণ ভুল এবং এই পোস্টারের প্রশ্নের জন্য একটি ভয়ানক (যদিও দুঃখজনক হলেও, অতি বিশ্বাসযোগ্য) ব্যাখ্যা।
ব্রায়ান গয়েটজ

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

1
@ ব্রায়ানগোয়েজ: যেহেতু সমস্যাটি "কমিটি বাই ডিজাইন" শব্দের সংক্ষিপ্ত প্রকৃতির বলে মনে হচ্ছে (আপনি লক্ষ করবেন যে আমি অন্য কোনওভাবে জাভাকে অস্বীকার করিনি), তাই আমি এই শব্দটি সরিয়ে দিতে আমার উত্তর কিছুটা পরিবর্তন করেছি।
রবার্ট হার্ভে

1
সি # এবং জাভা ডিজাইনারদের মধ্যে কিছুটা প্রতিদ্বন্দ্বিতা ছিল। সি # কে জাভা ডিজাইনাররা (এবং যথাযথভাবে) একটি চিরকুট হিসাবে বিবেচনা করেছিলেন। সি # প্রতিনিধিদের "আপত্তি ভিত্তিক নয়" বলে প্রত্যাখ্যান করা হয়েছিল, তবে আসল কারণটি ছিল তারা প্রথমে সি # তে উপস্থিত হয়েছিল। এটা ভাবতে ভালো লাগল যে এটি কেবল যুক্তিযুক্ত কারণেই কিছু বৈশিষ্ট্য যুক্ত করা হয় বা বাদ যায় ... আমি সন্দেহ করি।
ফ্র্যাঙ্ক হিলিমান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.