এআইতে সি ++ কেন কম ব্যবহৃত হয়?


15

আমি কেবল জানতে চাইছি যে মেশিন লার্নিং ইঞ্জিনিয়াররা এবং এআই প্রোগ্রামাররা এআই টাস্ক সম্পাদনের জন্য পাইথনের মতো ভাষা ব্যবহার করে এবং সি ++ নয় যদিও সি ++ প্রযুক্তিগতভাবে পাইথনের চেয়ে আরও শক্তিশালী ভাষা is


2
এই উত্তরটি সাহায্য করবে
ইউগনেস

এআই তে আপনাকে স্বাগতম! আমি প্রশ্নের শিরোনামটি কিছুটা সম্পাদনা করেছি। হাই-লেভেল, পাইথনের হালকা বাক্য গঠন রয়েছে এবং এটি একটি অনুবাদিত ভাষা, যার অর্থ কোনও সংকলন ছাড়াই টুইট করা এবং পরীক্ষা করা। পাইথন বিটওয়াইজ অপারেশনগুলিরও অনুমতি দেয় ।
DukeZhou

উত্তর:


16

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

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


1
আমি যদি হার্ডওয়্যার ক্ষেত্রের জন্য মেশিন লার্নিং এবং এনপিএল বিকাশ এবং কাজের সাথে আগ্রহী .. তাই আমি এআই এর জন্য সি ++ ব্যবহার করতে পারি
মার্ক এলন

1
@ আনিশগুপ্ত: হ্যাঁ আপনি পারবেন, সরবরাহ করা হার্ডওয়্যার প্রয়োজনীয় প্রসেসিং সমর্থন করে (নিউরাল নেটওয়ার্কগুলি বিশেষত খুব প্রসেসরের নিবিড়) টেনসফরফ্লো আসলে স্থানীয়ভাবে সি ++ (পাইথন বাইন্ডিংগুলি একটি সংযোজন) এবং এপিআইটি
নীল স্লটার

"বেশিরভাগ এআই প্রোফাইল ডেটা সায়েন্স ফিল্ড থেকে আসে"। ডেটা সায়েন্স এমনকি একটি সংজ্ঞায়িত ক্ষেত্রও নয়, সুতরাং আপনার বাক্যটি বোঝা বা ভুল বোঝা যায় না।
এনবিরো

1
"পরিবর্তে সি ++ ব্যবহারের ফলে পারফরম্যান্সের কোনও উন্নতি হবে না, তবে অ-বিকাশকারীদের পক্ষে মেমরি পরিচালনার জন্য যত্ন নেওয়া প্রয়োজন বলে তাদের পক্ষে আরও কঠিন।" আপনি যদি এটি ভাল লিখেন তবে আপনার সি ++ সহ মেমরি পরিচালনার বিষয়ে যত্ন নেওয়ার দরকার নেই।
জারমি ব্লেইন

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

10

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

কেবল উদাহরণস্বরূপ:

http://mloss.org/software/language/c__/

http://mloss.org/software/language/python/


5

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

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

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

একটি সাধারণ পদ্ধতি হ'ল হাইব্রিড সিস্টেম বলে মনে হচ্ছে, যেখানে মূল লাইব্রেরিগুলি সি / সি ++ এ প্রয়োগ করা হয়েছে, কারণ তাদের খুব বেশি পরিবর্তনের দরকার নেই, এবং সম্মুখ-প্রান্ত / আঠালো / ইন্টারফেসগুলি পাইথনে রয়েছে, কারণ সেখানে আপনার নমনীয়তা এবং গতি নেই যে সমালোচনা।

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


1
যদি আমি এটি সি ++ দিয়ে করি তবে আমি অজগর থেকে পারফরম্যান্স পেতে পারি এবং পারফরম্যান্স স্তর সম্পর্কে কী বলা যায় যে: সি ++ পাইথনের চেয়ে 400 গুণ বেশি
গতিযুক্ত

1
এই সাধারণ চিত্রটির কোনও অর্থ নেই - এটি সত্যই সঠিক প্রয়োগের উপর নির্ভর করে। আমি মনে করি 400 বার সম্ভবত বেশিরভাগ পরিস্থিতিতে বেশ আশাবাদী। তবে মুল বক্তব্যটি হ'ল যদি এটি সফ্টওয়্যার কোড (এবং ডিবাগ!) করতে আপনার 500x দীর্ঘ সময় নেয়, তবে গতিতে 400x উন্নতি এখনও ধীর হতে পারে! স্পষ্টতই সংখ্যাগুলি কিছুটা এলোমেলো, তবে আপনার প্রোগ্রামটি সঠিক হতে আপনাকে যে সময় লাগে তা হ্রাস করবেন না। প্রায়শই আপনি দেখতে পাবেন দ্রুত গতিতে সময় উন্নয়নের চেয়ে দ্রুত গতি বৃদ্ধি set
অলিভার ম্যাসন

1
আমি পাইথন এবং সি ++ তে টেনস্রফ্লু লাইব্রেরি ব্যবহার করে একটি নিউরাল নেট কোড দেওয়ার চেষ্টা করেছি এবং আমি দেখতে পেয়েছি: সি ++ এ কোড করা নিউরাল নেটওয়ার্ক অ্যালগরিদম পাইথনের চেয়ে 280X গুণ বেশি দ্রুত রান করে যেখানে একই লাইব্রেরি এবং একই অ্যালগরিদম ব্যবহৃত হয়েছিল
মার্ক এলন

1
সুতরাং কেন পাইথনের চেয়ে মেশিন লার্নিং অ্যালগরিদম বাস্তবায়নের জন্য সি ++ ব্যবহার করবেন না
মার্ক ইলন

1
আমার উত্তর উপরে দেখুন ...
অলিভার ম্যাসন

2

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

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

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

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


0

আপনি যে দাবি

সি ++ প্রযুক্তিগতভাবে পাইথনের চেয়ে আরও শক্তিশালী ভাষা।

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

তাত্ত্বিকভাবে, সি ++ এবং পাইথন উভয়ই টিউরিং-সম্পূর্ণ (উদ্দেশ্য অনুযায়ী) প্রোগ্রামিং ভাষা।

এবং পাইথন সি ++ এর মতোই অভিব্যক্তিপূর্ণ। আমি একটি প্রোগ্রামিং ভাষা বৈশিষ্ট্য নাম দিতে পারে না যে পাইথন ++, কিন্তু না সি (এর সাথে সম্পর্কিত ব্যতীত প্রতিফলন ; তাও দেখতে এই উত্তর এবং সচেতন হতে dlopen- আমার দেখতে manydl.c প্রোগ্রাম - এর LLVM , এর libgccjit , এর libbacktrace , এবং কিছু বিবেচনা মেটা তাদের সাথে প্রোগ্রামিং পদ্ধতি, B লা বিসমন বা জে.পাইট্রাটের ব্লগ যেমন এটি সমর্থন করে)।

আপনি কোনও প্রোগ্রামিং ল্যাঙ্গুয়েজটিকে সফ্টওয়্যার প্রয়োগ করে বলে মনে করেন। তারপরে পাইথন সি ++ এর মতোই ভাববাদী (এবং শেখা সহজ মনে হয় তবে এটি একটি বিভ্রম; সেই মায়া সম্পর্কে আরও তথ্যের জন্য http://norvig.com/21-days.html দেখুন)। পাইথন এবং সি ++ এর সিনট্যাক্স খুব আলাদা হলেও, বেশ একই রকম শব্দার্থক শব্দ রয়েছে । তাদের টাইপ সিস্টেমটি খুব আলাদা।

মান্য যে দুঃখিতভাবে, (যেমন সম্প্রতি বহু প্রধান মেশিন লার্নিং লাইব্রেরি TensorFlow বা Gudhi ) হয় বাস্তবে সহজ পাইথন ব্যবহার করার জন্য সি চেয়ে ++,। তবে আপনি টেনসরফ্লো বা গুধি সি ++ কোড থেকে ব্যবহার করতে পারেন যেহেতু টেনসরফ্লো এবং গুধি বেশিরভাগ সি ++ এ কোডেড এবং উভয়ই একটি সি ++ এপিআই সরবরাহ করে এবং নথি দেয় (কেবল একটি পাইথন নয়)।

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

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

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

BTW, আমি ওপেন সোর্স সফটওয়্যার (যেমন প্রোগ্রাম এই , অথবা অপ্রচলিত জিসিসি গলে এআই কৌশল ব্যবহার করে), কিন্তু তারা পাইথন ব্যবহার করবেন না। এআই অ্যাপ্লিকেশনগুলিতে আমার দৃষ্টিভঙ্গি হ'ল সেগুলির মধ্যে কিছু ডিএসএল ডিজাইন করা শুরু করা ।

কিছু এআই পদ্ধতির মধ্যে রূপকগুলি অন্তর্ভুক্ত থাকে, উদাহরণস্বরূপ একটি সিস্টেমের কোড নিজেই তৈরি করে কিছু (বা সর্বাধিক, এমনকি সমস্ত)। জে.পিত্রাট (অক্টোবর 2019 সালে তিনি মারা গেলেন) এই পদ্ধতির পথনির্দেশ করেছিলেন। দেখুন তার ব্লগে তার CAIA সিস্টেম, এবং RefPerSys প্রজেক্ট (যার উচ্চাকাঙ্ক্ষা সবচেয়ে -আর আশা তার সি ++ কোডের সবকিছু উৎপন্ন হয়)।

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