ব্যবহারিক উপায় সি শিখতে? [বন্ধ]


10

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

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

এটি কি আমাকে এই বিষয়টি নির্দেশ করে যে আমার এটি শেখার দরকার নেই বা আমার শেখার কৌশলটিতে আমাকে আরও কিছুটা বিশৃঙ্খলাবদ্ধ হওয়া দরকার?

ব্যবহারিক শেখার সংস্থান সম্পর্কে উল্লেখ? (টিউটোরিয়াল / কীভাবে এটির একটি ফলাফল তৈরি হয় যার কিছু উদ্দেশ্য / বেনিফিট রয়েছে)


3
আপনি আরও বুদ্ধিমান উত্তর পাবেন যদি আপনি আমাদের বলতে পারেন আপনি কেন সি শিখতে চান?
zvrba

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

আপনি কি জেড শ এর শেখার সিটি হার্ড ওয়ে পরীক্ষা করে দেখেছেন । একজন যেমন পেতে পারেন তেমন ব্যবহারিক এবং বেশ নিখরচায়ও।
ওয়াইয়াট বার্নেট

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

উত্তর:


27

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

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


1
Comp.lang.c থেকে এফএকিউ যোগ করুন। সি- ফাক ডটকম
মাইক শেরিল 'ক্যাট

3
+1 এর জন্য পুনরায় উদ্ভাবনের সমাধানগুলি শেখার জন্য কিছু মনে করবেন না।
একটি সিভিএন

4
কে অ্যান্ড আর সাধারণভাবে ভাল প্রোগ্রামিং শৈলী শেখার জন্য ভয়ঙ্কর এবং বিশেষত নিরাপদ / বুদ্ধিমান সি প্রোগ্রামিং অনুশীলন শেখানোর ক্ষেত্রে ভয়ঙ্কর। এর ভিতরে থাকা সমস্ত কোড স্নিপেটগুলি বেশিরভাগ ক্ষেত্রেই অবহেলিত থাকে, বেশিরভাগ সময় তারা একেবারে বিপজ্জনক অভ্যাস শেখায়। এটি একটি পুরানো বই, আমি এটি নস্টালজিয়ার বাইরে কিছু করার জন্য সুপারিশ করব না would এটি বিশেষত শিক্ষানবিস প্রোগ্রামারদের জন্য অনুপযুক্ত।

2
@ থমাস হ্যাঁ দ্বিতীয় সংস্করণ। আপনি এটি থেকে কোনও কোড স্নিপেট উদ্ধৃত করতে পারেন এবং আমি সম্ভবত এটিতে 2-3 বিপজ্জনক / দুর্বল অনুশীলনের কেসগুলি নির্দেশ করতে পারি। আমি এখনই বইটি খুলব এবং কিছু এলোমেলো উদাহরণ বেছে নেব। ঠিক আছে আমরা এখানে যাচ্ছি, পি 119: অবস্থার অভ্যন্তরে নিয়োগ, দেশীয় আদিম উপাত্তের ধরণের ব্যবহার, অন্তর্নিহিত ইন্ট (স্বাক্ষরযুক্ত) ব্যবহার, ম্যালোকের ফলাফল টাইপকাস্ট করা (খুব খারাপ!), প্যারামিটারটি শূন্য করে ফাঁকা * (কেন ??? ), একাধিক রিটার্ন (ওরফে স্প্যাগেটি), যথাযথ # অন্তর্ভুক্ত না করে NULL ব্যবহার করে, যদি {} না থাকে}

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

1

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

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

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

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

ইউনিট টেস্টিংও সহায়তা করে।


0

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


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

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

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

0

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

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

সি সাধারণ উদ্দেশ্যে প্রোগ্রামিংয়ের জন্য ব্যবহার করা যেতে পারে; আপনাকে কেবল আপনার প্রত্যাশা কিছুটা ছড়িয়ে দিতে হবে (ধারণা করুন এটি 1983 এবং আপনি VAX 11/750 এর সাথে সংযুক্ত কোনও VT52 এর সামনে বসে আছেন এবং আপনি সঠিক মানসিকতায় থাকবেন)।

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


1 - ভাষা স্ট্যান্ডার্ডের সর্বশেষ (2011) সংশোধনটি অন্তর্নির্মিত থ্রেডিং সমর্থন যুক্ত করেছে


0

আমি প্রজেক্ট অলারের পরামর্শ দিচ্ছি । আমি আমার সি ++ উন্নত করতে এটি ব্যবহার করেছি এবং এটি দুর্দান্ত। এটি দুর্দান্ত কারণ প্রতিটি সমস্যা একটি ছোট কাজ যা সম্পূর্ণ হতে এক ঘন্টারও কম সময় নিতে পারে (কমপক্ষে প্রথমটি)।

আপনার একটি প্রোফাইলার এবং গতির জন্য কোড অনুকূলিতকরণ সম্পর্কে একটি বইয়ের প্রয়োজন হবে। 1 মিনিটের নিয়মে অটল থাকতে ভুলবেন না: আপনার 1 মিনিটের মধ্যে উত্তরটি পেতে হবে।


0

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

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