আধুনিক সি ++ বৈজ্ঞানিক কম্পিউটিংয়ে?


22

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

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

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


2
আপনি কি আজকালকার সেরা অনুশীলন (বনাম 20 বছর পূর্বে) বা বিশেষত সি ++ 11/14 অর্থে "আধুনিক" হিসাবে বোঝা যায় সেই অর্থে আপনি "আধুনিক" সম্পর্কে জিজ্ঞাসা করছেন?
কিরিল

2
@ কিরিল আমি অনুমান করি যে এটি উভয়ই। বেশিরভাগ ক্ষেত্রে সি ++ 11/14 ব্যবহার করা হয় তবে সেরা অনুশীলনগুলি অনুসরণ করা হয়।
বেকো

উত্তর:


11

দুটি আধুনিক গ্রন্থাগার যা আধুনিক সি ++ নির্মাণ ব্যবহার করে:

  • ইগেন এবং আর্মাদিলো উভয় লাইব্রেরি (লিনিয়ার বীজগণিত) বেশ কয়েকটি আধুনিক সি ++ নির্মাণ ব্যবহার করে use উদাহরণস্বরূপ, তারা পাটিগণিতের অভিব্যক্তিগুলি সহজ করার জন্য উভয় এক্সপ্রেশন টেম্পলেট ব্যবহার করে এবং কিছু সময় অস্থায়ী পদক্ষেপগুলি দূর করতে পারে:

http://eigen.tuxfamily.org

http://arma.sourceforge.net/

http://hpac.rwth-aachen.de/teaching/sem-accg-14/Armadillo.pdf (আর্মাদিলোতে প্রকাশের টেমপ্লেটগুলির উপর উপস্থাপনা)

  • সিজিএল লাইব্রেরি (গণনা জ্যামিতি) অনেকগুলি আধুনিক সি ++ বৈশিষ্ট্য ব্যবহার করে (এটি ভারীভাবে টেমপ্লেট এবং বিশেষাধিকার ব্যবহার করে):

http://www.cgal.org

বিঃদ্রঃ:

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

  • প্রোগ্রামে কোডের কত লাইন?
  • কত শ্রেণী / টেম্পলেট?
  • সময় চলমান ?
  • স্মৃতি খরচ?

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

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

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

আরো দেখুন

জেনেরিক এবং মেটা-প্রোগ্রামিংটি সি ++ টেমপ্লেটগুলি কম্পিউটারের বিজ্ঞানের ক্ষেত্রে কতটা কার্যকর?


2
একই সাথে আর্মাদিলোর পাশাপাশি ইগেনও যায়, না?
dr.blochwave

হ্যাঁ, আপনি ঠিক বলেছেন (আমি কেবল আর্মাদিলোর ডকুমেন্টেশনটি দেখেছি, আমি এর সাথে কম পরিচিত)। আমি পোস্ট সম্পাদনা করছি।
ব্রুনোলেভি

1
দীর্ঘ সংকলনের সময়গুলি উল্লেখযোগ্য আর একটি মূল্য।
কিরিল

কিরিল, হ্যাঁ ভাল পয়েন্ট (এটি উল্লেখ করার জন্য পোস্টটি সম্পাদনা করেছেন), ধন্যবাদ।
ব্রুনোলেভি

10

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

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


এছাড়াও ওপেনফাম - টেমপ্লেটগুলির বেশ বিস্তৃত ব্যবহার।
tpg2114

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

বিশদ বিবরণে এটি একটি বৃহত লাইব্রেরির দিকে তাকানো সহজ বলে মনে হচ্ছে না।
মাইকেল

7

HPX গ্রন্থাগার C- এর একটি ব্যাপ্তির ভারী ব্যবহার করে ++, 11 পদক্ষেপ কনস্ট্রাকটর যেমন অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে এবং একটি সম্পূর্ণ বাস্তবায়ন হতে নিশানা করা হয় N4409 (সমান্তরালতা জন্য সি ++ এক্সটেনশানগুলি জন্য ওয়ার্কিং খসড়া, টেকনিক্যাল স্পেসিফিকেশন)।

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


Scicomp.se স্বাগতম! আপনি যদি লিঙ্কগুলি যুক্ত করেন বা বৈজ্ঞানিক গণনার জন্য এই গ্রন্থাগারটি নিয়ে আলোচনা করেন এমন কিছু নিবন্ধ / বই / ব্লগ পোস্ট পোস্ট করেন তবে আমি আনন্দের সাথে আপনার উত্তরটিকে উজ্জীবিত করব!
হার্ডম্যাথ

5

আমি বৈজ্ঞানিক ও প্রকৌশল সি ++: বার্টন এবং ন্যাকম্যানের দ্বারা উন্নত প্রযুক্তি এবং উদাহরণগুলির সাথে একটি পরিচিতির দিকে নজর দেওয়ার পরামর্শ দিই

1994 সালে এই বইটি প্রকাশিত হয়েছিল তা আপনাকে "আধুনিক কৌশল" এর মানদণ্ড লঙ্ঘন করে বলে মনে হয়। তবে বার্টন এবং ন্যাকম্যান সেই সময়ে সি ++ টেম্পলেটগুলির সাহায্যে কী সম্ভব হয়েছিল তার প্রান্তে ছিল এবং ভাল পারফরম্যান্স অর্জনের জন্য তারা উদ্ভাবনী কৌশলগুলি সর্বশেষতম সি ++ শ্রেণির পাঠাগারগুলিতে ব্যবহৃত হয়।


4

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


3

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

প্রকাশ - আমি লেখকদের মতো একই গবেষণা গোষ্ঠীতে কাজ করি, তবে এখনও মনে করি এটি এটির জন্য খুব ভাল উত্স!


1

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


0

আলোকচ্ছটা গ্রন্থাগার রৈখিক বীজগণিত জন্য অনুমিত এবং পিছনের আগমন ধরনের আকারে সি ++ 14 ভারী ব্যবহার করে। ব্যবহারে ব্যবহৃত অন্যান্য আধুনিক সি ++ বৈশিষ্ট্যগুলি constexprহ'ল, ওরফে টেমপ্লেট এবং SFINAE এক্সপ্রেশন সহ পুরো টেম্পলেট বিপণন।

আপনি আপনার ভেক্টর এবং ম্যাট্রিক্সের জন্য প্রাথমিককরণ তালিকাও ব্যবহার করতে পারেন, যেমন

blaze::DynamicVector<int> x{ 4, -1, 3 };

আরও বিশদের জন্য তাদের প্রারম্ভিক পৃষ্ঠাটি দেখুন

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