স্ট্যাক-ভিত্তিক প্রোগ্রামিং ভাষার পক্ষে একযোগে থাকা কি সম্ভব?


14

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

একটি অপরিহার্য ভাষা স্ট্যাকটি সংশোধন করবে, এবং জয়ের মতো একটি সম্পূর্ণ কার্যকরী ভাষা একটি নতুন স্ট্যাক ফিরিয়ে দেবে, তবে মুল্যটি হ'ল এক সময়ে কেবল একটি স্ট্যাক ব্যবহৃত হয়।

সুতরাং, স্ট্যাক-ভিত্তিক প্রোগ্রামিংয়ের ভাষাগুলি একসাথে হতে পারে? তারা কি একই সময়ে একসাথে বা একই জাতীয় কিছু একাধিক স্ট্যাক ব্যবহার করে সম্মতি অর্জন করতে পারে?

স্ট্যাক-ভিত্তিক প্রোগ্রামিং ভাষায় অলস মূল্যায়ন কার্যকর করা সম্ভব?

আমি উপরে বর্ণিত ভাষা এবং ধারণাগুলি সম্পর্কে যদি কিছু ভুল বুঝতে পারি তবে দয়া করে আমাকে সংশোধন করুন


5
কিভাবে করতে কোনো অনুজ্ঞাসূচক ভাষা সমবর্তী হবে?
বার্গি


আপনি কি সত্যিকারের সম্মতি বোঝাতে চান (যা অর্জন করা এতটা কঠিন নয়, কেবল স্বাধীন স্ট্যাক প্লাস শেয়ার্ড মেমরির সাথে চলমান একাধিক থ্রেড ব্যবহার করুন) বা সমান্তরালতা?
ড্যানিয়েল জোর

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

উত্তর:


16

সুতরাং, স্ট্যাক-ভিত্তিক প্রোগ্রামিং ভাষাগুলি একই সাথে হতে পারে?

অবশ্যই।

তারা কি একই সময়ে একসাথে বা অন্য জাতীয় কিছু ব্যবহার করে সম্মতি অর্জন করতে পারে?

ইতিমধ্যে সাধারণ ভাষার জন্য মাল্টি-থ্রেডিংয়ের অর্থ একাধিক "কল" স্ট্যাক থাকা। প্রতিটি থ্রেডকে নিজস্ব ডেটা স্ট্যাক দেওয়া সম্পূর্ণ প্রাকৃতিক হবে। একজন অভিনেতা থাকা সহজবোধ্য হবে, বলুন, যার শরীরটি স্ট্যাক-ভিত্তিক ভাষায় কোড দ্বারা প্রয়োগ করা হয়েছিল। একটি লা GHC এর সুস্পষ্ট সমান্তরালতাpar টীকা যুক্তিসঙ্গতভাবে সোজা হওয়া উচিত। সমান্তরালে জিনিসগুলি সম্পাদন করার মূল সমস্যাটি হ'ল কোডটি স্ট্যাক এফেক্টটি কার্যকর না করা পর্যন্ত আপনি কী জানেন না। যাইহোক, একটি জয়ের মতো সিনট্যাক্স ব্যবহার করে, কেউ [a b c] parনির্বাহক হিসাবে ধারণা করতে পারেa b cহয় একটি খালি স্ট্যাক বা স্ট্যাকের অনুলিপি বিরুদ্ধে এবং কেবল সম্পূর্ণরূপে স্ট্যাকের শীর্ষতম উপাদান রাখা (বা স্ট্যাকটি ফাঁকা থাকলে কিছু ডামি মান চাপানো)। আপনি বিভিন্নতা কল্পনা করতে পারেন। নিখুঁত কার্যকরী ভাষার তুলনায় নিখুঁতভাবে প্যারালালিজম নির্বোধভাবে করা কঠিন, তবে অবশ্যই এটি করা যেতে পারে। কোনও ব্যবহারকারী-সংজ্ঞায়িত সংযুক্তকারীটির সংকলিত কোড প্রায়শই "সাধারণ" কোড থেকে খুব বেশি আলাদা হয় না।

স্ট্যাক-ভিত্তিক প্রোগ্রামিং ভাষায় অলস মূল্যায়ন কার্যকর করা সম্ভব?

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

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


8

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

concurrency

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

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

অলস মূল্যায়ন

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

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

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


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

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

কখনও কখনও আমরা করি। তবে আমি সন্দেহ করি এটি এমন একটি ঘটনা such উদাহরণস্বরূপ, প্রশ্নটিতে বাস্তব সময় নির্ধারণের প্রয়োজনীয়তা উল্লেখ করা হয়নি mention
বিচ্ছিন্ন টিকটিকি

3
"সমঝোতা"! = "সমান্তরালতা"। একক সিপিইউ মেশিনে একাধিক থ্রেড চলমান বলা যেতে পারে যে কোনও সমান্তরাল প্রক্রিয়াজাতকরণ ঘটছে না, তবুও একে অপরের সাথে একই সাথে চলতে পারে।
সলোমন 15

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