প্রদত্ত সি ++ '11 অনুমোদিত হয়েছে, কীভাবে এই পরিবর্তন হয় যে সি ++ শিক্ষানবিশ ভাষা শিখেন? [বন্ধ]


21

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

আমার প্রশ্নটি হ'ল: যে C ++ '11 অনুমোদিত হয়েছে (যদিও আমি পুরোপুরি বাস্তবায়ন করি না জানি) আমার কি C ++ শেখার কাছে যাওয়ার উপায়টি পরিবর্তন করে? আমার সি ++ এর মালিকানা : ১৯৮৯ সালের হার্ব শিল্ডের সম্পূর্ণ রেফারেন্স newly নতুন অনুমোদিত স্ট্যান্ডার্ড কি এমন কিছু নতুন শিক্ষাগত / বইগুলির সাথে স্ট্যান্ডার্ডের জিনিসগুলি অন্তর্ভুক্ত করার চেয়ে কম গুরুত্বপূর্ণ করে তোলে? পুরানো বইগুলি থেকে শেখার কোনও উপকার আছে?


9
নগদ টাকা। Schildt। আমি তার সি ++ উপাদানের মানের সাথে কথা বলতে পারি না, তবে তার সি উপকরণগুলি দীর্ঘ সময়ের জন্য উপ-মানক ছিল (এমনকি সি এর সর্বশেষ সংস্করণ: টিসিআরটিতে এখনও কিছু অ-ত্রুটিযুক্ত ত্রুটি রয়েছে)। আমি অন্য লেখকের আরও বর্তমান কাজ সন্ধানের পরামর্শ দেব।
জন বোদে

সি ++ 11 সি ++ এর বেসিকগুলি পরিবর্তন করে নি যা সর্বশেষতম সংশোধনীতে প্রবর্তিত এবং সি ++ এর পূর্ববর্তী সংস্করণে বিদ্যমান নয় এমন কিছু করার জন্য শিখতে হবে।
রামহাউন্ড

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

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

উত্তর:


16

একেবারে। এই দিনগুলিতে সাধারণত পাঠ 2 এ থাকা তিনটি জিনিস অনেক পরে চলে যেতে হবে:

  • চর * এর অ্যারে হিসাবে স্ট্রিং, স্ট্রেন, স্ট্রাএক্সএক্সএক্সএক্স পদ্ধতি এবং আরও কিছু
  • সাধারণ এবং পয়েন্টার গাণিতিক অ্যারে
  • আপনি নতুন কী মুছুন, [] আপনি কী নতুন [] এবং এমনকি ধ্বংসকারীদের মুছুন

সাধারণত 99 ম পাঠে থাকা এই জিনিসগুলির অনেক আগে চলে যাওয়া উচিত

  • টেমপ্লেটগুলি ব্যবহার করার মতো জিনিস হিসাবে (লিখুন, এত বেশি নয়)
  • এসটিডি :: স্ট্রিং
  • এসটিডি :: shared_ptr <>
  • std :: ভেক্টর <>, পুনরুক্তিকারী, অন্যান্য সংগ্রহ

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

আমি প্রথম বার সংগ্রহের মাধ্যমে পুনরাবৃত্তি করতে এবং প্রতিটি উপাদানকে কিছু করতে চাইলে ছবিতে ল্যাম্বডাসও কাজ করব।

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

আপডেট: কয়েক জন লোক জিজ্ঞাসা করেছেন যে কেন সি ++ 0x এর অস্তিত্ব এমন বিষয়গুলি শেখানোর অনুপ্রেরণা দেয় যা সি ++ 03 দিয়ে শেখানো যেতে পারে। আমি মনে করি এটি বেশ কয়েকটি জিনিস:

  • সত্যিকারের স্মার্ট পয়েন্টারগুলি, যেগুলি সংগ্রহের জন্য বন্ধুত্বপূর্ণ, "কর্মচারী পয়েন্টারগুলির একটি অ্যারে" জাতীয় জিনিসগুলির প্রয়োজনীয়তা সরিয়ে দেয় যা আমাদের সর্বদা নতুন / মুছতে, পয়েন্টার গাণিতিক ইত্যাদির পিছনে ফেলে দেয় causing
  • স্বয়ংক্রিয় পুনরাবৃত্তি ঘোষণার ব্যথা কেড়ে নেয়
  • ল্যাম্বডাস একটি সাধারণ ব্যক্তি করণীয় এমন কিছু করার পরিকল্পনা করে
  • এমনকি পার্সিংয়ের মতো তুচ্ছ কিছু >>ঠিকঠাকের কিছু টেম্পলেট ঘোষণার সময় সেখানে থাকা গেটচাকে সরিয়ে দেয়
  • ইত্যাদি

আমি এটি যেভাবে দেখছি, কিছু সময় আগে আমরা সি ++ পড়ানোর পদ্ধতি সম্পর্কে আমরা পরিবর্তন করতে পারতাম, তবে আমাদের মধ্যে কিছু কিছু পিছিয়ে ছিল কারণ আমাদের এখনও একটি ফলব্যাকের জন্য পুরানো-স্কুল পথের প্রয়োজন ছিল বা কারণ এটি পড়াতে অনেক কিছু জড়িত ছিল তর্ক জ্ঞান।


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

1
আপনার উদাহরণগুলি বেশিরভাগ সি ++ 98 বনাম প্রাক প্রাক মান সি ++ এর ক্ষেত্রে প্রযোজ্য, সি ++ 03 বনাম সি ++ 11 নয়। আমি মনে করি যে লাম্বদা দেওয়া হয়েছে, std::for_each()এটি আগের থেকে অনেক বেশি জনপ্রিয় হবে, autoএটি খুব গুরুত্বপূর্ণ হবে এবং নতুন ফাংশন ডিক্লেয়ারেশন সিনট্যাক্স (এর সাথে decltype) টেম্পলেট কোডে বেশ ব্যবহৃত হবে। সেগুলি এখনকার কোন সি ++ বই শেখায় না। তবে, হ্যাঁ, সাধারণভাবে আমি আপনার সাথে একমত ( +1)। আমি যখন সি ++ পাঠ্যক্রমগুলি দেওয়া শুরু করি তখন আমি ত্বরণী সি ++ দিয়ে শুরু করি এবং আমার কোর্সটি আরও বেশি করে বিভ্রান্ত করতে শুরু করলেও এটি এখনও অন্তর্নিহিত নীতিটির সাথে সত্য।
এসবিআই

3
@ জেটি: আমি খুব কমই ম্যানুয়াল রিসোর্স ম্যানেজমেন্ট করি এবং যদি করি তবে এটি আরআইআই ক্লাস বাস্তবায়নের জন্য। আমি যাইহোক, এই ক্লাসগুলির অনেকগুলি ব্যবহার করি । সেই অনুযায়ী , আরআইআই স্টাফের ব্যবহার কাঁচা সম্পদের সাথে লেনদেনের চেয়ে গুরুত্বপূর্ণ মনে হয় এবং আরও জোর দিয়ে, আগে তা শিখানো উচিত।
sbi

1
@ এসবিআই: আমাকে সেখানে আপনার সাথে একমত হতে হবে- এই উদাহরণগুলির বেশিরভাগই ২০০ from থেকে আধুনিক সি ++ 101 এর মতো মনে হচ্ছে, সি ++ 11 সম্পর্কে নতুন কিছু নয়।
ডেডএমজি

2
@ জেটি: সি ++ এর মাস্টারিংয়ের পক্ষে সবচেয়ে গুরুত্বপূর্ণ পদক্ষেপটি ম্যানুয়াল মেমরি পরিচালনা এড়াতে পারে এমন সমস্ত উপায় শেখা । এটি একেবারে এমন একটি বিষয় যা "পরে" শেখানো উচিত, একবার আপনি "স্বয়ংক্রিয়" মেমরি পরিচালনার মধ্য দিয়ে কতটা যেতে পারবেন তা শিখেছেন।
জাল্ফ

9

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

1998 সালে, লোকেরা কেবলমাত্র সি ++ ব্যবহার করে কীভাবে উচ্চ মানের, নিরাপদ, দ্রুত কোড লিখতে হয় তা আবিষ্কার করতে শুরু করেছিল এবং প্রচুর কোড ছিল "সি ছিল ক্লাস"। সি ++ 11, এটা কপি এবং swap 'র থ্রি (বর্তমানে পাঁচ) রুল মত খুব different- বাগধারার সুপরিচিত এবং সংজ্ঞায়িত করা হয়, এবং আরো অনেক রিসোর্স ধরনের পরিচালনার স্ট্যান্ডার্ড, মত হয়ে গেছে এর shared_ptrএবং unique_ptrযেখানে পূর্ববর্তী স্ট্যান্ডার্ড কেবল তাঁদের ছেড়ে ফাঁক গর্ত হিসাবে

আপনি সি ++ তে রেফারেন্স উপাদানগুলির একটি দুর্দান্ত তালিকার জন্য এই প্রশ্নটি দেখতে পারেন ।


1
প্রকৃতপক্ষে আমি 1998 এর তুলনায় কয়েক বছর আগে "ক্লাস সহ সি" শেষের সূচনা করব, তবে সাধারণভাবে আপনি অবশ্যই ঠিক বলেছেন, এবং আমি অর্ধ দশকেরও বেশি সময় ধরে আটকে থাকব না। +1আমার থেকে.
এসবিআই

4

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

যদিও ১৯৯৯ সালের মতো পুরানো কোনও বই সি ++ প্রোগ্রামিং শৈলীতে কয়েকটি আপডেট এবং বিকাশ মিস করে থাকতে পারে যা বছরের পর বছর ধরে এই সম্প্রদায়ের মধ্যে জমা হয়েছিল। আমি সামান্য আপ টু ডেট রিসোর্স খুঁজব। পর্যাপ্ত নিখরচায় অনলাইন টিউটোরিয়াল এবং দস্তাবেজগুলির চেয়ে আরও বেশি কিছু রয়েছে যা আপনাকে একটি ভাল সূচনা দেয়। তাদের মধ্যে কিছু এমনকি সি ++ 0x উল্লেখ করতে পারে।

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

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


ধন্যবাদ! আপনি কি অনলাইনের কোনও ভাল সম্পদ বা বইয়ের কথা জানবেন?
জেটি

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

@ ডেডএমজি আপনার বিকল্প ওয়েবসাইট আছে?
TheLQ

@ দ্য এলকিউ: আপনি এমএসডিএন রেফারেন্স সহ আরও পাবেন, বা cprogramming.com
ডেডএমজি

@ জেটি: আমি সি ++ শেখাতে সি ++ 11 ব্যবহারের জন্য কোনও উপাদান সম্পর্কে অবগত নই। আমি যা কিছু দেখেছি তা C ++ 03 এর শীর্ষে সি ++ 11 শেখায়। পরেরটি শিখার জন্য stackoverflow.com/questions/388242/… দেখুন
এসবিআই

3

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

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


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

ল্যাম্বদা, autoএবং অ্যাসিনক্রোনাস ফাংশন এক্সিকিউশন "নৌকো রক" করা ছাড়া আর কী করতে পারে?
sbi

1
আমি যুক্তি দেব যে নতুন সরঞ্জামের প্রবর্তন এবং ডিজাইনের দর্শনের বিস্তৃত স্থানান্তর (যেমন আমরা পিএইচপি দিয়ে দেখছি)
লিও

1
@ লিও: আমি একমত নই এসটিএল, স্মার্ট পয়েন্টার এবং সমৃদ্ধ টেম্পলেট সুবিধাগুলি সি ++ এর মূলধারার নকশার দর্শনকে পুরোপুরি বদলে দিয়েছে। প্রতিটি বুস্ট লাইব্রেরি প্রায় 90 এর দশকের আপনার গড় সি ++ লাইব্রেরি থেকে সম্পূর্ণ আলাদা।
এসবিআই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.