जावास्क्रिप्ट में डेटा संरचनाएं
परिचय
जैसे-जैसे व्यावसायिक तर्क पीछे से आगे की ओर बढ़ता है, फ्रंटेंड इंजीनियरिंग में विशेषज्ञता कभी अधिक महत्वपूर्ण हो जाती है। सीमांत अभियंताओं के रूप में , हम उत्पादक होने के लिए रिएक्ट जैसे पुस्तकालयों को देखते हैं । बदले में पुस्तकालय देखें डेटा का प्रबंधन करने के लिए Redux जैसे राज्य पुस्तकालयों पर निर्भर करते हैं । साथ में, प्रतिक्रिया और Redux प्रतिक्रियाशील प्रोग्रामिंग प्रतिमान की सदस्यता लेते हैं जिसमें यूआई अपडेट डेटा परिवर्तनों पर प्रतिक्रिया करते हैं। तेजी से, बैकेंड केवल एपीआई सर्वर के रूप में कार्य करता है, केवल डेटा को पुनः प्राप्त करने और अपडेट करने के लिए अंतिम बिंदु प्रदान करता है। वास्तव में, बैकएंड डेटाबेस को केवल "फॉरवर्ड" करता हैफ़्रंटएंड, सभी कंट्रोलर लॉजिक को संभालने के लिए फ्रंटेंड इंजीनियर की अपेक्षा करता है। इस बढ़ती प्रवृत्ति के लिए माइक्रोसर्विसेज और ग्राफकॉइन की बढ़ती लोकप्रियता ।
अब, HTML और CSS की सौंदर्य संबंधी समझ होने के अलावा, फ्रंटेंड इंजीनियर्स को भी जावास्क्रिप्ट में मास्टर करने की उम्मीद है। क्लाइंट पर डेटास्टोर्स के रूप में सर्वर पर डेटाबेस की "प्रतिकृतियां" बन जाती हैं, मुहावरेदार डेटा संरचनाओं का अंतरंग ज्ञान महत्वपूर्ण हो जाता है। वास्तव में, अनुभव के एक इंजिनियर के स्तर अपने या भेद करने की उनकी क्षमता से अनुमान लगाया जा सकता है जब और क्यों एक विशेष डेटा संरचना का उपयोग करें।
खराब प्रोग्रामर कोड के बारे में चिंता करते हैं। अच्छे प्रोग्रामर डेटा संरचनाओं और उनके संबंधों के बारे में चिंता करते हैं।
- लाइनस टॉर्वाल्ड्स, लिनक्स और गिट के निर्माता
उच्च स्तर पर, मूल रूप से तीन प्रकार की डेटा संरचनाएं होती हैं। ढेर और कतार में हैं सरणी की तरह संरचनाओं कि में केवल अलग कैसे आइटम नहीं डाला गया और निकाल दिए जाते हैं। लिंक्ड सूचियाँ , पेड़ , और रेखांकन के साथ संरचनाओं नोड्स कि रखने के संदर्भ अन्य नोड के लिए। हैश टेबल्स डेटा को बचाने और खोजने के लिए हैश फ़ंक्शन पर निर्भर करते हैं ।
जटिलता के संदर्भ में, Stacks
और Queues
सबसे सरल हैं और से निर्माण किया जा सकता है Linked Lists
। Trees
और Graphs
सबसे जटिल हैं क्योंकि वे एक लिंक की गई सूची की अवधारणा का विस्तार करते हैं। Hash Tables
मज़बूती से प्रदर्शन करने के लिए इन डेटा संरचनाओं का उपयोग करने की आवश्यकता है। दक्षता के संदर्भ में, डेटा की रिकॉर्डिंग और भंडारण के लिए लिंक्ड लिस्ट सबसे इष्टतम हैं , जबकि हैश टेबल्स डेटा की खोज और पुनर्प्राप्ति के लिए सबसे अधिक प्रदर्शन योग्य हैं ।
यह समझाने के लिए कि क्यों और कब , यह आलेख इन निर्भरताओं के क्रम के अनुरूप होगा। शुरू करते हैं!
ढेर
यकीनन सबसे महत्वपूर्ण Stack
जावास्क्रिप्ट में है कॉल स्टैक जहाँ हम में धक्का गुंजाइश एक की function
जब भी हम यह निष्पादित। प्रोग्रामेटिक रूप से, यह सिर्फ array
दो प्रिंट किए गए संचालन के साथ है: push
और pop
। पुश तत्वों को सरणी के शीर्ष पर जोड़ता है , जबकि पॉप उन्हें उसी स्थान से हटा देता है। दूसरे शब्दों में, स्टैक "लास्ट इन, फर्स्ट आउट" प्रोटोकॉल (LIFO) का अनुसरण करता है।
नीचे Stack
कोड में एक उदाहरण है । ध्यान दें कि हम स्टैक के क्रम को उल्टा कर सकते हैं : नीचे शीर्ष बन जाता है और शीर्ष नीचे हो जाता है। जैसे, हम सरणी के उपयोग कर सकते हैं unshift
और shift
तरीकों के स्थान पर push
और pop
, क्रमशः।
जैसे-जैसे वस्तुओं की संख्या बढ़ती जाती है, push
/ pop
बढ़ती जाती है unshift
/ की तुलना में अधिक प्रदर्शन होता है, shift
क्योंकि प्रत्येक वस्तु को बाद में नहीं बल्कि पूर्व में पुनर्व्यवस्थित किया जाना चाहिए।
कतार
जावास्क्रिप्ट एक घटना-संचालित प्रोग्रामिंग भाषा है जो गैर-अवरुद्ध संचालन का समर्थन करना संभव बनाती है । आंतरिक रूप से, ब्राउज़र केवल प्रबंधन करता है एक थ्रेड का उपयोग कर, पूरे जावा स्क्रिप्ट कोड को चलाने के लिए घटना कतार को enqueuelisteners
और घटना पाश को सुनने पंजीकृत के लिए events
। एक एकल-थ्रेडेड वातावरण में समर्थन asynchronicity करने के लिए (CPU संसाधनों को बचाने के लिए और वेब अनुभव को बढ़ाने), listener functions
विपंक्ति और केवल निष्पादित जब कॉल स्टैक खाली है। "अतुल्यकालिक शैली" को अतुल्यकालिक कोड के निष्पादन की अनुमति देने के लिए Promises
इस घटना-संचालित वास्तुकला पर निर्भर करें जो अन्य कार्यों को अवरुद्ध नहीं करता है।
प्रोग्रामेटिक रूप से, Queues
केवल दो प्राथमिक ऑपरेशनों के साथ एरेज़ हैं: unshift
और pop
। Unshift enqueues करने के लिए आइटम अंत सरणी के हैं, जबकि पॉप dequeues उन लोगों से शुरुआत सरणी के। दूसरे शब्दों में, कतार "पहले, पहले बाहर" प्रोटोकॉल (FIFO) का अनुसरण करती है। दिशा उलट है, तो हम जगह ले सकता है unshift
और pop
साथ push
और shift
, क्रमशः।
Queue
कोड में एक उदाहरण :
लिंक्ड सूची
सरणियों की तरह, अनुक्रमिक क्रम Linked Lists
में डेटा तत्वों को संग्रहीत करें । अनुक्रमित रखने के बजाय, लिंक की गई सूचियां अन्य तत्वों को इंगित करती हैं । पहले नोड कहा जाता है सिर , जबकि पिछले नोड कहा जाता है पूंछ । एक एकल-लिंक्ड सूची में , प्रत्येक नोड में अगले नोड के लिए केवल एक पॉइंटर होता है । यहाँ, प्रमुख वह है जहाँ हम बाकी की सूची से नीचे चलना शुरू करते हैं। एक में दोगुना से जुड़े सूची , करने के लिए एक सूचक पिछले नोड भी रखा जाता है। इसलिए, हम पूंछ से भी शुरू कर सकते हैं और सिर की ओर "पीछे" चल सकते हैं ।
लिंक की गई सूचियों में निरंतर-समय सम्मिलन और विलोपन होते हैं क्योंकि हम केवल संकेत बदल सकते हैं। सरणियों में समान संचालन करने के लिए रैखिक समय की आवश्यकता होती है क्योंकि बाद की वस्तुओं को स्थानांतरित करने की आवश्यकता होती है। इसके अलावा, लिंक की गई सूचियां तब तक बढ़ सकती हैं जब तक वहां जगह है। हालाँकि, यहां तक कि "डायनेमिक" सरणियाँ जो स्वचालित रूप से आकार बदलती हैं अप्रत्याशित रूप से महंगी हो सकती हैं। बेशक, वहाँ हमेशा एक व्यापार है। किसी लिंक की गई सूची में एक तत्व को देखने या संपादित करने के लिए, हमें पूरी लंबाई को चलना पड़ सकता है जो रैखिक समय के बराबर है। सरणी अनुक्रमित के साथ, हालांकि, ऐसे ऑपरेशन तुच्छ हैं।
सरणियों की तरह, लिंक की गई सूची स्टैक के रूप में काम कर सकती हैं । यह उतना ही सरल है जितना कि सिर को सम्मिलन और हटाने के लिए एकमात्र स्थान होना चाहिए। लिंक की गई सूचियाँ कतारों के रूप में भी काम कर सकती हैं । यह एक दोहरी-लिंक की गई सूची के साथ प्राप्त किया जा सकता है, जहां पूंछ पर सम्मिलन होता है और सिर पर निष्कासन होता है, या इसके विपरीत। बड़ी संख्या में तत्वों के लिए, कतार को लागू करने का यह तरीका सरणियों का उपयोग करने की तुलना में अधिक अच्छा है क्योंकि shift
और सरणियों unshift
की शुरुआत में संचालन को प्रत्येक बाद वाले तत्व को फिर से अनुक्रमित करने के लिए रैखिक समय की आवश्यकता होती है।
लिंक्ड लिस्ट क्लाइंट और सर्वर दोनों पर उपयोगी हैं। क्लाइंट पर, राज्य प्रबंधन पुस्तकालय जैसे Redux एक लिंक्ड-लिस्ट फैशन में अपने मिडलवेयर लॉजिक की संरचना करते हैं। जब क्रियाओं को भेजा जाता है, तो उन्हें एक मिडलवेयर से अगले तक पाइप किया जाता है, जब तक कि रेड्यूसर तक पहुंचने से पहले सभी का दौरा नहीं किया जाता है । सर्वर पर, एक्सप्रेस जैसे वेब फ्रेमवर्क भी इसी तरह से अपने मिडलवेयर लॉजिक की संरचना करते हैं। जब कोई अनुरोध प्राप्त होता है, तो उसे एक मिडलवेयर से अगले तक पाइप किया जाता है जब तक कि एक प्रतिक्रिया जारी नहीं की जाती है।
Doubly-Linked List
कोड में एक उदाहरण :
पेड़
ए Tree
एक लिंक की गई सूची की तरह है , सिवाय इसके कि यह एक पदानुक्रमित संरचना में कई बच्चे नोड्स का संदर्भ रखता है । दूसरे शब्दों में, प्रत्येक नोड में एक से अधिक माता-पिता नहीं हो सकते। द डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM) एक ऐसी संरचना है, जिसमें एक रूट नोड होता है जो शाखाओं में और नोड्स में होता है, जो सभी परिचित HTML टैग्स में उप-विभाजित होता है । हुड के तहत, प्रतिक्रियाशील घटकों के साथ प्रोटोटाइप विरासत और संरचना भी पेड़ संरचनाओं का उत्पादन करती है। बेशक, DOM के इन-मेमोरी प्रतिनिधित्व के रूप में, React का वर्चुअल DOM एक ट्री स्ट्रक्चर भी है।html
head
body
द्विआधारी खोज वृक्ष विशेष प्रत्येक नोड से अधिक नहीं हो सकते हैं दो बच्चों । बाईं बच्चे वह यह है कि एक मान होना चाहिए की तुलना में छोटे , या उसके माता पिता के बराबर है, जबकि सही बच्चे एक होना आवश्यक है अधिक से अधिक मूल्य । इस तरह से संरचित और संतुलित, हम लघुगणक समय में किसी भी मूल्य की खोज कर सकते हैं क्योंकि हम प्रत्येक पुनरावृत्ति के साथ शाखाकरण के एक-आधे हिस्से को अनदेखा कर सकते हैं। लॉगरिदमिक समय में सम्मिलित करना और हटाना भी हो सकता है। इसके अलावा, सबसे छोटा और सबसे बड़ा मूल्य क्रमशः बाईं और सबसे दाहिनी पत्ती पर आसानी से पाया जा सकता है ।
पेड़ के माध्यम से ट्रैवर्सल एक ऊर्ध्वाधर या क्षैतिज प्रक्रिया में हो सकता है । ऊर्ध्वाधर दिशा में गहराई-प्रथम ट्रैवर्सल (DFT) में, पुनरावर्ती एल्गोरिदम एक पुनरावृत्त की तुलना में अधिक सुरुचिपूर्ण है। नोड्स को प्री-ऑर्डर , इन-ऑर्डर या पोस्ट-ऑर्डर में ट्रेस किया जा सकता है । यदि हमें पत्तियों का निरीक्षण करने से पहले जड़ों का पता लगाने की आवश्यकता है, तो हमें पूर्व-आदेश का चयन करना चाहिए । लेकिन, अगर हमें जड़ों से पहले पत्तियों का पता लगाने की आवश्यकता है, तो हमें पोस्ट-ऑर्डर चुनना चाहिए । जैसा कि इसके नाम का अर्थ है, इन-ऑर्डर हमें नोड्स को अनुक्रमिक क्रम में पार करने में सक्षम बनाता है । यह संपत्ति बाइनरी सर्च ट्रीज़ को छँटाई के लिए इष्टतम बनाती है ।
क्षैतिज दिशा में चौड़ाई-प्रथम ट्रैवर्सल (BFT) में पुनरावर्ती की तुलना में पुनरावृत्त दृष्टिकोण अधिक सुरुचिपूर्ण है। इसके लिए queue
प्रत्येक पुनरावृत्ति के साथ सभी बच्चों के नोड्स को ट्रैक करने के लिए उपयोग की आवश्यकता होती है । हालाँकि, इस तरह की कतार के लिए आवश्यक स्मृति तुच्छ नहीं हो सकती है। यदि पेड़ का आकार गहरे से चौड़ा है, तो BFT DFT से बेहतर विकल्प है। इसके अलावा, बीएफटी किसी भी दो नोड्स के बीच का रास्ता सबसे कम संभव है।
Binary Search Tree
कोड में एक उदाहरण :
ग्राफ़
यदि एक पेड़ एक से अधिक माता-पिता के लिए स्वतंत्र है, तो यह एक हो जाता है Graph
। किनारों है कि एक साथ एक ग्राफ में कनेक्ट नोड्स किया जा सकता है का निर्देशन किया या अनिर्दिष्ट, भारित या अनिर्धारित । किनारों जिसमें दिशा और वजन दोनों होते हैं वे वैक्टर के अनुरूप होते हैं ।
मिक्सिंस और डेटा ऑब्जेक्ट के रूप में कई विरासत जो कई-से-कई रिश्ते हैं, ग्राफ संरचनाओं का निर्माण करते हैं। एक सामाजिक नेटवर्क और इंटरनेट स्वयं भी ग्राफ हैं। प्रकृति में सबसे जटिल ग्राफ हमारे मानव मस्तिष्क है, जो तंत्रिका नेटवर्क मशीनों को अधीक्षण देने के लिए दोहराने का प्रयास करते हैं ।
Graph
कोड में एक उदाहरण :
टी
हैश टेबल
एक हैश टेबल एक शब्दकोश जैसी संरचना है जो मूल्यों की कुंजी है । प्रत्येक जोड़ी की स्मृति में स्थान एक द्वारा निर्धारित किया जाता है , जो एक कुंजी को स्वीकार करता है और उस पते को वापस करता है जहां जोड़ी को सम्मिलित और पुनः प्राप्त किया जाना चाहिए। यदि दो या दो से अधिक कुंजियाँ एक ही पते पर परिवर्तित होती हैं, तो टकराव हो सकता है। मजबूती के लिए, और इन घटनाओं को यह सुनिश्चित करने के लिए अनुमान लगाना चाहिए कि सभी डेटा को पुनर्प्राप्त किया जा सकता है और कोई डेटा ओवरराइट नहीं किया गया है। आमतौर पर, सबसे सरल समाधान प्रदान करते हैं। बहुत बड़ी टेबल होने से भी मदद मिलती है।hash function
getters
setters
linked lists
अगर हमें पता है कि हमारे पते पूर्णांक अनुक्रमों में होंगे, तो हम बस Arrays
हमारे कुंजी-मूल्य जोड़े को संग्रहीत करने के लिए उपयोग कर सकते हैं । अधिक जटिल पते मैपिंग के लिए, हम उपयोग Maps
या कर सकते हैं Objects
। हैश टेबल में औसतन निरंतर समय का सम्मिलन और लुकअप होता है । टकराव और आकार बदलने के कारण, यह नगण्य लागत रैखिक समय तक बढ़ सकती है। व्यवहार में, हालांकि, हम मान सकते हैं कि हैश फ़ंक्शन काफी चतुर हैं कि टकराव और आकार बदलना दुर्लभ और सस्ता है। यदि कुंजियाँ पतों का प्रतिनिधित्व करती हैं, और इसलिए कोई हैशिंग की आवश्यकता नहीं है, तो एक साधारण object literal
पर्याप्त है। बेशक, वहाँ हमेशा एक व्यापार है। कुंजी और मूल्यों के बीच सरल पत्राचार, और चाबियाँ और पते के बीच सरल संबंध, डेटा के बीच संबंधों का त्याग । इस प्रकार, डेटा संग्रहीत करने के लिए हैश तालिकाओं को अपनाया जाता है ।
यदि कोई ट्रेडऑफ़ निर्णय संग्रहण पर पुनर्प्राप्ति का पक्षधर है, तो कोई अन्य डेटा संरचना लुकअप , प्रविष्टि और विलोपन के लिए हैश तालिकाओं की गति से मेल नहीं खा सकती है । इसलिए इसमें कोई आश्चर्य की बात नहीं है कि इसका इस्तेमाल हर जगह होता है । डेटाबेस से, सर्वर से, क्लाइंट तक, हैश टेबल और विशेष रूप से, हैश फ़ंक्शंस , सॉफ्टवेयर अनुप्रयोगों के प्रदर्शन और सुरक्षा के लिए महत्वपूर्ण हैं। डेटाबेस क्वेरीज़ की गति अनुक्रमित की गई तालिकाओं को ध्यान में रखते हुए निर्भर करती है जो क्रमबद्ध क्रम में रिकॉर्ड करती हैं । इस तरह, द्विआधारी खोजों को लघुगणक समय में प्रदर्शन किया जा सकता है , विशेष रूप से बिग डेटा के लिए एक विशाल प्रदर्शन जीत ।
क्लाइंट और सर्वर दोनों पर, कई लोकप्रिय पुस्तकालय प्रदर्शन को अधिकतम करने के लिए संस्मरण का उपयोग करते हैं । हैश तालिका में इनपुट और आउटपुट का रिकॉर्ड रखने से, एक ही इनपुट के लिए फ़ंक्शन केवल एक बार चलते हैं। लोकप्रिय रीसेलेट लाइब्रेरी Redux -enabled अनुप्रयोगों mapStateToProps
में फ़ंक्शन का अनुकूलन करने के लिए इस कैशिंग रणनीति का उपयोग करती है। वास्तव में, हुड के तहत, जावास्क्रिप्ट इंजन भी हैश तालिकाओं का उपयोग करता है जिसे सभी को संग्रहीत करने के लिए ढेर कहा जाता है और हम बनाते हैं। उन्हें कॉल स्टैक पर पॉइंटर्स से एक्सेस किया जाता है ।variables
primitives
इंटरनेट ही यह भी पर निर्भर करता है एल्गोरिदम hashing सुरक्षित रूप से कार्य करने के लिए। इंटरनेट की संरचना ऐसी है कि किसी भी कंप्यूटर एक के माध्यम से किसी अन्य कंप्यूटर के साथ संवाद कर सकते हैं वेब जुड़े उपकरणों की। जब भी कोई डिवाइस इंटरनेट पर लॉग इन करता है, तो यह एक राउटर भी बन जाता है, जिसके माध्यम से डेटा स्ट्रीम यात्रा कर सकते हैं। हालाँकि, यह दोधारी तलवार है। एक विकेन्द्रीकृत वास्तुकला का मतलब है कि नेटवर्क में कोई भी उपकरण डेटा पैकेजों को सुन और छेड़छाड़ कर सकता है जो इसे रिले करने में मदद करता है। MD5 और SHA256 जैसे हैश फ़ंक्शन ऐसे मानव-मध्य हमलों को रोकने में महत्वपूर्ण भूमिका निभाते हैं । एचटीटीपीएस से अधिक ई-कॉमर्स केवल इसलिए सुरक्षित है क्योंकि इन हैशिंग कार्यों का उपयोग किया जाता है।
इंटरनेट से प्रेरित, ब्लॉकचैन प्रौद्योगिकियां प्रोटोकॉल स्तर पर वेब की बहुत संरचना को खोलना चाहती हैं । हैश फंक्शन का उपयोग कर बनाने के लिए इनके द्वारा अपरिवर्तनीय उंगलियों के निशान हर के लिए ब्लॉक डेटा की , अनिवार्य रूप से पूरे डेटाबेस मौजूद कर सकते हैं खुले तौर पर वेब पर सभी लोगों को देखते हैं और के लिए योगदान करने के लिए। संरचनात्मक रूप से, ब्लॉकचाइन्स क्रिप्टोग्राफिक हैश के द्विआधारी पेड़ों की सिर्फ एक-लिंक्ड सूची हैं। हैशिंग इतनी गूढ़ है कि वित्तीय लेनदेन का एक डेटाबेस बनाया जा सकता है और किसी के द्वारा खुले में अपडेट किया जा सकता है! अविश्वसनीय निहितार्थ पैसे बनाने के लिए भयानक शक्ति है। एक बार केवल सरकारों और केंद्रीय बैंकों के लिए क्या संभव था, अब कोई भी सुरक्षित रूप से अपनी मुद्रा बना सकता है ! यह इथेरियम के संस्थापक और बिटकॉइन के छद्म नाम के संस्थापक द्वारा महसूस की गई महत्वपूर्ण अंतर्दृष्टि है ।
जैसे-जैसे अधिक से अधिक डेटाबेस खुले में निकलते हैं, वैसे सभी फ्रंट-लेवल क्रिप्टोग्राफ़िक जटिलताओं को समेटने वाले फ्रंटेंड इंजीनियर्स की आवश्यकता और भी बढ़ेगी। इस भविष्य में, मुख्य से अलग हो जाएगा उपयोगकर्ता अनुभव ।
Hash Table
कोड में एक उदाहरण :
इन डेटा संरचनाओं का उपयोग करके एल्गोरिदम अभ्यास के लिए और अधिक, बाहर की जाँच करें: जावास्क्रिप्ट में एल्गोरिदम: 40 समस्याएं, समाधान और स्पष्टीकरण
निष्कर्ष
जैसे-जैसे तर्क सर्वर से क्लाइंट तक बढ़ता जाता है, वैसे ही फ्रंट पर डेटा लेयर सर्वोपरि होती जाती है। इस परत का उचित प्रबंधन डेटा संरचनाओं की महारत पर जोर देता है जिस पर तर्क टिकी हुई है। कोई भी डेटा संरचना हर स्थिति के लिए एकदम सही नहीं है क्योंकि एक संपत्ति के लिए अनुकूलन हमेशा दूसरे को खोने के लिए बराबर होता है। कुछ संरचनाएं डेटा संग्रहीत करने में अधिक कुशल होती हैं, जबकि कुछ अन्य उनके माध्यम से खोज करने के लिए अधिक प्रदर्शन करते हैं। आमतौर पर, एक को दूसरे के लिए बलिदान किया जाता है। एक चरम पर, लिंक की गई सूची भंडारण के लिए इष्टतम होती है और इसे स्टैक्स और कतारों ( रैखिक समय) में बनाया जा सकता है । दूसरे पर, कोई अन्य संरचना हैश टेबल ( निरंतर समय) की खोज की गति से मेल नहीं खा सकती है । पेड़ की संरचनाएं बीच ( लॉगरिदमिक समय) में कहीं झूठ होती हैं , और केवल एक ग्राफ प्रकृति की सबसे जटिल संरचना को चित्रित कर सकता है: मानव मस्तिष्क ( बहुपद समय )। एक रॉकस्टार इंजीनियर की पहचान क्यों और कब स्पष्ट होती है, यह जानने के लिए कौशल होना ।
इन डेटा संरचनाओं के उदाहरण हर जगह पाए जा सकते हैं । डेटाबेस से, सर्वर के लिए, ग्राहक, और यहां तक कि JavaScript इंजन खुद को, इन डेटा संरचनाओं ठोस क्या अनिवार्य रूप से बस रहे हैं पर और बंद सिलिकॉन चिप्स पर "स्विच" सजीव "वस्तुओं" में। हालांकि केवल डिजिटल, इन वस्तुओं का समाज पर प्रभाव जबरदस्त है। इस लेख को स्वतंत्र रूप से और सुरक्षित रूप से पढ़ने की आपकी क्षमता इंटरनेट की भयानक वास्तुकला और इसके डेटा की संरचना से जुड़ी है। फिर भी, यह केवल शुरुआत है। आने वाले दशकों में आर्टिफिशियल इंटेलिजेंस और विकेंद्रीकृत ब्लॉकचाइन्स को फिर से परिभाषित करना होगा जो मानव होने का मतलब है और उन संस्थानों की भूमिका है जो उनके जीवन को नियंत्रित करते हैं। अस्तित्वहीन अंतर्दृष्टि और संस्थागत विघटन एक ऐसे इंटरनेट की विशेषताएं होंगी जो अंत में परिपक्व हो गई हैं।
मदद हमें इस न्यायसंगत भविष्य, हम पर की दिशा में संक्रमण के लिए HeartBank® के चैनल नेटवर्क कृत्रिम न्यूरॉन्स हमारे रंगना Kiitos blockchain पर इस मुद्दे पैसे के लिए अधिकार, क्षमता मानव की स्थिति सहानुभूति के साथ मिलकर साथ। से गुमनाम धन्यवाद हम देने के लिए और करने के लिए लिख कर प्राप्त Kiitos , Kiitos हमारे बारे में सीखता है kindnesses और उनके प्रभाव धीरे-धीरे और रहस्यमय प्रक्रिया है कि हमारे व्यक्तिगत स्वतंत्रता और स्वतंत्रता को बरकरार रखता है में, इस तरह से कि हम दोनों के बीच आर्थिक असमानता को कम कर देता में पुरस्कृत,। शायद प्रकृति में अंतिम ग्राफ संरचना मानव मस्तिष्क नहीं है, लेकिन मानव in, अगर केवल हम उन सभी दिलों को जोड़कर देख सकते हैं जो हमें जोड़ते हैं।
ब्लॉकचेन में रुचि रखते हैं ? Ethereum सीखें और हमारे लिए काम करें!
Ethereum dApp डेवलपमेंट के लिए एक पूर्ण मानसिक मॉडल