উদ্দেশ্যমূলক-সি কেন কোকো পরিবেশের বাইরে বহুল ব্যবহৃত হয় না?


24

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

কেন এটি তখন বেশি ব্যবহৃত হয় না? এর সমস্যাগুলি কী?


5
"reasons

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

উত্তর:


28

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

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

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

সি ++ এছাড়াও লাগছিল সবচেয়ে সি প্রোগ্রামারদের জন্য আরো অনেক কিছু পরিচিত। এটি কয়েকটি নতুন কীওয়ার্ড যুক্ত করেছে, তবে (বিশেষত শুরুর দিকে) কোডটি এখনও বেশিরভাগ ক্ষেত্রে বেশ পরিচিত বলে মনে হচ্ছে। এর "খাঁটি সুপারসেট" অবস্থা সত্ত্বেও, বেশিরভাগ উদ্দেশ্য-সি কোড বেশিরভাগ সি প্রোগ্রামারদের কাছে মোটামুটি বিদেশী দেখায় । সি-তে জিনিসগুলি কীভাবে কাজ করে তার দিক থেকে বোঝাতে ও বোঝাও অনেক সহজ। "

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

এগুলি সমস্ত কিছুর প্রথমদিকে সি ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ তে অবলম্বন করা যায় পরিমাণ।

অবজেক্টিভ-সি কখনও পৌঁছাতে পারেনি। প্রকৃতপক্ষে, এটি অ্যাপল যখন তাদের সিস্টেমের জন্য বিকাশ করতে চেয়েছিল তাদের উপর প্রায় জোর করে এটি পুনরুদ্ধার করেছিল তখন এটি অস্পষ্ট হয়ে যাওয়ার দিকে এগিয়ে যাওয়ার পথে ছিল। অ্যাপলের মার্কেট শেয়ার এতটুকু বড় নয় যে এটি সত্যিই সমালোচনামূলক ভর দেবে - কেবল একটি বৃহত্তর কুলুঙ্গি। এটি একটি "ডিফল্ট" পছন্দ কেবল যেখানে / কারণ অ্যাপল এটি করে।

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


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

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

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

+1, দুর্দান্ত ব্যাখ্যা!
চ্যান

11

ওয়েল, মূলত, আপেল হ'ল কিছুকাল থেকেই উদ্দেশ্য-সি এর পিছনে চালিকা শক্তি:

  • যদিও সর্বশেষ সংস্করণটি কার্যত পরিত্যাগ করা হয়েছে, অবজেক্টিভ সি 2.0 আসলে মূল ভিত্তি ক্লাস / প্রোটোকলগুলির সাথে কিছুটা বাড়তে শুরু করেছে, যার অর্থ, ভাষা বৈশিষ্ট্য এবং কাঠামোর মধ্যে একটি অন্তর্নিহিত যোগসূত্র রয়েছে, এনএসএফস্টএমিউমেন্টেশনটি আমার মনে ঝরছে যা লুপগুলিতে সঠিকভাবে প্রতিক্রিয়া জানাতে প্রয়োজন। এর অর্থ, ভাষা এবং প্ল্যাটফর্মের মধ্যে ক্রমবর্ধমান সংযোগ রয়েছে।
  • কার্যত কোকোয়ের আসল বিকল্প নেই। এবং পরিবর্তে কোকো আরও বেশি সংখ্যক ওএসএক্স বৈশিষ্ট্যগুলির উপর নির্ভর করতে শুরু করে। প্রযুক্তিগতভাবে, আপনার কোনও ওএসে যে কোনও মূল কাঠামো সহ একটি উদ্দেশ্য-সি বাস্তবায়ন চলতে পারে, অন্য কোনও প্ল্যাটফর্মের জন্য সেখানে খুব সাম্প্রতিক জিনিস নেই।

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


3
GNUStep আছে। তারা অ্যাপলের সাথে তাল মিলিয়ে চলার চেষ্টা করে, যদিও তারা কতটা ভাল করছে আমি কিছুক্ষণ যাচাই করিনি।
প্রতি জোহানসন

1
এবং কোকোট্রন পাশাপাশি আছে।
ysdx

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