কম্পিউটেশনাল সায়েন্সের জন্য আমার কোন ভাষা শিখতে হবে?


11

আমি গণনা বিজ্ঞানের ধারণায় সম্পূর্ণ নতুন, এবং আমি একটি ভাল সূচনা পয়েন্ট খুঁজছি for

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

শুরু করার জন্য, আমি গ্রাফিকাল উপস্থাপনা / সিমুলেশনগুলির প্রয়োজনীয়তার সাথে অ্যাটম বন্ডিং এবং ইন্টারঅ্যাকশন সম্পর্কিত মডেলিংয়ের দিকে ঝুঁকছিলাম।

কিছু ভাষাগুলি কি অন্য ক্ষেত্রের তুলনায় কিছু ক্ষেত্রের জন্য ভাল হতে পারে (যেমন পদার্থবিজ্ঞান বনাম খাঁটি গণিত)? বা অন্যান্য বিষয়গুলির উপর ভিত্তি করে কোনও ভাষা চয়ন করছেন?

আমি শুনেছি ফোর্টরান নামটি প্রায় প্রচুর ছোঁড়া হচ্ছে।

পরামর্শ?


1
সি ++ এবং ফোর্টরান এই সম্প্রদায়ের সুপরিচিত ভাষা। সম্প্রতি, আপনি গতিশীল ভাষার ব্যবহার বৃদ্ধি পেতে পারেন। প্রায়শই আপনি আপনার গ্রন্থাগার বেছে নেন আপনার ভাষা নয়।
ভ্যানকম্পুট

9
আমি এই ডিকমের কথা মনে করিয়ে দিচ্ছি যে রিয়েল প্রোগ্রামাররা যে কোনও ভাষায় ফোর্টরান লিখতে পারে।
হার্ডম্যাথ

1
এখানে উত্তর প্রচুর সঙ্গে অনুরূপ একটি প্রশ্ন হল scicomp.stackexchange.com/questions/304/c-vs-fortran-for-hpc
Ondřej Čertík

1
"আমি বুঝতে পেরেছি যে কোনও বস্তুনিষ্ঠভাবে সেরা ভাষা নেই" - অবিকল, তাই কেন ভাষা-অজ্ঞানী হতে শিখবেন না, যাতে আপনি যে ভাষায় নিক্ষেপ করেছেন তা আপনি লিখতে পারেন?
জেএম

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

উত্তর:


15

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

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


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

3
ম্যাটল্যাব-এ ম্যাটল্যাব এক্সউনিট রয়েছে তবে পাইথন এবং সি ++ এর আরও বেশি (এবং আমার মতে আরও ভাল) পরীক্ষার স্যুট রয়েছে।
জেফ অক্সবেরি

24

পাইথন!

  1. নাম্পি লাইব্রেরি, ছোট স্ক্রিপ্ট এবং আইপথন ইন্টারেক্টিভ শেল ব্যবহার করে সরাসরি শুরু করুন ।
  2. অসংখ্য বিনামূল্যে বই এবং টিউটোরিয়ালের সাহায্যে আরও উন্নত হন ।
  3. আরো উত্পাদনশীল ব্যবহার করুন scipy অত্যন্ত performant সংখ্যাসূচক রুটিন করার জন্য একটি ফ্রন্টএন্ড এবং matplotlib ঠাহর জন্য
  4. ক্রিপি , ফেএনসিএস এবং আরও অনেকগুলি হিসাবে বৈজ্ঞানিক কম্পিউটিংয়ের জন্য উন্নত এবং শক্তিশালী মডিউলগুলির সুবিধা নিন
  5. লক্ষ্য করুন, ফ্ল্যাট এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এবং পাইথনের সহজাত মডুলারিটির মধ্যে মসৃণ স্থানান্তর বৃহত্তর প্রকল্পগুলি পরিচালনা করতে সহজ করে তোলে।
  6. সিথনে জটিল অংশগুলি সহজেই আবার লিখে আপনার কোডটি সি বা ফোর্টরান হিসাবে দ্রুততর করুন । আপনি খুব সহজেই ফোর্টরান বা সি-র লিখিত রুটিনগুলি অন্তর্ভুক্ত করতে পারেন ।

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

(অতিরিক্ত সংযোজন: পাইথনটি নিখরচায় আসে - লাইসেন্স সংক্রান্ত সমস্যা নেই, বৃহত্তর সম্প্রদায় যেমন স্ট্যাকওভারফ্লোতে, ইউনিট টেস্টিং বা লগিং হিসাবে ভাল প্রোগ্রামিংয়ের মডিউল ...)




5

ফরট্রান: মতলব পছন্দ, শিখতে ও ব্যবহার করা সহজ এবং দ্রুত উত্পাদনশীল তবে সংখ্যামূলক কম্পিউটিংয়ের জন্য কেবল ভাল

সি ++: মাস্টার করা কঠিন (আপনার কয়েক বছর সময় লাগবে) তবে সংখ্যার কম্পিউটিংয়ের বাইরেও অনেক কিছুই ব্যবহৃত হয়েছে (কাজের সুরক্ষা)

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


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

@ গড্রিক: ~ 600 পৃষ্ঠায় ফোর্টরান ২০০ standard স্ট্যান্ডার্ডটি সি ++ ১১ (1300 পৃষ্ঠা) এর অর্ধেকেরও কম
স্টালি

1
@ স্টালি, হ্যাঁ, তবে উদাহরণস্বরূপ আমি ফোর্টরান 7777 এ লিখিত লিগ্যাসি কোডের প্রায় চতুর্থাংশ মিলিয়ন লাইনের সাথে কাজ করি। সুতরাং আমাকে এটির সাথে কাজ করতে সক্ষম হতে 77 77 এর স্টাইলটি শিখতে হয়েছিল, এটিতে রক্ষণাবেক্ষণযোগ্য পরিবর্তনগুলি করতে 90-95% (যেহেতু সাধারণ ব্লকগুলি অত্যাচারী) এবং তারপরে '08 অতীতে এক দশক ধরে আটকে না যায়। ফোর্টরান, যদিও একটি পুরাতন ভাষা, বিগত দশকগুলিতে প্রচুর পরিবর্তন হয়েছে, এবং আপনি যদি স্ক্র্যাচ থেকে শুরু না করেন, তবে তার উত্তরাধিকারটি শেখানো অ-তুচ্ছ নয়।
গর্ড্রিক সের

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

1
@ নিকোস্লাচেমার আমি "তুচ্ছ কাজের জন্য খুব ধীর" সাথে একমত হয়েছি। পাইথনে আমার সিমুলেশন (নম্পি / স্কিপি) প্রায় 10x ফরচারান 90 সংস্করণে একই কোডের চেয়ে ধীর। আমি Fortran90 বা সি ++ সুপারিশ করি।
ফ্রন্টহেম

4

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

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

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

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

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