অ্যালগরিদমিক প্রোগ্রামিংয়ের জন্য পাইথনকে সি এর চেয়ে বেশি পছন্দ করা


16

আমি কিছুটা অ্যালগরিদম অধ্যয়ন করেছি এবং এসপিওজে.পিএল টপকোডার ইত্যাদির মতো সাইটগুলিতে সন্ধান করেছি I've আমি দেখেছি যে প্রোগ্রামাররা সাধারণত বেশিরভাগ অ্যালগরিদমিক প্রোগ্রামিং প্রতিযোগিতার জন্য সি বা সি ++ পছন্দ করেন।

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

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

আমি যা জানতে চেয়েছিলাম তা ছিল আমার এই পদ্ধতির কোনও অসুবিধা / পরিণতি / অসুবিধা ইত্যাদি রয়েছে কিনা whether

এটি পাইথন বনাম সি বিতর্ক নয়; সি ব্যবহারের সহজলভ্যতার কারণে অজগরটিকে প্রাধান্য দেওয়ার এই নির্দিষ্ট অনুশীলনটি কীভাবে আমাকে বা অন্য কোনও প্রোগ্রামার / কম্পিউটার বিজ্ঞানীকে দীর্ঘকালীন প্রভাবিত করবে সে সম্পর্কে একটি প্রশ্ন।


আমি এই ভাষাগুলিকে শিল্পে / এবং বা বৃহত্তর সফ্টওয়্যার / লাইব্রেরি ইত্যাদির বিকাশ করার জন্য শুনতে পছন্দ করি to


এই আলোচনার লিঙ্ক ছাড়াই এই বিষয়টি সম্পূর্ণ হবে না lukeplant.me.uk/blog/posts/…
পেরেকমাক্রা

11
@ স্পারম্যাক্রা: এটি কেবল একটি ছদ্মবেশ, মূলত উল্লেখ করে যে হাস্কেল এবং পাইথন শেখা আপনাকে অন্যান্য ভাষায় আরও ভাল করে না কারণ অন্যান্য ভাষাগুলি চুষে খায়।
রবার্ট হার্ভে

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

1
এটি আমার গ্রহণযোগ্যতা: Plus.google.com/101996847784434186165/posts/7941QuL69yP
ওয়েন ওয়ার্নার

এই জিনিস যাই হোক না কেন কিছুটা অ-অ্যালগোরিদমিক প্রোগ্রামিং দেখে আকর্ষণীয় হত ।
এসকে-যুক্তি

উত্তর:


14

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

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

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

আপনি অন্যান্য ভাষাতে এই দক্ষতা শিখতে পারেন? অবশ্যই, তবে সি যখন এটির ভুল হয় তখন এটিকে অনেক বেশি স্পষ্ট করে তুলতে সি সহায়তা করে।

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


1
"তারা যে বিমূর্ততা তাদের সরবরাহ করেছিল তা তারা খুব অভ্যস্ত" " এটি কি ধরে নেয় যে আমি সি এর আগে অজগর শিখেছি এবং সেজন্য এই লাইনে কিছুটা মানিয়ে নিতে পারছি না?
ffledgling

10

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

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


সুতরাং মূলত গবেষক এবং সফটওয়্যার ইঞ্জিনিয়ারদের কি একজন ডিজাইনার ক্র্যাফট-ম্যানের সম্পর্ক রয়েছে? এবং শিল্পে দুই ধরণের লোকের ব্যবহার সম্পর্কে কী?

9
আমি মনে করি গ্রহনের পথটি হ'ল পাইথনে একটি অ্যালগরিদম কোডিং করা এবং তারপরে সি-তে আরও পরিশ্রুত বাস্তবায়ন লেখাই একেবারে গ্রহণযোগ্য একটি দৃশ্য।
রবার্ট হার্ভে

বা "সাইথনে পুনর্নির্মাণ"?
এন্ডোলিথ

10

SPOJ.pl মনে রাখবেন, এসিএম প্রতিযোগিতা এবং অনুরূপ সমস্ত প্রতিযোগিতা ওয়ার্কিং কোড দ্রুত তৈরি করার দিকে মনোনিবেশ করছে যা প্রতিযোগিতার ঠিক পরে ফেলে দেওয়া হবে। টপকোডার এটি করে তবে কিছুটা কম পরিমাণে (কোডটি কমপক্ষে ওও-ডিজাইন স্তরে সঠিকভাবে সংগঠিত হয়) is

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

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

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

ইতিমধ্যে প্রস্তাবিত হিসাবে, পাইথন খুব ধীর হয়ে গেছে যদি আপনি সর্বদা সি প্রয়োগের সাথে পাইথন বাস্তবায়নকে অদলবদল করতে পারেন। তবে এটি সম্ভবত একটি বিশাল প্রকল্পে ২-৩ বার ঘটবে, সুতরাং সি থেকে শুরু করা সময় নষ্ট হতে পারে, যদি না এটি আপনার পছন্দের ভাষা হয় (এবং আপনি এটি ইঙ্গিত করেছেন না)।


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

অবিকল আমার বক্তব্য। এটি অগ্রাধিকারের প্রশ্ন: টপকোডাররা মেমরি ফাঁসের বিষয়ে চিন্তা করে না, যেহেতু কার্নেল তাদের পরে যে কোনওভাবে পরিষ্কার করতে চলেছে; তারা যদি সময় বাঁচায় তবে খারাপ অভ্যাস বা অ্যান্টি-প্যাটার্নগুলির বিষয়ে চিন্তা করে না।
কে.স্টেফ

2
আপনার শেষ অনুচ্ছেদে সুবর্ণ নিয়ম মূর্ত হয়েছে: "এটি কাজ করুন, তারপরে এটি দ্রুত করুন"।
কারসন 63000

9

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

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

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


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

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

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

5

আমি যখনই সিআই তে একটি কোড লিখতে বসে যাই তখন প্রায় 15 মিনিটের পরে ছেড়ে দেয় কারণ আমি এটি দেখতে খুব জটিল বলে মনে করি এবং পাইথনে যাওয়ার চেষ্টা করি।

এই উত্পাদনশীলতা লাভ হ'ল সাধারণ কারণ যা সি এবং সি ++ কাজ হ্রাস পেয়েছে।

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

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

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

সংক্ষেপে, এটি সম্পর্কে চিন্তা করবেন না । আপনি অ্যালগরিদমটি প্রকাশ করতে যা ব্যবহার করেন তা একেবারেই প্রকাশ করতে সক্ষম হওয়ার চেয়ে কম গুরুত্বপূর্ণ।


3
"সি এবং সি ++ কাজ হ্রাস পেয়েছে"। তাই না? বিপরীত প্রবণতাটি দেখতে পাওয়ায় এটি নীল থেকে বের হয়ে গেছে বলে মনে হচ্ছে। আপনি যে বিবৃতিটির জন্য কোনও উত্স বর্ণনা করতে পারবেন না -1

3

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


আপনি হিপস্টার বা কিছু? এখানে আপনার পিবিআর। আমাকে? আমি বরং শান্ত থাকি।
টমাস এডিং

2

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

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


প্রশ্নটি স্পষ্টভাবে অ্যালগরিদমগুলি সম্পর্কে ছিল, ধাতব দিকের কাছাকাছি দিক সম্পর্কে নয়।
কনরাড রুডলফ

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

@ লন্ডিন বাস্তব বিশ্বের পরিস্থিতিতে অসুবিধাগুলি উল্লেখ করার জন্য ধন্যবাদ।

1

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

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

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

সুতরাং কেবল পাইথন ব্যবহারে ত্রুটিগুলি হ'ল প্রসেসরের মডেলটির জন্য কিছু সি-জাতীয় সংকলন আশা করে লেখা আলগোরিদিমগুলির সুবিধাগুলি কাটাতে অসুবিধা হতে পারে। জাস্ট সি ব্যবহারে ত্রুটিগুলি যেমন আপনি বলেছেন: এটি লেখার এবং ডিবাগ করার জন্য একটি শূকর এবং আপনার নিজের লাইব্রেরিগুলি প্রায়শই লিখতে হবে।

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


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

1

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

for (i <- 1 to 100; j <- 2 until 100;
     k <- 1 to 2; if i != j) {
     //...
}

এছাড়াও তারা ফাংশন প্রোগ্রামিং রুবি এর / পাইথন এর অনুরূপ সহায় আছে map, filter, reduceইত্যাদি যা দ্রুত হিসাবে নয় iterating বা লেজ কল পুনরাবৃত্তির তবে এটি এখনও অনেক দ্রুত সম্পূর্ণরূপে গতিশীল স্ক্রিপ্টিং ভাষার হিসাবে তারপর।


1

আমি এই ভাষাগুলিকে শিল্পে / এবং বা বৃহত্তর সফ্টওয়্যার / লাইব্রেরি ইত্যাদির বিকাশ করার জন্য শুনতে পছন্দ করি to

আমি কয়েক বছর ধরে একটি বড় সি ++ গ্রন্থাগারের ছোট্ট অংশে কাজ করেছি এবং এই গ্রন্থাগারের প্রসঙ্গে আমার ব্যাচেলর এবং মাস্টার উভয় থিসিস লিখেছি। ঘটনাক্রমে গ্রন্থাগারটি বায়োইনফরম্যাটিকস অ্যালগরিদম এবং ডেটা স্ট্রাকচারের জন্য একটি গ্রন্থাগার।

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

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

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

তবে সাধারণত পাসের জন্য সঠিকভাবে অ্যালগরিদম পেতে কী গণনা করা হয় । এই ক্ষেত্রে পাইথন ঠিক কাজ করে। উদাহরণস্বরূপ, প্রকল্পের এলিউর সমস্যাগুলির জন্য (যা সময়সাপেক্ষ হয় না, কেবলমাত্র সঠিক সমাধান গণনা করা হয়), পাইথন পুরোপুরি উপযুক্ত।

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