উদ্দেশ্য-সি সি # এর সাথে কীভাবে তুলনা করে? [বন্ধ]


87

আমি সম্প্রতি একটি ম্যাক কিনেছি এবং এটি ভিএমওয়্যার ফিউশন এর অধীনে সি # বিকাশের জন্য ব্যবহার করেছি। চারপাশের সমস্ত সুন্দর ম্যাক অ্যাপ্লিকেশন সহ আমি Xcode সম্পর্কে কেবল একটি ইনস্টল ক্লিক দূরে লুকানো এবং উদ্দেশ্য-সি শিখতে শুরু করেছি।

দুটি ভাষার মধ্যে সিনট্যাক্সটি খুব আলাদা বলে মনে হচ্ছে, সম্ভবতঃ কারণ উদ্দেশ্য সি-এর উৎপত্তি সি এবং সি # এর উত্স জাভা / সি ++ এ রয়েছে। তবে বিভিন্ন সিনট্যাক্সগুলি শিখতে পারে তাই ঠিক আছে।

আমার মূল উদ্বেগটি ভাষাটির সাথে কাজ করছে এবং যদি এটি সু-কাঠামোগত, পাঠযোগ্য এবং মার্জিত কোড তৈরি করতে সহায়তা করে। আমি লিনকু এবং সি # তে ভেরার মতো বৈশিষ্ট্যগুলি উপভোগ করি এবং অবাক হয়েছি j

অবজেক্টিভ-সি দিয়ে কোন ভাষার বৈশিষ্ট্যগুলি বিকাশ করতে আমি মিস করব? আমি কোন বৈশিষ্ট্যগুলি অর্জন করব?

সম্পাদনা করুন: কাঠামোর তুলনাগুলি দরকারী এবং আকর্ষণীয় তবে একটি ভাষা তুলনা এই প্রশ্নটি যা সত্যিই জিজ্ঞাসা করছে (আংশিকভাবে মূলত ট্যাগিংয়ের জন্য আমার দোষ.net )। সম্ভবত কোকো এবং .NET উভয়ই তাদের নিজস্বভাবে খুব সমৃদ্ধ কাঠামোযুক্ত এবং উভয়েরই উদ্দেশ্য রয়েছে, একটি ম্যাক ওএস এক্স এবং অন্য উইন্ডোজকে লক্ষ্য করে।

এ পর্যন্ত সুচিন্তিত এবং যুক্তিসঙ্গত সুষম দৃষ্টিভঙ্গির জন্য আপনাকে ধন্যবাদ!


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

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

6
অবজেক্টিভ-সি ব্যবহার করে আপনি যে বড় জিনিসটি অর্জন করবেন তা হ'ল আপনার কোকো ফ্রেমওয়ার্কগুলিতে অ্যাক্সেস থাকবে। এছাড়াও, সি, সি #, জাভা এবং সি ++ সকলেই একটি সাধারণ সিনট্যাকটিক heritageতিহ্য ভাগ করে। অবজেক্টিভ-সি এর সিনট্যাক্সটি স্মলটাক থেকে পেয়েছে।
Amok

4
আপনি ভিএমওয়্যার ফিউশন ব্যবহার করে সি # কাজ করেন? শুধু মনো এবং মনোডেলফ ব্যবহার করুন (যা ম্যাক এবং লিনাক্সে কাজ করে। নেট এবং ভিজ্যুয়াল স্টুডিওর একটি ওপেন-সোর্স সংস্করণ Mon ...
রবিন হেগেলুন্ড হানসেন

4
@ ব্যবহারকারী 668039 সি # ব্যবহারের 15 বছরের অভিজ্ঞতা? এটি 2001 সালে মুক্তি পেয়েছিল!
ইয়ান নিউজন

উত্তর:


89

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

( দ্রষ্টব্য: সি # যেমন নেট হিসাবে শক্তভাবে মিলিত হয়েছে, উদ্দেশ্য-সিটি কোকোতে দৃly়ভাবে মিলিত হয়েছে Hence সুতরাং, আমার কিছু পয়েন্ট অবজেক্টিভ-সি-এর সাথে সম্পর্কিত নয়, তবে কোকো ছাড়াই অবজেক্টিভ-সি। # নেট ছাড়া সি-এর সমতুল্য) ডাব্লুপিএফ / লিনকিউ, মনো এর অধীনে চলমান, ইত্যাদি things

আমি পার্থক্য, উপকারিতা এবং কনস সম্পর্কে সম্পূর্ণরূপে বিস্তৃত করার ভান করব না তবে এখানে কিছু মনে আছে jump

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

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

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

  • কোকো বিভিন্ন উপায়ে জিইউআই অ্যাপ্লিকেশনগুলি তৈরি করা অনেক সহজ করে তোলে, তবে আপনাকে আপনার দৃষ্টান্তটি আপনার মাথা মুড়ে দিতে হবে। এমভিসি ডিজাইন কোকোতে বিস্তৃত এবং প্রতিনিধি, বিজ্ঞপ্তি এবং মাল্টি-থ্রেডেড জিইউআই অ্যাপ্লিকেশনগুলির নিদর্শনগুলি উদ্দেশ্য-সি-তে উপযুক্ত suited

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

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

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


7
প্রযুক্তিগতভাবে, সি # এর সমস্ত অ-টাইপ-নিরাপদ পাওয়ার বৈশিষ্ট্য রয়েছে যা ওবজেসি করে: কাঁচা পয়েন্টার, পয়েন্টার গাণিতিক, সীমাবদ্ধ-চেক করা অ্যারে, ইউনিয়ন alloca,। এটি কেবল এগুলিকে সহজেই অ্যাক্সেসযোগ্য হিসাবে তৈরি করে না - আপনার স্পষ্টতই নির্বাচন করতে হবে।
পাভেল মিনায়েভ

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

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

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

6
+1 দুর্দান্ত উত্তর কুইন
h4xxr

54

আমি ২০ বছরেরও বেশি সময় ধরে সি, সি ++ এবং সি # তে প্রোগ্রামিং করছি, প্রথমটি 1990 সালে শুরু হয়েছিল I আমি কেবলমাত্র আইফোন বিকাশ এবং এক্সকোড এবং উদ্দেশ্য-সি সম্পর্কে একবার দেখার সিদ্ধান্ত নিয়েছি। ওহ আমার সদর্থকতা ... মাইক্রোসফ্ট সম্পর্কে সমস্ত অভিযোগ আমি ফিরিয়ে নিই, আমি বুঝতে পারি যে জিনিসগুলির কোডগুলি কত খারাপ হয়েছে। সি # এর তুলনায় উদ্দেশ্য-সি জটিল over আমি সি # এর সাথে নষ্ট হয়ে গিয়েছি এবং এখন মাইক্রোসফ্ট যে সমস্ত কঠোর পরিশ্রম করেছে তাতে আমি তার প্রশংসা করি method সি # এতে মার্জিত। এটি কেবল আমার মতামত, আমি আশা করেছিলাম যে অ্যাপল বিকাশের ভাষা অ্যাপল পণ্যগুলির হিসাবে ভাল ছিল, তবে আমার প্রিয়, তাদের মাইক্রোসফ্টের কাছ থেকে অনেক কিছু শেখার আছে। সি # .NET অ্যাপ্লিকেশন নেই, আমি কোনও অ্যাপ্লিকেশন পেতে পারি এবং এক্সকোড অবজেক্টিভ-সি এর চেয়ে বহুগুণ দ্রুত চলতে পারি। অ্যাপল অবশ্যই মাইক্রোসফ্ট এর বইয়ের একটি পাতা এখানে নিতে হবে এবং তারপরে আমাদের নিখুঁত পরিবেশ থাকতে হবে। :-)


47
আপনি যদি কোনও আইফোন দেব বইটি একবার দেখেছেন তবে আপনি এখনও আপনার 20 বছরের অভিজ্ঞতা আছে এমন একটি প্ল্যাটফর্মে দ্রুত একটি অ্যাপ্লিকেশন তৈরি করতে সক্ষম? আশ্চর্যজনক
কুবি

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

4
সি-এর তুলনায় উদ্দেশ্য-সি, ওভার কমপ্লিটসিটি অধ্যয়নকালে এটি আমার অভিজ্ঞতাও ছিল। @ অ্যালেক্সি ১৩ মূল বার্তাটি থেকে গ এবং সি ++ এর কোন অংশটি আপনি মিস করেছেন? ভাষার এক পরিবারে দশকের অভিজ্ঞতা থাকার ফলে অনেকের একই পরিবারের অন্য ভাষার সাথে একই কাজ করা কতটা কঠিন তা মূল্যায়নে অনেকটা সহায়তা করে।
অ্যান্ডারসন ফোর্টালিজা

4
এই শীর্ষ উত্তর কিভাবে? এটি একটি সংক্ষিপ্ত উত্তর নয়, তিনি 20 বছরেরও বেশি সময় ধরে যে ভাষা ব্যবহার করছেন সে তুলনায় রাতারাতি এমন কিছু ভাষার একটি স্পষ্ট পক্ষপাতিত্বমূলক মতামত ... স্পষ্টতই আপনি নতুন ভাষায় তেমন দক্ষ
নন

4
"Just reading Objective-C with method invokes is difficult to read"- এখানে কেবলমাত্র একটি খুব সাবজেক্টিভ যুক্তি রয়েছে যা এখানে ওবজ-সি এর কনস হিসাবে উল্লেখ করেছে। অন্য সবগুলি কেবল বিতর্কিত বক্তব্য।
স্কাইওয়ান্ডার

46

এখানে কোনও প্রযুক্তিগত পর্যালোচনা নেই, তবে আমি কেবলমাত্র উদ্দেশ্য-সিটিকে খুব কম পাঠযোগ্য find উদাহরণস্বরূপ সিন্ডার 6 আপনাকে দিয়েছে:

সি #

List<string> strings = new List<string>();
strings.Add("xyzzy");                  // takes only strings
strings.Add(15);                       // compiler error
string x = strings[0];                 // guaranteed to be a string
strings.RemoveAt(0);                   // or non-existant (yielding an exception)

উদ্দেশ্য গ

NSMutableArray *strings = [NSMutableArray array];
[strings addObject:@"xyzzy"];
[strings addObject:@15];
NSString *x = strings[0];
[strings removeObjectAtIndex:0];

দেখতে ভয়ঙ্কর লাগছে। এমনকি আমি এটিতে 2 টি বই পড়ার চেষ্টা করেছি, তারা খুব তাড়াতাড়ি আমাকে হারিয়ে ফেলেছিল এবং সাধারণত আমি প্রোগ্রামিং বই / ভাষা নিয়ে তা পাই না।

আমি আনন্দিত যে ম্যাক ওএসের জন্য আমাদের মনো আছে, কারণ আমাকে যদি উন্নত পরিবেশের জন্য আমাকে অ্যাপলের উপর নির্ভর করতে হত ...


17
আসলে উপেক্ষা করে 1 ম লাইন দিয়ে শেষ হওয়া উচিত [NSMutableArray array]পরিবর্তে (তিনি মেমরি লিক করা হয়েছে) এবং 4 র্থ লাইন দিয়ে শুরু করা উচিত NSString* xবা id x(কম্পাইল ত্রুটি) ... হ্যাঁ, উদ্দেশ্য সি জেনেরিক্স (আমি ভাল তাদের মিস করবেন না), আপনি ডন অভাব আছে অ্যারে সিনট্যাক্স সহ টি সূচক বস্তুগুলি এবং এপিআইগুলি সাধারণত আরও ভার্বোজ হয়। টু-মে-টু, টু-মাহ-টু। আপনি যা দেখতে পছন্দ করেন এটি এটি আসলেই নেমে আসে। (আপনি সি ++ এসটিএলতে একই কোডটি লিখতে পারেন এবং আমি মনে করি এটি ঘৃণ্য।) আমার কাছে পঠনযোগ্য কোডটির অর্থ প্রায়শই কোডটির পাঠ্য আপনাকে বোঝায় যে এটি কী করছে, এবং সুতরাং উদ্দেশ্য-সি কোডটি পছন্দনীয়।
কুইন টেলর

18
সিনট্যাক্সের সাথে সত্যিকারের মতো আমি কোনও ভুল খুঁজে পাই না - এটি কম পাঠযোগ্য বলে মনে করার মূল কারণটি 1) এটি সি ব্যাকগ্রাউন্ড থেকে আগত প্রত্যেকেরই অপরিচিত, এবং ২) এটি সরল সি নির্মাণের মাঝখানে ব্যবহৃত হয়, যেখানে এটি এলিয়েন দেখাচ্ছে। অন্যদিকে, স্মার্টলকিশ নামক-প্যারামিটার-যেমন-অংশ-অব-পদ্ধতি-নাম আসলে কলটি যেতে যাওয়া থেকে কলকে আরও বোধগম্য করে তোলে। প্রকৃতপক্ষে, আপনার সি # কোড নমুনা এটি ভালভাবে প্রদর্শন করে - এটি সংকলন করবে না, কারণ List<T>.Removeএকটি স্ট্রিংটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং সেই স্ট্রিংয়ের প্রথম উপস্থিতি সরিয়ে দেয়। সূচক দ্বারা অপসারণ করতে আপনার প্রয়োজন RemoveAt
পাভেল মিনায়েভ

12
... যেখানে removeObjectAtIndex:আরও ভার্বোস সহ ওবজিসি সংস্করণ এটি কী করে তা নিয়েও দ্ব্যর্থহীন।
পাভেল মিনায়েভ

6
চমৎকার পয়েন্ট, পাভেল। এছাড়াও, অন্ততপক্ষে আমার জন্য স্পষ্টতা থেকে বিচ্ছিন্নতা strings[0]এবং বিচ্ছিন্নতা strings.RemoveAt(0)হ্রাস করে। (এছাড়াও, পদ্ধতির নামগুলি যখন মূল অক্ষর দিয়ে শুরু হয় তখন সর্বদা এটি আমাকে জিজ্ঞাসা করে ... আমি জানি এটি একটি ছোটখাটো ক্যান্সার, তবে এটি কেবল অদ্ভুত))
কুইন টেলর

4
আমার ক্ষেত্রে, অনেক লোকের মতো, "সরঞ্জাম "টির পাঠযোগ্যতা আমার উত্পাদনশীলতাকে প্রভাবিত করে। আমি অনেকগুলি ভাষা ওজেক্টিভ-সি দিয়ে আরামদায়ক এবং উত্পাদনশীল তবে যাইহোক, সেগুলির মধ্যে কখনও হয় নি এবং এটি চেষ্টা করার অভাবে নয়। তবে আবার, দিনের শেষে এটি ব্যক্তিগত পছন্দ সম্পর্কে। ২০ বছর আগে, প্ল্যাটফর্ম ওয়াই লক্ষ্য করে আপনাকে X ভাষা ব্যবহার করতে বাধ্য করা হবে না what আপনি যা পছন্দ করেন তা বেছে নিন।
টিমোথিপি

17

ম্যানুয়াল মেমরি ম্যানেজমেন্ট হ'ল অবজেক্টিভ-সি-র শুরুর এমন একটি বিষয় যা বেশিরভাগ ক্ষেত্রে সমস্যা বলে মনে হয়, বেশিরভাগ কারণ তারা মনে করে যে এটি এটি তার চেয়ে জটিল।

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

100% প্রকৃত নিয়ম নয়, তবে প্রতিদিনের জন্য যথেষ্ট ভাল:

  • প্রতিটি কলটির allocসাথে releaseবর্তমান স্কোপটির শেষে একটি মিল করা উচিত ।
  • যদি আপনার পদ্ধতির ফেরতের মানটি যদি এর মধ্যে পেয়ে থাকে allocতবে এটির সাথে এটির return [value autorelease];মিল না দিয়ে ফিরে আসা উচিত release
  • বৈশিষ্ট্যগুলি ব্যবহার করুন, এবং কোনও নিয়ম তিনটি নেই।

দীর্ঘ বিবরণ অনুসরণ।

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

অন্য 5% সম্পর্কে কি? আপনার কাছে অনুসন্ধানের জন্য তিনটি পদ্ধতি রয়েছে, এই পদ্ধতি থেকে প্রাপ্ত যে কোনও অবজেক্টের উদাহরণ বর্তমান পদ্ধতির সুযোগের মালিকানাধীন :

  • alloc
  • কোন পদ্ধতি শব্দ দিয়ে শুরু নতুন যেমন newবা newService
  • শব্দের অনুলিপি সহ যে কোনও পদ্ধতি যেমন copyএবং mutableCopy

পদ্ধতির তিনটি সম্ভাব্য বিকল্প রয়েছে এটির মালিকানাধীন অবজেক্টের দৃষ্টান্তগুলি বের হওয়ার আগে কী করা উচিত:

  • এটির releaseআর প্রয়োজন না হলে এটি ব্যবহার করে ছেড়ে দিন ।
  • ক্ষেত্রের (উদাহরণস্বরূপ পরিবর্তনশীল) মালিকানা দিন , অথবা কেবলমাত্র বরাদ্দ করে একটি বৈশ্বিক পরিবর্তনশীল by
  • মালিকানা ত্যাগ করুন কিন্তু কল করে উদাহরণটি চলে যাওয়ার আগে অন্য কাউকে মালিকানা নেওয়ার সুযোগ দিন autorelease

সুতরাং আপনি কখন সক্রিয়ভাবে ফোন করে মালিকানা গ্রহণ করবেন retain? দুটি মামলা:

  • আপনার আরম্ভকারীগুলিতে ক্ষেত্রগুলি বরাদ্দ করার সময়।
  • ম্যানুয়ালি সেটার পদ্ধতি প্রয়োগ করার সময়।

4
+1 দুর্দান্ত সংক্ষিপ্তসার। আমি সি বছর আগে শিখেছি যখন খুব অনুরূপ মনে হয়।
অ্যালেক্স আঙ্গাস

4
কেবল স্পষ্ট করে বলতে গেলে ম্যাকের অবজেক্টিভ-সি এর জন্য আবর্জনা সংগ্রহ সম্পূর্ণরূপে সমর্থিত, এবং কোনও ম্যানুয়াল মেমরি পরিচালনা করার প্রয়োজন নেই। ম্যানুয়াল মেমরি পরিচালনা কেবল আইওএসে প্রয়োজন।
দেবাজিৎ

4
তবুও, মেমরি পরিচালনার প্রাথমিক বিষয়গুলি শিখতে ভাল, যদি আপনার প্রয়োজন হয় তখনই পারফরম্যান্সের উন্নতি করতে হয় (আবর্জনা সংগ্রহ করতে হবে না)।
FeifanZ

4
আইওএস 5 এআরসি প্রবর্তন করে, ম্যানুয়ালি বরাদ্দ হওয়া অবজেক্টটি প্রকাশের প্রয়োজনীয়তা সরিয়ে দেয়। তবে এটি এখনও সি # এর মতো সহজ কোথাও নেই। আপনার মনে রাখতে হবে যে অবজেক্টিভ-সি 20 বছরেরও বেশি পুরানো, এবং সে সময়ের মধ্যে ভাষার কিছু প্রয়োজনীয়তা ফিরিয়ে রেখেছে: এটি কখন বরাদ্দ করা উচিত এবং কখন মেমরি মুক্ত / মুক্ত করতে হবে তা জেনে। সি # আপনার জন্য এগুলি সব সরিয়ে দিয়েছে। এই কথাটি বলে, কোকোতে এমন অনেকগুলি এপিআই রয়েছে যা উইন্ডোজ ফোনে এখনও অ্যাক্সেসযোগ্য নয়। যেমন অঙ্গভঙ্গি, যখন ইউআই ইভেন্টগুলি আসে তখন অনেক বেশি নিয়ন্ত্রণ ...
jyvenard

10

অবশ্যই, আপনি যদি আপনার জীবনে যা কিছু দেখেছেন তা অবজেক্টিভ সি হয়, তবে এর বাক্য গঠনটি কেবল সম্ভাব্যর মতো দেখায়। আমরা আপনাকে "প্রোগ্রামিং ভার্জিন" বলতে পারি।

তবে যেহেতু প্রচুর কোড সি, সি ++, জাভা, জাভাস্ক্রিপ্ট, পাস্কাল এবং অন্যান্য ভাষায় লিখিত হয়েছে, আপনি দেখতে পাবেন যে ওজেক্টিভসি সব থেকে আলাদা, তবে একটি ভাল উপায়ে নয়। তাদের কি এটার কোনও কারণ ছিল? আসুন অন্যান্য জনপ্রিয় ভাষা দেখুন:

সি ++ সিতে প্রচুর অতিরিক্ত যুক্ত করেছে, তবে এটি মূল সিনট্যাক্সটি কেবলমাত্র প্রয়োজনীয় হিসাবে পরিবর্তন করেছে।

সি #+ সি ++ এর তুলনায় প্রচুর অতিরিক্ত যুক্ত করেছে তবে এটি কেবল সি -++ তে খারাপ জিনিসগুলি বদলেছে (ইন্টারফেস থেকে "::" অপসারণ করার মতো)।

জাভা অনেকগুলি জিনিস বদলেছে, তবে পরিবর্তনের প্রয়োজনীয় অংশগুলি বাদে এটি পরিচিত সিনট্যাক্সটি রেখেছিল।

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

ভিজ্যুয়াল বেসিক যেমন ObjectiveC এর মতো প্যারামিটারগুলি অর্ডারের বাইরে চলে যেতে পারে। আপনি প্যারামিটারগুলির নাম রাখতে পারেন, তবে আপনি এগুলি নিয়মিতভাবেও পাস করতে পারেন। আপনি যা কিছু ব্যবহার করুন না কেন এটি সাধারণ কমা-বিস্মৃত পদ্ধতি যা প্রত্যেকে বুঝতে পারে। কমা হ'ল সাধারন ডিলিমিটার, কেবল প্রোগ্রামিং ভাষায় নয়, বই, খবরের কাগজ এবং সাধারণভাবে লিখিত ভাষায়।

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

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

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

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

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


4
সর্বশেষ 2 অনুচ্ছেদে সমস্ত মিলিয়ে
জাকোস

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

আমি উদ্দেশ্য (সি) -তে আইওএস-অ্যাপ ব্যবহারকারীর ইন্টারফেস প্রয়োগকারী (ভার্জিন) প্রোগ্রামার হিসাবে আমার মুঠির চাকরিতে প্রবেশ করেছি। আমি এখনই (3 বছর পরে) যা যা চাই তা হ'ল সেই একাকী 'দ্বীপ' থেকে বেরিয়ে আসা এবং আরও প্ল্যাটফর্ম-স্বতন্ত্র এবং আরও বেশি সেমিনাল কিছু শিখতে। এছাড়াও অন্যান্য ফ্রেমওয়ার্কগুলিও এত তাড়াতাড়ি আপডেট হয়েছে কিনা তা শিখতে - এবং বগি। আরে! নতুন ভবিষ্যৎ! - ক্র্যাশ ... আশা করি (জার্মান) চাকরির কেন্দ্রটি জাভা এবং / অথবা সি ++ / সি # তে টিউটোরিয়ালগুলিতে আমার জন্য কিছু অর্থ ব্যয় করেছে কারণ আমি আর অ্যাপল sh * t এর জন্য বিকাশ করতে চাই না।
anneblue

5

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

কোকো অ্যাপস লেখার জন্য আর একটি দুর্দান্ত জিনিস হ'ল ইন্টারফেস বিল্ডার, এটি ভিজ্যুয়াল স্টুডিওর ফর্ম ডিজাইনারের চেয়ে অনেক সুন্দর।

আইজেক্ট-সি সম্পর্কে যে জিনিসগুলি আমাকে বিরক্ত করে (একজন সি # বিকাশকারী হিসাবে) এটি হ'ল আপনার নিজের স্মৃতি পরিচালনা করতে হবে (আবর্জনা সংগ্রহ রয়েছে, তবে এটি আইফোনে কাজ করে না) এবং এটি খুব ভার্জোজ হতে পারে কারণ নির্বাচক বাক্য গঠন এবং সমস্ত []।


4
dynamicকেবলমাত্র আপনাকে অর্ধেকের মধ্যেই পেয়ে যাবে - এমনকি সত্যিকারের গতিশীল অবজেক্ট বাস্তবায়ন এমনকি ক্ষুদ্র বিষয় যেমন মেসেজের প্রতিনিধি হিসাবে, এমনকি সি # ৪.০ এও ক্লান্তিকর। অন্যদিকে, লা ওজেজসি পাস করার নমনীয়তার জন্য সত্য গতিশীল বার্তার জন্য দামটি সুরক্ষা হারিয়েছে।
পাভেল মিনায়েভ

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

4
উইন্ডোজ ফর্ম ডিজাইনার এত দুর্দান্ত না, তবে আপনি যদি ডাব্লুপিএফ ব্যবহার করতে সক্ষম হন (। নেট ৩.০ হিসাবে) এক্সপ্রেশন মিশ্রণটি বীট করা শক্ত ...
Nate

আপনি System.Reflectionসি # 3.0 এ এক্সটেনশনের সাথে একত্রিত হয়ে এটি অনেক কিছু করতে পারেন, আপনি যে কোনও পদ্ধতিতে সন্ধান করতে পারেন, কিন্তু সত্য বার্তাটি উত্তরণ নয়, এটি obj.PassMessage("function_name", params object[] args);ভাষাতে সংহত করার চেয়ে ভাল বার্তাটির মতো দেখাবে , সাধারণ বস্তুতে কল করার যোগ্য পদ্ধতিটি হবে প্রয়োজন।
ফিলিপ কুনক

4

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

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

বিপরীতে, এখানে সি # তে কোডটি রয়েছে:

using System.Linq.Xml;
XDocument doc = XDocument.Load(xmlString);
IEnumerable<MyCustomObject> objects = doc.Descendants().Select(
         d => new MyCustomObject{ Name = d.Value});

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

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

* দ্রষ্টব্য: আমি আসলে উপরের কোডটি সংকলন করি নি, এটি কেবল সি # এর দ্বারা প্রয়োজনীয় ভার্বোসিটির অপেক্ষাকৃত অভাবকে চিত্রিত করার উদাহরণ হিসাবে বোঝানো হয়েছে।


এখানে না গুরুত্বপূর্ণ, যদিও, এই তুলনায় সি # এর পক্ষ থেকে এত বেশি "ভার্বোসটির অভাব" নেই, কেবলমাত্র আপনি আপনার এক্সএমএলকে বিশ্লেষণ করতে ব্যবহার করছেন। নেট ফ্রেমওয়ার্ক ক্লাসে ভার্বোসটি রয়েছে। যদি আপনি সেগুলির মধ্যে কোডটি পরীক্ষা করেন তবে আপনি সম্ভবত একটি ভাল ডিল আরও সি ​​# কোড পাবেন, সম্ভবত আরও বেশি ভার্বোসও।
XIVSolitions

3

সম্ভবত সবচেয়ে গুরুত্বপূর্ণ পার্থক্য মেমরি পরিচালনা। সি # এর মাধ্যমে আপনি আবর্জনা সংগ্রহ করতে পারবেন, এটি সিএলআর ভিত্তিক ভাষা হওয়ার কারণে। অবজেক্টিভ-সি দিয়ে আপনাকে নিজেরাই স্মৃতি পরিচালনা করতে হবে।

আপনি যদি কোনও সি # ব্যাকগ্রাউন্ড (বা সেই বিষয়ে কোনও আধুনিক ভাষা) থেকে আগত হন তবে স্বয়ংক্রিয় মেমরি পরিচালনা ছাড়াই কোনও ভাষায় চলে যাওয়া সত্যিই বেদনাদায়ক হবে কারণ আপনি আপনার কোডিংয়ের বেশিরভাগ সময় যথাযথভাবে মেমরি পরিচালনা করার জন্য ব্যয় করবেন (এবং হিসাবে ডিবাগিং হিসাবে আমরা হব).


6
ওবিজেসি এই দিনগুলিতে আবর্জনা সংগ্রহের সন্ধান করছে। অন্যদিকে, সি # আপনাকে চাইলে মেমরিটি নিজে পরিচালনা করতে দেয় (কাঁচা পয়েন্টারকে ধন্যবাদ)।
পাভেল মিনায়েভ

4
আমি ওজেক্টিভ-সিতে (অ্যাপলের ফ্রেমওয়ার্কগুলির প্রসঙ্গে) ম্যানুয়াল মেমোরি পরিচালনা খুঁজে পাই না: সি এবং সি ++ এর "ট্র্যাডিশনাল" মেমরি পরিচালনার চেয়ে বজায় রাখা / প্রকাশ / অটোরিলিজ চক্রটি অনেক কম জটিল।
মিপাদি

4
এটি ঠিক সত্য ডিএসও নয় - এমনকি আইফোনের মতো নন-আবর্জনা-সংগ্রহের পরিবেশেও, ধরে রাখার / ছেড়ে দেওয়ার এবং অটোরিলেজ স্টাফ শিখতে প্রায় 10 মিনিট সময় নেয় এবং তারপরে কোনও সমস্যা নেই। আমি প্রচুর সি # এর সন্ধান পেয়েছি যা মেমরি পরিচালনার চ্যালেঞ্জগুলিকে অতিরঞ্জিত করতে পছন্দ করে। এগুলি প্রায় তাদের মতোই তারা ভয় করে যে তারা অন্যথায়
اعتراض-

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

1

দুটি ভাষার সাথে তুলনা করার জন্য এখানে একটি দুর্দান্ত নিবন্ধ: http://www.coderetard.com/2008/03/16/c-vs-objective-c/


এটি অত্যন্ত দুঃখের বিষয় পৃষ্ঠাটি দাবি করেছে যে এটি ইউটিএফ -8 এ রয়েছে তবে অ্যাডাস্ট্রোফস এবং উদ্ধৃতি চিহ্নগুলির জন্য সমস্ত ধরণের বাজে প্রতিস্থাপন রয়েছে। আমি মনে করি তার পাঠ্যটিতে "বক্রী" উদ্ধৃতি ব্যবহার করা হয়েছে তবে তারা অবশ্যই কোডটি গারবেল ...
কুইন টেলর 18

তারা তাদের অন্তঃকরণের পুরো হোগ চুরি করেছে বলে মনে হয়, তবে উত্স নিবন্ধে তাদের কোড বন্ধ হয়ে গেছে। না একটি বিশেষভাবে নিবন্ধ।
dnord

-2

2 টি ভাষার মধ্যে দৃষ্টান্তের পার্থক্য বাদে খুব বেশি পার্থক্য নেই। আমি এটির যতই ঘৃণা করি না কেন, আপনি .NET এবং C # এর সাথে একই ধরণের জিনিসগুলি (সম্ভবত খুব সহজে সহজেই করতে পারবেন না) অবজেক্টিভ-সি এবং কোকো দিয়ে আপনি পারেন। চিতা এ, উদ্দেশ্য সি 2.0 আবর্জনা সংগ্রহ, হয়েছে যাতে আপনি না আছে মেমরির নিজেকে পরিচালনা করতে, যদি না আপনি (পুরনো Macs- এর মাধ্যমে কোডের সামঞ্জস্য এবং iPhone apps 2 কারণে করতে চান হয়) করতে চান।

যতটা কাঠামোগত, পঠনযোগ্য কোড সম্পর্কিত, সেখানে বোঝা অনেকাংশেই অন্য কোনও ভাষার মতো প্রোগ্রামারের উপর। যাইহোক, আমি দেখতে পেলাম যে বার্তাটি উত্তীর্ণ পঠনযোগ্য কোডটি নিজেকে পঠনযোগ্য কোডের জন্য ভালভাবে প্রদান করে তবে আপনি নিজের ফাংশন / পদ্ধতিগুলির যথাযথ নাম (আবার অন্য কোনও ভাষার মতো) রাখবেন।

আমি প্রথম স্বীকার করব যে আমি সি # বা। ​​নেট এর সাথে খুব বেশি পরিচিত নই। তবে কুইন উপরে তালিকাভুক্ত করার কারণগুলি বেশ কয়েকটি কারণ যা আমি তেমন হয়ে উঠতে আগ্রহী না।


-3

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


4
আইএসও সি # ওপেন স্ট্যান্ডার্ড। এছাড়াও, যতদূর আমি জানি, অস্তিত্বের একমাত্র ObjC সংকলক হ'ল জিসিসি।
পাভেল মিনায়েভ

@ পাভেল: এখানে পোর্টেবল অবজেক্ট কমপাইলার ( ইউজার্স.টেলনেট.বি / স্টেস / কমপাইল.আরটিএমএল ) এবং ঝনঝন রয়েছে।
মিপাদি

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

4
আমি দৃly়তার সাথে বহনযোগ্যতাটিকে উদ্দেশ্যমূলক-সি এর পক্ষে হিসাবে বিবেচনা করব না। বরং একই কার্য সম্পাদন করার জন্য শক্তিগুলি দ্রুত বিকাশের ধারায় এবং কোডের পরিমাণ হ্রাস করে more
কুইন টেলর

সংকলক প্রাপ্যতা সম্পর্কে আমার ভুল সংশোধন করার জন্য ধন্যবাদ। ওয়েল, বহনযোগ্যতা প্রযুক্তিগতভাবে যাইহোক সেখানে আছে - আমি উইন 32 এ MinGW / ObjC ব্যবহার করতে পারি, উদাহরণস্বরূপ - সেই অর্থে এটি জিসিসি হিসাবে ঠিক যেমন বহনযোগ্য। অবশ্যই, গ্রন্থাগারগুলি সেখানে থাকবে না (যদিও ... সেখানে গনুস্টেপ / উইন 32 আছে?) তবে এই পরিস্থিতি মনো এর সাথে আমাদের যা কিছু আছে তার চেয়ে খুব খারাপ নয়; সুতরাং সামগ্রিকভাবে, আমি বলব যে বহনযোগ্যতা উভয় পক্ষের জন্য একটি শক্তিশালী বিন্দু নয়।
পাভেল মিনায়েভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.