শেখার সহজতা
পাইথন এবং ফোর্টরান উভয়ই তুলনামূলকভাবে সহজ শেখার ভাষা। ভাল ফোর্টরান শেখার উপকরণগুলির চেয়ে ভাল পাইথন শেখার উপকরণগুলি খুঁজে পাওয়া সম্ভবত সহজ কারণ পাইথন আরও ব্যাপকভাবে ব্যবহৃত হয় এবং ফোর্টরান বর্তমানে সংখ্যার কম্পিউটিংয়ের জন্য "বিশেষত্ব" ভাষা হিসাবে বিবেচিত হয়।
আমি বিশ্বাস করি পাইথন থেকে ফোর্টরানে স্থানান্তর সহজতর হবে। পাইথন একটি ব্যাখ্যাযুক্ত ভাষা, সুতরাং এটি আপনার প্রথম প্রোগ্রামটি চালাতে যে পদক্ষেপ গ্রহণ করে তার সংখ্যা print("Hello, world!")
ফোরট্রানের চেয়ে কম (দোভাষীটি খুলুন, প্রম্পটে টাইপ করুন) "হ্যালো ওয়ার্ল্ড" প্রোগ্রাম লিখুন, সংকলন করুন, চালান)। আমি আরও মনে করি যে ফোরট্রানের চেয়ে পাইথনে অজেক্ট-ওরিয়েন্টেড স্টাইল শেখানোর জন্য আরও ভাল উপকরণ রয়েছে এবং ফোর্টরান কোডের চেয়ে গিটহাবে আরও পাইথন কোড পাওয়া যায়।
উঠতে এবং উইন্ডোজ চলমান
পাইথন ইনস্টল করা কম বেদনাদায়ক হওয়া উচিত; উইন্ডোজ বিতরণ উপলব্ধ আছে। আমি অ্যানাকোন্ডা বা এনটহোট ক্যানোপির মতো বৈজ্ঞানিক বিতরণ ব্যবহার করার পরামর্শ দিচ্ছি। সত্যিকার অর্থে কোনও সংকলক নেই; দোভাষী তার ভূমিকা গ্রহণ করে। আপনি একটি সিপিথন-ভিত্তিক দোভাষী ব্যবহার করতে চাইবেন, কারণ আরও সংখ্যক গ্রন্থাগার উপলব্ধ রয়েছে এবং এটি সি, সি ++ এবং ফোর্টরানের সাথে সুন্দরভাবে আন্তঃসংযোগ তৈরি করে। অন্যান্য দোভাষী বাস্তবায়নের মধ্যে রয়েছে জাইথন এবং পিপিপি।
একটি উইন্ডোজ মেশিনে, একটি ফোর্টরান সংকলক ইনস্টল করা বিরক্তিকর হতে চলেছে। সাধারণ কমান্ড-লাইন সংকলকগুলি হ'ল গফর্ট্রান, আইফোর্ট (ব্যক্তিগত ব্যবহারের জন্য নিখরচায়, অন্যথায় অর্থ ব্যয় করা হয়), এবং পিজফর্ট্রান (পিজিআই থেকে; ফ্রি ট্রায়াল সংস্করণ, অন্যথায় অর্থ ব্যয় হয়) are এই সংকলকগুলি ইনস্টল করার জন্য আপনাকে সাইগউইন বা মিনজিডাব্লু জাতীয় কিছু ইউএনএক্স / পসআইএক্স-টাইপের সামঞ্জস্যতা স্তরটি ইনস্টল করতে হতে পারে। আমি এটির সাথে কাজ করতে ব্যথা পেয়েছি, তবে কিছু লোক সেই কাজের প্রবাহকে পছন্দ করে। আপনি ভিজ্যুয়াল ফোর্টরানের মতো একটি জিইউআই সহ একটি সংকলকও ইনস্টল করতে পারেন (আবার আপনাকে লাইসেন্সের জন্য অর্থ দিতে হবে)।
লিনাক্সে পাইথন এবং সংকলকগুলি ইনস্টল করা আরও সহজ হবে; আমি পাইথন বিতরণ হিসাবে এখনও অ্যানাকোন্ডা বা এনটহোট ক্যানোপি ইনস্টল করব।
গতি: একটি উত্পাদনশীলতা বনাম পারফরম্যান্স ট্রেড অফ
পাইথন (বা এমএটিএলবি, ম্যাথমেটিকা, ম্যাপেল বা কোনও অনুবাদিত ভাষা) ব্যবহার করার ক্ষেত্রে আপনি উত্পাদনশীলতার জন্য কর্মক্ষমতা ত্যাগ করেন। ফোর্টরান (বা সি ++, সি বা অন্য কোনও সংকলিত ভাষা) এর সাথে তুলনা করে, আপনি একই কাজটি সম্পাদনের জন্য কোডের কম লাইন লিখবেন, যার অর্থ সাধারণত কোনও কার্যনির্বাহী সমাধান পেতে আপনার কম সময় লাগবে।
পাইথন ব্যবহারের জন্য কার্যকর পারফরম্যান্স পেনাল্টি পরিবর্তিত হয় এবং সংকলিত ভাষাগুলিতে গণ্য নিবিড় কাজগুলি অর্পণ করে তা প্রশমিত করা হয়। ম্যাটল্যাব একই রকম কিছু করে। আপনি যখন ম্যাটল্যাবে একটি ম্যাট্রিক্স গুণণ করেন, তখন এটি বিএলএএস কল করে; পারফরম্যান্স পেনাল্টিটি কার্যত শূন্য এবং উচ্চ পারফরম্যান্স পেতে আপনাকে কোনও ফোর্টরান, সি, বা সি ++ লিখতে হয়নি। পাইথনেও একই অবস্থা। আপনি যদি লাইব্রেরি ব্যবহার করতে পারেন (উদাহরণস্বরূপ, নম্পপি, সায়্পাই, পেটসকপিপি, ডলফিন ফেইনিসিএস, পাইক্ল্যাও), আপনি পাইথনে আপনার সমস্ত কোড লিখতে পারেন এবং ভাল পারফরম্যান্স পেতে পারেন (সম্ভবত 10-40% এর জরিমানা) কারণ সমস্ত গণনীয়ভাবে নিবিড় অংশগুলি দ্রুত সংকলিত ভাষা গ্রন্থাগারে কল হয়। যাইহোক, আপনি যদি খাঁটি পাইথনে সবকিছু লিখেন তবে পারফরম্যান্স পেনাল্টিটি 100-1000x এর ফ্যাক্টর হবে। সুতরাং আপনি যদি পাইথন ব্যবহার করতে চান এবং একটি কাস্টম অন্তর্ভুক্ত করতে চান, গণনামূলকভাবে নিবিড় রুটিন, আপনি সি, সি ++, বা ফোর্টরানের মতো সংকলিত ভাষায় সেই অংশটি লেখার চেয়ে ভাল হবে, তারপরে পাইথন ইন্টারফেসের সাহায্যে এটি মোড়ানো। এমন লাইব্রেরি রয়েছে যা এই প্রক্রিয়াটিকে সহজ করে দেয় (যেমন সিথন এবং এফ 2 পি), এবং আপনাকে সহায়তা করার জন্য টিউটোরিয়াল; এটি সাধারণত কঠোর নয়।
ব্যবহারের সুযোগ
পাইথন সামগ্রিকভাবে সাধারণ-উদ্দেশ্যমূলক ভাষা হিসাবে সামগ্রিকভাবে ব্যবহৃত হয়। ফোর্টরান মূলত সংখ্যা ও বৈজ্ঞানিক কম্পিউটিংয়ের মধ্যে সীমাবদ্ধ এবং মূলত সেই ডোমেনের ব্যবহারকারীদের জন্য সি এবং সি ++ এর সাথে প্রতিযোগিতা করে।
গণনা বিজ্ঞানে, পাইথন সাধারণত উল্লিখিত পারফরম্যান্সের শাস্তির কারণে সংকলিত ভাষার সাথে সরাসরি প্রতিযোগিতা করে না doesn't আপনি উচ্চতর উত্পাদনশীলতা চান এমন ক্ষেত্রে পাইথন ব্যবহার করবেন এবং পারফরম্যান্স একটি গৌণ বিবেচনা, যেমন সংখ্যার নিবিড় আলগোরিদিম, ডেটা প্রক্রিয়াকরণ এবং ভিজ্যুয়ালাইজেশনের ক্ষেত্রে। আপনার অ্যালগরিদম এবং অ্যাপ্লিকেশন ডিজাইনটি কী হওয়া উচিত সম্পর্কে আপনার ভাল ধারণা থাকলে আপনি ফোর্টরান (বা অন্য কোনও সংকলিত ভাষা) ব্যবহার করবেন, আপনি আপনার কোডটি লেখার এবং ডিবাগ করার জন্য আরও বেশি সময় ব্যয় করতে ইচ্ছুক, এবং অভিনয়টি সর্বজনীন। (উদাহরণস্বরূপ, পারফরম্যান্স আপনার সিমুলেশন প্রক্রিয়া একটি সীমাবদ্ধ পদক্ষেপ, বা এটি আপনার গবেষণায় একটি মূল বিতরণযোগ্য)) পাইথন এবং একটি সংকলিত ভাষা (সাধারণত সি বা সি ++, তবে ফোর্টরানও ব্যবহৃত হয়েছে) মিশ্রিত করা একটি সাধারণ কৌশল, এবং কোডের সর্বাধিক পারফরম্যান্স-সংবেদনশীল অংশগুলির জন্য সংকলিত ভাষা ব্যবহার করুন; উন্নয়নের ব্যয় অবশ্যই, এটি যে কোনও ভাষাতে একটি প্রোগ্রামের চেয়ে দুটি ভাষায় প্রোগ্রাম লিখতে এবং ডিবাগ করা শক্ত er
সমান্তরালতার ক্ষেত্রে, বর্তমান এমপিআই স্ট্যান্ডার্ড (এমপিআই -3) এর দেশীয় ফোরট্রান এবং সি বাইন্ডিং রয়েছে। এমপিআই -২ স্ট্যান্ডার্ডের দেশীয় সি ++ বাইন্ডিং ছিল, তবে এমপিআই -3 এটি দেয় না এবং আপনাকে সি বাইন্ডিং ব্যবহার করতে হবে। তৃতীয় পক্ষের এমপিআই বাইন্ডিংগুলি বিদ্যমান, যেমন এমপিআইপিপি। আমি এমপিআইপিপি ব্যবহার করেছি; এটি ভাল কাজ করে, এবং ব্যবহার করা সহজ। বৃহত আকারের সমান্তরালতার জন্য (কয়েক হাজার কোর) আপনি সম্ভবত একটি সংকলিত ভাষা ব্যবহার করতে চাইবেন কারণ পাইথন মডিউলগুলি গতিশীলভাবে লোড করার মতো জিনিসগুলি যদি আপনি কোনও নির্লজ্জ উপায়ে করেন তবে এটি স্কোলে পাছায় কামড় দেবে। পাইক্লা বিকাশকারীরা যেমনটি দেখিয়েছেন, সেই বাধাটি পেরিয়ে যাওয়ার উপায় রয়েছে তবে এটি এড়ানো সহজ।
ব্যক্তিগত মতামত
ফোর্টরান 90/95-এ আমার প্রায় এক দশকের অভিজ্ঞতা আছে এবং আমি ফোর্টরান 2003 এও প্রোগ্রাম করেছি। পাইথনে আমার প্রায় পাঁচ বছরের অভিজ্ঞতা প্রোগ্রামিং রয়েছে। আমি ফোর্টরান ব্যবহারের চেয়ে পাইথনকে অনেক বেশি ব্যবহার করি কারণ সত্যই, আমি পাইথনে আরও কাজ করি। আমার বেশিরভাগ কাজটি করার দরকার পড়ার জন্য বড় সুপারকম্পিউটিং সংস্থাগুলির প্রয়োজন হয় না এবং অন্য ভাষায় সাধারণত পুনরায় বিকাশের পক্ষে মূল্য হয় না, তাই পাইথন ওডিই এবং পিডিইগুলি সমাধান করার জন্য ঠিক আছে is যদি আমার একটি সংকলিত ভাষা ব্যবহার করতে হয়, আমি সেই ক্রমে সি, সি ++ বা ফোর্টরান ব্যবহার করব।
ফোর্টরান কোড আমি দেখেছি বেশিরভাগই কুৎসিত হয়েছে, মূলত কারণ গণনা বিজ্ঞান সম্প্রদায় বেশিরভাগ গত 30 বছরে সফ্টওয়্যার ইঞ্জিনিয়ারদের দ্বারা আবিষ্কৃত সেরা পদ্ধতির সম্পর্কে অবগত বা বিরুদ্ধ বলে মনে হয়। বুদ্ধিমানভাবে: ফোর্টরানে কোনও ভাল ইউনিট পরীক্ষার কাঠামো নেই। (নাসার দ্বারা আমি সবচেয়ে ভাল যেটি এসেছি তা হ'ল ফুনিট, এটি আর রক্ষণাবেক্ষণ করা হয় না)) কয়েকটি ভাল পাইথন ইউনিট টেস্টিং ফ্রেমওয়ার্ক, ভাল পাইথন ডকুমেন্টেশন জেনারেটর এবং সাধারণত ভাল প্রোগ্রামিং অনুশীলনের আরও অনেক ভাল উদাহরণ রয়েছে।