উদ্দেশ্য-সি শেখার আগে প্রথমে সি শিখুন [বন্ধ]


107

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

আমার অন্ত্র বলে সি শিখুন, যা আমাকে একটি ভাল ভিত্তি দেবে।

উত্তর:


163

আমি প্রথমে সি শিখতাম। ওবজ-সি-তে যাওয়ার আগে আমি সি শিখলাম (এবং সি তে অনেক কিছুই করেছি)। আমার অনেক সহকর্মী আছে যারা কখনই আসল সি প্রোগ্রামার ছিল না, তারা ওবজ-সি দিয়ে শুরু করেছিল এবং প্রয়োজনীয় সি হিসাবে কেবল শিখেছে।

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

আমি এখানে যা বলার চেষ্টা করছি: প্রতিটি ভাষারই এর পক্ষে মতামত রয়েছে। সি এর পক্ষে মতামত রয়েছে এবং ওবজ-সিও রয়েছে। তবে ওবজ-সি এর সত্যিকারের দুর্দান্ত বৈশিষ্ট্য (এ কারণেই আমি এটি জাভা এর চেয়েও বেশি পছন্দ করি) আপনি ইচ্ছামত এবং আবার ফিরে প্লেইন সিতে যেতে পারবেন। কেন এটি এত দুর্দান্ত বৈশিষ্ট্য? কারণ ওবজ-সি যেমন খাঁটি সি'র অনেকগুলি কনসকে ঠিক করে দেয়, তেমনি খাঁটি সি ওবজ-সি-এর কয়েকটি কনস ঠিক করতে পারে। আপনি যদি তাদের একসাথে মিশ্রিত করেন তবে আপনি একটি খুব শক্তিশালী দল পাবেন।

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

একটি আদর্শ উদাহরণ হ'ল এমন কিছু কোড যা আমরা বেস base৪ তে ডেটা এনকোড করতে হয়েছিল, তবে আমরা তার জন্য কোনও বাহ্যিক গ্রন্থাগার ব্যবহার করতে পারি না (কোনও ওপেনএসএসএল লাইব নেই)। আমরা একটি বেস 64 এনকোডার ব্যবহার করেছি, কোকো ক্লাস ব্যবহার করে সম্পূর্ণ লিখিত। এটি ঠিকঠাক কাজ করছিল, তবে যখন আমরা এটিকে 200 মেগাবাইট বাইনারি ডেটা এনকোড করেছিলাম তখন এটি চিরকাল ধরেছিল এবং মেমরির ওভারহেড গ্রহণযোগ্য নয় cept আমি একে একে একটি সি ফাংশন হিসাবে সম্পূর্ণ লিখিত একটি ক্ষুদ্র, আল্ট্রা কমপ্যাক্ট বেস 64 এনকোডার দিয়ে প্রতিস্থাপিত করেছি (আমি ফাংশন বডিটি মেথড বডিতে অনুলিপি করেছি, পদ্ধতি এনএসডিটাকে ইনপুট হিসাবে নিয়েছে এবং এনএসএসআরটিংকে আউটপুট হিসাবে ফিরিয়েছে, তবে ফাংশনের ভিতরে সবকিছু সি ছিল)। সি এনকোডারটি আরও বেশি কমপ্যাক্ট ছিল, এটি খাঁটি কোকো এনকোডারকে গতি 8 ফ্যাক্টর দ্বারা পরাজিত করেছিল এবং মেমরির ওভারহেডও অনেক কম ছিল। এনকোডিং / ডিকোডিং ডেটা, বিটগুলির সাথে চারপাশে খেলা এবং অনুরূপ নিম্ন স্তরের কাজগুলি কেবল সি এর শক্তিশালী বিষয় are

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

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


এবং যদি আমি ইতিমধ্যে সি ++ জানি এবং আইফোন / আইটিউচ ডিভোপমেন্টের জন্য উদ্দেশ্য-সি শিখতে চাই, তবে সিটি শিখতে কি জরুরী?
চেস্টার 89

11
@ চেস্টার 89: আপনি যদি ইতিমধ্যে সি ++ জানেন তবে আপনি উদ্দেশ্য সম্পর্কে-সি দিয়ে শুরু করতে সি সম্পর্কে যথেষ্ট জানেন।
সেভেন

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

এটি এখনও বিষয়টিতে আমার প্রিয় সংগীত, আপনাকে ধন্যবাদ।
মোরক্রোম

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

25

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

উপলভ্য সংস্থানগুলির ক্ষেত্রে, অ্যাপলের ডকুমেন্টেশনগুলি সাধারণত সি এর সাথে পরিচিতি ধারণ করে, সুতরাং উদ্দেশ্য-সি ২.০ প্রোগ্রামিং ভাষাটি শুরু করা আপনার পক্ষে খুব উপকারী হবে না benefit আমি স্টিফেন কোচানের উদ্দেশ্যমূলক-সি তে প্রোগ্রামিংয়ের একটি অনুলিপিতে বিনিয়োগ করব (আপনি কত দ্রুত এগিয়ে যেতে চান তার উপর নির্ভর করে আপনি দ্বিতীয় সংস্করণের জন্য অপেক্ষা করতে পারেন):

প্রোগ্রামিং উদ্দেশ্য-সি বিকাশকারী গ্রন্থাগার প্রোগ্রামিং উদ্দেশ্য-সি 2.0 বিকাশকারী লাইব্রেরি

এটি কোনও পূর্ব অভিজ্ঞতা অনুমান করে না এবং আপনাকে উদ্দেশ্য-সি এবং যতটা প্রয়োজন সি শেখায়।

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

(কেবলমাত্র রেকর্ডের জন্য এবং প্রসঙ্গে: ১৯৯১ সালে আমি একই সময়ে দু'টিই শিখেছি - এটি আমার কোনও ক্ষতি করে বলে মনে হয় নি though যদিও, বেসিক, পাস্কাল, লোগো এবং এলআইএসপিতে আমার ব্যাকগ্রাউন্ড ছিল। )


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

18

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

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

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


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

15

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


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

10

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


আপনি যদি ইতিমধ্যে এতে ভিত্তি না করে থাকেন তবে প্রথমে সি শেখার ওও প্রোগ্রামিং সম্পর্কে আপনার দৃষ্টিভঙ্গিটিকে বিকৃত করতে পারে। কাঠামোগত এবং পদ্ধতিগত কোডিং মেশানো ভাল নয়। তবে এটিও সত্য যে ওও অনেক জায়গাতেই এর মান হারিয়ে ফেলে যেখানে নিম্ন স্তরের কোড লেখার মতো সি জ্বলজ্বল করে।
ড্যানিয়েল হানিগ

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

7

অবজেক্টিভ-সি শেখার আগে সি শিখাই ভাল ধারণা, এটি সি এর কঠোর মহাকাশ This সি কোড।

কোনও ভাষার দৃষ্টিকোণ থেকে খাঁটি জিনিস দেখার পাশাপাশি আপনি দেখতে পাবেন ম্যাক ওএস এক্স একটি সম্পূর্ণ ইউনিক্স অপারেটিং সিস্টেম। সমস্ত সিস্টেম স্তরের গ্রন্থাগার সি তে লেখা আছে

একইসাথে উভয়ই শেখা সম্ভব, তবে আমি মনে করি আপনি যদি প্রথমে সি সম্পর্কে দৃ working় কার্যকরী জ্ঞান রাখেন তবে আপনি উদ্দেশ্যমূলক-সি আরও প্রশংসা এবং বুঝতে পারবেন।


5

আমি অবজেক্টিভ-সি শিখতাম এবং আপনার সাথে যতটা প্রয়োজন তত বেশি সি শিখতাম।

সি এর যে অঞ্চলগুলি আপনি খুব বেশি নির্ভর করতে পারবেন না:

  • পয়েন্টার গাণিতিক এবং অ্যারেগুলি। আমি মোটেও সি অ্যারে ব্যবহার করিনি।
  • সি স্ট্রিং। অবজেক্টিভ-সি এর স্ট্রিংগুলি কাজটি আরও সুন্দর এবং নিরাপদ করে।
  • ওবজ-সি ২.১ এ আপনি জিসি ব্যবহার করেন ম্যানুয়াল মেমরি পরিচালনা। উন্নয়নের গতি এবং কার্য সম্পাদনের কারণে আমি এই রুটটিকে অত্যন্ত প্রস্তাব দিচ্ছি।

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

5

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

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


4

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


3

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

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


3

আপনি নিম্নলিখিত সুবিধা সহ সরাসরি অবজেক্টিভ সি তে ঝাঁপিয়ে পড়তে পারেন:

  1. আপনি "কিছু" সি শিখবেন।
  2. আপনার জন্য প্রাসঙ্গিক সি অংশগুলি শিখবেন।

আমি যখন নির্দিষ্ট কিছু অ্যাপ্লিকেশন বা নমুনায় আগ্রহী তখন আমার পক্ষে কমপক্ষে একটি নতুন ভাষা শেখা সহজ এবং আমি যখন ব্যপারে আগ্রহী ঠিক তেমন কিছু না শিখে আমাকে ব্যর্থ করে দেয় fail

আপনি যদি নিম্ন স্তরের প্রোগ্রামিংয়ে আগ্রহী হন তবে আপনার সি জ্ঞানটি পরে সর্বদা পরিমার্জন করতে পারেন।


3

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

PS: "সরানো" দ্বারা, আমার অর্থ এটি "ফেলে দিন", কেবল "আরও শিখুন, আলাদা শিখুন" নয়। একবার আপনি সি জানেন, আপনি এটিকে কখনই ফেলে পারবেন না: জাভা নীচের স্তরের স্টাফগুলির জন্য সি রুটিনগুলি কল করতে জেএনআই ব্যবহার করে, পাইথন, লুয়া ইত্যাদি প্রায়শই সি কোড দিয়ে প্রসারিত হয় (লুয়া রেফারেন্স এমনকি কিছু ফাংশনগুলির জন্য কিছু সি জ্ঞান ধরে নেয় যা কেবলমাত্র পিছনে সি ফাংশনটির জন্য একটি পাতলা মোড়ক দেওয়া) ইত্যাদি on


3

হ্যাঁ, অন্য যে কোনও উন্নত ল্যাঙ্গুয়েজের আগে সি ভাষা শেখা আপনাকে অন্যান্য অন্যান্য লাউজগুলিকে শিখতে সহায়তা করবে।


2

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


2

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

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


2

আপনি কি হার্ড-কোর বিকাশকারী হতে চান? তারপরে প্রথমে সি শিখুন।

আপনার সম্পূর্ণরূপে সি বইয়ের মাস্টার করার জন্য যে বইগুলি দরকার তা হ'ল প্রযুক্তির সেরা লেখাগুলি। আপনার যা প্রয়োজন তা এখানে:

সি প্রোগ্রামিং ভাষা

স্ট্যান্ডার্ড সি লাইব্রেরি


2

প্রথমে সি মেধা শেখার ক্ষেত্রে উদ্দেশ্য সি যথেষ্ট পরিমাণে সি থেকে আলাদা।

সিনট্যাক্স / ভাষা-পারিবারিক দৃষ্টিকোণ থেকে একজন প্রায়শই স্মলটালকের পড়াশুনা করা ভাল (যার ভিত্তিতে সি ভিত্তিক সি)

ব্যবহারিক দৃষ্টিকোণ থেকে, একবারে একটি ভাষা শেখার জন্য আপনার প্রচেষ্টাগুলিকে ফোকাস করুন।

পরে, আপনি যদি অন্য কোন ভাষা শিখতে চান তবে সি ++, জাভা এবং পাইথন 1) গুচ্ছ হিসাবে শিখতে সহজ 2) জনপ্রিয় এবং এইভাবে বাজারজাতযোগ্য 3) শক্তিশালী।


1
না, অবজেক্টিভ-সি হ'ল সি'র একটি খুব ছোট সুপারসেট C সি ছাড়া আপনি অবজেক্টিভ-সি তে কিছু করতে পারবেন না। অবশ্যই, অবজেক্টের মডেলটি ছোট্টকল থেকে নেওয়া হয়েছে, তবে বাক্য গঠনটি বেশিরভাগ অংশের জন্যও খুব কাছাকাছি নয়।
সেভেন

2

অবজেক্টিভ_সি শুরু করার আগে আপনার সি এর প্রাথমিক জ্ঞান থাকা উচিত, তবে সি এর প্রতিটি বিশদ সম্পর্কে কোনও প্রয়োজন নেই master

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

প্রোগ্রামিং দিয়ে উদ্দেশ্য সি শিখুন-


1

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


তবে কেউ যদি কমপক্ষে অন্য একটি প্রোগ্রামিংয়ের ভাষা জানেন।
সেভেন


1

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


1

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

NSString *string = [[NSString alloc] init];
string = @"something";

যেহেতু তারা কোনও পয়েন্টার এবং এটিতে চিহ্নিত করা বস্তুর মধ্যে পার্থক্য সম্পর্কে জানেন না।

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


আমি চাই আমি +10 ভোট দিতে পারি। একবার একটি আপত্তি-সি দেব সাক্ষাত্কারে আমাকে জিজ্ঞাসা করা হয়েছিল যে এনএসআইন্টিজারের কাছে পয়েন্টার তৈরি করা সম্ভব কিনা ... আমি হতবাক হয়ে গিয়েছিলাম, 'কারণ এটি আমার পক্ষে অত্যাবশ্যক ছিল, তবে, সবার কাছে মনে হয় না। সুতরাং এটি গুরুত্বপূর্ণ এবং ভুলে যাওয়া সহজ যে এটিও বোঝা দরকার।
MANIAK_dobrii

0

হেক না, সরাসরি উদ্দেশ্য সি যান!

আমি অ্যাকশনস্ক্রিপ্ট 3 থেকে অবজেক্টিভ সিতে চলে এসেছি এবং ইতিমধ্যে একটি সংস্থায় আমার ইন্টার্ন রয়েছে!

যা ইচ্ছে কর.


আপনি কেন অবজেক্ট ওরিয়েন্টেড মনের অবস্থা পুরোপুরি মিস করবেন এবং প্রথমে সি শিখতে শুরু করবেন? এটি ঘুড়ি উড়তে শেখার এবং পাইলট হওয়ার আশা করার মতো। যেতে যেতে আপনাকে অবশ্যই ওওপিকে সংহত করতে হবে।
সুইফট আরকিটেক্ট

0

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


কারণ অবজেক্টিভ-সিতে "বার্তা প্রেরণ" "পদ্ধতিটি কল করা" নয়, তবে একই সাথে একটি বার্তা প্রেরণা একটি পদ্ধতিতে কল করে (ফাংশন) =) আপনি যখন কোনও বস্তুর কাছে কোনও বার্তা প্রেরণ করেন তখন এটি একটি বার্তা প্রেরণের মধ্য দিয়ে যায় প্রক্রিয়া (আপনি এখানে এটি সম্পর্কে পড়তে পারেন: developer.apple.com/library/ios/documentation/Cocoa/Conceptual/... : অথবা এখানে stackoverflow.com/questions/982116/... )
MANIAK_dobrii
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.