আমার গণনা বিজ্ঞান পিএইচডি প্রোগ্রামে, আমরা সি ++ এবং ফোর্টরানে প্রায় একচেটিয়াভাবে কাজ করছি। দেখে মনে হয় কিছু অধ্যাপকরা একে অপরের চেয়ে বেশি পছন্দ করেন। আমি ভাবছি যে কোনটি 'উত্তম' বা যদি একটি নির্দিষ্ট পরিস্থিতিতে অন্যটির থেকে ভাল হয়।
আমার গণনা বিজ্ঞান পিএইচডি প্রোগ্রামে, আমরা সি ++ এবং ফোর্টরানে প্রায় একচেটিয়াভাবে কাজ করছি। দেখে মনে হয় কিছু অধ্যাপকরা একে অপরের চেয়ে বেশি পছন্দ করেন। আমি ভাবছি যে কোনটি 'উত্তম' বা যদি একটি নির্দিষ্ট পরিস্থিতিতে অন্যটির থেকে ভাল হয়।
উত্তর:
প্রায়শই, পছন্দটি নির্ভর করে (1) আপনি যে সমস্যাটি সমাধান করার চেষ্টা করছেন, (2) আপনার কাছে দক্ষতা এবং (3) আপনি যাদের সাথে কাজ করেন (এটি যদি একক প্রকল্প না হয়)। আমি এই মুহুর্তের জন্য (3) একপাশে ছেড়ে যাব কারণ এটি প্রত্যেকের স্বতন্ত্র পরিস্থিতির উপর নির্ভর করে।
সমস্যা নির্ভরতা: ফোরট্রান অ্যারে প্রসেসিংয়ে অতিক্রম করে। যদি আপনার সমস্যাটি সাধারণ ডেটা স্ট্রাকচারের ক্ষেত্রে এবং নির্দিষ্ট অ্যারেগুলিতে বর্ণনা করা যায় তবে ফোর্টরান ভালভাবে মানিয়ে গেছে। ফোর্টরান প্রোগ্রামাররা অ-স্পষ্টত ক্ষেত্রে (যেমন গ্রাফ উপস্থাপনের জন্য) এমনকি অ্যারে ব্যবহার করে। জটিল এবং উচ্চ গতিশীল ডেটা স্ট্রাকচারের জন্য সি ++ আরও উপযুক্ত।
দক্ষতা নির্ভরতা: ভাল ফোর্টরান প্রোগ্রাম লেখার চেয়ে ভাল সি ++ প্রোগ্রাম লিখতে অনেক বেশি প্রোগ্রামিং অভিজ্ঞতা লাগে। আপনি যদি সামান্য প্রোগ্রামিংয়ের অভিজ্ঞতা দিয়ে শুরু করেন এবং আপনার কাজের সেই দিকটি শিখতে কেবলমাত্র এতটা সময় থাকে তবে আপনি সম্ভবত সি ++ শেখার চেয়ে ফোর্টরান ইনভেস্টমেন্ট লার্নিংয়ে আরও ভাল রিটার্ন পাবেন। অবশ্যই ধরে নিচ্ছি যে আপনার সমস্যাটি ফরট্রানের সাথে উপযুক্ত।
তবে প্রোগ্রামিংয়ের আরও অনেক কিছুই রয়েছে কেবল ফোর্টরান এবং সি ++ এর চেয়ে। আমি কম্পিউটেশনাল সায়েন্সে যে কোনও ব্যক্তিকে পাইথনের মতো গতিশীল উচ্চ-স্তরের ভাষা দিয়ে শুরু করার পরামর্শ দেব recommend সর্বদা মনে রাখবেন যে আপনার সময় সিপিইউ সময়ের চেয়ে মূল্যবান!
আমি মনে করি যে সি ++ এবং ফোর্টরান উভয়ই যথেষ্ট ভাল এবং ভালভাবে কাজ করে।
তবে আমি মনে করি যে ফোরট্রান সংখ্যাসূচক বৈজ্ঞানিক কম্পিউটিংয়ের জন্য, অ্যারেজি ব্যবহার করে প্রকাশ করা যেতে পারে এবং অন্যান্য পরিশীলিত ডেটা স্ট্রাকচারের প্রয়োজন হয় না, সেই ক্ষেত্রে সীমাবদ্ধ পার্থক্য / উপাদান, পিডিই সলভার, বৈদ্যুতিন কাঠামোর গণনার জন্য আরও ভাল। ফোর্টরান একটি ডোমেন নির্দিষ্ট ভাষা। বিশেষত আমি মনে করি যে বিজ্ঞানীর দ্বারা (অগত্যা কম্পিউটার বিজ্ঞানের বিশেষজ্ঞের প্রয়োজন নেই), সি ++ এর চেয়ে ফোর্টরানে দ্রুত প্রোগ্রামগুলি লেখা আরও সহজ ।
সি ++ হ'ল একটি সাধারণ উদ্দেশ্য ভাষা, সুতরাং এটির মধ্যে যে কোনও একটি অ্যালগরিদম প্রকাশ করতে পারে, এবং এইচপিসি ক্ষেত্র থেকে সম্ভবত কিছু গ্রাফ, জাল জেনারেটর, প্রতীকী ম্যানিপুলেশন এবং অন্যান্য জাতীয় অ্যারে ব্যবহার করে প্রকাশ করা যায় না এমন আলগোরিদিমগুলির পক্ষে এটি সবচেয়ে ভাল।
সি ++ তে অ্যারে অ্যালগরিদমগুলি লেখাও সম্ভব, তবে আমার অভিজ্ঞতার জন্য এর জন্য আরও অনেক বেশি কম্পিউটার বিজ্ঞানের জ্ঞান এবং সাধারণভাবে আরও বেশি কাজ প্রয়োজন (অর্থাত্ অ্যারে ম্যানিপুলেশনের জন্য ক্লাস তৈরি করা বা পুনরায় ব্যবহার করা প্রয়োজন, এবং হাতের সাহায্যে মেমরি পরিচালনা পরিচালনা করতে হবে বা কিছু ব্যবহার করতে হবে) ত্রিলিনো থেকে তেচোসের মতো লাইব্রেরি)। অ-বিশেষজ্ঞরা বেশ ভাল ফোর্টরান প্রোগ্রাম লেখার ঝোঁক রাখেন, তবে ভয়াবহ সি ++ প্রোগ্রাম (আমার নিজের অভিজ্ঞতা থেকে কথা বলছেন)।
দাবি অস্বীকার: আমি ব্যক্তিগতভাবে ফোর্টরানকে অনেক পছন্দ করি এবং আমি এটি সংখ্যার কম্পিউটিংয়ের জন্য সি ++ এর চেয়ে বেশি পছন্দ করি। আমি দৈনিক সি ++ এ 2 বছরের বেশি প্রোগ্রামিং এবং আধুনিক ফোরট্রান প্রতিদিনের (সীমাবদ্ধ উপাদানগুলির ক্ষেত্রে) প্রায় এক বছরের প্রোগ্রামিং ব্যয় করেছি। আমি পাইথন এবং সাইথনকেও অনেক ব্যবহার করি।
আমি আমার দুটি সেন্ট দেরীতেও ফেলে দিচ্ছি, তবে আমি কেবল এই থ্রেডটি দেখেছি এবং আমি অনুভব করেছি যে উত্তরোত্তর জন্য, কয়েকটি পয়েন্ট রয়েছে যা মরিয়াভাবে হওয়া দরকার।
নিম্নলিখিতটিতে নোট করুন যে আমি সি ++ নয়, সি সম্পর্কে কথা বলব। কেন? ঠিক আছে, অন্যথায় এটি একটি পূর্ণাঙ্গ গতিময় টাইপযুক্ত অবজেক্ট-ভিত্তিক ভাষার সাথে ফোর্টরানের মতো স্থির হিসাবে কিছুটির সাথে তুলনা করার জন্য আপেল এবং কমলা। হ্যাঁ, সর্বশেষ ফোর্টরান মানকগুলির কয়েকটি আধুনিক বাস্তবায়ন কেবল এটির চেয়ে বেশি কিছু করতে পারে, তবে খুব কম লোকই প্রকৃতপক্ষে সেগুলি ব্যবহার করে এবং তাই যখন আমরা ফোর্টরানের কথা বলি, তখন আমরা সহজ, স্থিতিশীল এবং অপরিহার্য ভাষা ভাবি। সি যেখানে সেখানে রয়েছে তাই আমি নীচের জন্য সি ++ এর সাথে সি প্রতিস্থাপন করব।
প্রথমত, ফোর্টরান / সি এর আরও ভাল সংকলক নিয়ে যে কোনও আলোচনা হ'ল মোত। উত্সর্গীকৃত সি / ফোর্টরান সংকলকগুলি অতীতের একটি বিষয়। জিসিসি / গফর্ট্রান এবং আইসিসি / আইএফসি উভয়ই একই ব্যাক-এন্ডে আলাদা আলাদা ফ্রন্ট-এন্ড অর্থাৎ আপনার প্রোগ্রামটি সামনের দিকের দ্বারা একটি বিমূর্ত বর্ণনায় রূপান্তরিত হবে এবং তারপরে অনুকূলিত হবে এবং ব্যাক-এন্ড দ্বারা একত্রিত হবে। আপনি যদি লেখেন, শব্দার্থভাবে, ফরট্রান বা সি তে একই কোড, সংকলক, উভয় ক্ষেত্রেই একই সমাবেশ তৈরি করবে যা ঠিক তত দ্রুত চলবে।
এটি এখন আমার দ্বিতীয় বিষয়টিকে নিয়ে যায়: আমরা এখনও তফাত কেন দেখি? সমস্যাটি হ'ল বেশিরভাগ তুলনা ফোর্টরান প্রোগ্রামাররা সি বা তদ্বিপরীত কিছু চেষ্টা করে। কখনও খেয়াল করুন কীভাবে বেশিরভাগ লেখক বা কবিরা তাদের মাতৃভাষায় লিখতে পছন্দ করেন? আপনি কি এমন কোনও ভাষায় কবিতা লিখতে চান যেখানে আপনি পুরোপুরি আত্মবিশ্বাসী বা বাড়িতে নিজেকে অনুভব করেন না? অবশ্যই তা নয় ... আমি নিজে সি কে আমার "নেটিভ" প্রোগ্রামিং ভাষা হিসাবে বিবেচনা করি। তবে আমি তিন বছর কেবলমাত্র ফোর্টরান ব্যবহার করে এমন একটি দলে কাজ করেছিলাম, যেখানে আমি একটি নির্দিষ্ট মাত্রায় সাবলীলতা অর্জন করেছি। আমি যাইহোক, ফোর্টরানে আমি নিজে থেকে কিছু লিখব না যেহেতু আমি সি নিয়ে বেশি স্বাচ্ছন্দ্যবোধ করি এবং ফলস্বরূপ, ফলাফল কোডটি আরও ভাল হবে , আপনি যা নির্ধারণ করেন না কেন।
সুতরাং মূল পার্থক্যটি প্রোগ্রামার মধ্যে, ভাষা নয়। সুতরাং কোন পার্থক্য আছে? ভাল, বেশ না। এখানে কিছু উদাহরণ আছে:
সিমড: এটি এসএসই, এসএসই 3 বা আলটিভেক হোক না কেন, যদি আপনি সেগুলি ফোর্টরানে ব্যবহার করতে চান তবে আপনি আরও ভাল আশা করেন এবং প্রার্থনা করেন যে সংকলকটি ঠিক কী চান তা অনুমান করে এবং এটি করে so শুভকামনা। সিতে আপনার প্রতিটি আর্কিটেকচারের জন্য সাধারণত অভ্যন্তরীণ ফাংশন থাকে বা খুব সাম্প্রতিককালে, সিসিডি-তে সাধারণ সিমডি ভেক্টর প্রকার রয়েছে । বেশিরভাগ ফোর্টরান সংকলকগুলি কেবল লুপগুলি আনারল করার জন্য সিমড নির্দেশাবলী ব্যবহার করবে তবে আপনার যদি কার্নেল থাকে যা কোনও অ-স্পষ্ট উপায়ে ডেটার সংক্ষিপ্ত ভেক্টরগুলিতে কাজ করে, সংকলক সম্ভবত এটি দেখতে পাবে না।
বিভিন্ন হার্ডওয়্যার আর্কিটেকচার: পুরো সিইডিএ আর্কিটেকচার সি-তে কার্নেলের চারপাশে নির্মিত, হ্যাঁ, পোর্টল্যান্ড গ্রুপের এখন একটি সিইউডিএ-সক্ষম ফোররান সংকলক রয়েছে , তবে এটি বাণিজ্যিক, এবং সবচেয়ে গুরুত্বপূর্ণ, এটি এনভিআইডিএ থেকে নয়। ওপেনসিএল-তে একইরকম, যার জন্য আমি সবচেয়ে ভাল খুঁজে পেতে পারি একটি সাম্প্রতিক প্রকল্প যা কেবলমাত্র কয়েকটি প্রাথমিক কলকে সমর্থন করে।
সমান্তরাল প্রোগ্রামিং: হ্যাঁ, এমপিআই এবং ওপেনএমপি উভয়ই সি এবং ফোর্টরান উভয়ের সাথে ঠিক কাজ করে। তবে, আপনি যদি আপনার থ্রেডগুলির প্রকৃত নিয়ন্ত্রণ চান, অর্থাত্ যদি আপনার কাছে সম্পূর্ণ গতিময় ভাগ করা-মেমরি গণনা থাকে, আপনি ফরট্রানের সাথে শীতল হয়ে যাবেন। সিতে আপনার কাছে স্ট্যান্ডার্ড পাইথ্রেড রয়েছে যা উষ্ণ এবং অস্পষ্ট নয়, তবুও আপনাকে ঝড়ের মধ্যে দিয়ে যাবে। সাধারণভাবে, বেশিরভাগ গণনা যা অপারেটিং সিস্টেমে অ্যাক্সেসের উপর নির্ভর করে, যেমন থ্রেড, প্রক্রিয়া, ফাইল সিস্টেম ইত্যাদি ... সি এর সাথে আরও ভাল পরিবেশন করা হয় ওহ, এবং ফোর্টরানের সাথে নিজের নেটওয়ার্কিং করার চেষ্টা করবেন না।
ব্যবহারের সহজতা: ফোর্টরান সি-এর চেয়ে মতলবের কাছাকাছি। একবার আপনি সমস্ত বিভিন্ন কীওয়ার্ড এবং ভেরিয়েবলগুলি কীভাবে ঘোষণা করবেন তা অর্জন করার পরে, বাকী কোডটি মাতলাবের মতো দেখায়, এটি সীমিত প্রোগ্রামিংয়ের অভিজ্ঞতার সাথে ব্যবহারকারীদের আরও অ্যাক্সেসযোগ্য করে তোলে।
আন্তঃঅযুক্তিযোগ্যতা: আপনি যখন সিতে একটি কাঠামো তৈরি করেন, তখন প্রকৃত তথ্যের বিন্যাসটি সোজা-এগিয়ে এবং নির্ধারক হয়। ফোর্টরানে, আপনি যদি পয়েন্টার অ্যারে বা কাঠামোগত ডেটা ব্যবহার করেন তবে ডেটার প্রকৃত লেআউটটি দৃ strongly়ভাবে সংকলক-নির্ভর, সরাসরি-ফরোয়ার্ড নয় এবং সাধারণত সম্পূর্ণ অনির্ধারিত। আপনি ফোর্টরান থেকে সি কল করতে পারেন এবং তদ্বিপরীতভাবে, তবে ভাবতে শুরু করবেন না এটি স্ট্যাটিক অ্যারে ছাড়া অন্য কোনওটি এবং পিছনে আরও কিছু পাস করা সহজ হতে পারে।
এটি সমস্ত কিছুটা মজাদার, নিম্ন স্তরের স্টাফ তবে এটি উচ্চ-পারফরম্যান্স কম্পিউটিং যা আমরা বলছি, তাই না? যদি আপনি অন্তর্নিহিত হার্ডওয়্যার দৃষ্টান্তগুলি কীভাবে সর্বোত্তমভাবে কাজে লাগাতে আগ্রহী না হন, যেমন বাস্তবায়ন এবং / বা ভাগ করা / বিতরণকৃত মেমরি, থ্রেড, সিমডি ভেক্টরাইজেশন, সিমিটি ব্যবহার করে জিপিইউ এবং এই জাতীয় ব্যবহারের জন্য সেরা এলগোরিদিমগুলি বিকাশ করে তবে আপনি শুধু একটি কম্পিউটারে গণিত করছেন।
এটি আমার প্রবৃত্তির চেয়ে আরও দীর্ঘতর হয়ে গেছে, সুতরাং এখানে একটি সংক্ষিপ্তসার দেওয়া হয়েছে - হোমের বার্তাগুলি সাজানোর এক সেট:
বৈজ্ঞানিক সফ্টওয়্যার সম্পর্কে আমার 15 বছরের চিন্তাভাবনা থেকে: যদি আপনার কোডটি ফোর্টরানে লেখার কারণে 25% দ্রুত চালিত হয় তবে এটি লিখতে আপনার 4 গুণ বেশি সময় লাগে (কোনও এসটিএল নেই, জটিল ডেটা কাঠামো বাস্তবায়নে অসুবিধা নেই), তবে ফোর্টরান কেবলমাত্র যদি আপনি আপনার দিনের গুরুত্বপূর্ণ অংশটিকে ঘূর্ণায়মান থাম্বগুলিতে ব্যয় করেন এবং আপনার গণনা শেষ হওয়ার জন্য অপেক্ষা করেন তবেই জয়ী হয়। প্রদত্ত যে আমাদের প্রায় সকলের জন্যই আমাদের মূল্যবান জিনিসটি আমাদের নিজস্ব সময়, উপসংহারটি হ'ল: এমন ভাষাটি ব্যবহার করুন যা আপনাকে আপনার কোডটি সবচেয়ে দ্রুত বিকাশ করতে, ডিবাগ করতে এবং পরীক্ষার অনুমতি দেয়, কারণ এড়িয়ে যাবেন যে এটি সম্ভবত সম্ভবের চেয়ে ধীর হতে পারে আপনি এটি ফোর্টরনে লিখেছিলেন।
আমার দৃষ্টিভঙ্গিটি হ'ল কমপুটেশনাল কার্নেলগুলি বাদ দিয়ে সমস্ত কিছুর জন্য সি ++ ব্যবহার করা হয়েছে যা সাধারণত সমাবেশে সবচেয়ে ভাল লেখা হয়; এটি আপনাকে theতিহ্যবাহী এইচপিসি পদ্ধতির সমস্ত কার্য সম্পাদন ক্রয় করে তবে আপনাকে ইন্টারফেসটি সহজ করার অনুমতি দেয়, উদাহরণস্বরূপ, এসজিইএমএম / ডিজিইএমএম / সিজিইএমএম / জেডজিইএমের মতো কম্পিউটারের কার্নেলগুলি একক রুটিনে লোড করে, জেম বলুন mm স্পষ্টতই অ্যাবস্ট্রাকশন স্তরটি কাঁচা পয়েন্টার এড়িয়ে এবং অস্বচ্ছ ক্লাসে স্যুইচ করে অনেক বেশি বাড়ানো যেতে পারে, তবে এটি একটি দুর্দান্ত প্রথম পদক্ষেপ।
সংকলনের সময়টিতে অবিচ্ছিন্নভাবে বৃদ্ধি পেতে আমি সি ++ এর সবচেয়ে বড় অবক্ষয় খুঁজে পেয়েছি তবে আমার অভিজ্ঞতা অনুসারে উন্নয়নের সময় সাশ্রয় করা তার চেয়ে বেশি পরিমাণে হয়েছে। আরেকটি খারাপ দিক হ'ল বিক্রেতা সি ++ সংকলক বিক্রেতার সি এবং ফোর্টরান সংকলকগুলির চেয়ে বেশি বাগ পান more গত এক বছরে, আমি মনে করি আমি সি ++ সংকলকগুলিতে প্রায় দশটি বাগে চলে এসেছি।
এই সমস্ত বলেছে বলে আমি মনে করি যে নিম্ন-স্তরের ভাষাগুলিতে (এবং ফোর্টরান) রচিত বৈজ্ঞানিক প্যাকেজগুলির পূর্বাবস্থা হ'ল পরিশীলিত ডেটা স্ট্রাকচারের জন্য সুবিধাজনক ইন্টারফেস প্রকাশ করতে অনীহা: বেশিরভাগ লোক ফোর্টরান বিএলএএস ইন্টারফেসে সন্তুষ্ট, কারণ এটি কেবল প্রয়োজন ম্যাট্রিকগুলি বর্ণনা করার জন্য পয়েন্টার এবং শীর্ষস্থানীয় মাত্রা, তবে খুব কম লোকই যুক্তিযুক্ত হতে পারে যে স্বাভাবিক 40-পূর্ণসংখ্যার ফোর্টরান স্পর্শ-ডাইরেক্ট সলভার ইন্টারফেসটি সুবিধাজনক (সিএফ। ইউএইচএম, সুপারএলইউ, পিইটিএসসি এবং ট্রিলিনোস) এর নিকটবর্তী কিছু।
সংক্ষেপে, আমি নিম্ন-স্তরের গণনীয় কার্নেলগুলির জন্য সমাবেশ ব্যবহার করার পক্ষে যুক্তি দিচ্ছি, তবে অন্য সমস্ত কিছুর জন্য উচ্চ স্তরের ভাষা বিশেষত অ-তুচ্ছ ডেটা কাঠামোয় কাজ করার সময়।
নোট করুন যে এই পোস্টের ফলে কার্নেল এর সি এবং ফোর্টরানের পারফরম্যান্সের এই তুলনার ফলাফল হয়েছে ।
যেহেতু আমি এখানে নতুন, আমি পুরানো প্রশ্নগুলির মধ্যে চেয়েছিলাম এবং এটি পেয়েছি found আশা করি পুরানো উত্তর দেওয়া নিষিদ্ধ নয়!
যেহেতু অন্য কেউ এটি উল্লেখ করেনি, তাই আমি অনুভব করি। ফোর্টরান 2003 প্রায়শই সম্পূর্ণ সংস্থাগুলি (ইন্টেল, আইবিএম, ক্রে, এনএজি, পিসিজি) এমনকি জিসিসি (শীঘ্রই হতে যাওয়া) নতুন প্রকাশের 4.7 সহ প্রায় সম্পূর্ণরূপে সমর্থিত । ফোর্টরান 2003 (এবং ২০০৮) সি ++ এর চেয়ে কিছুটা বেশি ভার্বোস হলেও, একটি অবজেক্ট ওরিয়েন্টেড ভাষা। ফোরট্রান সম্পর্কে আমি যে জিনিসগুলি সুন্দর বলে মনে করি তার মধ্যে একটি বিষয়টি হ'ল মানক কমিটির বৈজ্ঞানিক কম্পিউটিংটিকে এটি প্রাথমিক শ্রোতা হিসাবে দেখেন (আমি এটি ডেমিয়ান রাউসনকে ধন্যবাদ জানিয়েছি যা অন্যদিন এটি আমার দিকে নির্দেশ করেছেন)।
আমি এগুলি সবই এনেছি যাতে সি ++ প্রোগ্রামাররা ফোর্টরান প্রোগ্রামার হয়ে যায় না, তবে ফোর্টরান লোকেরা জানতে পারে যে ফোর্টরান 90/95-তে সি ++ বা অনুকরণকারী অবজেক্ট ভিত্তিক ধারণাগুলি স্যুইচ করা ছাড়াও তাদের আরও বিকল্প রয়েছে।
একটি সাবধানতা আমি যুক্ত করব যে সংকলকগুলিতে প্রয়োগ করা হয়েছে তার রক্তপাতের প্রান্তে থাকার জন্য একটি ব্যয় আছে। আপনি যদি এখনই ফোর্টরান 2003 এ কোনও বড় প্রকল্প হাতে নিয়েছেন তবে এখনই আপনি বাগের পিছনে হোঁচট খেয়ে যাবেন এবং ক্রমাগত আপনার সংকলকটি আপডেট করতে হবে (বিশেষত আপনি যদি জিসিসি ব্যবহার করেন) তবে এটি গত কয়েকমাসে উল্লেখযোগ্যভাবে উন্নত হয়েছে!
সি ++ এর সাথে সমস্যাটি হ'ল আপনার পারফরম্যান্স নষ্ট করার অসংখ্য সম্ভাবনা রয়েছে, উদাহরণস্বরূপ, এসটিএল, ব্যতিক্রম, ক্লাস (ভার্চুয়াল ওভারহেড প্লাস প্রান্তিককরণ সমস্যা), অপারেটর ওভারলোডিং (রিডান্ট্যান্ট নতুন / মুছে ফেলা) বা টেমপ্লেটগুলি (কখনও শেষ না হওয়া সংকলন এবং ক্রিপ্টিক ত্রুটিগুলি) ব্যবহার করে সৌম্য মনে হয়, তবে আপনি এইভাবে ঘন্টা নষ্ট করতে পারেন)।
তবে, আপনি আরও সাধারণ গ্রন্থাগারগুলিতে আরও ভাল অ্যাক্সেস অর্জন করতে পারেন এবং সম্ভবত আপনার কোডের গ্রেটার দৃশ্যমানতা (যদিও এটি ক্ষেত্রের উপর দৃ strongly়ভাবে নির্ভর করে এবং আপনার এখনও খাঁটি সি রয়েছে)। আর আপনি এখনও ফোর্টরানের নমনীয়তার অভাবকে এর কোডটি আর, লুশ, মতলব / সায়্লাব বা এমনকি পাইথন, রুবি বা লুয়ার মতো স্ক্রিপ্ট ভাষায় মোড়ক করে দিতে পারেন।
তিনটি তথ্য:
সি-তে এফ 77 স্টাইলের এন-ডাইমেনশনাল অ্যারে: সিএনডি (কোনও নির্লজ্জ প্লাগ, স্বীকারোক্তি) ব্যবহার করে কোনও সমস্যা নেই
F90- র মডিউল সিস্টেমটি পরিবেশ তৈরির জন্য খারাপভাবে নকশাকৃত এবং প্রতিকূল। (কোনও মডিউলের নামটির ফাইলের নামের সাথে মেলে না!)
একটি ব্যক্তিগত ধারণা:
transfer()
, আমরা এখানে এসেছি)ফরট্রান অ্যারে / ম্যাট্রিক্স গণনার জন্য অনুকূলিত এবং কোনও ধরণের পাঠ্য পার্সিংয়ের জন্য কাজ করার জন্য একটি সম্পূর্ণ ব্যথা। সি এবং সি ++ ফোরট্রানের সাথে সংখ্যার কম্পিউটিংয়ে মিলবে না (এটি নিকটবর্তী), তবে আমি পাঠ্য প্রক্রিয়াজাতকরণ এবং সি / সি ++ সহ ডেটা (যেমন কাস্টম ডেটা স্ট্রাকচার) সংগঠিত করতে অনেক সহজ মনে করি।
অন্যরা যেমন উল্লেখ করেছে, গতিময় ব্যাখ্যাযোগ্য ভাষা (পাইথন এট আল) গণনা করবেন না। তারা সামনের দিকে ফোরটানের মুখ গলানোর গতি প্রস্তাব না দিতে পারে তবে বাস্তবায়নের সমস্ত বিবরণের চেয়ে তারা আপনাকে আপনার গণনা সমস্যা সমাধানে আরও মনোনিবেশ করার অনুমতি দেয়। প্রায়শই আপনি পাইথনে একটি সমাধান প্রয়োগ করতে পারেন, এবং যদি পারফরম্যান্সটি অগ্রহণযোগ্য হয় তবে কিছু প্রোফাইলিং করুন, সমস্যার ক্ষেত্রগুলি চিহ্নিত করুন এবং হয় কোডটি সিথন ব্যবহার করে সেই কোডটি অনুকূলিত করুন বা সংকলিত ভাষায় পুরো প্রোগ্রামটি পুনরায় বাস্তবায়ন করতে পারেন। আপনার সমস্যা সমাধানের যুক্তিগুলি শেষ হয়ে গেলে, বাকিগুলি কেবল বাস্তবায়ন হয় এবং কম্পিউটিং ফান্ডামেন্টালগুলির ভাল বোঝার সাথে, বিভিন্ন ধরণের প্রোগ্রামিং ভাষায় প্রতিনিধিত্ব করার জন্য সোজা হওয়া উচিত।
আমি বর্তমানে জাতীয় ল্যাবগুলির একটিতে কাজ করছি। আমার চারপাশের বেশিরভাগ লোকেরা যান্ত্রিক প্রকৌশলী। এইচপিসি গ্রুপের কিছু লোকের সাথে চ্যাট করা, তারা বেশিরভাগ লিনাক্স এবং বেশিরভাগ সি ++ করছে। আমি বর্তমানে যে গোষ্ঠীতে রয়েছি সেগুলি বেশিরভাগ ডেস্কটপ অ্যাপ্লিকেশনগুলি করে এবং আমরা উইন্ডোজ এবং অবতীর্ণ ক্রমে ব্যবহার করি: সি #, ফরট্রান, পাইথন, ভিবিএ এবং ভিবি (6, নেট নয়)। আমরা যে সিমুলেশন ইঞ্জিনগুলি ব্যবহার করি সেগুলি ফোরট্রানের অন্যান্য জাতীয় ল্যাবগুলিতে লেখা ছিল।
একটি পুরানো থ্রেড খননের জন্য দুঃখিত তবে এটি মনে হয় যে 2015 সালেও ফোর্টরান প্রচুর ব্যবহৃত হচ্ছে।
আমি কেবল এই (বিকল্প লিঙ্ক ) তালিকাটি পেরিয়ে এসেছি যা মূলত ডিওই'র ওসিএলএফ সুবিধা দ্বারা অনুমোদিত 300 টি পেটেলএফএলপিএস সামিট মেশিনে চালুর জন্য অনুমোদিত 13 কোডগুলির একটি তালিকা যা 2018 সালে গবেষকদের জন্য উপলব্ধ করা হবে I আমি ব্যবহৃত মূল ভাষাটি অনুসন্ধান করার চেষ্টা করেছি কোডটির জন্য (দ্রুত গুগল অনুসন্ধানের ভিত্তিতে) এবং আমি যা পেয়েছি তা এখানে:
XGC Fortran
SPECFEM Fortran
ACME Fortran (Bunch of climate codes)
DIRAC Fortran (Mostly)
FLASH Fortran
GTC Fortran
HACC C/C++
LS-DALTON Fortran (some C)
NAMD C/C++
NUCCOR Fortran
NWCHEM Fortran
QMCPACK C++
RAPTOR Fortran
সুতরাং 13 টি কোডের মধ্যে কমপক্ষে 10 টি (আমার দ্রুত অনুসন্ধানের ভিত্তিতে) ফোর্ত্রানে লেখা আছে বলে মনে হচ্ছে। 50 বছরের পুরানো ভাষার জন্য খারাপ নয়।
দ্রষ্টব্য: আমি ভালভাবে জানি যে ভাষার তুলনাগুলি অকেজো, তবে জনগণের (বিশেষত সি ++ ব্যবহারকারী) সংখ্যাটি দেওয়া খারাপ মুখের ফোর্টরান, আমি ভেবেছিলাম এটির উল্লেখ করা সার্থক হতে পারে।
জ্যাক পি। আমি যা বলার চেষ্টা করছি বলে মনে হচ্ছে তা হল আপনার মিশ্রণ হওয়া উচিত। সফ্টওয়্যার একটি ভাল টুকরা সাবধানে স্তরযুক্ত। বিভিন্ন স্তর বিভিন্ন ভাষায় আরও স্বাভাবিকভাবে বা দক্ষতার সাথে ম্যাপ করতে পারে। আপনার প্রতিটি স্তরের জন্য সর্বাধিক উপযুক্ত ভাষা চয়ন করা উচিত। আপনার বুঝতে হবে যে কীভাবে ভাষাগুলি হস্তক্ষেপ করতে পারে, যা কোন স্তরের জন্য আপনি কোন ভাষা চয়ন করেন তা প্রভাবিত করতে পারে।
একটি আরও ভাল প্রশ্ন হ'ল স্তরযুক্ত সফ্টওয়্যারটি কীভাবে ডিজাইন করা যায় সে সম্পর্কে শিখার জন্য উপযুক্তভাবে ডিজাইন করা সফ্টওয়্যারগুলির উদাহরণগুলি কী রয়েছে studying