আমি কীভাবে আইডেম্যাটিক সি ++ লিখতে শিখতে পারি?


27

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

আমি আমার char*এবং *(int*)(someVoidPointer)আইডিয়াগুলির সাথে সমস্ত আরামদায়ক , তবে সম্প্রতি, একটি মুক্ত উত্স প্রকল্পে (গৌণ) অবদানের পরে, আমি মনে করি যে সি ++ কোড লেখার সময় কারও কী ভাবার কথা ভাবা যায় না। এটি সি এর চেয়ে অনেক বেশি আলাদা।

আমি আপত্তি-ভিত্তিক প্রোগ্রামিংটি মোটামুটিভাবে জানি এবং আমি খাড়া শেখার বক্ররেখার সাথে ঠিক আছি, এই বিষয়টি বিবেচনা করে আপনি যখন আমার সি ++ কোডিং করছেন তখন আমার মন সি ++ ট্র্যাকের দিকে রাখার জন্য আপনি কী পরামর্শ করবেন?


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

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

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

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

1
আমি সমস্ত আরামদায়ক [...] - (ইনট) (সাময়িক ভয়েডপয়েন্টার) এর আগে কখনও কোনও 64-বিট বিল্ড ডিবাগ করেছি?
এড এস

উত্তর:


12

আপনার মন্তব্যের ভিত্তিতে আপনি সি ++ সিনট্যাক্স জানেন know
আপনি সি ++ তে কোডিং দিচ্ছেন না তবে ক্লাসগুলির সাথে প্রায়শই সি হিসাবে উল্লেখ করা হয়।

Stackoverflow উপর সি ++ ট্যাগ , একটি ভাল জায়গা থেকে শুরু এটি একটি অন্তর্ভুক্ত পাঠ্য তালিকায় এবং প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

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

আমি আমার "চর *" এর সাথে সমস্ত আরামদায়ক

এগুলি ব্যবহার বন্ধ করুন, স্ট্যান্ড :: স্ট্রিং এ স্যুইচ করুন।

এবং (অন্তর্নিহিত) (someVoidPointer) আইডিয়ামগুলি।

সেগুলি ব্যবহার বন্ধ করুন (সি কোডের সাথে ইন্টারফেস ছাড়াও)। ফান্টর ধারণাটি ব্যবহার করে বিভিন্ন সুবিধা দেওয়া হয় (এনক্যাপসুলেটিং স্টেটের ধারণা অন্তর্ভুক্ত)।

তবে সম্প্রতি, একটি ওএসএস প্রকল্পে (অপ্রাপ্তবয়স্ক) অবদানের পরে, আমি মনে করি যে আপনি সি ++ তে কীভাবে ভাবেন না। এটি অনেক আলাদা, যদিও সি এর নিজস্ব জায়গা রয়েছে।

হ্যাঁ। সি এবং সি ++ ভাষা হিসাবে আলাদা হয়েছে। যদিও আপনি ব্যবহারিকভাবে একই সিনট্যাক্সটি ব্যবহার করতে পারেন যা ভাল সি কোড হিসাবে বিবেচিত হয় সাধারণত ভাল সি ++ কোড (বা উপবৃত্ত) হিসাবে বিবেচিত হয় না।

কিছু বন্ধু ত্বরান্বিত সি ++ এর পরামর্শ দিয়েছিল, তবে আবার আমি জানি কী প্রকারগুলি, এবং কোন ক্লাসগুলি এবং কোনটি ওভারলোডিং।

আপনার খুব বেসিক আছে।

কীভাবে (বিকৃত) সি ++ প্রোগ্রামার, যিনি ওও ধারণাগুলির সাথে সাবলীল হয়ে ওঠেন সে ভাষায় আইডেম্যাটিক প্রোগ্রাম লিখতে পারে।

অনেক কাজ সহ :-)


এটি একমাত্র উপায় নয়। ভাল বই থেকে আপনি অনেক কিছু শিখতে পারেন।
Dima

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

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

@ ডিমা: এর সাথে আমার কোন যুক্তি নেই।
মার্টিন ইয়র্ক

12

ইফেক্টিভ সি ++ বইটি বেশ কয়েকটি আকর্ষণীয় বিষয় শেখায় এবং আপনাকে সি ++ এর বৈশিষ্ট্যগুলির প্রশংসা করতে আনবে। রয়েছে কার্যকর STL - আমি এটা পড়েন নি কিন্তু আমি নিশ্চিত এটি একটি মহান পঠিত হবে যদি আপনি এসটিডি সঙ্গে অপরিচিত নই।

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

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


আমি কার্যকর সিরিজ সম্পর্কে জানি, (সেগুলি পড়েনি) - তবে আমি অনুমান করি যে তারা সেরা অনুশীলনের সমস্যাগুলির জন্য, তাই না?
ইয়াতী সাগাদ

3
@ ইয়তি সাগাদ: না, সেই বইগুলি হ'ল আপনার অবশ্যই "সি সহ ক্লাস" থেকে পূর্ণাঙ্গ সি ++ এ যাওয়ার দরকার।
ডিমা

আমি দেখতে পাচ্ছি - আসলে আমার তীব্রতর সি ++ পরে মাইনার দ্বারা লাইনে কার্যকর সি ++ ছিল।
ইয়াতী সাগাদ

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

1
@ ডিমা: এখানে যত্নবান। ২ য় সংস্করণটি সি থেকে আগত নতুন সি ++ প্রোগ্রামারদের লক্ষ্য করে করা হয়েছিল (সর্বশেষ) তৃতীয় সংস্করণটি জাভা, সি # ইত্যাদির মতো ভাষা থেকে আগত প্রোগ্রামারদের লক্ষ্য
করেই করা হয়েছে

6

আমি হার্ব সাটারের দেওয়া সাম্প্রতিক বিলটি গ্রহণের প্রস্তাব দিতে পারি। " আধুনিক আধুনিক সি ++ কোড রাইটিং " নামক একটি : কয়েক বছরের মধ্যে সি ++ কীভাবে বিকশিত হয়েছে ":

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

এটি একটি খারাপ উপস্থাপনা নয়, খুব বেশি দীর্ঘ নয়, সর্বশেষ মানকটিতে নতুন বৈশিষ্ট্যগুলির জন্য কিছু সুন্দর পয়েন্টার রয়েছে যা আপনাকে আপনার পুরানো সি / সি ++ স্টাইল আপডেট করার দিকে কয়েকটি ইঙ্গিত দেয়।

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


+1 ধন্যবাদ এটা দুর্দান্ত ছিল। আমি খুশি আমি এই প্রশ্ন জিজ্ঞাসা। অনেক অনেক দুর্দান্ত লিঙ্ক :)
ইয়াতী সাগাদ

4

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

যদিও এটি আমাকে শিখিয়েছিল তা হ'ল উচ্চতর স্তরের ভাষা হিসাবে সি ++ দেখার ও ব্যবহার করা। কাঁচা পয়েন্টারগুলির সাথে টিঙ্কার না করা deleteএবং যেখানে সম্ভব সেখানে স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করা।

আমার অনুভূতি আছে যে এটি আপনি ঠিক পরে যাচ্ছেন।

1 এমন নয় যে আমাকে তখন শেখানোর মতো কিছু ছিল না (এক দশক পরেও এখন প্রচুর পরিমাণে আছে), তবে 250 পাতার প্রারম্ভিক বইটিতে আপনি এতগুলি জ্ঞান চেপে ধরতে পারবেন।


1

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

এটি বলার পরে, আপনি যাচাই করে নেওয়া ভাল:

কোডেরভিউ.এসএক্স সাইট

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

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

সি ++ সম্মেলনের ভিডিও উপস্থাপনা

প্রতি বছর সি ++ তে ফোকাস করা বেশ কয়েকটি বিকাশকারী সম্মেলন রয়েছে:

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

কখনও কখনও আপনি স্পিকারের স্লাইড ডেকও পেতে পারেন।


0

ঠিক আছে, ওপেন সোর্স প্রকল্পগুলি খুব ভাল শুরু। আপনার বিশ্ববিদ্যালয়ের ক্লাসের উপর ভিত্তি করে কোনও পেশাদার প্রোগ্রামার হওয়ার আশা করবেন না, তারা সেটির জন্য নয় (যেমনটি আমি আমার উত্তরে এখানে লিখেছি )।

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

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


-1

প্রচুর ভাল সি ++ কোড পড়া সম্ভবত সাহায্য করবে। এটির অনুভূতি পেতে শুরু করতে আপনাকে কোডটি দেখতে হবে। তারপরে আবার, বেশিরভাগ সি ++ কোডটি ভুল।


"বেশিরভাগ সি ++ কোডটি ভুল" - আপনি কি পরিষ্কার করতে পারেন? আমি দেখেছি বেশিরভাগ ওএসএস প্রকল্পগুলি আসলে উচ্চমানের মান বজায় রাখে।
ইয়াতী সাগাদ

1
প্রকল্পগুলি, হ্যাঁ, তবে কীভাবে স্টাফগুলি করবেন তা গুগল করা প্রায়শই খারাপ উদাহরণগুলির দিকে পরিচালিত করে।
কোডার

1
@ ইয়তি: আমার অভিজ্ঞতা পুনরায় ওএসএস প্রকল্পগুলি এর বিপরীত।
এসবিআই

@ এসবিআই সম্ভবত - আমি মজিলা প্রকল্প এবং গুগল ক্রোমের সাথে জড়িত ছিলাম (এখানে আসলে জড়িত নয়, তবে এক ধরণের শিক্ষার)। তাদের শৃঙ্খলা বকেয়া পাওয়া গেল!
ইয়াতী সাগাদ

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