স্প্রেডশিটের পেছনের ডেটা স্ট্রাকচারগুলি কী কী?


35

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

এর সহজতম সময়ে এটি কীভাবে কাজ করে?


1
আপনি যদি একটি স্প্রেডশিট বাস্তবায়ন দেখতে চান যা খুব ন্যূনতম গুই (এবং এইভাবে সমস্যার মাংস থেকে কম বিক্ষিপ্ততা) রয়েছে, দেখুন sc: লিনাক্স জার্নাল
পার্টিকেল

উত্তর:


21

এর মূল অংশে, একটি স্প্রেডশিট হ'ল ডায়নামিক টাইপ সহ একটি কার্যকরী ভাষা এবং প্রতিটি ফাংশন বা মান ম্যাট্রিক্সে একটি সেল হিসাবে উল্লেখ করা যায়।

ভালো জিনিস পরিবর্তে অংশ একটি সেল নিজেই স্থাপন করা হয়।(defn some-name ...)some-name

আপনি যদি ক্রিয়ামূলকভাবে ফাংশনাল ল্যাঙ্গুয়েজ আইডিয়া আপডেট করতে যান (যেমন ক্লোজারের জন্য হালকা টেবিল), আপনি স্প্রেডশিটের মতো একই কার্যকারিতা দেখতে পাবেন। একটি নামের সাথে একটি মান বাঁধুন, একটি মান লিখুন যে ফাংশন লিখুন, মান পরিবর্তন এবং ফাংশন আউটপুট সঙ্গে সঙ্গে পরিবর্তন হয়। এই লেখার ভালো কিছু করছেন হিসাবে একই =A1 + B2অবস্থান মধ্যে C3সীমা অতিক্রম করা।

সুতরাং, কার্যনির্বাহী প্রোগ্রামাররা প্রায়শই খেলনা প্রোগ্রাম হিসাবে স্প্রেডশিট লিখতে পছন্দ করেন ... এবং গবেষণা গবেষণাপত্রগুলির বিষয়ও। (হ্যাঁ, আমি দুঃখিত, তারা সকলেই একটি ACM.org পেওয়ালের পিছনে রয়েছে)

  • স্প্রেডশিট ফাংশনাল প্রোগ্রামিং

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

  • ফর্ম / 3: স্প্রেডশিট প্যারাডিজমের সীমানা অন্বেষণের জন্য প্রথম অর্ডারটির ভিজ্যুয়াল ভাষা

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

  • ফাংশন স্প্রেডশিট বাস্তবায়ন করা হচ্ছে

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


উইকিপিডিয়ায় স্প্রেডশিট শুরুর ফলে কীভাবে এটি বাস্তবায়ন করা যায় সে সম্পর্কে কিছু ইঙ্গিত দেয়:

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

জাভা লাইব্রেরিতে প্রকাশিত হিসাবে মডেল-ভিউ-কন্ট্রোলার দৃষ্টান্তের রূপরেখা থেকে এটি নির্মাণ । লেখক অ্যাপলেট উল্লেখ করেছেন (কিছুটা তারিখের পরে এটি '93 -'96 তে লেখা হয়েছিল) এবং তার ওয়েব পৃষ্ঠার উল্লেখ করেছেন যা http://csis.pace.edu/~bergin/ জাভা / অ্যাপলেটস htm এ যায় (হ্যাঁ সম্পর্কিত স্প্রেডশিট কোডের জন্য অ্যাপলেট) http://csis.pace.edu/~bergin/Java/Spreadsheet.java

আমি উল্লেখ করব যে স্প্রেডশিটের সম্পূর্ণতা, ডকুমেন্টেশন সহ এই অ্যাপলেট 570 লাইনে বড় নয়।

এটি বলেছিল যে ভাষার উপর নির্ভর করে আপনি সম্ভবত এটি একটি বিচ্ছিন্ন অ্যারেতে কেবল ফাংশন পয়েন্টার দিয়েই করতে পারেন।


32

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


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

1
@ ডকব্রাউনটি লুপে আটকে যাওয়া এবং প্রোগ্রামটি হিমায়িত এড়ানোর জন্য এটি সম্ভবত শেষ লিঙ্কে কেটে যায়, এটিই এটি ঘটায়।
ইজকাটা

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

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

6

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

খুব সাধারণ পাইথন সংস্করণ: http://code.activestate.com/recips/355045-spreadsheet/

এটি এই ব্লগ পোস্টে ব্যাখ্যা এবং বিস্তারিতভাবে ব্যাখ্যা করা হয়েছিল: http://ralsina.me/weblog/posts/BB585.html

এখানে একটি জিইউআই সহ একটি সাধারণ জাভাস্ক্রিপ্ট সংস্করণ রয়েছে: http://jsfiddle.net/ondras/hYfN3/


0

আমি একটি অজগর প্যাকেজ কোড করেছি যা আপনাকে এমএস এক্সেল ফাইলের উদ্দেশ্যমূলক ফাংশন কোষের কাঠামোটিকে পাইথনে রূপান্তর করতে দেয়। XL2py

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

আই / ও ট্রি-কাঠামো হিসাবে, আপনি পাইথনে যে কোনও মিনিমাইজেশন অ্যালগরিদম প্রয়োগ করতে পারেন তা নিজের ইচ্ছার হিসাবে ব্যবহার করতে পারেন।

আমি আপনাকে https://github.com/gusmaogabriels/XL2py এ একবার দেখার পরামর্শ দিচ্ছি

শুভেচ্ছা, গ্যাব্রিয়েল

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