স্প্রেডশিট "প্রোগ্রামিং" হ'ল এক প্রকার ডেটাফ্লো প্রোগ্রামিং।
এটির সাথে আমাদের ভাষাগত সমস্যা রয়েছে, আমরা এটিকে "প্রোগ্রামিং" বলি না, কারণ এটি প্রোগ্রামিংকে আমরা কল করি তার চেয়ে অনেক কম, তবে এটি কোনও প্রোগ্রামে ডেটা প্রবেশের চেয়ে নির্ধারিতভাবেই বেশি।
ডেটাফ্লো প্রোগ্রামিং হ'ল একটি আর্কিটেকচার এবং শৃঙ্খলা, যেখানে অ্যাপ্লিকেশনটি স্বাধীন মডিউলগুলির একটি নেটওয়ার্ক, তারা একে অপরকে বার্তা (ডেটা) প্রেরণ করে। এই মডেলটি প্রতিটি সমস্যার ক্ষেত্রেই প্রযোজ্য নয়, কেবলমাত্র তাদের জন্য, যেখানে কোনও উত্স ডেটা বা স্ট্রিম রয়েছে (বা আরও কিছু আছে), যা প্রসেসিং নেটওয়ার্কটি ট্রু করে তোলে এবং আউটপুট ডেটা / স্ট্রিম তৈরি করে। নীচে তালিকা দেখুন।
ডেটাফ্লো প্রোগ্রামিংয়ের বিভিন্ন প্রকার রয়েছে, আসুন কিছু দেখুন:
- স্প্রেডশিট: ইনপুট নম্বরগুলি সূত্র দ্বারা প্রক্রিয়া করা হয়, তারপরে ফলাফল সংখ্যা এবং গ্রাফ। বিশেষ বৈশিষ্ট্য: অন্বেষণের সময়টি "ওয়ান-শট" হয়, যখন ইনপুট মান (উপাদান) পরিবর্তন হয়, প্রসেসিং গ্রাফের অ্যাপোপিয়েট অংশটি পুনরায় চালিত হয় এবং আউটপুট উত্পাদন করে।
- ইউনিক্স পাইপ: শেলটি বেশ কয়েকটি প্রোগ্রাম শুরু করে এবং stdout-> stdin লিঙ্ক করে। বিশেষ বৈশিষ্ট্য: কেবল পাইপ-শৈলীর সংযোগ অনুমোদিত, গ্রাফটি একক সারি।
- সিঙ্ক্রোনাইজড এক্সিকিউশন: একটি ঘড়ি রয়েছে যা একটি নির্দিষ্ট ফ্রিকোয়েন্সিতে ফ্রেম বা নমুনার প্রক্রিয়াকরণকে ট্রিগার করে। প্রতিটি উপাদান একবার ঘড়ির চক্রে চলে। ভিডিও এবং অডিও প্রসেসিং সিস্টেমগুলির উদাহরণগুলি, তারা একটি নির্দিষ্ট ফ্রেম / নমুনা হারে কাজ করে।
- অ্যাসিনক্রোনাস এক্সিকিউশন: কোনও বাহ্যিক ঘটনা ঘটে না যাওয়া অবধি গ্রাফটি অলস থাকে। তারপরে এটি ইভেন্টটি প্রক্রিয়া করে, কিছু আউটপুট উত্পন্ন করে (বা না), এবং অলস অবস্থায় যায়।
আপনার প্রশ্নে ফিরে আসুন: আমি হ্যাঁ মনে করি, ডেটাফ্লো অ্যাপ্লিকেশনটি স্ট্যান্ড স্টোন অ্যাপ হিসাবে প্রকাশ করা ভাল ধারণা। আমি ইতিমধ্যে এটি তৈরি করেছি। দু'বার ।
আমি এবং আমার এক বন্ধু হোম অটোমেশনের জন্য একটি প্রোটোটাইপ ডিএফ সিস্টেম তৈরি করেছি। আমাদের কোনও গ্রাফ সম্পাদক নেই, সুতরাং অ্যাপটি ব্যবহারকারীর দ্বারা সম্পাদনাযোগ্য নয়, কিছু পরামিতি একটি কনফিগার ফাইলে সংরক্ষণ করা হয়েছে, তবে অন্য কিছুই নয়। আমাদের একটি ডিএফ স্ক্রিপ্ট ভাষা রয়েছে, যা সি ++ কোড (উপাদান তৈরি এবং বার্তার সংজ্ঞাগুলির একটি তালিকা) এর "সংকলিত", যা একটি দেশীয় নির্বাহযোগ্যকে সংকলিত হয়ে যায়। মডিউলগুলি হ'ল সি ++ ক্লাস (অন্যান্য শ্রেণি, কেবল আমাদের সিস্টেম সম্পর্কে কিছু তথ্য পেতে: বার্তা, ডিসপ্যাথসর, উপাদান (বিমূর্ত), পোর্ট (বিমূর্ত), কনজিউমারপোর্ট, প্রযোজক পোর্ট)।
এছাড়াও, আমরা একটি ডিএফ সিস্টেম সরবরাহের সুবিধাগুলি দেখে অবাক হয়েছি : আমরা 2 মিনিটের মধ্যে সিরিয়াল স্নিফার অ্যাপ্লিকেশন তৈরি করেছি, বা আমরা সাইটটিতে একটি পরীক্ষা প্রোগ্রাম করেছি , যা একের পর এক প্রদীপ জ্বলিয়ে দেয় (কোনও ডকুমেন্টেশন ছিল না) হার্ডওয়্যার আইডি তে)। আমরা এমডিআই এবং জয়প্যাড উপাদানগুলি কেবল মজাদার জন্য তৈরি করেছি, আমি এটির সাথে একটি হালকা অঙ্গও তৈরি করেছি (দেখুন http://homeaut.com/under_con تعمیر/ )।
স্প্রেডশিটগুলির ক্ষেত্রে আমি কেবলমাত্র একটি অসুবিধা দেখতে পাচ্ছি: প্রতিটি সংখ্যা এবং সূত্র (সম্ভাব্য: প্রতিটি ঘর) একটি উপাদান হিসাবে, আপনার গ্রাফ চূড়ান্ত নয়। আপনি যখন আপনার সাধারণ যোগফল () অ্যাপ্লিকেশনটিতে একটি লাইন যুক্ত করেন, তার অর্থ ডেটাফ্লো গ্রাফটি পরিবর্তিত হয়। সুতরাং, আপনাকে রান-টাইমে গ্রাফটি "পুনরায় প্রোগ্রামিং" করতে হবে, অথবা আমাদের এটি "রূপক" বলা উচিত। এক্সেলে, একটি ম্যাক্রো কাজটি করবে তবে তারপরে আমরা তথ্যপ্রবাহের বিশুদ্ধতাটি looseিলা করি।
আমার কাছে খুব-খারাপ-না-তবে-নিখুঁত সমাধান রয়েছে। আমি একটি স্প্রেডশিট তৈরি করেছি, পিএইচপি ব্যাকএন্ড সহ একটি এজেএক্স অ্যাপ। উল্লম্ব অক্ষটি সময় (দিন), লাইনগুলি উপাদান। ইনপুট (লাইনটি ব্যবহারকারী দ্বারা সম্পাদনা করা যেতে পারে), উল্লম্ব গড়, অনুভূমিক গড় / যোগফল এবং কিছু ডোমেন-নির্দিষ্ট পরিসংখ্যানের গণনাগুলির মতো উপাদান রয়েছে। এটির সাথে কেবল একটি সমস্যা রয়েছে: এটি "এক-মাত্রিক"। যতক্ষণ না আমি কেবল যোগফল এবং গড় এবং যা কিছু চাই, আমি নতুন লাইন যুক্ত করতে পারি এবং উপাদানটি গণনা করে এমন উপাদান তৈরি করতে পারি। তবে একটি শক্ত প্রতিবন্ধকতা রয়েছে: কলামগুলি সর্বদা দিন থাকে (আমি সপ্তাহ এবং মাস "ভিউ" তৈরি করেছি, যা দৈনিক ডেটা যোগ / গড় হিসাবে প্রদর্শন করে তবে এটি এখনও এক-মাত্রিক)। আমি এটি প্রদর্শন করতে পারি না, এটি সহযোগী এবং 7/24 চালানোর জন্য পিএইচপি ব্যাকএন্ড টাস্ক প্রয়োজন, এটি আমার হোস্ট সরবরাহকারীর দ্বারা সমর্থিত নয়।
সুতরাং, আমার মডেল (যা সর্বোত্তমভাবে বর্ণনা করা যেতে পারে: "অনুভূমিকভাবে দিনগুলি") অন্য ধরণের সমস্যাগুলি পরিচালনা করতে সক্ষম নয়।
আমার একটি ধারণা আছে, কীভাবে এই সমস্যাটি সমাধান করবেন: ট্যাব ।
আপনি যখন এক্সেলে আটকে যান এবং অন্য একটি টেবিল তৈরি করতে হবে, আপনি একই ট্যাবে একটি স্বতন্ত্র অঞ্চল ব্যবহার করতে পারেন বা অন্য ট্যাবটি খুলতে পারেন। এছাড়াও, ট্যাবগুলির মধ্যে উল্লেখ করা অস্বস্তিকর, আমি প্রথম পদ্ধতিটি পছন্দ করি। আমি মনে করি, ট্যাবগুলি একই পর্দায় প্রদর্শিত হবে, যেমন নন-ওভারল্যাপিং উইন্ডো।
প্রতিটি টেবিলের তার ক্রমবর্ধমান অক্ষ থাকতে হবে: উল্লম্ব, অনুভূমিক বা স্থির। উল্লম্ব ক্রমবর্ধমান টেবিলগুলিতে লাইন উপাদান রয়েছে (আমার দিন-ভিত্তিক স্প্রেডশিট হিসাবে), যেখানে সমস্ত কলামগুলিতে "একই" সূত্র রয়েছে, অনুভূমিক উপাদানগুলির কলামের উপাদান রয়েছে, স্থির আকারের টেবিলগুলি কোনও স্প্রেডশিটের মতোই।
সুতরাং, যখন ব্যবহারকারী কোনও নতুন লাইন / কলাম যুক্ত করবে তখন নতুন লাইন / কলামের একই সূত্র থাকবে।
এছাড়াও, স্প্রেডশিটে, আমি এই জিনিসটিকে ঘৃণা করি, আমার যদি 1000 লাইন থাকে তবে আমাকে 1000 বার একই সূত্রটি অনুলিপি করতে হবে। এটি বাগের উত্স (কিছু লাইনে সূত্রের পুরানো সংস্করণ রাখা), মেমরির অপচয় (একই সূত্র 1000x সংরক্ষণ করা)।
হয়তো আমি ভুল, এবং এই মডেলটিতে ধারণা বাগ আছে, তবে আমি আশা করি এটি একটি ভাল চিন্তা-চেতনামূলক ছিল।