এমসিইউ (গুলি) সহ ফাংশনাল প্রোগ্রামিং


12

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

আমি মেশিন নিয়ন্ত্রণ ইত্যাদি করার জন্য একটি মাইক্রোকন্ট্রোলারে ফাংশনাল প্রোগ্রামিং ব্যবহার করতে চাই

ন্যূনতম সিস্টেম সংস্থান হিসাবে কি কি সীমাবদ্ধতা আছে?
এই ভাষাগুলির কোন উদাহরণ বাস্তবায়ন উপলব্ধ?


1
যদি আপনার প্রশ্নটি হয় " সর্বাধিক শক্তিশালী প্রোগ্রামিং ভাষা নিয়ে কোনও মেশিনকে প্রোগ্রাম করা কি আপনার পক্ষে উপযুক্ত নয় ," সি ++ এবং জাভা প্রশ্নাগুলি পড়ার প্রস্তাব দেওয়া হয় (ক্রিয়ামূলক প্রোগ্রামিংয়ের চেয়ে ওওপি সম্পর্কে)।
কেভিন ভার্মির

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

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

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

1
@ শিপসিমুলেটর দুর্ভাগ্যক্রমে, আপনার শেষের মত মন্তব্যগুলি এই যুক্তিযুক্ত মত প্রশ্ন তোলে।
কেলেনজব

উত্তর:


11

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

http://armpit.sourceforge.net/

তুমি বলো:

সি, সি ++, এসেম্বলি ইত্যাদি ব্যবহার হাস্কেল, এলআইএসপি বা স্কিমের মতো ভাষার তুলনায় বেশ অদক্ষ

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


7

আপনি এটম / কোপাইলট ব্যবহার করে হাস্কেলের সাথে এভিআর কন্ট্রোলারগুলি প্রোগ্রাম করতে পারেন, উদাহরণস্বরূপ http://leepike.wordpress.com/2010/12/18/haskell-and-hardware-for-the-holidays/


2
হাস্কেল সত্যিই ভাল জিনিস <3
ট্রাইগভে লগস্টেল

5

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


3
-1: আমি এই উত্তরটির সাথে সত্যই একমত নই। যদিও সমাবেশ সম্পর্কে আপনার অধিকারটি মেশিন ভাষার কাছাকাছি থাকলেও সি এবং সি ++ খুব উচ্চ স্তরের ভাষা।
বিজি 100

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

@ নিক টি: আমি আপনার বক্তব্যটি দেখতে পাচ্ছি, তবে এটি বিবেচনা করুন: আপনি যদি একটি বাধা রুটিন লিখেন যা সাধারণত যত তাড়াতাড়ি সম্ভব কার্যকর করা প্রয়োজন, সি তে আপনাকে চালানোর জন্য কতটা সময় লাগবে তা আপনি জানেন না, তবে সমাবেশে আপনি পারবেন শুধু নির্দেশনা গণনা করুন। আমি মনে করি নিম্ন স্তরটি আপনার প্রোগ্রামে
ঠিকঠাক

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

3

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


3

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

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


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

@ ফোটন আমি সংশোধন করছি। যদিও আমি বিআইটি প্রকল্প সম্পর্কে অবগত ছিলাম, যা দশ কিলো মেমোরির প্রসেসরগুলিকে লক্ষ্য করে তোলে (বেশিরভাগ ছোট মাইক্রোকন্ট্রোলারদের তুলনায় আরও বেশি) তবে আমি সবেমাত্র পিকবিআইটি আবিষ্কার করেছি , যা ইউনিভার্সিটি ডি মন্ট্রিয়াল এবং ইউনিভার্সিটি লাভালের কয়েকজন শিক্ষার্থী দ্বারা ডিজাইন করা হয়েছিল, যা বাস্তব স্কিম প্রোগ্রামগুলিকে পিআইসি প্রসেসরগুলিতে 2K এর চেয়ে কম র‌্যামের সাথে চালানোর অনুমতি দেয়। খুবই চমৎকার.
tcrosley

3

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

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

ইলুয়া হ'ল এমন একটি বাস্তবায়ন যা এআরএম 7 টিএমডিআই, কর্টেক্স-এম 3, এআরএম 966 ই-এস এবং এভিআর 32 আর্কিটেকচারের জন্য বেশ কয়েকটি উন্নয়ন বোর্ডের জন্য কনফিগার করা উপলব্ধ এবং এটি ওপেন সোর্স যাতে আপনি নিজের প্ল্যাটফর্মের জন্য এটি কনফিগার করতে পারেন। লুয়া এএনএসআই সি তে প্রয়োগ করা হয়েছে এবং পুরো উত্সের ওজন 200kB এর নিচে রয়েছে, সুতরাং আপনার এটি একটি সি সংকলক সহ বেশিরভাগ প্ল্যাটফর্মের জন্য তৈরি করতে সক্ষম হওয়া উচিত। কমপক্ষে 128 কে ফ্ল্যাশ এবং 32 কে র‌্যামের প্রস্তাব দেওয়া হয়। আমি এটির জন্য একটি পিআইসি 32 বন্দরে কাজ করছি (এখনও 'পিআইসি 32 বোর্ড পান' পর্যায়ে থাকলেও) এই মুহুর্তে।

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

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


1

"কোন জটিল সমস্যা সমাধানের জন্য কোনও এমসিইউতে কার্যকরী ভাষা নিয়ে ফাংশনাল প্রোগ্রামিং করার কোনও উপায় আছে?"

হ্যাঁ, উপায় আছে। তবে খারাপ দিকটি আপনার দরকার 32-বিট প্রসেসর, এমএমইউ, 128 এমবি র‌্যাম, এসএসডি, একটি আরটিওএস এবং $$$ $$$

মাইক্রোকন্ট্রোলারগুলি মাইক্রোপ্রসেসরের চেয়ে আলাদা। মাইক্রোকন্ট্রোলারটি কেবল একটি 8-বিট সিপিইউ, 1 কে র‌্যাম, 8 কে রম হতে পারে তবে এটি ইউআআআআরটি, পিডাব্লুএমএম, এডিসি ইত্যাদিতে একটি বিল্ট রয়েছে এবং এটির দাম মাত্র 1.30 ডলার।

সুতরাং আপনি যে সমস্ত উচ্চ স্তরের ভাষা চলতে পারে, কিন্তু এটি তৈরি করতে আরও অনেক বেশি ব্যয় হয়।


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

1
আপনি যদি 8-বিট এমসিইউর জন্য 30 1.30 প্রদান করে থাকেন তবে বেশ কয়েকটি 32-বিট এমসিইউ সস্তা। এছাড়াও, অ্যাকাউন্টে বিবেচনা করুন যে বাজারে সর্বাধিক 8-বিট এমসিইউগুলি হ'ল ভয়ঙ্করভাবে কোড-অকার্যকর আর্কিটেকচার, 80 এর দশকের গোড়ার দিকে উত্তরাধিকারসূত্রে ডিজাইন প্রাপ্ত।
লন্ডিন

0

এই বইটি এফপির হালকা অনুভূতি সহ প্রোগ্রামিং করার কিছু উপায় সরবরাহ করে। http://www.state-machine.com/psicc2/

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

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

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