উচ্চ স্তরের ভাষায় প্রোটোটাইপ করা কি সাধারণ? [বন্ধ]


18

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

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

অনুরূপ প্রশ্নগুলি অনুসন্ধান করার সময়, আমি একজন সহকর্মীর উল্লেখ লক্ষ্য করেছিলাম যে প্রোগ্রামাররা প্রোলোগে প্রোটোটাইপ ব্যবহার করতেন, তারপরে এ্যাসেম্ব্লারগুলিতে ক্র্যাঙ্ক করতেন।


4
আমি এমন লোকদের কথা শুনেছি যারা প্রথমে সি-তে কী চায় তা কোডিং করে এসেম্বলার লিখবে, তারপরে এটিকে বিচ্ছিন্ন করে এবং ফলস্বরূপ অ্যাসেমব্লিকে হ্যান্ড-টিউন করে।
ব্যবহারকারী16764

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

1
@ ইউজার ১67646464: বাস্তবে তা করেছে। ভাষা বাদে ফোর্টরান ছিল। আপনার বর্ণনার ঠিক মতো আমরা কম্পাইলার আউটপুটটিকে হ্যান্ড-টুইট করেছি।
এসলট

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

আমি প্রায়শই এই প্রোটোটাইপিং কৌশলটি ব্যবহার করি: একটি সমস্যা এর সবচেয়ে প্রাকৃতিক ভাষায় প্রকাশিত হয়, যা ডিএসএল হিসাবে বাস্তবায়িত হয়। তারপরে, প্রোটোটাইপটি শেষ হয়ে গেলে, ডিএসএল অংশটি নিম্ন স্তরের ভাষায় পুনর্নির্মাণের পরিবর্তে আমি এই ডিএসএল সংকলকটির বাস্তবায়নটি উন্নত করি, যতক্ষণ না পারফরম্যান্স গ্রহণযোগ্য হয়।
এসকে-লজিক

উত্তর:


27

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

যেমন বিল হারলান বলেছেন :

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

আপনি যদি সত্যিই পারফরম্যান্স সমস্যার পূর্বাভাস দিতে পারেন তবে সি ++ ব্যবহার করে বিবেচনা করুন। cprogramming.com এর শব্দটি খুব সুন্দরভাবে বলেছেন :

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


আপনার প্রকৃত প্রশ্নের আরও উত্তরের জন্য: আমি কোডটি একটি উচ্চ স্তরের ভাষায় লিখব, কেবল এটির নমুনা নয়, যখন আপনি কার্য সম্পাদনের সমস্যাগুলির মুখোমুখি হন তখন কেবল নিম্ন স্তরের ভাষাগুলিতেই অনুকূলিত হন optim


25
+1: এছাড়াও, পার্ল, পাইথন এবং রুবি সি ফাংশনগুলিতে কল করতে পারে, তাই আপনি প্রয়োজনে সিতে পারফরম্যান্স-সংবেদনশীল অংশগুলি লিখতে পারেন।
ল্যারি কোলেম্যান

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

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

@ টিম উইলিসক্রফ্ট: যখন আমি "প্রিমিটিভ ফিক্সেশন অ্যান্টিপ্যাটার্ন" এর জন্য গুগল করব কেবল তখনই আমি এই পৃষ্ঠাটি প্রকাশ করব। এটা কি?
সিঙ্গেলাইজেশন নির্মূল

@ টোকেনম্যাকগুই: আদিম আবেগের আরও বেশি হিট রয়েছে (একই অ্যান্টিপ্যাটার্ন)
টিম উইলিসক্রফট

7

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


+1 - বিশেষত যেহেতু আপনি যদি ভাষাটির সাথে পরিচিত না হন তবে ওও কোডটি সি তে স্থানান্তরিত করা শক্ত হবে বা আপনি যদি পদ্ধতিগত পদ্ধতিতে লিখেন তবে উচ্চ স্তরের ভাষাটি ব্যবহার করা আরও জটিল।
জেটি

হ্যাঁ অবশ্যই. আমি উদ্বিগ্ন যে আমি এখনও উচ্চতর ধারণাগুলিতে ভাবছি যা সহজে সি তে অনুবাদ করা যায় না, যেমন আমি যদি খুব বেশি যাদু বা চিনি ব্যবহার করি তবে।
মার্ক ক্যানলাস

4

এটি একটি নির্দিষ্ট হ্যাঁ বা কোনও উত্তর সহ কোনও প্রশ্ন নয়। আমাকে একটি উপাখ্যান সহ ওজন করতে অনুমতি দিন।

উদাহরণ 1

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

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

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

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

উদাহরণ 2

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

সুতরাং, কেবল নিজের ব্যক্তিগত অভিজ্ঞতায় আমি বলতে পারি না উত্তরটি সর্বদা হ্যাঁ বা না হয় be আপনার পছন্দের উচ্চ-স্তরের ভাষায় আপনি যে নির্দিষ্ট ভাষার আইডিয়ামগুলির উপর নির্ভরশীল তা ঠিক কীভাবে নির্ভরশীল এবং সেগুলিতে পুনরায় তৈরি করা সহজ বা কঠিন হবে কি না সে বিষয়ে আপনাকে ফ্যাক্ট করা উচিত in


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

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

2

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

এছাড়াও, সিউডোকোড ব্যবহার করে আপনি কীভাবে আপনার সিস্টেমটি কাজ করে সে সম্পর্কে আরও ভাল বোঝার বিকাশ ঘটবে।

আপনি সিউডোকোডে যে একই সময় কাজ করছেন, সেই সময়কালে আপনি সি পড়তে হবে Then তারপরে, আপনি যখন আপনার পরিকল্পনাটি সম্পন্ন করবেন, আপনি আসলে বিষয়টি বাস্তবায়নের জন্য প্রস্তুত হতে পারেন।

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


2

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

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


2

একটি ডাটাবেস ইঞ্জিন বেশিরভাগই নিম্ন স্তরের আই / ওকে সর্বোত্তম উপায়ে পরিচালনা এবং বি-ট্রি এবং জটিল লিঙ্কগুলির মতো দক্ষ কাঠামোগত দক্ষতার সাথে পরিচালনা করার বিষয়ে।

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

উচ্চতর স্তরের ভাষায় ভাল সম্পাদনকারী সঠিক অ্যালগরিদমগুলি বিকাশ করা অনেক সহজ। এটি সাধারণত বিভিন্ন প্রকারের চেষ্টা করার এবং ফলাফলগুলির তুলনা করার ক্ষেত্রে। তারপরে আপনি "বিজয়ী" অ্যালগরিদম সিতে অনুবাদ করতে পারেন

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


2

আমি এটি সাধারণ মনে করি না, তবে এটি সম্পন্ন হয়েছে। আমি যে কোনও তীব্র আর্কিটেক্টের সাথে কাজ করেছিলাম তার পাইথনে তার মডেলিং করতাম এবং তারপরে সেই কোডটি সি ++ এ প্রয়োগ করতাম।

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

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


1

বর্তমানে আমি এমন একটি প্রকল্পে কাজ করছি যা সিতে "পারফরম্যান্সের কারণে" লেখা ছিল (এটি আসল প্রেরণা ছিল), তবে প্রকৃতপক্ষে যদি এটি প্রকাশিত হয় যে এটি বেশিরভাগ সময় ব্যয় করে অন্য সিস্টেমগুলির জন্য অপেক্ষা করে (একটি ডিবি, লিখিত অন্যান্য অ্যাপস) জাভা, একটি সকেটের "ইভেন্ট")।

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

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

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


1

উচ্চ স্তরের ভাষায় লিখিত অনেকগুলি কার্য সম্পাদনের সমালোচনা রয়েছে।

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

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

বলুন আপনি ভাষা দ্বারা 10% -15% পারফরম্যান্স বৃদ্ধি পেয়েছেন। সঠিক অ্যালগরিদম বাস্তবায়িত হওয়ার প্রবণতা বৃদ্ধির আদেশের সাথে এটি কিছুই নয়।

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

বাস্তব বিশ্বে আপনি সর্বদা সময়সীমাবদ্ধ, তাই আপনার সময়টি প্রকল্পের ডান অংশে ব্যয় করুন।


0

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


কখনও কখনও "এটি করবেন না।" হয় সঠিক উত্তর "আমি কীভাবে করব এক্স?"
ল্যারি কোলেম্যান

0

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

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

কিছু সম্ভাবনার মূল্যায়ন:

। আপনি অজগর প্রোটোটাইপ এবং সি এ সফ্টওয়্যার লিখুন।

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

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

সমাধানটির যৌক্তিক সম্ভাব্যতা পরীক্ষা করার জন্য এই পদ্ধতিটি উপযুক্ত।

। আপনি সি তে প্রোটোটাইপ এবং সি তে সফ্টওয়্যার লিখুন।

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

এই পদ্ধতিটি সমাধানটির যৌক্তিক এবং প্রযুক্তিগত সম্ভাব্যতা উভয়ই পরীক্ষার জন্য ফিট করে।

। আপনি নিজের হাতে থাকা সমস্যার উপর নির্ভর করে প্রোটোটাইপের নন-কোডিং উপায়গুলি বিবেচনা করতে পারেন।

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

এটি যদি ইউআই প্রোটোটাইপ হয় তবে কিছু UI মক-আপ সরঞ্জাম বা আবার কিছু কাগজ বিবেচনা করুন।


0

আমি মনে করি আপনি যে ভাষায় পরিচিত (প্রার্থ / রুবি / সি # কী নয়) আপনার প্রোটোটাইপ করা উচিত যাতে:

  1. আপনি ভাষা যে সুবিধা / লাইব্রেরি সরবরাহ করেন সেগুলির সর্বাধিক সদ্ব্যবহার করেন।
  2. ভাষার সীমাবদ্ধতার পরিবর্তে ডিজাইনের পছন্দগুলি সিদ্ধান্ত নিয়ে আপনি আপনার সময় ব্যয় করেন।

পরে, আপনি বোতল ঘাড়ের ক্ষেত্রগুলি খুঁজে পেতে একটি প্রোফাইলিং সরঞ্জাম ব্যবহার করতে পারেন। সি / সি ++ এ পুনরায় প্রয়োগ করুন। উপরের পদক্ষেপটি কয়েকবার পুনরাবৃত্তি করুন, কে জানেন যে আপনার প্রোটোটাইপ 'দ্রুত যথেষ্ট' হতে পারে!


0

আমি মনে করি না যে আপনি বর্ণিত পদ্ধতির মাধ্যমে আপনি কিছু অর্জন করছেন এবং বেশ কিছু লোক কেন কিছু বিশদে বর্ণনা করেছেন।

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

এক্ষেত্রে লক্ষ্যগুলি ছিল সুরক্ষিত সমাবেশ নির্দেশাবলী এবং একাধিক আর্কিটেকচারকে লক্ষ্য করার ক্ষমতা সহ উচ্চ কার্যকারিতা।

যদিও খাবারের জন্য, আমি আশা করি আপনি ক্ষুধিত হবেন না :)


0

উচ্চ কার্যকারিতা ডাটাবেস ইঞ্জিনের জন্য আপনার সম্ভবত প্রয়োজন হবে:

  • মাল্টি থ্রেডিং,
  • সুস্পষ্ট মেমরি পরিচালনা,
  • অ্যাসিনক্রোনাস বিজ্ঞপ্তিগুলি,
  • semaphores বা সিঙ্ক্রোনাইজেশন আদিম,
  • নিম্ন স্তরের ফাইল সিস্টেমের কার্যগুলিতে সহজে অ্যাক্সেস।

আপনার চয়ন করা অ্যালগরিদমগুলি কার্য সম্পাদনের জন্য গুরুত্বপূর্ণ critical

সাধারণ পরামর্শটি হ'ল উচ্চ স্তরের ভাষা দিয়ে শুরু করুন, তারপরে কেবলমাত্র বিটগুলি স্থানান্তর করুন যা নিম্ন স্তরের ভাষাতে অনুকূলকরণের প্রয়োজন।

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

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

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

সি ++ এবং সি এর মধ্যে ঘনিষ্ঠ সম্পর্ক (এবং তুচ্ছ পারফরম্যান্সের পার্থক্য) এর অর্থ হ'ল চূড়ান্ত পণ্যটিতে সি ++ এর চেয়ে বেশি পছন্দ না করার খুব কম কারণ রয়েছে।

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


-2

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

আমি সম্প্রতি পড়ে অবাক হয়েছি যে ফোর্টরান সি এবং সি ++ এর চেয়ে দ্রুত is

রিচার্ড মুলিনস


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