উচ্চ পারফরম্যান্স কম্পিউটিংয়ে সর্বাধিক ব্যবহৃত প্রোগ্রামিং ভাষা কী? এবং কেন? [বন্ধ]


25

আমি বিশ্বাস করি যে এইচপিসিতে প্রচুর ফোর্টরান ব্যবহার করা হয়েছে, তবে নিশ্চিত নন যে এটি কেবলমাত্র উত্তরাধিকারগত কারণে হয়েছে।

আধুনিক প্রোগ্রামিং ভাষার বৈশিষ্ট্য যেমন আবর্জনা সংগ্রহ বা রান-টাইম পলিমারফিজম এইচপিসির পক্ষে উপযুক্ত নয় কারণ গতির বিষয়গুলি তাই নিশ্চিত নয় যে সি # বা জাভা বা সি ++ কোথায় আসে।

কোন চিন্তা?


9
সি ++ এর কোনও আবর্জনা সংগ্রহকারী নেই এবং এটির জন্য আপনাকে রানটাইম পলিমারফিজম ব্যবহার করার প্রয়োজন নেই।
জেসন বেকার

@ জেসন আমার উদ্দেশ্য হ'ল সি ++ এর কোন বৈশিষ্ট্যগুলি এইচপিসির জন্য বাধ্যতামূলক মামলা করে তা নির্ধারণ করা।
Fanatic23

@ ফ্যান্যাটিক 23 - আমি বুঝতে পেরেছি। শুধু যে একটি নোট করতে চেয়েছিলেন। :-)
জেসন বাকের

1
@ ফ্যান্যাটিক শুভেচ্ছা আমি হ্যাঁ বলতে পারি, তবে আমার খুব বেশি কিছু নেই ... যদিও নেট / ফাংশনাল ভাষায় কিছু পারফরম্যান্স সংক্রান্ত বিষয়ে আমার লিঙ্কগুলির একটি গুচ্ছ রয়েছে। নির্দিষ্ট পারফরম্যান্সের সীমাবদ্ধতার উপর উপলব্ধি পেতে আপনি মানসিকভাবে ধারণাগুলি একসাথে টুকরো টুকরো করতে সক্ষম হতে পারেন: এমএসডিএন.মাইক্রোসফট /en-us/library/0xy59wtx.aspx স্ট্যাকওভারফ্লো. com / প্রশ্নগুলি / ২৯৯৯২২২/২ এমএসডিএন.মাইক্রোসফটকম / en -us / পত্রিকা / cc163329.aspx en.wikipedia.org/wiki/Just-in-time_compilation
রেই Miyasaka

1
আমি মনে করি, যদিও আপনার যদি সত্যিকারের ভাল প্রতিক্রিয়া সময় প্রয়োজন হয় তবে আপনি যা খুঁজছেন তা কিউএনএক্সের মতো একটি রিয়েল-টাইম ওএস: en.wikedia.org/wiki/QNX
রে মিয়াসাকা

উত্তর:


11

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

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

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

আপনি http://ateji.blogspot.com/2010/09/java-for-high-performance-computing.html এ রেফারেন্স পাবেন

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


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

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

31

আমার বছরের অভিজ্ঞতাগুলিতে, 5 বছর আগে পর্যন্ত, এটি সর্বদা ফোর্টরান এবং সি ছিল Which কোনটি নির্ভর করে ইঞ্জিনিয়ারিং থেকে আরও এসেছিল কিনা বা সিএস স্কুল স্কুল থেকে আরও এসেছিল কিনা (আমি জানি না কীভাবে এটি আরও ভালভাবে স্থাপন করা যায়) , ওকি? :-)

আমরা যা করছিলাম ফোর্টরান প্রায় একচেটিয়াভাবে ব্যবহৃত হয়েছিল।

আমি আজকাল যা পড়ছি সেখান থেকে স্ট্যান্ডার্ড F2003 / 08-এ নতুন আপডেটগুলি সহ এবং কো-অ্যারেগুলির প্রবর্তন সহ, এটি আবার গতি বাড়ছে বলে মনে হচ্ছে।

এছাড়াও, একটি, কিছুটা পক্ষপাতদুষ্ট নিবন্ধ না হলে - আদর্শ এইচপিসি প্রোগ্রামিং ভাষা


16

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

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

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


2
আমি সম্প্রতি একটি সামান্য পরীক্ষা করেছি, স্বাক্ষরযুক্ত স্বাক্ষরিত দীর্ঘ দীর্ঘ অ্যারে হিসাবে প্রতিনিধিত্ব করে 000৪,০০০ বিটের স্ট্রিংয়ের পপ গণনাটি খুঁজে পাই। আমি অনেক আকর্ষণীয় বুলিয়ান এবং প্যাকড পাটিগণিত সামগ্রী ব্যবহার করে ঠিক একই অ্যালগরিদম ব্যবহার করেছি। সি -৩-এ এটি দীর্ঘ প্রতি দীর্ঘ 10 ক্লক নিয়েছে, যেখানে ফোর্টরান ইন্টেল ফোর্টরান 10.1 এর সাথে ডিফল্ট অপ্টিমাইজেশান ছিল এটি 6.5! এবং প্রতিটি প্রোগ্রামার সি বিট টুইডলিংয়ের জন্য সেরা বলে মনে করে! ফোর্টরান ডিফাক্টো অনুমানগুলি আরও দক্ষ নিম্ন স্তরের নির্দেশ কোডিং নিরাপদে উত্পন্ন করার অনুমতি দেয়।
ওমেগা সেন্টাউরি

4
এটি পড়তে হবে "ফোর্টরানের ডিফাক্টোর নিয়মগুলি সংকলককে এটির অনুমতি দেয় যে দুটি ঠিকানা অনন্য ..."। ম্যানুয়ালগুলি আপনাকে সমস্তই বলে যে সংকলকটি এটি ধরে নিতে অনুমতি দেয় এবং আপনাকে এই বিবরণে সতর্ক করে দেয় যে আপনি যদি এই ধারনা লঙ্ঘন করেন তবে খারাপ জিনিসগুলি ঘটতে পারে।
জন আর। স্ট্রোহ্ম

15

শুধু কিছু অজানা নোট। আমি কোনও উচ্চতর পারফরম্যান্স নিজেই তৈরি করতে পারি নি।

গণনা (সংখ্যা ক্রাঞ্চিং) এর জন্য, ফোর্টরান এবং সি। হ্যাঁ এটি উত্তরাধিকারগত কারণে:

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

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

দ্বিতীয় প্রবণতাটি হ'ল নির্দিষ্ট জিপিইউ বা সেল বিই এর জন্য সি এর কিছু বিশেষায়িত উপভাষায় লেখা।

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


1
আপনি কি "টুইটারের ক্ষিপ্ত স্তর" অংশটি কিছুটা ব্যাখ্যা করতে পারেন?
দাড়কাক

কমপিউটিং সেন্টারটি এমপিআই কলগুলি দ্রুত চালিত করার জন্য পুনরায় সাজানোর জন্য স্নাতক শিক্ষার্থীদের নিয়োগ দেয়।
rwong

(?) এখানে প্রথম শব্দ, তবে আমার অনুশীলনগুলি পৃথক বলে মনে হয়।
দাড়কাক

এটি একটি জলবায়ু মডেলিং গবেষণা কেন্দ্র ছিল।
rwong

4

আমি (হাঁফ!) সি # তে কয়েকটি ভীষণ গণনা-নিবিড় কোড নিয়ে কাজ করছি।

আমি একটি GPGPU বাস্তবায়ন নির্মাণ করছি FDTD অপটিক্যাল মডেলিংয়ের জন্য র । একটি ছোট (128 প্রসেসর) ক্লাস্টারে, আমাদের সিমুলেশনগুলির বেশিরভাগটি চলতে কয়েক সপ্তাহ সময় নেয়। জিপিইউ বাস্তবায়নগুলি প্রায় 50x দ্রুত চালানোর প্রবণতা রয়েছে - এবং এটি গ্রাহক-গ্রেড এনভিডিয়া কার্ডে রয়েছে। আমাদের কাছে এখন দুটি জিটিএক্স 295 ডুয়াল-প্রসেসর কার্ড (কয়েকশো কোড়) সহ একটি সার্ভার রয়েছে এবং শিগগিরই কিছু টেসলাস পাচ্ছি।

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

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

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


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

3
@gbjbaanb অগত্যা নয়। এই বাস্তবায়নটি জিপিইউ-সীমাবদ্ধ, তবে একটি স্ক্রিপ্টিং ভাষায় চলে যাওয়া খুব সহজেই এটিকে পরিবর্তন করতে পারে। সি # সংকলিত এবং খুব সুন্দর অপটিমাইজার রয়েছে। সংকলিত, দৃ strongly়ভাবে টাইপ করা ভাষাগুলি আপনার বন্ধু! কম কঠোর স্ক্রিপ্টিং ভাষাগুলি যে কোনও যুক্তিসঙ্গত জটিল প্রকল্পের জন্য বিকাশের সময় বাড়িয়ে তোলে।
3Dave

1
সাত বছর কেটে গেছে। আমি অনেক কিছু শিখেছি। সি ++ বেশ দুর্দান্ত, সি # টিও দুর্দান্ত,
ডিভে

3

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

আধুনিক প্রোগ্রামিং ভাষার বৈশিষ্ট্য যেমন আবর্জনা সংগ্রহ বা রান-টাইম পলিমারফিজম এইচপিসির পক্ষে উপযুক্ত নয় কারণ গতির বিষয়গুলি তাই নিশ্চিত নয় যে সি # বা জাভা বা সি ++ কোথায় আসে।

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

উদাহরণস্বরূপ, এই কাগজটি ফিশব্যাকার এট আল দ্বারা পড়ুন যা বলে যে "লেখকরা বিশ্বাস করার দৃ reason় কারণ রয়েছে যে এটি এখন পর্যন্ত সঞ্চালিত বৃহত্তম প্রতীকী গণনা হতে পারে"।


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

3

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

ফোর্টরানের সি / সি ++ এর ওপরে পারফরম্যান্স সুবিধা বলে মনে করা খুব ভাল কারণ নয়। অপ্টিমাইজারগুলি বেশ ভাল, এবং খুব কম লোকই বুঝতে পারে যে কোনও অংশের কোডের অনুকূলকরণের সুবিধা এটি যে ব্যস্ত সময়ের সাথে সমানুপাতিক, যা প্রায় সমস্ত কোডেই প্রায় শূন্য।

আর একটি তাত্পর্যপূর্ণ কারণ হ'ল সিএস এবং নন-সিএস প্রোগ্রামারদের মধ্যে একটি সংস্কৃতির ব্যবধান। বৈজ্ঞানিক প্রোগ্রামারদের ফোর্টরানের খারাপ অভ্যাসগুলি শেখানো এবং সিএস প্রোগ্রামারগুলি এবং তাদের শেখানো খারাপ অভ্যাসগুলির দিকে তাকাতে এবং প্রাক্তনদের দিকে তাকাতে।


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

1
@ ওমেগা: ঠিক বলেছেন। ফোর্টরান-শিখানো লোকদের বিন্যাসের ধারণা নেই, "অন্তর্নিহিত কেউ নয়", এবং কোডটি একসাথে ক্র্যাম করুন কারণ তারা এখনও -২-বর্ণচিহ্নের লাইন নিয়ে কাজ করে এবং বোঝে যে বোধগম্য কোড তৈরি করা উইম্পসের জন্য। সিএস-শিখানো লোকেরা বহুবিজ্ঞান, বিজ্ঞপ্তিগুলি এবং বিমূর্ততা দ্বারা সজ্জিত ক্লাসগুলির দৈত্য পিরামিড তৈরি করে, যখন কোনও সাধারণ কিছু কাজ করে। সুতরাং তারা একে অপরের প্রাপ্য :)
মাইক ডুনলাভে

7
"পদার্থবিদরা গতকালের হার্ডওয়্যারে আগামীকাল সমস্যাগুলি সমাধান করছেন - যখন সিএস ছেলেরা আগামীকাল হার্ডওয়্যারে গতকালের সমস্যাগুলি সমাধান করছে"
মার্টিন বেকেট

@ মার্টিন: আমি মনে করি সম্ভবত আমি এটি কোথাও শুনেছি। এটা নিশ্চিত সত্য রিং।
মাইক ডুনলাভে

মার্টিন: সুতরাং, হার্ডওয়্যার ছেলেরা সবচেয়ে দক্ষ :)
ধাইভত পান্ড্য

2

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

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

এছাড়াও, এখন সংকলকগুলি সত্যিই ভাল, তাই সংযোজকগুলিতে প্রচুর অপ্টিমাইজেশন বাকি রয়েছে।


1

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

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