বৈজ্ঞানিক গণনার জন্য সেরা ভাষা [বন্ধ]


10

দেখে মনে হয় বেশিরভাগ ভাষায় বেশ কয়েকটি বৈজ্ঞানিক কম্পিউটিং লাইব্রেরি উপলব্ধ।

  • পাইথন আছে Scipy
  • Rust হয়েছে SciRust
  • C++সহ বেশ কয়েকটি রয়েছে ViennaCLএবংArmadillo
  • Javaরয়েছে Java Numericsএবং Coltপাশাপাশি বেশ কয়েকটি অন্যান্য

বৈজ্ঞানিক কম্পিউটিংয়ের জন্য স্পষ্টভাবে ডিজাইন করা Rএবং পছন্দ করা ভাষার উল্লেখ না করা toJulia

এতগুলি বিকল্পের সাহায্যে আপনি কীভাবে কোনও কাজের জন্য সর্বোত্তম ভাষা চয়ন করেন? অতিরিক্তভাবে কোন ভাষাগুলি সর্বাধিক অভিনয় করবে? Pythonএবং Rমনে হয় স্থানটিতে সর্বাধিক সন্ধান রয়েছে তবে যৌক্তিকভাবে একটি সংকলিত ভাষা মনে হয় এটি আরও ভাল পছন্দ হবে। এবং কিছু কি কখনও ছাড়িয়ে যাবে Fortran? অতিরিক্তভাবে সংকলিত ভাষাগুলিতে জিপিইউ ত্বরণ থাকে, অন্যদিকে বর্ণিত ভাষাগুলি পছন্দ করে Rএবং Pythonপছন্দ করে না। কোনও ভাষা বাছাই করার সময় আমার কী বিবেচনা করা উচিত এবং কোন ভাষাগুলি ইউটিলিটি এবং কার্য সম্পাদনের সর্বোত্তম ভারসাম্য সরবরাহ করে? এছাড়াও উল্লেখযোগ্য বৈজ্ঞানিক কম্পিউটিং সংস্থানগুলির সাথে এমন কোন ভাষা রয়েছে যা আমি মিস করেছি?

efficiency  statistics  tools  knowledge-base  machine-learning  neural-network  deep-learning  optimization  hyperparameter  machine-learning  time-series  categorical-data  logistic-regression  python  visualization  bigdata  efficiency  classification  binary  svm  random-forest  logistic-regression  data-mining  sql  experiments  bigdata  efficiency  performance  scalability  distributed  bigdata  nlp  statistics  education  knowledge-base  definitions  machine-learning  recommender-system  evaluation  efficiency  algorithms  parameter  efficiency  scalability  sql  statistics  visualization  knowledge-base  education  machine-learning  r  python  r  text-mining  sentiment-analysis  machine-learning  machine-learning  python  neural-network  statistics  reference-request  machine-learning  data-mining  python  classification  data-mining  bigdata  usecase  apache-hadoop  map-reduce  aws  education  feature-selection  machine-learning  machine-learning  sports  data-formats  hierarchical-data-format  bigdata  apache-hadoop  bigdata  apache-hadoop  python  visualization  knowledge-base  classification  confusion-matrix  accuracy  bigdata  apache-hadoop  bigdata  efficiency  apache-hadoop  distributed  machine-translation  nlp  metadata  data-cleaning  text-mining  python  pandas  machine-learning  python  pandas  scikit-learn  bigdata  machine-learning  databases  clustering  data-mining  recommender-system 

12
এখানে কোন প্রশ্ন নেই। প্রোগ্রামিং ল্যাঙ্গুয়েজে আপনার যদি প্রাথমিক গবেষণা করার দরকার হয় তবে কেউ শখের ঘোড়াটিকে ধাক্কা দেওয়ার জন্য এখানে পপ-আপ করার অপেক্ষা না করে আপনি উইকিপিডিয়া পড়তে ভাল।
ডার্ক এডেলবুয়েটেল

@ ডির্কএডেলবুয়েটেল খুব ভাল পয়েন্ট। ভেবেছিলাম বিটাতে এই সময়ে এটি পরিমার্জন করার চেয়ে সামগ্রী তৈরি করার চেষ্টা করা ভাল তবে এসই বিটা সম্পর্কে আমি বিপুল পরিমাণে জানি না। আমার পক্ষে কি এটি একটি ভাল পদক্ষেপ ছিল নাকি?
ইন্দো

1
তাকান এই নম্বর।
এমের

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

1
@ ইন্ডিকো cran.r-project.org/web/packages/overlap/index.html চেষ্টা করুন যা আমি এলোমেলোভাবে বেছে নেওয়ার জন্য প্রথম ঘটেছিলাম । তবে সত্যই, আমি ব্যক্তিগতভাবে অনেক পরিসংখ্যানবিদদের চিনি যারা আর প্যাকেজ লিখেছেন। তাদের কেউ এখনও পাইথন লিখেনি। কথোপকথনটি কিছুটা প্রসারিত করতে, kdnuggets.com/2013/08/… আকর্ষণীয়।
লেম্বিক

উত্তর:


12

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

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

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

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

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


এই উত্তরটি যোগ করার জন্য: কর্মক্ষমতা প্রসারণ নিরিখে Scalaএবং Goমূল্য উল্লেখ করার আছে।
মার্ক ক্লিসেন

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

5

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

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

আমি সচেতন যে আমার বেশিরভাগ পয়েন্ট প্রতিষ্ঠিত ভাষার পক্ষে। এটি 'get-things-done' দৃষ্টিকোণ থেকে।

এটি বলেছিল, আমি ব্যক্তিগতভাবে বিশ্বাস করি যে নিম্ন স্তরের ভাষা এবং উচ্চ স্তরের ভাষায় দক্ষ হয়ে ওঠার চেয়ে আরও ভাল:

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

4

প্রথমে আপনাকে সিদ্ধান্ত নিতে হবে আপনি কী করতে চান, তারপরে সেই কাজের জন্য সঠিক সরঞ্জামটি সন্ধান করুন।

প্রথম সংস্করণগুলির জন্য আর ব্যবহার করা এবং আপনার পদ্ধতির অবস্থানটি সঠিক কিনা তা দেখতে খুব সাধারণ পন্থা। এটির গতিতে সামান্য অভাব রয়েছে, তবে খুব শক্তিশালী কমান্ড এবং অ্যাডন গ্রন্থাগার রয়েছে, এটির সাথে আপনি যে কোনও কিছু চেষ্টা করতে পারেন: http://www.r-project.org/

দ্বিতীয় ধারণাটি হ'ল আপনি যদি গ্রন্থাগারগুলির পিছনে থাকা অ্যালগরিদমগুলি বুঝতে চান তবে আপনি সংখ্যাসূচক রেসিপিগুলি একবার দেখে নিতে চান। এগুলি বিভিন্ন ভাষার জন্য উপলব্ধ এবং শেখার জন্য বিনামূল্যে ব্যবহারযোগ্য। আপনি যদি এগুলিকে বাণিজ্যিক পণ্যগুলিতে ব্যবহার করতে চান তবে আপনার লাইসেন্স কিনতে হবে: http://en.wikedia.org/wiki/Numerical_Recipes

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

আর আর ব্যবহারের একটি বড় প্লাস হ'ল এটিতে বিল্ট-ইন ফাংশন বা লাইব্রেরি রয়েছে প্রায় কোনও ধরণের ডায়াগ্রামের জন্য যা আপনার ডেটা ভিজ্যুয়ালাইজ করার প্রয়োজন হতে পারে।

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

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