এইচপিসির জন্য সি ++ বনাম ফোর্টরান


56

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


12
আমার মতে একচেটিয়াভাবে ব্যবহারের চেয়ে উচ্চ এবং নিম্ন স্তরের ভাষার মিশ্রণ ভাল। যেমন আমি পাইথন + সি ++ ব্যবহার করি।
ফাহিম মিঠা

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

উত্তর:


61

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

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

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

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


17
"সর্বদা মনে রাখবেন যে আপনার সময় সিপিইউ সময়ের চেয়ে মূল্যবান!" এইচপিসিতে কর্মরত কেউ হিসাবে আমি সেই অংশের সাথে একমত নই; অন্য সব কিছু স্পট করে আছে।
লেবি মরিসন

19
"সর্বদা মনে রাখবেন যে আপনার সময় সিপিইউ সময়ের চেয়ে মূল্যবান!" যে কেউ বৈজ্ঞানিক গবেষণায় কাজ করে, আমি সেই অংশটির সাথে আরও একমত হতে পারি না।
decvalts

3
"সর্বদা মনে রাখবেন যে আপনার সময় সিপিইউ সময়ের চেয়ে মূল্যবান!" - আমি আমার 2 সেন্ট নিক্ষেপ করতে চাই - কয়েকশো নোড ব্যবহার করে, বেশ কয়েক সপ্তাহ ধরে কিছু প্রোগ্রাম চালানোর জন্য 10+ কোর সহ প্রত্যেককে একটি অতি মূল্যবান সংস্থান হিসাবে একটি ভয়ঙ্কর বর্জ্য হিসাবে গণ্য করা যেতে পারে, যদি আরও কয়েক সপ্তাহ ধরে একটি উত্পাদন করতে পারে কোড যা কয়েক দিনের মধ্যেই চলে। এইচপিসি ক্লাস্টারগুলি একটি বিরল এবং ব্যয়বহুল সাধারণ সম্পদ।
দানি_ল

"সর্বদা মনে রাখবেন যে আপনার সময় সিপিইউ সময়ের চেয়ে মূল্যবান!", কোড এক সপ্তাহের জন্য তবে এক মাস চালান, এটি বেশ স্বাভাবিক স্যার!
সম্মুখস্থ

6
"সর্বদা মনে রাখবেন যে আপনার সময়টি সিপিইউ সময়ের চেয়ে মূল্যবান!", আমি বরং এক মাসের জন্য কোড করব এবং এক সপ্তাহে চালাব! - কোডটি লেখার পরে আরও কিছু করা যায় এবং অন্যরা আপনার লেখা কোডটি আরও দরকারী বলে খুঁজে পায়।
চার্লস

37

আমি মনে করি যে সি ++ এবং ফোর্টরান উভয়ই যথেষ্ট ভাল এবং ভালভাবে কাজ করে।

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

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

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

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


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

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

6
বিল, আপনি কি আধুনিক ফোর্টরান (90 এবং পরবর্তী সংযোজনগুলি) ব্যবহার করেছেন? এটি অত্যন্ত গুরুত্বপূর্ণ (এটি সম্পর্কে আমার উত্তরে আরও স্পষ্ট হওয়া উচিত ছিল)। অবশ্যই, "ফরট্রানের 20.000 লাইন", বা f77 সাধারণত ভালভাবে লেখা সি ++ এর চেয়ে ভাল নয়।
Ondřej Čertík

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

6
@ ওল্ফগ্যাংবাঙ্গার্থ, উদাহরণস্বরূপ ফামাল ( math.nist.gov/phaml ) দেখুন যা আপনি উল্লেখ করেছেন এমন অনেক কিছুই ফোর্টরান বাস্তবায়নের জন্য।
řণদেজ íertík

31

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

নিম্নলিখিতটিতে নোট করুন যে আমি সি ++ নয়, সি সম্পর্কে কথা বলব। কেন? ঠিক আছে, অন্যথায় এটি একটি পূর্ণাঙ্গ গতিময় টাইপযুক্ত অবজেক্ট-ভিত্তিক ভাষার সাথে ফোর্টরানের মতো স্থির হিসাবে কিছুটির সাথে তুলনা করার জন্য আপেল এবং কমলা। হ্যাঁ, সর্বশেষ ফোর্টরান মানকগুলির কয়েকটি আধুনিক বাস্তবায়ন কেবল এটির চেয়ে বেশি কিছু করতে পারে, তবে খুব কম লোকই প্রকৃতপক্ষে সেগুলি ব্যবহার করে এবং তাই যখন আমরা ফোর্টরানের কথা বলি, তখন আমরা সহজ, স্থিতিশীল এবং অপরিহার্য ভাষা ভাবি। সি যেখানে সেখানে রয়েছে তাই আমি নীচের জন্য সি ++ এর সাথে সি প্রতিস্থাপন করব।

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

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

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

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

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

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

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

  • আন্তঃঅযুক্তিযোগ্যতা: আপনি যখন সিতে একটি কাঠামো তৈরি করেন, তখন প্রকৃত তথ্যের বিন্যাসটি সোজা-এগিয়ে এবং নির্ধারক হয়। ফোর্টরানে, আপনি যদি পয়েন্টার অ্যারে বা কাঠামোগত ডেটা ব্যবহার করেন তবে ডেটার প্রকৃত লেআউটটি দৃ strongly়ভাবে সংকলক-নির্ভর, সরাসরি-ফরোয়ার্ড নয় এবং সাধারণত সম্পূর্ণ অনির্ধারিত। আপনি ফোর্টরান থেকে সি কল করতে পারেন এবং তদ্বিপরীতভাবে, তবে ভাবতে শুরু করবেন না এটি স্ট্যাটিক অ্যারে ছাড়া অন্য কোনওটি এবং পিছনে আরও কিছু পাস করা সহজ হতে পারে।

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

এটি আমার প্রবৃত্তির চেয়ে আরও দীর্ঘতর হয়ে গেছে, সুতরাং এখানে একটি সংক্ষিপ্তসার দেওয়া হয়েছে - হোমের বার্তাগুলি সাজানোর এক সেট:

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

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

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

1
নিশ্চিত হয়ে নিন যে আপনি সংকলকটির উপর নির্ভরশীল 99% পিক দক্ষতা অর্জন করতে যাচ্ছেন না, তবে আপনি সহজেই বেশ কাছাকাছি আসতে পারেন। এর বাইরে আপনাকে হয় অন্তর্নিবেশ ব্যবহার করতে হবে বা ইনলাইন এএসএম ব্যবহার করতে হবে। সামগ্রিক প্রোগ্রামার দক্ষতার জন্য আপনাকে কোথাও ছাড় দিতে হবে, এজন্য প্রোগ্রামিং ভাষা প্রথম স্থানে রয়েছে। আপনি যে পর্যায়ে প্রকৃতপক্ষে অভ্যন্তরীণ বা এএসএম (আমি কয়েকবার হয়েছি) এর বিশদ intoুকতে যথেষ্ট পাগল, ফোর্টরান কোনও ক্রাচ নয়। আপনি কীভাবে আপনার একত্রিত হ্যান্ড-অপ্টিমাইজড কোডটিতে লিঙ্ক করবেন তা জানতেন।
রিড.এচচসন

@ রেড.এচচসন: আচ্ছা, আমি যুক্তি দিয়েছিলাম যে সমান্তরাল এইচপিসি অ্যাপ্লিকেশনগুলির জন্য, আপনি খুব ভাল 99% শীর্ষ দক্ষতার নীচে শেষ করতে পারেন ... এবং জিসিসি ভেক্টর প্রকারগুলি আন্তঃব্যবস্থা ব্যবহার করে একটি অ-ইস্যু :)
পেড্রো

1
@ পেড্রো, উজ্জ্বল পোস্ট। একদম অসাধারণ. ধন্যবাদ পোস্ট করার জন্য অনেক. আকর্ষণীয় থ্রেডের মাধ্যমে এলোমেলোভাবে গুঞ্জন করার সময় এটি সন্ধান পেয়েছিল।
সুরতহাল

16

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


13

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

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

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

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

নোট করুন যে এই পোস্টের ফলে কার্নেল এর সি এবং ফোর্টরানের পারফরম্যান্সের এই তুলনারy:=αx+y ফলাফল হয়েছে ।


2
আপনি ছোট কার্নেলগুলি সঙ্কলনের উদ্দেশ্যে উপযুক্ত অপ্টিমাইজেশান সহ কোনও স্ট্যান্ডার্ড সি সংকলককে বিশ্বাস করবেন না কেন? কোড আকার এবং জটিলতার সেই স্তরে কোনও সংকলক এটি থেকে কী বের করতে পারে তার মধ্যে পার্থক্যটি অস্পষ্ট।
পিটার ব্রুন

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

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

@ জ্যাকপলসন: সংকলক যুক্তি এমন একটি বিষয় যা আমি ফোর্টরান সম্প্রদায়ের কাছ থেকে বেশ কিছুটা শুনি। দুর্ভাগ্যক্রমে, বেশিরভাগ সংকলক, যেমন জিসিসি বা আইফসি / আইসিসি, একই ব্যাক-এন্ডের জন্য বিভিন্ন ভাষার ফ্রন্ট-এন্ড ব্যবহার করে। অপ্টিমাইজেশন এবং কোড জেনারেশন করে এমন যন্ত্রপাতিগুলি অভিন্ন এবং সুতরাং ফলাফলগুলির মধ্যে পার্থক্য সম্ভবত অন্তর্নিহিত ভাষার সাথে প্রোগ্রামারের পরিচিতির পার্থক্যের কারণে ...
পেড্রো

1
প্রায়শই পুনরাবৃত্তি হওয়া, বিরল-যাচাই-বাছাই করা দাবির বিষয়ে কিছুটা দৃষ্টিভঙ্গি দেওয়ার জন্য যে ফোরট্রান সংখ্যাসূচক কার্নেলগুলির চেয়ে দ্রুততর: কিছুক্ষণ আগে আমরা লক্ষ্য করেছি যে ট্রিলিনোসের এপেট্রা প্যাকেজে স্পার্স ম্যাট্রিক্স-ভেক্টর গুণমানের তুলনায় 30% ধীর ছিল deal.II. পূর্বেরটি সরাসরি বাধা ফোর্ত্রন 77 তে লেখা ছিল, পরে 'সীমাবদ্ধ' ব্যবহার না করে সোজা ফরোয়ার্ড সি-এর পরে। উভয়ের কোডের প্রায় 10-15 লাইন ছিল। আজ, ট্রিলিনোস ডিল থেকে উত্তোলিত কোডের টুকরোটি ব্যবহার করে I আমি নিশ্চিত যে এফ 77 যেহেতু সি এর চেয়ে দ্রুত, সেখানে প্রচুর কেস পাওয়া যাবে point
ওল্ফগ্যাং ব্যাঙ্গার্থ

8

যেহেতু আমি এখানে নতুন, আমি পুরানো প্রশ্নগুলির মধ্যে চেয়েছিলাম এবং এটি পেয়েছি found আশা করি পুরানো উত্তর দেওয়া নিষিদ্ধ নয়!

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

আমি এগুলি সবই এনেছি যাতে সি ++ প্রোগ্রামাররা ফোর্টরান প্রোগ্রামার হয়ে যায় না, তবে ফোর্টরান লোকেরা জানতে পারে যে ফোর্টরান 90/95-তে সি ++ বা অনুকরণকারী অবজেক্ট ভিত্তিক ধারণাগুলি স্যুইচ করা ছাড়াও তাদের আরও বিকল্প রয়েছে।

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


7

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

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


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

2
আমি মনে করি এমবিকিউ এবং মার্টিনের দুটি বিষয়ই অন্যায় air হ্যাঁ, আপনি std :: list <ডাবল> ব্যবহার করে লিনিয়ার বীজগণিত উদ্দেশ্যে একটি সংখ্যক ভেক্টর বাস্তবায়নের চেষ্টা করলে পায়ে নিজেকে গুলি করার উপায় রয়েছে। তবে এটি একটি মূর্খ যুক্তি: কমপক্ষে সি ++ এর সাথে একটি লিঙ্কযুক্ত তালিকা শ্রেণি রয়েছে যা আপনি ব্যবহার করতে পারেন, যখন ফোর্টরান নেই। এটি বলার মতো "গাড়িগুলি এত দ্রুত গতিতে চালনা করে যে আপনি কোনও প্রাচীরের সাথে ধাক্কা খেতে পারেন এবং আহত হতে পারেন; পরিবর্তে আপনার ঘোড়া টানা গাড়ি ব্যবহার করা উচিত।" এটি একটি উচ্চ-স্তরের ভাষা ট্র্যাশ করা কেবল একটি নির্লিপ্ত ধারণা যা উচ্চ-স্তরের বৈশিষ্ট্যগুলির জন্য নিম্ন স্তরের স্টাফগুলিকে (যেমন সি ++) সমর্থন করে।
ওল্ফগ্যাং ব্যাঙ্গার্থ

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

1
আমি আপনার মতামতের প্রশংসা করি, তবে আমি বজায় রাখছি যে ফোর্টরান সি ++ এর মতো বিকশিত হয়নি :-)
ওল্ফগ্যাং ব্যানগারথ

7

তিনটি তথ্য:

  • সি-তে এফ 77 স্টাইলের এন-ডাইমেনশনাল অ্যারে: সিএনডি (কোনও নির্লজ্জ প্লাগ, স্বীকারোক্তি) ব্যবহার করে কোনও সমস্যা নেই

  • F90- র মডিউল সিস্টেমটি পরিবেশ তৈরির জন্য খারাপভাবে নকশাকৃত এবং প্রতিকূল। (কোনও মডিউলের নামটির ফাইলের নামের সাথে মেলে না!)

  • ফোর্টরান রিফ্যাক্টরিং ভালভাবে সমর্থন করে না। ফাংশনটির বাইরে কিছুটা কার্যকারিতা টানলে আপনার চারটি জায়গায় স্পর্শ করা দরকার: আসল কোড, পরিবর্তনশীল ঘোষণা, যুক্তি ঘোষণা এবং আর্গুমেন্ট তালিকা। সি স্পর্শ করার জন্য দুটি জায়গা দিয়ে যায়। এটি ডেটা ভালভাবে পরিচালনা করতে ব্যর্থতার প্রভাবকে সংশ্লেষ করে (নীচে বর্ণিত): যেহেতু ছোট-আকারের মডুলারিটি এত বেদনাদায়ক, তাই প্রায় সকলেই দৈত্যাকৃতির সাবরুটাইনগুলি লিখেন।

একটি ব্যক্তিগত ধারণা:

  • ফোর্টরান ডেটা পরিচালনা করার জন্য ভাল কাজ করে না। F77 বা F90 এ কোনও ব্যবহারকারী-অস্বচ্ছ ডেটা স্ট্রাকচারে কোনও পয়েন্টার ফিরিয়ে দেওয়ার চেষ্টা করুন। ( transfer(), আমরা এখানে এসেছি)

হাই অ্যান্ড্রি! সিএনডি আকর্ষণীয়, আমি এটি সম্পর্কে জানতাম না। আহ, আপনি এটি লিখেছিলেন। :) (f90 এছাড়াও স্লাইসিং, অ্যারেগুলির জন্য বরাদ্দযোগ্য এবং সর্বাধিক গুরুত্বপূর্ণ - গুণ, সংযোজন এবং এর জন্য অ্যারের সিনট্যাক্সকে সমর্থন করে)) আমি ফোর্টরানের সাথে সিএমকে ব্যবহার করি এবং এটি মডিউলগুলির সাথে দুর্দান্ত কাজ করে। "যুক্তি তালিকা" আসলে কি? আমি এগুলি ব্যবহার করি বলে আমি মনে করি না, তাই পরিবর্তন করার জন্য কেবল 3 টি স্থানের প্রয়োজন। সি-তে সাধারণত আপনার আসল কোড, প্যারামিটার এবং একটি শিরোনাম ফাইলটি সংশোধন করা দরকার, সুতরাং এটি 3 টি স্থান (অবশ্যই স্পষ্টত সি ++) in হ্যাঁ, স্থানান্তর () সুপার দুর্দান্ত নয় তবে সাধারণত অনুশীলনে আপনার এটির প্রয়োজন হয় না।
řেন্ডেজ এর্ত্তিক

3
রিফ্যাক্টরিং আধুনিক ফোর্টারান গ্রহনে ফোটরানের মতো যথাযথ আইডিইগুলির সাথে তুচ্ছ।

2
"একটি মডিউলের নামটির ফাইলের নামের সাথে মেলে না, যেমন" আপনার অবশ্যই মজা করা উচিত, একটি ফাইলে আপনার অনেকগুলি মডিউল থাকতে পারে। তাদের মধ্যে কয়েকটি কেবল কয়েক লাইন বিস্তৃত। আপনার যদি তাদের প্রত্যেকটির জন্য একটি ফাইল তৈরি করতে না হয় তবে এগুলি তৈরি করা অনেক সহজ।
ভ্লাদিমির এফ

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

5

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

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


সেটা ঠিক. পাঠ্য পার্সিংয়ের জন্য আমি পাইথনও ব্যবহার করি।
ওন্দেজ ইরটিক

এছাড়াও আপনি একটি কম্পাইল করা ভাষা যেমন সি ++ একটি পাইথন স্ক্রিপ্ট অংশ বাস্তবায়ন এবং এটা হুক করতে পারেন যেমন বুস্ট পাইথন, টানা ইত্যাদি।
ফাহিম মিঠা

4

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


4

একটি পুরানো থ্রেড খননের জন্য দুঃখিত তবে এটি মনে হয় যে 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 বছরের পুরানো ভাষার জন্য খারাপ নয়।

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


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

ফোর্টরানে কিছু ঘনত্বের ক্রিয়ামূলক তত্ত্বের কোডগুলিতে VASP এবং CASTEP অন্তর্ভুক্ত রয়েছে , যদিও @ জিফঅক্সবেরি উল্লেখ করেছেন যে নতুন প্রকল্পগুলি সম্ভবত সি ++ এর দিকে ঝুঁকছে ।
dr.blochwave

@ ব্লোচওয়েভ যেমন আপনি লিঙ্কটিতে পড়তে পারেন, প্রকল্পগুলি একটি নতুন মেশিনের জন্য রয়েছে (এক্সিলিটর ইত্যাদির সাথে) যা 2018 এ অনলাইনে হবে not সুতরাং এটি পছন্দ নয় যে তারা 25 বছরের কোড নেবে এবং এটি সংকলন করবে, ভালভাবে চালানোর আশায় ing কর্মক্ষমতা. আমি পুরোপুরি নিশ্চিত যে উপরের তালিকার কোডগুলির বড় অংশগুলি নতুন কোডের মতোই আবার লিখিত হয়েছে বা হয়েছে। বেশ কয়েকটি "নতুন" জলবায়ু কোডগুলি ফোর্টরানেও রয়েছে এবং বেশ কয়েকটি দেশের বহু সংস্থা এটি ব্যবহার করে।
stali

0

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

একটি আরও ভাল প্রশ্ন হ'ল স্তরযুক্ত সফ্টওয়্যারটি কীভাবে ডিজাইন করা যায় সে সম্পর্কে শিখার জন্য উপযুক্তভাবে ডিজাইন করা সফ্টওয়্যারগুলির উদাহরণগুলি কী রয়েছে studying

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