পাইথন বনাম ফরট্রান


17

কোনটি আরও ভাল: ফরটারান বা পাইথন? এবং আমি অনুমান করি যে উভয় ক্ষেত্রেই আপনার জ্ঞানপ্লট দরকার, আমি ঠিক আছি?

আমি এই মুহুর্তে একটি উইন্ডোজ মেশিনে কাজ করছি।

আমি মন্টে-কার্লো সিমুলেশনস, সংখ্যার একীকরণ এবং পৃথকীকরণ, আণবিক গতিবিদ্যা ইত্যাদি সহ পদার্থবিজ্ঞানের সমস্যার জন্য সংখ্যাগত সমাধান পেতে এটি ব্যবহার করতে চাই I'd

আমি কম্পিউটেশনাল ফিজিক্সের উপর একটি কোর্স দেখেছি যা ফোরট্রান (I 77 আমি বিশ্বাস করি) এবং পাইথন উভয়ের সাথে পরিচয় করিয়ে দিয়েছি। আমি একটি দিয়ে শুরু করার পরিকল্পনা করছি এবং তারপরে অন্যটি শিখব, তবে কোন স্থানান্তরটি সবচেয়ে সহজ হতে পারে তা আমি জানি না।

এছাড়াও আপনি কোন সংকলক সুপারিশ করবেন?

আমার জন্য প্রাথমিক প্রশ্নটি নেমে এসেছে: কোনটি শিখতে সবচেয়ে সহজ, কোনটি সবচেয়ে দ্রুত, কোনটি সবচেয়ে বেশি ব্যবহারকারী বান্ধব এবং সর্বোপরি কোনটি সবচেয়ে বেশি ব্যবহৃত হয় (তাই এই 4 টির তুলনা)? এবং তার পরে, সর্বাধিক সাধারণ (নিখরচায় বা প্রদত্ত) সংকলকগুলি কী ব্যবহৃত হয়? আমি বর্তমানে একটি পুরানো ল্যাপটপ (প্রাথমিক ইন্টেল দ্বৈত কোর) লিনাক্সে রূপান্তর করার বিষয়ে বিবেচনা করছি; আশা করি এটি যথেষ্ট দ্রুত

এখনও পর্যন্ত উত্তরের জন্য অনেক ধন্যবাদ! আমি যে উত্তরগুলি সন্ধান করছি তার সাথে মিল রেখে উত্তরগুলি হ'ল এলক্লেভিন এবং সাদ of

আমি সি ++, ম্যাপেল এবং আমি ম্যাটল্যাব এবং ম্যাথমেটেমি 9 এর মূল বিষয়গুলি জানি তবে যদি কোনও সহায়তা হয়।


12
আপনার সত্যই আরও নির্দিষ্ট হওয়া দরকার; এটি জিজ্ঞাসার মতো "কোনটি ভাল: একটি হাতুড়ি বা স্ক্রু ড্রাইভার?"। কটাক্ষপাত scicomp.stackexchange.com/questions/11006 (এটা ফোরট্রান পরিবর্তে সি সম্পর্কে ++ কিন্তু বেশি পয়েন্ট সমানভাবে প্রয়োগ উচিত)।
ক্রিশ্চান ক্ল্যাসন

@ ক্রিশ্চিয়ান ক্লাসন, ন্যায্য পয়েন্ট: পি
নিক

আপনার সম্পাদনার জন্য ধন্যবাদ, যদিও এটি আসলে জিনিসকে সঙ্কুচিত করে না। উপরের লিঙ্কিত প্রশ্নের উত্তর হিসাবে ইতিমধ্যে দেওয়া হয়েছে এর চেয়ে বেশি কী বলা যায় তা আমি নিশ্চিত নই।
খ্রিস্টান ক্ল্যাসন

2
এছাড়াও, সংকলকগণ সম্পর্কে প্রশ্ন একটি পৃথক সমস্যা এবং পৃথক প্রশ্ন হওয়া উচিত। (অন্যথায় ফোর্টরানের সাথে পরিচিত কিন্তু পাইথনের প্রতি আগ্রহী না লোকেরা এটি দেখতে পাবে না Some) কিছু প্রস্তাবনা ইতিমধ্যে scicomp.stackexchange.com / ক্রিয়েশন / 8617 এ দেওয়া আছে ।
ক্রিশ্চান ক্ল্যাসন

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

উত্তর:


29

শেখার সহজতা

পাইথন এবং ফোর্টরান উভয়ই তুলনামূলকভাবে সহজ শেখার ভাষা। ভাল ফোর্টরান শেখার উপকরণগুলির চেয়ে ভাল পাইথন শেখার উপকরণগুলি খুঁজে পাওয়া সম্ভবত সহজ কারণ পাইথন আরও ব্যাপকভাবে ব্যবহৃত হয় এবং ফোর্টরান বর্তমানে সংখ্যার কম্পিউটিংয়ের জন্য "বিশেষত্ব" ভাষা হিসাবে বিবেচিত হয়।

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

উঠতে এবং উইন্ডোজ চলমান

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

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

লিনাক্সে পাইথন এবং সংকলকগুলি ইনস্টল করা আরও সহজ হবে; আমি পাইথন বিতরণ হিসাবে এখনও অ্যানাকোন্ডা বা এনটহোট ক্যানোপি ইনস্টল করব।

গতি: একটি উত্পাদনশীলতা বনাম পারফরম্যান্স ট্রেড অফ

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

পাইথন ব্যবহারের জন্য কার্যকর পারফরম্যান্স পেনাল্টি পরিবর্তিত হয় এবং সংকলিত ভাষাগুলিতে গণ্য নিবিড় কাজগুলি অর্পণ করে তা প্রশমিত করা হয়। ম্যাটল্যাব একই রকম কিছু করে। আপনি যখন ম্যাটল্যাবে একটি ম্যাট্রিক্স গুণণ করেন, তখন এটি বিএলএএস কল করে; পারফরম্যান্স পেনাল্টিটি কার্যত শূন্য এবং উচ্চ পারফরম্যান্স পেতে আপনাকে কোনও ফোর্টরান, সি, বা সি ++ লিখতে হয়নি। পাইথনেও একই অবস্থা। আপনি যদি লাইব্রেরি ব্যবহার করতে পারেন (উদাহরণস্বরূপ, নম্পপি, সায়্পাই, পেটসকপিপি, ডলফিন ফেইনিসিএস, পাইক্ল্যাও), আপনি পাইথনে আপনার সমস্ত কোড লিখতে পারেন এবং ভাল পারফরম্যান্স পেতে পারেন (সম্ভবত 10-40% এর জরিমানা) কারণ সমস্ত গণনীয়ভাবে নিবিড় অংশগুলি দ্রুত সংকলিত ভাষা গ্রন্থাগারে কল হয়। যাইহোক, আপনি যদি খাঁটি পাইথনে সবকিছু লিখেন তবে পারফরম্যান্স পেনাল্টিটি 100-1000x এর ফ্যাক্টর হবে। সুতরাং আপনি যদি পাইথন ব্যবহার করতে চান এবং একটি কাস্টম অন্তর্ভুক্ত করতে চান, গণনামূলকভাবে নিবিড় রুটিন, আপনি সি, সি ++, বা ফোর্টরানের মতো সংকলিত ভাষায় সেই অংশটি লেখার চেয়ে ভাল হবে, তারপরে পাইথন ইন্টারফেসের সাহায্যে এটি মোড়ানো। এমন লাইব্রেরি রয়েছে যা এই প্রক্রিয়াটিকে সহজ করে দেয় (যেমন সিথন এবং এফ 2 পি), এবং আপনাকে সহায়তা করার জন্য টিউটোরিয়াল; এটি সাধারণত কঠোর নয়।

ব্যবহারের সুযোগ

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

গণনা বিজ্ঞানে, পাইথন সাধারণত উল্লিখিত পারফরম্যান্সের শাস্তির কারণে সংকলিত ভাষার সাথে সরাসরি প্রতিযোগিতা করে না doesn't আপনি উচ্চতর উত্পাদনশীলতা চান এমন ক্ষেত্রে পাইথন ব্যবহার করবেন এবং পারফরম্যান্স একটি গৌণ বিবেচনা, যেমন সংখ্যার নিবিড় আলগোরিদিম, ডেটা প্রক্রিয়াকরণ এবং ভিজ্যুয়ালাইজেশনের ক্ষেত্রে। আপনার অ্যালগরিদম এবং অ্যাপ্লিকেশন ডিজাইনটি কী হওয়া উচিত সম্পর্কে আপনার ভাল ধারণা থাকলে আপনি ফোর্টরান (বা অন্য কোনও সংকলিত ভাষা) ব্যবহার করবেন, আপনি আপনার কোডটি লেখার এবং ডিবাগ করার জন্য আরও বেশি সময় ব্যয় করতে ইচ্ছুক, এবং অভিনয়টি সর্বজনীন। (উদাহরণস্বরূপ, পারফরম্যান্স আপনার সিমুলেশন প্রক্রিয়া একটি সীমাবদ্ধ পদক্ষেপ, বা এটি আপনার গবেষণায় একটি মূল বিতরণযোগ্য)) পাইথন এবং একটি সংকলিত ভাষা (সাধারণত সি বা সি ++, তবে ফোর্টরানও ব্যবহৃত হয়েছে) মিশ্রিত করা একটি সাধারণ কৌশল, এবং কোডের সর্বাধিক পারফরম্যান্স-সংবেদনশীল অংশগুলির জন্য সংকলিত ভাষা ব্যবহার করুন; উন্নয়নের ব্যয় অবশ্যই, এটি যে কোনও ভাষাতে একটি প্রোগ্রামের চেয়ে দুটি ভাষায় প্রোগ্রাম লিখতে এবং ডিবাগ করা শক্ত er

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

ব্যক্তিগত মতামত

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

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


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

এবং আমার শেষ সংখ্যাটি FAT32- ফর্ম্যাট (এখন পর্যন্ত কমপক্ষে) ব্যবহার করে বিজ সমাধান করা হয়েছে।
নিক

এনবি: FAT32 এর সীমাবদ্ধ সর্বোচ্চ ফাইলের আকার রয়েছে।
meawoppl

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

আপনার ফাইলগুলি 4 গিগাবাইটের নীচে রাখুন: পি সত্যই, আমি কোনও ভাল সমাধান জানি না। ফাইল-নাম কনভেনশনগুলিতে কিছুটা ডারপেইনেসও রয়েছে। আমি একবার উইন্ডোজ সমর্থন ভাঙ্গার কথা একবার <3txt ফাইলের নামকরণের মাধ্যমে ভঙ্গ করেছি যা এম $ অত্যন্ত দু: খিত মুখ করেছে। লিনাক্সে এনটিএফএস সমর্থন এখন বেশ ভাল, তবে ওএসএক্সে মোটামুটিভাবে যেতে হবে না। আমি সত্যিই ভেবেছিলাম আমরা এতক্ষণে এই সমস্যাটি সমাধান করব।
meawoppl

7

আমি ফোর্টান থেকে দূরে থাকব, বা যদি আপনার প্রয়োজন হয় তবে যুক্তিসঙ্গতভাবে নতুন সংস্করণ (77 77 এর পরিবর্তে 2003) ব্যবহার করুন। ফোরট্রেনে অনেকগুলি পদার্থবিজ্ঞানের সফ্টওয়্যার (বিশেষত মন্টি কার্লো সিমুলেশন) লেখা হয়, কেবলমাত্র প্রকল্পগুলি মূলত 80 এর দশকে শুরু হয়েছিল বলে।

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

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

সি ++ হ'ল (আমার বিনীত মতে) একটি সুখী মাধ্যম। আর্মাদিলো বা আইগেনের মতো লাইব্রেরি সহ, আপনি নিম্ন স্তরের পারফরম্যান্সের শুল্ক পেয়ে কোডিংয়ের যথেষ্ট উচ্চ স্তরের স্টাইল দিয়ে পালিয়ে যেতে পারেন।

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

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

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

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

দাবি অস্বীকার: আমি একজন পদার্থবিদ যিনি ফোর্টরান based 77 ভিত্তিক মন্টি কার্লো কোডগুলির সাথে বেশ কিছুটা সময় কাটিয়েছেন এবং বর্তমানে পাইথনে তার সমস্ত ডেটা প্রসেসিং করেন।


সমান্তরালতা সম্পর্কে গবেষকরা উত্তম সমান্তরাল দক্ষতার সাথে কয়েক হাজার কোরে সাফল্যের সাথে পাইথনকে সফলভাবে ব্যবহার করেছেন। (উদাহরণস্বরূপ, পাইক্লা সমস্ত শাহিনের উপর চালিত হয়েছে, যা 65,000+ কোর।)
জেফ অক্সবেরি

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

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

আমি একমত যে পাইথন প্রায় কোনও উদ্দেশ্যেই একটি দুর্দান্ত ইন্টারফেস ভাষা, তবে এটি প্রশ্ন থেকে দূরে চলেছে। বেশিরভাগ অ্যাপ্লিকেশনগুলি অনানুষ্ঠানিক, এখানে সমস্যা হ'ল তুচ্ছ বিষয়গুলি সহ সমান্তরালতার সমস্ত ক্ষেত্রে অজগরটিতে অ-তুচ্ছ হয়। যদি আপনার সমস্যাটি নম্পি বা সিথন অপারেশনের ক্ষেত্রে অন্যথায় ভালভাবে বর্ণনা করা হয় তবে এটি উপদ্রব হতে পারে। না, আপনি এটি 65000 কোর ক্লাস্টারে ব্যবহার করবেন না, তবে আপনি 100 কোরে 2x পারফরম্যান্সটি গ্রহণ করতে পারেন।
এলক্লেইন

রাইটিং প্যারালালিজম, ফোর্টরান সম্পর্কে দুর্দান্ত জিনিসটি হ'ল এমপিআই / ওপেনএমপি ছাড়াও কো-অ্যারেগুলিও রয়েছে যা এখন স্ট্যান্ডার্ডের অংশ। উদাহরণস্বরূপ, এই jolts.stanford.edu/72/…
স্টালি

7

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

আধুনিক ফোর্টরান (90 এবং তার পরে) সিনট্যাক্সের মতো প্রায় এমএটিএলবি সহ দ্রুত এবং উচ্চ স্তরের উভয়ই। সুতরাং আপনি যেমন কাজ করতে পারেন:

k=k+matmul(transpose(B),matmul(D,B))*weight(i)*detj

অথবা

indx(:)=indxmap(indx(:),2)

বা এমনকি সহজ

indx=indxmap(indx,2)

প্রভৃতি

লিনাক্সে ফ্রিটরানের অনেকগুলি সংকলক রয়েছে। আমি ব্যবহার করি

  1. জিসিসি
  2. সোলারিস স্টুডিও
  3. Open64
  4. ইন্টেল (কেবলমাত্র বাণিজ্যিক ব্যবহারের জন্য নয়)

আমি ম্যাকস / ওএসএক্স ব্যবহার করি না তবে ফ্রি পিজিআই রয়েছে।

এবং দয়া করে FORTRAN 77 ব্যবহার করবেন না new নতুন কোড লিখতে কেউ এটি ব্যবহার করে না।

দাবি অস্বীকার: আমি ব্যক্তিগতভাবে আমার নিজের ছোট্ট অবকাঠামো এফ এ কোড কোডটি লেখার জন্য পাইথনের দিকে নজর রেখেছিলাম (পিইটিএসসি এর উপরে নির্মিত) তবে জড়িত / কোডিংয়ের পরিমাণটি কেবল প্লেইন ফোর্টরান 95 লেখার চেয়ে বেশি ছিল।


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

4

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

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

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

ব্যক্তিগতভাবে, আমি পাইথনের সাথে সাধারণভাবে কাজ করতে পছন্দ করি, বিশেষত পোস্ট-প্রসেসিংয়ের জন্য। পাইথন প্রোগ্রামিং মজা!


1
অভিনয় প্রায় সবসময় গুরুত্বপূর্ণ। পারফরম্যান্সের প্রতি মনোযোগের অভাব হ'ল ইমেইলটি পরীক্ষা করতে এবং ওয়েবে সার্ফ করার জন্য লোকেরা 16 জিবি র‌্যাম সহ 8 টি কোরের প্রয়োজন।
stally

আমার অন্যের অজগর কোডটি পড়ার দুর্ভাগ্য হয়েছিল। আমি পিআই কোড পড়ার পক্ষে সহজ হিসাবে শ্রেণিবদ্ধ করব না।
বিশ্বজিৎ ব্যানার্জি

@stali: আমি পুরোপুরি একমত
SAAD

1
@ বিশ্বজিৎ ব্যানার্জি: কোনও ভাষার সাথে জটিল কোড লেখা অসম্ভব নয়, তবে কমপক্ষে আমি সহজেই কোনও ফাংশনের ইনপুট এবং ফলাফলগুলি সনাক্ত করতে পারি, এখানে ফোর্টরান ভয়ঙ্কর হয়ে ওঠে! :)
সাদ

3

পাইথনের সাথে আপনার জ্নুপ্লট দরকার নেই, আপনি ব্যবহার করতে পারেন উদাহরণস্বরূপ, ম্যাটপ্ল্লোব এবং / অথবা আইপথন শেলটি ব্যবহার করতে পারেন। আইপিথন হল একটি ইন্টারেক্টিভ পাইথন শেল যা% পাইব্লব মোডে আপনি ম্যাটল্যাব-তে উপলব্ধ একই প্লট প্লটিং কমান্ড সরবরাহ করে।

এটি সম্ভবত সম্ভবত আগামী 5+ বছরের মধ্যে বৈজ্ঞানিক গণনাটি ম্যাটল্যাব থেকে পাইথন-এ এক বিস্তৃত স্থানান্তরিত হবে।


জ্ঞানপ্লটের একটি সুবিধা হ'ল এটি প্রায়শই লিনাক্স মেশিনে ইনস্টল করা থাকে (ক্লাস্টার / সার্ভার ইত্যাদি) এবং দ্রুত / নোংরা জন্য খুব দরকারী very এটি যেমন vi এর মত।
stally

1

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

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

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


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

কখনও কখনও আপনি কি অনেক পার্থক্য দেখতে। আমি সম্প্রতি মতলব থেকে অভ্যন্তরীণভাবে প্যাকেজ বিভিপি 6 সি ব্যবহার করে একটি ফিজিক্স সিমুলেশন প্রোগ্রামটি আবার লিখেছি (অভ্যন্তরীণভাবে প্যাকেজ বিভিপি_সোলভার ব্যবহার করে), এবং মৃত্যুর সময়টি অ্যালগরিদমগুলি পরিবর্তন না করে স্যুইচ করার পরে মাত্র 1.4% এ চলে গেছে though বা প্রোগ্রামের সামগ্রিক কাঠামো। সিমুলেশনের জন্য যা ডেটাপয়েন্টে রূপান্তর করতে প্রতি to 3.5 দিন প্রয়োজন হত , এটি ছিল অত্যন্ত লক্ষণীয় উন্নতি।
জবিরালি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.