<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Nucleoid</title>
    <description>The latest articles on Forem by Nucleoid (@nucleoid).</description>
    <link>https://forem.com/nucleoid</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2573%2F1734871b-2809-4197-b413-ad05ac0e9b5a.png</url>
      <title>Forem: Nucleoid</title>
      <link>https://forem.com/nucleoid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nucleoid"/>
    <language>en</language>
    <item>
      <title>📰 Neuro-Symbolic AI Newsletter | December 2024</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Mon, 30 Dec 2024 10:20:53 +0000</pubDate>
      <link>https://forem.com/nucleoid/neuro-symbolic-ai-newsletter-december-2024-1m6n</link>
      <guid>https://forem.com/nucleoid/neuro-symbolic-ai-newsletter-december-2024-1m6n</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.springerprofessional.de/en/learning-from-symbolic-knowledge-for-neural-networks/50391480" rel="noopener noreferrer"&gt;Learning from Symbolic Knowledge for Neural Networks&lt;/a&gt;&lt;br&gt;
    Published in: Neuro-Symbolic Artificial Intelligence. Publisher: Springer Nature Singapore. Log in. Introducing the latest innovation: AI-assisted ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://news.ycombinator.com/item?id=42521865" rel="noopener noreferrer"&gt;Does current AI represent a dead end?&lt;/a&gt;&lt;br&gt;
    What are your thoughts on neuro-symbolic integration ... neural networks with the reasoning and knowledge representation of symbolic AI) ?
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://marktechpost.com" rel="noopener noreferrer"&gt;Meet LLMSA: A Compositional Neuro-Symbolic Approach for Compilation&lt;/a&gt;&lt;br&gt;
    Home Tech News AI Paper Summary Meet LLMSA: A Compositional Neuro-Symbolic Approach for Compilation-Free, Customizable Static Analysis with...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://towardsdatascience.com/the-80-20-problem-of-generative-ai-a-ux-research-insight-445e8aa3bbd3" rel="noopener noreferrer"&gt;The 80/20 problem of generative AI — a UX research insight&lt;/a&gt;&lt;br&gt;
    Image Depicting the Evolution of SWOT Analysis using AI and Neuro-symbolic AI created by. Towards AI. In. Towards AI. by. Mukundan Sankar · The Secret ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://law.stanford.edu/2024/12/20/breakthroughs-in-llm-reasoning-show-a-path-forward-for-neuro-symbolic-legal-ai/" rel="noopener noreferrer"&gt;Breakthroughs in LLM Reasoning Show a Path Forward for Neuro-symbolic Legal AI&lt;/a&gt;&lt;br&gt;
    Our finding opens up many directions in the application of neuro-symbolic AI to legal problems, which we feel uniquely positioned to pursue with ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.kget.com/business/press-releases/ein-presswire/769872979/allegrograph-named-a-2025-trend-setting-product/" rel="noopener noreferrer"&gt;AllegroGraph Named a 2025 Trend-Setting Product&lt;/a&gt;&lt;br&gt;
    “Neuro-Symbolic AI represents the next evolution of artificial intelligence, where the integration of symbolic reasoning with machine learning ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://analyticsindiamag.com/ai-features/the-rise-of-reasoning-models/" rel="noopener noreferrer"&gt;The Rise of Reasoning Models&lt;/a&gt;&lt;br&gt;
    The integration of neuro-symbolic AI with traditional deep learning has emerged as a promising direction, allowing systems to both learn from data ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.unite.ai/how-neurosymbolic-ai-can-fix-generative-ais-reliability-issues/" rel="noopener noreferrer"&gt;How Neurosymbolic AI Can Fix Generative AI's Reliability Issues&lt;/a&gt;&lt;br&gt;
    This is where neurosymbolic AI can help. By combining the power of neural networks with the logic of symbolic AI, it could solve some of the ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.datasciencecentral.com/best-practices-for-ai-based-security-for-2025/" rel="noopener noreferrer"&gt;Best practices for AI-based security for 2025&lt;/a&gt;&lt;br&gt;
    Neuro-symbolic AI ... The neuro-symbolic AI approach combines (1) statistical methods of machine learning with (2) non-statistical reasoning techniques ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.darpa.mil/research/programs/assured-neuro-symbolic-learning-and-reasoning" rel="noopener noreferrer"&gt;Assured Neuro Symbolic Learning and Reasoning (ANSR)&lt;/a&gt;&lt;br&gt;
    DARPA is motivating new thinking and approaches to artificial intelligence development to enable high levels of trust in autonomous systems through ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://tribune.com.pk/story/2516113/unlocking-the-future-of-intelligent-health-and-ai-key-learnings-from-the-gartner-it-symposium-2024" rel="noopener noreferrer"&gt;Unlocking the future of intelligent Health and AI: key learnings from the Gartner IT Symposium 2024&lt;/a&gt;&lt;br&gt;
    Looking ahead, Gartner identified key trends for 2025, including neurosymbolic AI, multi-agent systems, and the evolution of decision intelligence.
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://analyticsindiamag.com/ai-features/when-chess-champion-gukesh-dommaraju-met-demis-hassabis/" rel="noopener noreferrer"&gt;When Chess Champion Gukesh Dommaraju Met Demis Hassabis&lt;/a&gt;&lt;br&gt;
    Google DeepMind is blending scaling with architectural innovation, betting on multimodal and neuro-symbolic AI to propel it towards AGI. Google ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.digitaljournal.com/tech-science/deepak-kaul-awarded-a-2024-global-recognition-award-for-ai-and-cybersecurity-contributions/article" rel="noopener noreferrer"&gt;Deepak Kaul awarded a 2024 Global Recognition Award for AI and cybersecurity contributions&lt;/a&gt;&lt;br&gt;
    On the more academic side, his published research on dynamic upsell systems and neuro-symbolic AI has contributed to understanding real-time decision- ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://hitconsultant.net/2024/12/12/neuro-symbolic-ai-in-healthcare-unlocking-precision-medicine/" rel="noopener noreferrer"&gt;Neuro-Symbolic AI in Healthcare: Unlocking Precision Medicine&lt;/a&gt;&lt;br&gt;
    Just as chemists combine knowledge of fundamental elements with pattern recognition to understand complex chemical systems, neuro-symbolic AI aims to ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://hackernoon.com/new-ai-speaks-two-languages-at-once-and-just-might-crack-agi" rel="noopener noreferrer"&gt;New AI Speaks Two Languages at Once and Just Might Crack AGI&lt;/a&gt;&lt;br&gt;
    What is Neuro-Symbolic AI? Neuro-Symbolic AI combines the pattern-recognition capabilities of neural networks (subsymbolic AI) with the logical ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://fortune.com/2024/12/09/neurosymbolic-ai-deep-learning-symbolic-reasoning-reliability/" rel="noopener noreferrer"&gt;Generative AI can't shake its reliability problem. Some say 'neurosymbolic AI' is the answer&lt;/a&gt;&lt;br&gt;
    Neurosymbolic AI could be a best-of-both-worlds marriage between deep learning and "good old-fashioned AI."
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.ccn.com/news/technology/neurosymbolic-ai-unlocks-human-like-intelligence/" rel="noopener noreferrer"&gt;Neurosymbolic AI Could Be the Key to Unlocking Human-Like Intelligence&lt;/a&gt;&lt;br&gt;
    Neurosymbolic approaches augment neural networks with rule-based logic to better approximate human reasoning. The technology could help AI overcome ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://www.forbes.com/sites/lanceeliot/2024/12/06/amazons-hybrid-ai-safeguarding-approach-spurs-rules-checking-prompts-that-catch-ai-hallucinations-and-keep-llms-honest/" rel="noopener noreferrer"&gt;Amazon's Hybrid AI Safeguarding Approach Spurs Rules-Checking Prompts That Catch ...&lt;/a&gt;&lt;br&gt;
    AI, also commonly referred to as neuro-symbolic AI. It goes like this. Generative AI and LLMs are principally based on pattern-matching across ...
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;🔗 &lt;a href="https://fortune.com/2024/12/04/reasoner-neurosymbolic-ai-wayne-chang/" rel="noopener noreferrer"&gt;Wayne Chang's Reasoner claims big AI reliability breakthroughs&lt;/a&gt;&lt;br&gt;
    The serial entrepreneur says Reasoner's neurosymbolic approach avoids the risks of using generative AI.
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>news</category>
      <category>discuss</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>ARC, Neuro-Symbolic AI, Intermediate Language | Road to AGI | Recap 01</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Thu, 28 Nov 2024 17:12:06 +0000</pubDate>
      <link>https://forem.com/nucleoid/roadtoagi-recap-01-arc-neuro-symbolic-ai-intermediate-language-40cd</link>
      <guid>https://forem.com/nucleoid/roadtoagi-recap-01-arc-neuro-symbolic-ai-intermediate-language-40cd</guid>
      <description>&lt;p&gt;Hello everyone! 👋&lt;/p&gt;

&lt;p&gt;Over the past few months, we've been working on ARC benchmark as a part of our Neuro-Symbolic AI project that we’ve been able to achieve some promising results, and it feels incredible to see our approach—combining symbolic reasoning with neural network capabilities—making meaningful progress.&lt;/p&gt;




&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/L2Arjj6LV5M"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Nucleoid (aka &lt;code&gt;nuc&lt;/code&gt;) adopts a Neuro-Symbolic AI architecture but introduces a novel twist: the intermediate language as a universal bridge between Neural Networks and Symbolic Systems.&lt;/p&gt;

&lt;p&gt;The intermediate language  plays a critical role in uniting the two paradigms. Based on our findings, the &lt;code&gt;nuc&lt;/code&gt; lang helps Neural Networks is to abstract patterns, which is eventually used in Symbolic System, and Knowledge Graph is built with logic and data representations in the intermediate language. In addition, LLMs surprisingly behaves near deterministic while running on ARC-AGI.&lt;/p&gt;

&lt;p&gt;Before diving into our approach:&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ARC Benchmark?
&lt;/h2&gt;

&lt;p&gt;The Abstraction and Reasoning Corpus (ARC) is a benchmark dataset and challenge designed to test AGI systems on their ability to perform human-like reasoning and abstraction. Developed by François Chollet, ARC is not a typical machine learning dataset—it intentionally avoids tasks solvable by brute-force statistical techniques or large-scale data training.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiijrvq64twfml6ykklui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiijrvq64twfml6ykklui.png" alt="ARC Puzzle" width="395" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Our Progress 🐋
&lt;/h3&gt;

&lt;p&gt;We were able to get very promising and exciting numbers (Still incomplete tho). For example, in this puzzle, our project responded with this result  &lt;u&gt;without any prompt engineering&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;More details here 👇&lt;br&gt;
&lt;a href="https://github.com/NucleoidAI/Nucleoid/tree/main/arc" rel="noopener noreferrer"&gt;https://github.com/NucleoidAI/Nucleoid/tree/main/arc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zip64onpk2uh5bj0rmk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0zip64onpk2uh5bj0rmk.png" alt="nuc Result" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;...and this is ChatGPT o-1's answer&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fouw1mcgi8ypzqjuqfu99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fouw1mcgi8ypzqjuqfu99.png" alt="ChatGPT o-1 Result" width="800" height="860"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🌱 What is Neuro-Symbolic AI?
&lt;/h2&gt;

&lt;p&gt;Neuro-Symbolic AI combines the pattern-recognition capabilities of neural networks (subsymbolic AI) with the logical reasoning and structured knowledge of symbolic AI to create robust and versatile systems. Neural networks excel at learning from unstructured data, like images or text, while symbolic AI handles explicit rules and reasoning, offering transparency and precision. By integrating these approaches, Neuro-Symbolic AI enables generalization from smaller datasets, improves explainability, and supports tasks requiring both adaptability and logical consistency. This hybrid approach is pivotal for advancing AGI, as it bridges the gap between learning from data and reasoning through.&lt;/p&gt;
&lt;h3&gt;
  
  
  🌍 System 1 and System 2
&lt;/h3&gt;

&lt;p&gt;Neuro-Symbolic AI aligns intriguingly with the concepts from Daniel Kahneman’s Thinking, Fast and Slow, which describes two systems of human thought: System 1 (fast, intuitive, and automatic) and System 2 (slow, deliberate, and logical).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Neural Networks in Neuro-Symbolic AI parallel System 1, as they excel at processing unstructured data, recognizing patterns, and generating outputs rapidly without explicit reasoning. They mimic intuitive, subconscious processes that are data-driven and reactive.&lt;/li&gt;
&lt;li&gt;Symbolic AI, on the other hand, mirrors System 2, as it relies on explicit rules, logic, and structured reasoning to solve problems in a deliberate and explainable manner, akin to conscious, rational thought.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining these two paradigms, Neuro-Symbolic AI reflects the dual systems of human cognition, enabling it to tackle problems requiring both fast intuition (pattern recognition) and slow reasoning (logic and planning). This hybrid approach not only enhances AI's adaptability but also brings it closer to human-like intelligence by integrating the strengths of both modes of thought.&lt;/p&gt;
&lt;h3&gt;
  
  
  🦆 Duck Test
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59ng9tl0l5a3qannvzvg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59ng9tl0l5a3qannvzvg.gif" alt="Duck Test" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck"&lt;/p&gt;

&lt;p&gt;Simply, it is System 1 at work. We have seen ducks probably thousands or millions of times throughout our lives, which forms well-defined patterns in our cognition. When we come across something resembling a duck, human cognition doesn’t trigger System 2 because identifying the object as a duck is automatic and intuitive. Our brains rely on a mental "duck schema" even the individual parts of a duck, such as its wings, bill, or webbed feet, are matched to their associated labels in realm of System 1.&lt;/p&gt;
&lt;h3&gt;
  
  
  Duck in the lake
&lt;/h3&gt;

&lt;p&gt;Again, we won't be surprised if we seen duck in the lake, because we have enough labelled patterns to make the call.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69ni3dfecwxojekjojqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69ni3dfecwxojekjojqg.png" alt="Duck in Lake" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Duck in the City
&lt;/h3&gt;

&lt;p&gt;In this case, as our experiences typically associate ducks with natural settings, it is uncommon to see a duck in an urban environment at night. This unfamiliarity triggers System 2 to take over, engaging in more deliberate reasoning. So, System 2 is now responsible for reasoning as cities being dangerous after dark, and the duck is in the city, duck may not be safe. System 2 overrides System 1’s instinctive identification of "a duck" and shifts the focus to evaluating the broader circumstances of the duck's well-being. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7yb2d25djwa99ovk5rhb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7yb2d25djwa99ovk5rhb.png" alt="Duck in City" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  CPU vs GPU
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fld89urcixgqr733kxu1i.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fld89urcixgqr733kxu1i.gif" alt="CPU vs GPU" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI architecture orchestrates a seamless harmony between the precision of CPUs in reasoning and the raw power of GPUs in pattern recognition.&lt;/p&gt;

&lt;p&gt;CPUs are specialized in logical branch operations used in decision-making, and GPUs execute parallel arithmetic operations for matrix multiplications in pattern recognition. So, it is important to understand how they are different.&lt;/p&gt;

&lt;p&gt;CPUs are designed for versatility, with fewer cores optimized for high-performance single-threaded tasks and low latency, making them well-suited for complex decision-making, sequential processing, and multitasking. In contrast, GPUs have thousands of smaller, energy-efficient cores optimized for massive parallelism, enabling them to handle tasks like matrix computations, image rendering, and deep learning efficiently. GPUs excel in throughput-oriented tasks where large data sets can be processed simultaneously, while CPUs focus on general-purpose computing and running the operating system. Additionally, CPUs often feature larger caches and more sophisticated control logic to handle diverse workloads, whereas GPUs prioritize raw computational power and bandwidth to accelerate specific workloads. This fundamental difference makes GPUs indispensable for tasks requiring high parallelism, while CPUs remain the backbone of general computing and coordination.&lt;/p&gt;

&lt;p&gt;While building a modular AI system, it is crucial to design with the underlying hardware in mind. In advanced systems like AIs, hardware constraints can sometimes conflict with algorithmic requirements. In Neuro-Symbolic standpoint, Neural Network (System 1) needs GPU for pattern recognition and CPUs for knowledge representation and reasoning in Symbolic (System 2). It is worth noting, System 1 and 2 is just for building AI foundation, expecting more and more systems like them...&lt;/p&gt;

&lt;p&gt;In short, it is not possible doing efficient reasoning with GPU or pattern recognition with using CPU.&lt;/p&gt;

&lt;p&gt;🌿 Stay Tuned for Recap 02 in Road_to_AGI series...&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/NucleoidAI" rel="noopener noreferrer"&gt;
        NucleoidAI
      &lt;/a&gt; / &lt;a href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;
        Nucleoid
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Neuro-Symbolic AI with Knowledge Graph | "True Reasoning" through data and logic 🌿🌱🐋🌍
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Nucleoid&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  Neuro-Symbolic AI with Knowledge Graph
  &lt;br&gt;
  Reasoning Engine
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://www.apache.org/licenses/LICENSE-2.0" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/38263b79ba97f2a14c1ca442f41ca5ad3c07cc4848922838d3211a0632e34c3d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4170616368652d322e302d79656c6c6f773f7374796c653d666f722d7468652d6261646765266c6f676f3d617061636865" alt="License"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/nucleoidai" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9af1d9ae941223e409f6b1dd1ec06a711b3f29c3262f89bf1df72fbbb7472336/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e504d2d7265643f7374796c653d666f722d7468652d6261646765266c6f676f3d6e706d" alt="NPM"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/wN49SNssUw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/59256224247e44fd9bde7f7561675f7c958e222b489cf9c91ff64bdae8162516/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d6c69676874677265793f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264" alt="Discord"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/NucleoidAI/Nucleoid.github/media/banner.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FNucleoidAI%2FNucleoid.github%2Fmedia%2Fbanner.gif" alt="Banner"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  Declarative (Logic) Runtime Environment: Extensible Data and Logic Representation
&lt;/p&gt;



&lt;p&gt;Nucleoid is a declarative, logic-based, contextual runtime for Neuro-Symbolic AI. Nucleoid runtime tracks each statement in &lt;a href="https://en.wikipedia.org/wiki/Information_Processing_Language" rel="nofollow noopener noreferrer"&gt;IPL-inspired&lt;/a&gt; declarative syntax and dynamically creates relationships between both logic and data statements in the knowledge graph to used in decision-making and problem-solving process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Reasoning:&lt;/strong&gt; Combines symbolic logic with contextual information to analyze relationships, draw conclusions and incorporating new information and adjusting its conclusions accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic Graph:&lt;/strong&gt; Specialized knowledge graph that captures relationships between both logic and data statements based on formal logic, facilitating complex deductions and adapting to new information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability:&lt;/strong&gt; The Logic Graph provides a transparent representation of the reasoning process, making it easier to understand how decisions are reached and potential biases are identified.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Echoing to the idea of &lt;a href="https://kahneman.scholar.princeton.edu/publications" rel="nofollow noopener noreferrer"&gt;"thinking, fast and slow"&lt;/a&gt;, AI system should provide fast, “intuitive” ideas, and the…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Nucleoid: Neuro-Symbolic AI with Knowledge Graph</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Wed, 07 Aug 2024 16:25:06 +0000</pubDate>
      <link>https://forem.com/nucleoid/nucleoid-neuro-symbolic-ai-with-knowledge-graph-3bbm</link>
      <guid>https://forem.com/nucleoid/nucleoid-neuro-symbolic-ai-with-knowledge-graph-3bbm</guid>
      <description>&lt;p&gt;Nucleoid is a declarative, logic-based, contextual runtime for Neuro-Symbolic AI. Nucleoid runtime tracks given each statement in JavaScript syntax and dynamically creates relationships between logic and data in a &lt;em&gt;Logic Graph&lt;/em&gt; as a knowledge base to used in decision-making and problem-solving process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Reasoning:&lt;/strong&gt; Combines symbolic logic with contextual information to analyze relationships, draw conclusions and incorporating new information and adjusting its conclusions accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic Graph:&lt;/strong&gt; A dynamic knowledge base representation structure that captures relationships between statements and data, facilitating complex deductions and adapting to new information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability:&lt;/strong&gt; The Logic Graph provides a transparent representation of the reasoning process, making it easier to understand how decisions are reached and potential biases are identified.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Echoing to the idea of &lt;a href="https://kahneman.scholar.princeton.edu/publications" rel="noopener noreferrer"&gt;"thinking, fast and slow"&lt;/a&gt;, AI system should provide fast, “intuitive” ideas, and the other, more deliberate, rational decision-making. D(L)RE enables both intuitive decisions based on contextual information and deliberate, well-reasoned decisions based on logical deductions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsofh75jw7pvxpkolz1v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwsofh75jw7pvxpkolz1v.gif" alt="Nucleoid Chat" width="650" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;center&gt;
  Chat for Logical Context
  &lt;br&gt;
  &lt;a href="https://nucleoid.ai/chat" rel="noopener noreferrer"&gt;https://nucleoid.ai/chat&lt;/a&gt;
&lt;/center&gt;



&lt;p&gt;In Nucleoid's paradigm, there is no segregation between logic and data; instead, the paradigm approaches how both logic and data statements are related to each other. As the runtime receives new statements, it updates the knowledge graph and reevaluates both logic and data statements to reflect the new information. This adaptive process enables the system to respond to new situations and make deterministic selections as a result of plasticity.&lt;/p&gt;



&lt;h2&gt;
  
  
  What is Neuro-Symbolic AI?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsj29xm8i4cxek0o82hmi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsj29xm8i4cxek0o82hmi.png" alt="Neuro-Symbolic AI Architecture" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI is an approach that integrates the strengths of both neural networks and symbolic AI to create systems that can learn from data and also reason logically. By combining these two components, Neuro-Symbolic AI aims to leverage the intuitive, pattern-recognition capabilities of neural networks along with the logical, rule-based reasoning of symbolic AI. This integration offers a more holistic AI system that is both adaptable and able to explain its decisions, making it suitable for complex decision-making tasks where both learning from data and logical reasoning are required. Here’s how it breaks down:&lt;/p&gt;

&lt;h3&gt;
  
  
  Neural Networks: The Learning Component
&lt;/h3&gt;

&lt;p&gt;Neural networks in Neuro-Symbolic AI are adept at learning patterns, relationships, and features from large datasets. These networks excel in tasks that involve classification, prediction, and pattern recognition, making them invaluable for processing unstructured data, such as images, text, and audio. Neural networks, through their learning capabilities, can generalize from examples to understand complex data structures and nuances in the data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Symbolic AI: The Reasoning Component
&lt;/h3&gt;

&lt;p&gt;The symbolic component of Neuro-Symbolic AI focuses on logic, rules, and symbolic representations of knowledge. Unlike neural networks that learn from data, symbolic AI uses predefined rules and knowledge bases to perform reasoning, make inferences, and understand relationships between entities. This aspect of AI is transparent, interpretable, and capable of explaining its decisions and reasoning processes in a way that humans can understand.&lt;/p&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2qnw8ukf9shuxy68zor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs2qnw8ukf9shuxy68zor.png" alt="Neuro-Symbolic Learning and Reasoning" width="317" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Declarative Logic in Symbolic Reasoning
&lt;/h4&gt;

&lt;p&gt;Declarative logic is a subset of declarative programming, a style of building programs that expresses the logic of a computation without describing its control flow. In declarative logic, you state the facts and rules that define the problem domain. The runtime environment or the system itself figures out how to satisfy those conditions or how to apply those rules to reach a conclusion. This contrasts with imperative programming, where the developer writes code that describes the exact steps to achieve a goal.&lt;/p&gt;

&lt;p&gt;Symbolic reasoning refers to the process of using symbols to represent problems and applying logical rules to manipulate these symbols and derive conclusions or solutions. In AI and computer science, it involves using symbolic representations for entities and actions, enabling the system to perform logical inferences, decision making, and problem-solving based on the rules and knowledge encoded in the symbols.&lt;/p&gt;

&lt;p&gt;By integrating Nucleoid into Neuro-Symbolic AI, the system benefits from enhanced interpretability and reliability. The declarative logic and rules defined in Nucleoid provide clear explanations for the AI's decisions, making it easier for users to understand and trust the system's outputs. Furthermore, the explicit reasoning capabilities help ensure that decisions are made based on logical principles, adding a layer of reliability and consistency to the AI's behavior.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3sgts2aopa5dn31q7pu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3sgts2aopa5dn31q7pu.gif" alt="Logic Diagram Animation" width="800" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Plasticity in Neuro-Symbolic AI
&lt;/h3&gt;

&lt;p&gt;In the realm of Neuro-Symbolic AI, &lt;em&gt;Plasticity&lt;/em&gt; is an important element for the system's ability to modify and optimize its connections in response to new information. This concept is inspired by neuroplasticity in biological brains, where neurons can strengthen or weaken their connections based on activity, enabling learning and memory.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Knowledge Base&lt;/strong&gt;: Neuro-Symbolic AI systems dynamically update their knowledge base as they encounter new scenarios or corrections to their previous knowledge. This continuous updating process allows the systems to remain relevant and accurate over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Logic and Reasoning&lt;/strong&gt;: The AI system can modify its symbolic rules and reasoning strategies to better match observed data or outcomes, enhancing its decision-making and problem-solving abilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generalization and Specialization&lt;/strong&gt;: Through plasticity, the system can generalize from learned experiences to new, unseen scenarios or specialize in certain domains by fine-tuning its parameters or rules based on specific data inputs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The idea of plasticity in AI, especially in logic-based systems like those in Neuro-Symbolic AI, enhances the capability of machines to not only perform tasks based on fixed rules but also to evolve those rules and adapt their reasoning over time, much like the cognitive flexibility of living things.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello World ⚡
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Define human with name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;Assistant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The user requested to define a human with a name using a declarative class&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="o"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;// Ubiquitous Code:&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use declarative&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Human&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;All humans are mortal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;Assistant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;All&lt;/span&gt; &lt;span class="nx"&gt;humans&lt;/span&gt; &lt;span class="nx"&gt;are&lt;/span&gt; &lt;span class="nx"&gt;mortal&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;All humans were declared as mortal.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="o"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;// Ubiquitous Code:&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use declarative&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;$Human&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mortal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Create a human with name "Socrates"&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;Assistant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;A human named &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="nx"&gt;Socrates&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; was successfully created.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="o"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;// Ubiquitous Code:&lt;/span&gt;
&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use imperative&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;human1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Human&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Socrates&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Result: {"id":"human1","name":"Socrates","mortal":true}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Is human with name &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="nx"&gt;Socrates&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; mortal?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="nx"&gt;Assistant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The human named &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="nx"&gt;Socrates&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; was determined to be mortal.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="o"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;// Ubiquitous Code:&lt;/span&gt;
&lt;span class="s2"&gt;`use imperative`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;human1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Human&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Socrates&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;human1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mortal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Result: true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Learn more at &lt;a href="https://nucleoid.com/docs/get-started" rel="noopener noreferrer"&gt;nucleoid.com/docs/get-started&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Nucleoid runtime can also run on local machine with npx @nucleoidai/ide start and npx @nucleoidai/expert start including Nucleoid Chat. These commands enable IDE and expert system components needed for Neuro-Symbolic AI.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h3&gt;
  
  
  Under the hood: Declarative (Logic) Runtime Environment
&lt;/h3&gt;

&lt;p&gt;Nucleoid is an implementation of symbolic AI for declarative (logic) programming at the runtime. As mentioned, the declarative runtime environment manages JavaScript state and stores each transaction in the built-in data store by declaratively rerendering JavaScript statements and building the knowledge graph (base) as well as an execution plan.&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V8vg2ceZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/taxonomy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V8vg2ceZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/taxonomy.png" alt="Nucleoid's Taxonomy" width="800" height="450"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The declarative runtime isolates a behavior definition of a program from its technical instructions and executes declarative statements, which represent logical intention without carrying any technical detail. In this paradigm, there is no segregation regarding what data is or not, instead approaches how data (declarative statement) is related with others so that any type of data including business rules can be added without requiring any additional actions such as compiling, configuring, restarting as a result of plasticity. This approach also opens possibilities of storing data in the same box with the programming runtime.&lt;/p&gt;


  &lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
    &lt;tr&gt;
      &lt;th&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GqCeAKSh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/diagram1.png" alt="Logical Diagram 1" width="800" height="918"&gt;
      &lt;/th&gt;
      &lt;th&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qJIikRHS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/diagram2.png" alt="Logical Diagram 2" width="800" height="714"&gt;
      &lt;/th&gt;
    &lt;/tr&gt;
  &lt;/table&gt;&lt;/div&gt;


&lt;p&gt;In short, the main objective of the project is to manage both of data and logic under the same runtime. The declarative programming paradigm used by Nucleoid allows developers to focus on the business logic of the application, while the runtime manages the technical details.This allows for faster development and reduces the amount of code that needs to be written. Additionally, the sharding feature can help to distribute the load across multiple instances, which can further improve the performance of the system.&lt;/p&gt;
&lt;h2&gt;
  
  
  Benchmark
&lt;/h2&gt;

&lt;p&gt;This is the comparation our sample order app in Nucleoid IDE against MySQL and Postgres with using Express.js and Sequelize libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bFs_9bVN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/benchmark.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bFs_9bVN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/benchmark.png" alt="Benchmark" width="600" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Performance benchmark happened in t2.micro of AWS EC2 instance and both databases had dedicated servers with &lt;u&gt;no indexes and default configurations&lt;/u&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This does not necessary mean Nucleoid runtime is faster than MySQL or Postgres, instead databases require constant maintenance by DBA teams with indexing, caching, purging etc. however, Nucleoid tries to solve this problem with managing logic and data internally. As seen in the chart, for applications with average complexity, Nucleoid's performance is close to linear because of on-chain data store, in-memory computing model as well as limiting the IO process.&lt;/p&gt;

&lt;p&gt;In conclusion, Nucleoid is a promising step forward in Neuro-Symbolic AI, merging neural networks with symbolic AI for more transparent and reliable systems. Its Logic Graph and adaptive reasoning enable informed decisions, while plasticity ensures continuous learning. Join the Nucleoid community and be part of shaping the future of AI.&lt;/p&gt;



&lt;center&gt;
  &lt;b&gt;⭐️ Star us on GitHub for the support&lt;/b&gt;
&lt;/center&gt;

&lt;p&gt;Neuro-Symbolic AI is an emerging field and thanks to declarative logic programming, we have a brand-new approach to Neuro-Symbolic AI. Join us in shaping the future of AI!&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w0Rp6FKK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/nobel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w0Rp6FKK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.nucleoid.com/media/nobel.png" alt="Nobel" width="75" height="75"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;center&gt;
  Join us at
  &lt;br&gt;
  &lt;a href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidAI/Nucleoid&lt;/a&gt;
&lt;/center&gt;




&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/NucleoidAI" rel="noopener noreferrer"&gt;
        NucleoidAI
      &lt;/a&gt; / &lt;a href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;
        Nucleoid
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Neuro-Symbolic AI with Knowledge Graph •  "True Reasoning" through data and logic 🌿🌱🐋🌍
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Nucleoid&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  Neuro-Symbolic AI with Knowledge Graph
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://www.apache.org/licenses/LICENSE-2.0" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b63419638db823c2ca9fb3f143debb94c50540f43635d1a22a6bcd6d604229f8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4170616368652d322e302d79656c6c6f773f7374796c653d666f722d7468652d6261646765266c6f676f3d617061636865" alt="License"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/nucleoidai" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/aea1158784837fe3525faaadab3f787c858bb83fea999a427aae55f99bc5593e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e504d2d7265643f7374796c653d666f722d7468652d6261646765266c6f676f3d6e706d" alt="NPM"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/wN49SNssUw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/24a8c660a13ae3b79e8baf2d671c63208c29e57128da7dabd16c928ea7407190/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d6c69676874677265793f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264" alt="Discord"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/NucleoidAI/Nucleoid.github/media/banner.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZXGid9hI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://github.com/NucleoidAI/Nucleoid.github/media/banner.gif" alt="Banner"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  Declarative (Logic) Runtime Environment: Extensible Data and Logic Representation
&lt;/p&gt;



&lt;p&gt;Nucleoid is a declarative, logic-based, contextual runtime for Neuro-Symbolic AI. Nucleoid runtime tracks each statement in &lt;a href="https://en.wikipedia.org/wiki/Information_Processing_Language" rel="nofollow noopener noreferrer"&gt;IPL-inspired&lt;/a&gt; declarative JavaScript syntax and dynamically creates relationships between both logic and data statements in the knowledge graph to used in decision-making and problem-solving process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Reasoning:&lt;/strong&gt; Combines symbolic logic with contextual information to analyze relationships, draw conclusions and incorporating new information and adjusting its conclusions accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic Graph:&lt;/strong&gt; Specialized knowledge graph that captures relationships between both logic and data statements based on formal logic, facilitating complex deductions and adapting to new information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability:&lt;/strong&gt; The Logic Graph provides a transparent representation of the reasoning process, making it easier to understand how decisions are reached and potential biases are identified.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Echoing to the idea of &lt;a href="https://kahneman.scholar.princeton.edu/publications" rel="nofollow noopener noreferrer"&gt;"thinking, fast and slow"&lt;/a&gt;, AI system should provide fast, “intuitive” ideas, and the other…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>javascript</category>
      <category>node</category>
    </item>
    <item>
      <title>Next in the Journey: Neuro-Symbolic AI</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Wed, 31 Jul 2024 16:24:46 +0000</pubDate>
      <link>https://forem.com/nucleoid/next-in-the-journey-neuro-symbolic-ai-17jm</link>
      <guid>https://forem.com/nucleoid/next-in-the-journey-neuro-symbolic-ai-17jm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;"The integration of deep learning with symbolic reasoning could lead to the next wave of AI advancements, potentially solving tasks that require complex, structured thinking." — Demis Hassabis, Co-founder of DeepMind&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All the achievements and progress are fascinating—to see how a "metal box" coming to life... Interestingly, it is not far off from how nature creates living things from basic carbon-based materials. Obviously, it wouldn't be fair to compare nature's 4-billion-year evolution to our software running on silicon semiconductor chips. Yet, this simple comparison raises an important question: Should we imitate nature its properties like plasticity, ability to reason, ability to plan, syllogize etc. or should we mimic outcomes of its products?&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ipJq4suXdKk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Many pioneers in AI share a common vision of replicating human intelligence through machines capable of learning, reasoning, and problem-solving. Their interdisciplinary approach integrates insights from computer science, cognitive psychology, and neuroscience, aiming to create systems that improve over time by learning from data and experience. Early pioneers like John McCarthy and Herbert Simon focused on symbolic AI, while later figures such as Geoffrey Hinton and Yann LeCun advanced neural networks and deep learning. Despite varied methods, they collectively emphasize the ethical implications of AI, advocating for systems aligned with human values and designed for societal benefit. Their work underscores the progressive improvement of AI, aspiring to tackle increasingly complex tasks and solve real-world problems, all underpinned by fundamental research that advances theoretical and practical understanding of intelligent systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief History of AI
&lt;/h3&gt;

&lt;p&gt;Historically, first Symbolic AI, originating from the Dartmouth Conference in 1956, initially focused on rule-based systems like the Logic Theorist and General Problem Solver in the 1950s-60s, but faced challenges in real-world complexity. The 1970s saw the rise of expert systems, such as MYCIN, which, despite their popularity, were brittle and expensive to maintain. By the 1990s, symbolic AI began integrating with machine learning and neural networks. In parallel, ANNs began with McCulloch and Pitts' 1943 neuron model and Rosenblatt's 1958 Perceptron. Despite setbacks in the 1960s, the 1980s revival, spurred by backpropagation, led to practical applications in the 1990s. The 2010s deep learning revolution, marked by the success of deep neural networks like the 2012 ImageNet-winning model, transformed AI, integrating with symbolic methods and focusing on explainability and ethics for future advancements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1950&lt;/strong&gt;: Alan Turing proposes the Turing Test as a measure of machine intelligence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1956&lt;/strong&gt;: The term "Artificial Intelligence" is coined at the Dartmouth Summer Research Project on Artificial Intelligence, led by John McCarthy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1965&lt;/strong&gt;: Joseph Weizenbaum creates ELIZA, an early natural language processing computer program.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1970s:&lt;/strong&gt; AI Winter Begins, funding and interest in AI research decline due to the realization of the significant limitations of existing technology.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1986&lt;/strong&gt;: Neural networks gain popularity again with the backpropagation method that helps train multi-layer networks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1997&lt;/strong&gt;: IBM’s Deep Blue beats world chess champion Garry Kasparov.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;2006&lt;/strong&gt;: Geoffrey Hinton, et al., introduce concepts that lead to the resurgence of neural networks in the deep learning form.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;2011&lt;/strong&gt;: IBM’s Watson wins on the quiz show "Jeopardy!" against human champions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;2014&lt;/strong&gt;: Google acquires DeepMind; later in 2016, AlphaGo beats Go world champion Lee Sedol.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Symbolic AI
&lt;/h3&gt;

&lt;p&gt;Symbolic AI, is an approach to artificial intelligence that uses symbolic representations of problems, logical reasoning, and rule-based systems to simulate human intelligence. In Symbolic AI, knowledge is explicitly encoded in symbols and manipulated using formal logic or rule-based algorithms to derive conclusions or make decisions. This method relies on high-level, human-readable representations of problems and solutions, such as mathematical logic, semantic networks, and production rules. Symbolic AI was prominent in early AI research and is effective in domains where clear rules and structured knowledge exist, such as theorem proving, expert systems, and natural language understanding. However, it struggles with ambiguity, learning from data, and adapting to new or unstructured problems, leading to the development of other AI approaches, such as neural networks and machine learning, to complement its capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Artificial Neuro Network (Subsymbolic)
&lt;/h3&gt;

&lt;p&gt;An Artificial Neural Network (ANN) is a computational model designed to mimic the way human brains process information, consisting of interconnected layers of artificial neurons. These neurons, organized into input, hidden, and output layers, process data by adjusting connection weights and biases through learning algorithms like backpropagation. By passing data through these layers and applying activation functions, ANNs can recognize patterns, learn from examples, and make decisions, making them highly effective for tasks such as image and speech recognition, natural language processing, financial forecasting, medical diagnosis, and autonomous systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is Neuro-Symbolic AI?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F549ustyzye2281fe33e4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F549ustyzye2281fe33e4.png" alt="Google Trends for Neuro-Symbolic AI topic" width="550" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI is an emerging field in AI, combines the strengths of symbolic AI and artificial neural networks to create robust and versatile AI systems. This approach integrates symbolic reasoning, which excels at explicit logic and rule-based processing, with neural networks that are adept at learning from unstructured data and recognizing patterns. Neural networks are excellent at pattern recognition and learning from data, but they struggle with explicit reasoning and understanding abstract concepts. Symbolic reasoning, on the other hand, is adept at manipulating symbols and applying logical rules but lacks the flexibility and learning capacity of neural networks. By blending these methods, Neuro-Symbolic AI can achieve greater explainability, better generalization from fewer examples, and enhanced flexibility in handling complex tasks. Applications include natural language understanding, robotics, and knowledge graphs, though integrating these paradigms presents challenges in complexity and computational resources.&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI consists of two components: Neural Networks as the Learning Component and Symbolic AI as the Reasoning Component.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3f3xclml6ydvgapcp3ec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3f3xclml6ydvgapcp3ec.png" alt="Neuro-Symbolic Learning-Reasoning" width="533" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Neural Networks: The Learning Component
&lt;/h3&gt;

&lt;p&gt;The learning component in Neuro-Symbolic AI integrates the pattern recognition and data-driven learning capabilities of artificial neural networks with the structured knowledge and logical reasoning of symbolic AI. Neural networks are employed to learn from vast amounts of unstructured data, identifying patterns and making predictions through training processes such as backpropagation. This learning is then complemented by symbolic reasoning, which provides high-level, human-readable rules and logic to interpret and manipulate the learned patterns. By combining these approaches, Neuro-Symbolic AI systems can learn from raw data while also understanding and applying abstract concepts and rules, resulting in more adaptable and interpretable AI solutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Symbolic AI: The Reasoning Component
&lt;/h3&gt;

&lt;p&gt;The reasoning component in Neuro-Symbolic AI leverages the structured, rule-based processing capabilities of symbolic AI to enhance the decision-making and interpretability of AI systems. Symbolic AI utilizes explicit, human-readable symbols and logical rules to represent knowledge and perform logical inferences, allowing the system to reason about abstract concepts, relationships, and sequences of actions. This component can process structured information, such as semantic networks or ontologies, to draw conclusions and make decisions based on formal logic. By integrating this with the pattern recognition and learning capabilities of neural networks, Neuro-Symbolic AI systems can apply logical reasoning to the patterns identified by neural networks, resulting in AI that is both powerful in handling raw data and capable of sophisticated, explainable reasoning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Neuro-Symbolic AI is a Spectrum
&lt;/h2&gt;

&lt;p&gt;In the realm of Neuro-Symbolic AI, there is no 'one-stop shop' solution or architecture, indeed, Neuro-Symbolic AI can be viewed as a spectrum that encompasses both probabilistic and deterministic elements. This spectrum reflects the integration of different techniques from neural networks and symbolic AI, each of which has its strengths in handling uncertainty and structure, respectively.&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI represents a dynamic spectrum that skillfully merges the probabilistic capabilities of neural networks with the deterministic nature of symbolic AI, creating a robust framework suited for a diverse range of applications. At one end of the spectrum, the probabilistic components harness neural networks' ability to learn from and adapt to large, noisy, and often incomplete datasets, making these systems highly flexible and capable of handling uncertainty. On the opposite end, the deterministic elements utilize symbolic AI's strength in enforcing strict, rule-based reasoning, ensuring that outcomes are logical, explainable, and compliant with predefined regulations. By blending these approaches, neuro-symbolic AI systems can efficiently manage complex challenges where both adaptability to new information and stringent adherence to rules are paramount. This integration not only enhances the systems' operational efficiency but also significantly broadens their applicability, from autonomous vehicles navigating unpredictable roads to medical systems diagnosing diseases with both high accuracy and adherence to clinical guidelines. Thus, neuro-symbolic AI stands as a sophisticated hybrid approach, bringing together the best of both worlds to address some of the most intricate problems in artificial intelligence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intelligence in Nature's Code
&lt;/h2&gt;

&lt;p&gt;Nature programs living things with intelligence through a complex interplay of genetic, evolutionary, environmental, and developmental factors. Genetic instructions shape neural architecture, while natural selection favors traits that enhance survival and reproduction, leading to the evolution of cognitive abilities. Living organisms, particularly humans, possess intelligence characterized by the ability to understand, learn, and apply knowledge through experience, sense perception, and reasoning. This biological intelligence is adaptable, emotionally driven, and contextually nuanced, allowing for creativity, empathy, and ethical considerations. In contrast, artificial intelligence (AI) demonstrates a form of intelligence through computational power, data processing, and algorithmic learning, excelling in tasks requiring pattern recognition, data analysis, and decision-making within specified parameters. While AI can outperform humans in certain domains like speed and accuracy in data-heavy tasks, it lacks the intrinsic emotional understanding, consciousness, and ethical judgment inherent in human intelligence, making it a powerful yet fundamentally different form of intelligence.&lt;/p&gt;

&lt;p&gt;The endeavor to develop artificial intelligence that parallels the human brain is a profound challenge, likely requiring many more years of innovation and interdisciplinary collaboration. The human brain is an extraordinarily complex organ, characterized not only by its cognitive capabilities but also by its capacity for emotions, consciousness, and ethical reasoning. Current AI systems excel in specific tasks through algorithms and vast data processing but lack the brain's integrated and versatile nature. Achieving a semblance of this requires advancements in understanding neural processes, developing more sophisticated machine learning models, and integrating these systems with insights from neuroscience, psychology, and philosophy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Neuro-Symbolic AI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  I. Knowledge Graph
&lt;/h3&gt;

&lt;p&gt;Neuro-symbolic AI combines the pattern recognition strengths of neural networks with the logical reasoning and interpretability of symbolic AI, utilizing knowledge graphs as a structured representation of information. Knowledge graphs, which consist of entities (nodes) and their relationships (edges), provide a rich semantic context that enhances neural networks' understanding and decision-making. By integrating these graphs, neuro-symbolic AI systems can perform complex reasoning tasks, leveraging neural networks for learning from data and using symbolic logic for explainable and precise inferences. This hybrid approach leads to more robust, accurate, and interpretable AI solutions, applicable in various fields such as natural language processing, recommendation systems, and healthcare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Components of Neuro-Symbolic AI
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Neural Networks:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning from Data:&lt;/strong&gt; Neural networks, particularly deep learning models, excel at learning patterns from large datasets. They are adept at tasks such as image and speech recognition, natural language processing, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generalization:&lt;/strong&gt; These models can generalize from examples, allowing them to make predictions or recognize new, unseen instances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Symbolic Reasoning:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Logical Inference:&lt;/strong&gt; Symbolic AI focuses on using predefined rules and logic to manipulate symbols and reason about problems. This allows for explicit knowledge representation and logical deductions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explainability:&lt;/strong&gt; The symbolic approach provides interpretability, making it easier to understand and explain the reasoning behind AI decisions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  II. Logic Graph (Declarative Logic)
&lt;/h3&gt;

&lt;p&gt;Neuro-symbolic AI combines the pattern recognition capabilities of neural networks with the logical reasoning strengths of symbolic AI, using like Prolog as a tool for the latter. Neural networks excel at learning from large datasets, identifying complex patterns, and making predictions. Prolog, a declarative logic programming language, is utilized to represent knowledge as facts and rules and to perform logical inferences. In this hybrid approach, knowledge extracted by neural networks is encoded in Prolog, enabling the system to leverage both data-driven insights and logical reasoning. This integration allows for sophisticated, explainable AI systems that can learn from data and reason about it in a human-interpretable manner, making it applicable in areas like medical diagnosis, natural language understanding, and decision support systems.&lt;/p&gt;

&lt;p&gt;Neuro-symbolic AI combines the strengths of neural networks and symbolic reasoning to create more robust and explainable AI systems. Prolog, a logic programming language, is often used in symbolic reasoning due to its strong support for formal logic and knowledge representation. Here's how neuro-symbolic AI can be explained using Prolog:&lt;/p&gt;

&lt;h3&gt;
  
  
  Components of Neuro-Symbolic AI with Prolog
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Neural Networks:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning from Data:&lt;/strong&gt; Neural networks can learn complex patterns from large datasets, which makes them effective for tasks such as image recognition, natural language processing, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generalization:&lt;/strong&gt; These networks can generalize from training data to make predictions or classify new data instances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Symbolic Reasoning with Prolog:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Logical Inference:&lt;/strong&gt; Prolog excels in logical inference, enabling the AI to make deductions based on a set of rules and facts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Knowledge Representation:&lt;/strong&gt; Prolog represents knowledge in the form of facts and rules, making it easy to encode and manipulate structured information.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  AI Autumn (Hopefully not a Winter)
&lt;/h2&gt;

&lt;p&gt;The term "AI winter" refers to a period of reduced funding and interest in artificial intelligence research. This phenomenon has historically occurred after initial enthusiasm and investment in AI led to expectations that were not met by the technology's actual capabilities. Concerns about entering another AI winter, or at least an AI autumn, are relevant when considering the current landscape dominated by large language models (LLMs).&lt;/p&gt;

&lt;p&gt;The hype surrounding LLMs has led to inflated expectations about their capabilities. While they are often presented as approaching human-like understanding, the reality is that they still lack true comprehension and reasoning abilities. They operate based on patterns in data rather than any semantic understanding. If the public and investors realize that these systems do not deliver on the broader promises of AI, such as general intelligence or fully autonomous decision-making, disappointment could lead to reduced funding and interest.&lt;/p&gt;

&lt;p&gt;Presently, much of the AI research and commercial focus is centered around large language models like GPT (Generative Pre-trained Transformer) and similar architectures. While these models have showcased remarkable capabilities in generating human-like text and performing a range of language-based tasks, they have limitations. Their reliance on vast amounts of data, substantial energy requirements, and occasional generation of nonsensical or biased outputs are significant drawbacks. If the field continues to prioritize LLMs without addressing these limitations, it might lead to stagnation and disillusionment among stakeholders.&lt;/p&gt;

&lt;h1&gt;
  
  
  Next in Journey: Neuro-Symbolic AI
&lt;/h1&gt;

&lt;p&gt;Larger models, sparse models, and Mixture-of-Experts (MoE) models have significantly advanced AI capabilities. A promising next step to further enhance these models is integrating them with &lt;em&gt;reasoning engines&lt;/em&gt; and &lt;em&gt;knowledge bases&lt;/em&gt;. This integration could enable AI to tackle complex logical tasks that require both broad knowledge and sophisticated reasoning abilities.&lt;/p&gt;

&lt;p&gt;Combining these advanced models with reasoning engines would allow AI to move beyond simple pattern recognition and statistical inference, enabling it to perform tasks that require logical deduction and critical thinking. Knowledge bases can provide a structured repository of factual information, which the AI can draw upon to inform its reasoning processes. This synergy between large-scale learning models and structured reasoning tools would pave the way for more intelligent systems capable of understanding context, making informed decisions, and solving problems that are currently beyond the reach of traditional neural networks. For instance, in fields like medical diagnostics, legal analysis, and scientific research, such integrated AI systems could offer profound insights, ensuring that decisions are based on comprehensive data analysis and robust logical frameworks. This approach holds the potential to bridge the gap between current AI capabilities and true artificial general intelligence (AGI).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Potential Benefits and Applications&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Reasoning Abilities:&lt;/strong&gt; Integrating neural networks with symbolic reasoning can enable AI systems to perform complex logical tasks, such as theorem proving, planning, and diagnostics, with greater accuracy and efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Interpretability:&lt;/strong&gt; Symbolic components can make AI decisions more transparent and explainable, addressing one of the key concerns about the "black box" nature of deep learning models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Knowledge Integration:&lt;/strong&gt; Neuro-symbolic AI can incorporate existing human knowledge, represented in symbolic form, into learning processes, allowing for more efficient learning and better generalization from limited data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Robustness and Safety:&lt;/strong&gt; By embedding explicit rules and constraints, neuro-symbolic systems can avoid some of the pitfalls of purely data-driven approaches, such as generating biased or nonsensical outputs.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In conclusion, Neuro-Symbolic AI holds the potential to transform the field of artificial intelligence by unifying the strengths of neural networks and symbolic reasoning. By harnessing the depth of neural learning and the precision of symbolic processes, this emerging field promises to bridge the gap between learning and cognitive reasoning. This confluence represents not just a technical evolution but a paradigm shift towards creating systems that not only learn from vast datasets but also reason with the clarity and precision required for complex decision-making.&lt;/p&gt;

&lt;p&gt;This is a journey, many hints from nature, but surely it is all very beginning...&lt;/p&gt;




&lt;center&gt;
  &lt;b&gt;⭐️ Star us on GitHub for the support&lt;/b&gt;
&lt;/center&gt;

&lt;p&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbvwa94mlzqill5eg04s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbvwa94mlzqill5eg04s.png" alt="Nucleoid AI Banner" width="800" height="336"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Thanks to declarative logic programming, we have a brand-new approach to Neuro-Symbolic AI. As we continue to explore the potential of this AI architecture, we welcome all kinds of contributions!&lt;/p&gt;

&lt;center&gt;
  Join us at
  &lt;br&gt;
  &lt;a href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidAI/Nucleoid&lt;/a&gt;
&lt;/center&gt;





&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/NucleoidAI" rel="noopener noreferrer"&gt;
        NucleoidAI
      &lt;/a&gt; / &lt;a href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;
        Nucleoid
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Neuro-Symbolic AI with Knowledge Graph | "True Reasoning" through data and logic 🌿🌱🐋🌍
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Nucleoid&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  Neuro-Symbolic AI with Knowledge Graph
  &lt;br&gt;
  Reasoning Engine
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://www.apache.org/licenses/LICENSE-2.0" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/38263b79ba97f2a14c1ca442f41ca5ad3c07cc4848922838d3211a0632e34c3d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4170616368652d322e302d79656c6c6f773f7374796c653d666f722d7468652d6261646765266c6f676f3d617061636865" alt="License"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/nucleoidai" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9af1d9ae941223e409f6b1dd1ec06a711b3f29c3262f89bf1df72fbbb7472336/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e504d2d7265643f7374796c653d666f722d7468652d6261646765266c6f676f3d6e706d" alt="NPM"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/wN49SNssUw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/59256224247e44fd9bde7f7561675f7c958e222b489cf9c91ff64bdae8162516/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d6c69676874677265793f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264" alt="Discord"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/NucleoidAI/Nucleoid.github/media/banner.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FNucleoidAI%2FNucleoid.github%2Fmedia%2Fbanner.gif" alt="Banner"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  Declarative (Logic) Runtime Environment: Extensible Data and Logic Representation
&lt;/p&gt;



&lt;p&gt;Nucleoid is a declarative, logic-based, contextual runtime for Neuro-Symbolic AI. Nucleoid runtime tracks each statement in &lt;a href="https://en.wikipedia.org/wiki/Information_Processing_Language" rel="nofollow noopener noreferrer"&gt;IPL-inspired&lt;/a&gt; declarative syntax and dynamically creates relationships between both logic and data statements in the knowledge graph to used in decision-making and problem-solving process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Reasoning:&lt;/strong&gt; Combines symbolic logic with contextual information to analyze relationships, draw conclusions and incorporating new information and adjusting its conclusions accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic Graph:&lt;/strong&gt; Specialized knowledge graph that captures relationships between both logic and data statements based on formal logic, facilitating complex deductions and adapting to new information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability:&lt;/strong&gt; The Logic Graph provides a transparent representation of the reasoning process, making it easier to understand how decisions are reached and potential biases are identified.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Echoing to the idea of &lt;a href="https://kahneman.scholar.princeton.edu/publications" rel="nofollow noopener noreferrer"&gt;"thinking, fast and slow"&lt;/a&gt;, AI system should provide fast, “intuitive” ideas, and the…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>news</category>
    </item>
    <item>
      <title>Next in the Journey: Neuro-Symbolic AI</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Tue, 16 Jul 2024 16:08:07 +0000</pubDate>
      <link>https://forem.com/nucleoid/next-in-the-journey-neuro-symbolic-ai-2id9</link>
      <guid>https://forem.com/nucleoid/next-in-the-journey-neuro-symbolic-ai-2id9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;"The integration of deep learning with symbolic reasoning could lead to the next wave of AI advancements, potentially solving tasks that require complex, structured thinking." — Demis Hassabis, Co-founder of DeepMind&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All the achievements and progress are fascinating—to see how a "metal box" coming to life... Interestingly, it is not far off from how nature creates living things from basic carbon-based materials. Obviously, it wouldn't be fair to compare nature's 4-billion-year evolution to our software running on silicon semiconductor chips. Yet, this simple comparison raises an important question: Should we imitate nature its properties like plasticity, ability to reason, ability to plan, syllogize etc. or should we mimic outcomes of its products?&lt;/p&gt;

&lt;p&gt;Many pioneers in AI share a common vision of replicating human intelligence through machines capable of learning, reasoning, and problem-solving. Their interdisciplinary approach integrates insights from computer science, cognitive psychology, and neuroscience, aiming to create systems that improve over time by learning from data and experience. Early pioneers like John McCarthy and Herbert Simon focused on symbolic AI, while later figures such as Geoffrey Hinton and Yann LeCun advanced neural networks and deep learning. Despite varied methods, they collectively emphasize the ethical implications of AI, advocating for systems aligned with human values and designed for societal benefit. Their work underscores the progressive improvement of AI, aspiring to tackle increasingly complex tasks and solve real-world problems, all underpinned by fundamental research that advances theoretical and practical understanding of intelligent systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief History of AI
&lt;/h3&gt;

&lt;p&gt;Historically, first Symbolic AI, originating from the Dartmouth Conference in 1956, initially focused on rule-based systems like the Logic Theorist and General Problem Solver in the 1950s-60s, but faced challenges in real-world complexity. The 1970s saw the rise of expert systems, such as MYCIN, which, despite their popularity, were brittle and expensive to maintain. By the 1990s, symbolic AI began integrating with machine learning and neural networks. In parallel, ANNs began with McCulloch and Pitts' 1943 neuron model and Rosenblatt's 1958 Perceptron. Despite setbacks in the 1960s, the 1980s revival, spurred by backpropagation, led to practical applications in the 1990s. The 2010s deep learning revolution, marked by the success of deep neural networks like the 2012 ImageNet-winning model, transformed AI, integrating with symbolic methods and focusing on explainability and ethics for future advancements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1950&lt;/strong&gt;: Alan Turing proposes the Turing Test as a measure of machine intelligence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1956&lt;/strong&gt;: The term "Artificial Intelligence" is coined at the Dartmouth Summer Research Project on Artificial Intelligence, led by John McCarthy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1965&lt;/strong&gt;: Joseph Weizenbaum creates ELIZA, an early natural language processing computer program.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1970s:&lt;/strong&gt; AI Winter Begins, funding and interest in AI research decline due to the realization of the significant limitations of existing technology.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1986&lt;/strong&gt;: Neural networks gain popularity again with the backpropagation method that helps train multi-layer networks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;1997&lt;/strong&gt;: IBM’s Deep Blue beats world chess champion Garry Kasparov.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;2006&lt;/strong&gt;: Geoffrey Hinton, et al., introduce concepts that lead to the resurgence of neural networks in the deep learning form.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;2011&lt;/strong&gt;: IBM’s Watson wins on the quiz show "Jeopardy!" against human champions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;2014&lt;/strong&gt;: Google acquires DeepMind; later in 2016, AlphaGo beats Go world champion Lee Sedol.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Symbolic AI
&lt;/h3&gt;

&lt;p&gt;Symbolic AI, is an approach to artificial intelligence that uses symbolic representations of problems, logical reasoning, and rule-based systems to simulate human intelligence. In Symbolic AI, knowledge is explicitly encoded in symbols and manipulated using formal logic or rule-based algorithms to derive conclusions or make decisions. This method relies on high-level, human-readable representations of problems and solutions, such as mathematical logic, semantic networks, and production rules. Symbolic AI was prominent in early AI research and is effective in domains where clear rules and structured knowledge exist, such as theorem proving, expert systems, and natural language understanding. However, it struggles with ambiguity, learning from data, and adapting to new or unstructured problems, leading to the development of other AI approaches, such as neural networks and machine learning, to complement its capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Artificial Neuro Network (Subsymbolic)
&lt;/h3&gt;

&lt;p&gt;An Artificial Neural Network (ANN) is a computational model designed to mimic the way human brains process information, consisting of interconnected layers of artificial neurons. These neurons, organized into input, hidden, and output layers, process data by adjusting connection weights and biases through learning algorithms like backpropagation. By passing data through these layers and applying activation functions, ANNs can recognize patterns, learn from examples, and make decisions, making them highly effective for tasks such as image and speech recognition, natural language processing, financial forecasting, medical diagnosis, and autonomous systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is Neuro-Symbolic AI?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F549ustyzye2281fe33e4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F549ustyzye2281fe33e4.png" alt="Google Trends for Neuro-Symbolic AI topic"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI is an emerging field in AI, combines the strengths of symbolic AI and artificial neural networks to create robust and versatile AI systems. This approach integrates symbolic reasoning, which excels at explicit logic and rule-based processing, with neural networks that are adept at learning from unstructured data and recognizing patterns. Neural networks are excellent at pattern recognition and learning from data, but they struggle with explicit reasoning and understanding abstract concepts. Symbolic reasoning, on the other hand, is adept at manipulating symbols and applying logical rules but lacks the flexibility and learning capacity of neural networks. By blending these methods, Neuro-Symbolic AI can achieve greater explainability, better generalization from fewer examples, and enhanced flexibility in handling complex tasks. Applications include natural language understanding, robotics, and knowledge graphs, though integrating these paradigms presents challenges in complexity and computational resources.&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI consists of two components: Neural Networks as the Learning Component and Symbolic AI as the Reasoning Component.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3f3xclml6ydvgapcp3ec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3f3xclml6ydvgapcp3ec.png" alt="Neuro-Symbolic Learning-Reasoning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Neural Networks: The Learning Component
&lt;/h3&gt;

&lt;p&gt;The learning component in Neuro-Symbolic AI integrates the pattern recognition and data-driven learning capabilities of artificial neural networks with the structured knowledge and logical reasoning of symbolic AI. Neural networks are employed to learn from vast amounts of unstructured data, identifying patterns and making predictions through training processes such as backpropagation. This learning is then complemented by symbolic reasoning, which provides high-level, human-readable rules and logic to interpret and manipulate the learned patterns. By combining these approaches, Neuro-Symbolic AI systems can learn from raw data while also understanding and applying abstract concepts and rules, resulting in more adaptable and interpretable AI solutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Symbolic AI: The Reasoning Component
&lt;/h3&gt;

&lt;p&gt;The reasoning component in Neuro-Symbolic AI leverages the structured, rule-based processing capabilities of symbolic AI to enhance the decision-making and interpretability of AI systems. Symbolic AI utilizes explicit, human-readable symbols and logical rules to represent knowledge and perform logical inferences, allowing the system to reason about abstract concepts, relationships, and sequences of actions. This component can process structured information, such as semantic networks or ontologies, to draw conclusions and make decisions based on formal logic. By integrating this with the pattern recognition and learning capabilities of neural networks, Neuro-Symbolic AI systems can apply logical reasoning to the patterns identified by neural networks, resulting in AI that is both powerful in handling raw data and capable of sophisticated, explainable reasoning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Neuro-Symbolic AI is a Spectrum
&lt;/h2&gt;

&lt;p&gt;In the realm of Neuro-Symbolic AI, there is no 'one-stop shop' solution or architecture, indeed, Neuro-Symbolic AI can be viewed as a spectrum that encompasses both probabilistic and deterministic elements. This spectrum reflects the integration of different techniques from neural networks and symbolic AI, each of which has its strengths in handling uncertainty and structure, respectively.&lt;/p&gt;

&lt;p&gt;Neuro-Symbolic AI represents a dynamic spectrum that skillfully merges the probabilistic capabilities of neural networks with the deterministic nature of symbolic AI, creating a robust framework suited for a diverse range of applications. At one end of the spectrum, the probabilistic components harness neural networks' ability to learn from and adapt to large, noisy, and often incomplete datasets, making these systems highly flexible and capable of handling uncertainty. On the opposite end, the deterministic elements utilize symbolic AI's strength in enforcing strict, rule-based reasoning, ensuring that outcomes are logical, explainable, and compliant with predefined regulations. By blending these approaches, neuro-symbolic AI systems can efficiently manage complex challenges where both adaptability to new information and stringent adherence to rules are paramount. This integration not only enhances the systems' operational efficiency but also significantly broadens their applicability, from autonomous vehicles navigating unpredictable roads to medical systems diagnosing diseases with both high accuracy and adherence to clinical guidelines. Thus, neuro-symbolic AI stands as a sophisticated hybrid approach, bringing together the best of both worlds to address some of the most intricate problems in artificial intelligence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intelligence in Nature's Code
&lt;/h2&gt;

&lt;p&gt;Nature programs living things with intelligence through a complex interplay of genetic, evolutionary, environmental, and developmental factors. Genetic instructions shape neural architecture, while natural selection favors traits that enhance survival and reproduction, leading to the evolution of cognitive abilities. Living organisms, particularly humans, possess intelligence characterized by the ability to understand, learn, and apply knowledge through experience, sense perception, and reasoning. This biological intelligence is adaptable, emotionally driven, and contextually nuanced, allowing for creativity, empathy, and ethical considerations. In contrast, artificial intelligence (AI) demonstrates a form of intelligence through computational power, data processing, and algorithmic learning, excelling in tasks requiring pattern recognition, data analysis, and decision-making within specified parameters. While AI can outperform humans in certain domains like speed and accuracy in data-heavy tasks, it lacks the intrinsic emotional understanding, consciousness, and ethical judgment inherent in human intelligence, making it a powerful yet fundamentally different form of intelligence.&lt;/p&gt;

&lt;p&gt;The endeavor to develop artificial intelligence that parallels the human brain is a profound challenge, likely requiring many more years of innovation and interdisciplinary collaboration. The human brain is an extraordinarily complex organ, characterized not only by its cognitive capabilities but also by its capacity for emotions, consciousness, and ethical reasoning. Current AI systems excel in specific tasks through algorithms and vast data processing but lack the brain's integrated and versatile nature. Achieving a semblance of this requires advancements in understanding neural processes, developing more sophisticated machine learning models, and integrating these systems with insights from neuroscience, psychology, and philosophy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Neuro-Symbolic AI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  I. Knowledge Graph
&lt;/h3&gt;

&lt;p&gt;Neuro-symbolic AI combines the pattern recognition strengths of neural networks with the logical reasoning and interpretability of symbolic AI, utilizing knowledge graphs as a structured representation of information. Knowledge graphs, which consist of entities (nodes) and their relationships (edges), provide a rich semantic context that enhances neural networks' understanding and decision-making. By integrating these graphs, neuro-symbolic AI systems can perform complex reasoning tasks, leveraging neural networks for learning from data and using symbolic logic for explainable and precise inferences. This hybrid approach leads to more robust, accurate, and interpretable AI solutions, applicable in various fields such as natural language processing, recommendation systems, and healthcare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Components of Neuro-Symbolic AI
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Neural Networks:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning from Data:&lt;/strong&gt; Neural networks, particularly deep learning models, excel at learning patterns from large datasets. They are adept at tasks such as image and speech recognition, natural language processing, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generalization:&lt;/strong&gt; These models can generalize from examples, allowing them to make predictions or recognize new, unseen instances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Symbolic Reasoning:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Logical Inference:&lt;/strong&gt; Symbolic AI focuses on using predefined rules and logic to manipulate symbols and reason about problems. This allows for explicit knowledge representation and logical deductions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explainability:&lt;/strong&gt; The symbolic approach provides interpretability, making it easier to understand and explain the reasoning behind AI decisions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  II. Logic Graph (Declarative Logic)
&lt;/h3&gt;

&lt;p&gt;Neuro-symbolic AI combines the pattern recognition capabilities of neural networks with the logical reasoning strengths of symbolic AI, using like Prolog as a tool for the latter. Neural networks excel at learning from large datasets, identifying complex patterns, and making predictions. Prolog, a declarative logic programming language, is utilized to represent knowledge as facts and rules and to perform logical inferences. In this hybrid approach, knowledge extracted by neural networks is encoded in Prolog, enabling the system to leverage both data-driven insights and logical reasoning. This integration allows for sophisticated, explainable AI systems that can learn from data and reason about it in a human-interpretable manner, making it applicable in areas like medical diagnosis, natural language understanding, and decision support systems.&lt;/p&gt;

&lt;p&gt;Neuro-symbolic AI combines the strengths of neural networks and symbolic reasoning to create more robust and explainable AI systems. Prolog, a logic programming language, is often used in symbolic reasoning due to its strong support for formal logic and knowledge representation. Here's how neuro-symbolic AI can be explained using Prolog:&lt;/p&gt;

&lt;h3&gt;
  
  
  Components of Neuro-Symbolic AI with Prolog
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Neural Networks:&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Learning from Data:&lt;/strong&gt; Neural networks can learn complex patterns from large datasets, which makes them effective for tasks such as image recognition, natural language processing, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generalization:&lt;/strong&gt; These networks can generalize from training data to make predictions or classify new data instances.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Symbolic Reasoning with Prolog:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Logical Inference:&lt;/strong&gt; Prolog excels in logical inference, enabling the AI to make deductions based on a set of rules and facts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Knowledge Representation:&lt;/strong&gt; Prolog represents knowledge in the form of facts and rules, making it easy to encode and manipulate structured information.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  AI Autumn (Hopefully not a Winter)
&lt;/h2&gt;

&lt;p&gt;The term "AI winter" refers to a period of reduced funding and interest in artificial intelligence research. This phenomenon has historically occurred after initial enthusiasm and investment in AI led to expectations that were not met by the technology's actual capabilities. Concerns about entering another AI winter, or at least an AI autumn, are relevant when considering the current landscape dominated by large language models (LLMs).&lt;/p&gt;

&lt;p&gt;The hype surrounding LLMs has led to inflated expectations about their capabilities. While they are often presented as approaching human-like understanding, the reality is that they still lack true comprehension and reasoning abilities. They operate based on patterns in data rather than any semantic understanding. If the public and investors realize that these systems do not deliver on the broader promises of AI, such as general intelligence or fully autonomous decision-making, disappointment could lead to reduced funding and interest.&lt;/p&gt;

&lt;p&gt;Presently, much of the AI research and commercial focus is centered around large language models like GPT (Generative Pre-trained Transformer) and similar architectures. While these models have showcased remarkable capabilities in generating human-like text and performing a range of language-based tasks, they have limitations. Their reliance on vast amounts of data, substantial energy requirements, and occasional generation of nonsensical or biased outputs are significant drawbacks. If the field continues to prioritize LLMs without addressing these limitations, it might lead to stagnation and disillusionment among stakeholders.&lt;/p&gt;

&lt;h1&gt;
  
  
  Next in Journey: Neuro-Symbolic AI
&lt;/h1&gt;

&lt;p&gt;Larger models, sparse models, and Mixture-of-Experts (MoE) models have significantly advanced AI capabilities. A promising next step to further enhance these models is integrating them with &lt;em&gt;reasoning engines&lt;/em&gt; and &lt;em&gt;knowledge bases&lt;/em&gt;. This integration could enable AI to tackle complex logical tasks that require both broad knowledge and sophisticated reasoning abilities.&lt;/p&gt;

&lt;p&gt;Combining these advanced models with reasoning engines would allow AI to move beyond simple pattern recognition and statistical inference, enabling it to perform tasks that require logical deduction and critical thinking. Knowledge bases can provide a structured repository of factual information, which the AI can draw upon to inform its reasoning processes. This synergy between large-scale learning models and structured reasoning tools would pave the way for more intelligent systems capable of understanding context, making informed decisions, and solving problems that are currently beyond the reach of traditional neural networks. For instance, in fields like medical diagnostics, legal analysis, and scientific research, such integrated AI systems could offer profound insights, ensuring that decisions are based on comprehensive data analysis and robust logical frameworks. This approach holds the potential to bridge the gap between current AI capabilities and true artificial general intelligence (AGI).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Potential Benefits and Applications&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Reasoning Abilities:&lt;/strong&gt; Integrating neural networks with symbolic reasoning can enable AI systems to perform complex logical tasks, such as theorem proving, planning, and diagnostics, with greater accuracy and efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved Interpretability:&lt;/strong&gt; Symbolic components can make AI decisions more transparent and explainable, addressing one of the key concerns about the "black box" nature of deep learning models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Knowledge Integration:&lt;/strong&gt; Neuro-symbolic AI can incorporate existing human knowledge, represented in symbolic form, into learning processes, allowing for more efficient learning and better generalization from limited data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Robustness and Safety:&lt;/strong&gt; By embedding explicit rules and constraints, neuro-symbolic systems can avoid some of the pitfalls of purely data-driven approaches, such as generating biased or nonsensical outputs.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In conclusion, Neuro-Symbolic AI holds the potential to transform the field of artificial intelligence by unifying the strengths of neural networks and symbolic reasoning. By harnessing the depth of neural learning and the precision of symbolic processes, this emerging field promises to bridge the gap between learning and cognitive reasoning. This confluence represents not just a technical evolution but a paradigm shift towards creating systems that not only learn from vast datasets but also reason with the clarity and precision required for complex decision-making.&lt;/p&gt;

&lt;p&gt;This is a journey, many hints from nature, but surely it is all very beginning...&lt;/p&gt;




&lt;center&gt;
  &lt;b&gt;⭐️ Star us on GitHub for the support&lt;/b&gt;
&lt;/center&gt;

&lt;p&gt;
  &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbvwa94mlzqill5eg04s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbvwa94mlzqill5eg04s.png" alt="Nucleoid AI Banner"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Thanks to declarative logic programming, we have a brand-new approach to Neuro-Symbolic AI. As we continue to explore the potential of this AI architecture, we welcome all kinds of contributions!&lt;/p&gt;

&lt;center&gt;
  Join us at
  &lt;br&gt;
  &lt;a href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidAI/Nucleoid&lt;/a&gt;
&lt;/center&gt;





&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/NucleoidAI" rel="noopener noreferrer"&gt;
        NucleoidAI
      &lt;/a&gt; / &lt;a href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;
        Nucleoid
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Neuro-Symbolic AI with Knowledge Graph | "True Reasoning" through data and logic 🌿🌱🐋🌍
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Nucleoid&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  Neuro-Symbolic AI with Knowledge Graph
  &lt;br&gt;
  Reasoning Engine
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://www.apache.org/licenses/LICENSE-2.0" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/38263b79ba97f2a14c1ca442f41ca5ad3c07cc4848922838d3211a0632e34c3d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4170616368652d322e302d79656c6c6f773f7374796c653d666f722d7468652d6261646765266c6f676f3d617061636865" alt="License"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/nucleoidai" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9af1d9ae941223e409f6b1dd1ec06a711b3f29c3262f89bf1df72fbbb7472336/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e504d2d7265643f7374796c653d666f722d7468652d6261646765266c6f676f3d6e706d" alt="NPM"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/wN49SNssUw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/59256224247e44fd9bde7f7561675f7c958e222b489cf9c91ff64bdae8162516/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d6c69676874677265793f7374796c653d666f722d7468652d6261646765266c6f676f3d646973636f7264" alt="Discord"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/NucleoidAI/Nucleoid.github/media/banner.gif"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FNucleoidAI%2FNucleoid.github%2Fmedia%2Fbanner.gif" alt="Banner"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  Declarative (Logic) Runtime Environment: Extensible Data and Logic Representation
&lt;/p&gt;



&lt;p&gt;Nucleoid is a declarative, logic-based, contextual runtime for Neuro-Symbolic AI. Nucleoid runtime tracks each statement in &lt;a href="https://en.wikipedia.org/wiki/Information_Processing_Language" rel="nofollow noopener noreferrer"&gt;IPL-inspired&lt;/a&gt; declarative syntax and dynamically creates relationships between both logic and data statements in the knowledge graph to used in decision-making and problem-solving process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive Reasoning:&lt;/strong&gt; Combines symbolic logic with contextual information to analyze relationships, draw conclusions and incorporating new information and adjusting its conclusions accordingly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logic Graph:&lt;/strong&gt; Specialized knowledge graph that captures relationships between both logic and data statements based on formal logic, facilitating complex deductions and adapting to new information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explainability:&lt;/strong&gt; The Logic Graph provides a transparent representation of the reasoning process, making it easier to understand how decisions are reached and potential biases are identified.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Echoing to the idea of &lt;a href="https://kahneman.scholar.princeton.edu/publications" rel="nofollow noopener noreferrer"&gt;"thinking, fast and slow"&lt;/a&gt;, AI system should provide fast, “intuitive” ideas, and the…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/NucleoidAI/Nucleoid" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>ai</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Data Store with Nucleoid (Low-code Backend)</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Tue, 31 Jan 2023 18:51:08 +0000</pubDate>
      <link>https://forem.com/nucleoid/data-store-with-nucleoid-low-code-backend-2b7h</link>
      <guid>https://forem.com/nucleoid/data-store-with-nucleoid-low-code-backend-2b7h</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/NucleoidJS/Nucleoid" rel="noopener noreferrer"&gt;Nucleoid&lt;/a&gt; is a low-code framework, which tracks given statements in JavaScript and creates relationships between variables, objects, and functions etc. in the graph. So, as writing just like any other codes in Node.js, the runtime translates your business logic to fully working application by managing the JS state as well as storing in the built-in data store, so that your application doesn't require external database or anything else.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/nucleoid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2573%2F1734871b-2809-4197-b413-ad05ac0e9b5a.png" alt="Nucleoid" width="350" height="350"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F414571%2F4b9b4b88-98db-41ea-b3dc-86ca83e6667f.jpg" alt="" width="800" height="800"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/nucleoid/nucleoid-low-code-framework-for-nodejs-2395" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Nucleoid: Low-code Framework for Node.js&lt;/h2&gt;
      &lt;h3&gt;Can Mingir for Nucleoid ・ Mar 2 '22&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#node&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#lowcode&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nucleoid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;nucleoidjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Item&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;barcode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;barcode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;barcode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// 👍 Only needed a business logic and 💖&lt;/span&gt;
&lt;span class="c1"&gt;// "Create an item with given name and barcode,&lt;/span&gt;
&lt;span class="c1"&gt;// but the barcode must be unique"&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/items&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;barcode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;barcode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;check&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;barcode&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;barcode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;check&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DUPLICATE_BARCODE&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;barcode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;This is pretty much it, thanks to the Nucleoid runtime, only with this 👆, you successfully persisted your first object with the business logic 😎&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is the On-Chain Data Store?
&lt;/h2&gt;

&lt;p&gt;One important objective of Nucleoid project is to combine logic and data under the same runtime. Nucleoid has a built-in on-chain data store persists sequent transactions with the blockchain style encryption. Each transaction is sequentially encrypted with each other and the data store saves those hashes in managed-files. Each transaction is completed in sub-millisecond and any changes in hashes throws an error so that the final state of objects is guaranteed, and objects cannot be visible without ordered hashes and the initial key.&lt;/p&gt;

&lt;p&gt;Each call to the runtime is considered a transaction even though it contains multiple statements, and it rolls back the transaction if there is an error thrown.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The runtime returns something like this; result (if any), timestamp and a transaction hash.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1672179318252&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"time"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"d3af6bdae8e8ff1eeb1f0f1ea8aaf02e:8b23f8ec493a16cee484f44a6e09a543a62b5e535b8c16ad5f8484766eed686d"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Important different is the on-chain data store doesn't store value, instead it persists transactions like in CQRS, Event Store etc. and it is expected that the runtime builds up values in memory along with. This algorithm provides fast-read and fast-write with larger space complexity as well as requiring computing values in memory at boot up as a trade off.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example, this table is built in the memory as a part of transaction:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Values in Memory&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;var a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;var b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;var c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Transactions in Data Store&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;but actual the data store looks like this 👇 (This is decoded transaction objects though):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"s"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"var a = 1"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"s"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"var b = a + 2"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"s"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"var c = b + 3"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How is a hash generated?
&lt;/h3&gt;

&lt;p&gt;The runtime uses the hard-coded genesis token as a first hash in the chain. As it receives more transactions, the data store uses the previous hash as well as the key to generate next hash in the chain. It uses Node.js built-in crypto package with a configurable algorithm.&lt;/p&gt;

&lt;p&gt;Example of on-chain data in managed-files &lt;code&gt;~/.nuc/data/&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ff2024a65a339abd3c77bb069da38717:10812ca4ed497e3167684f9b0316b5cf72992adffd9ed8bd97e08f321e117daf367b012
a1a521479a43e1b16ce0ecc1671fbd8d:1ceb5211efadecc791c22a010752ecdf626764a71c4bc80c74f9d3ba6adb88d2e7cedcf
20033f1556383ce5b911436aa76381a8:543a50ae5072aa64acb0ef7c307aa53f3aaea042023704362305bedfafd721c9f918740
ee8a894958d4bb372d1a9e63335ccee7:4834d1e04e6b234135ae896c0057186df4c820b9b25fa6ce153e03f89c63b905208ba07
dc2d6d47071db41845fa8631b131bef5:0ec5427dd957ccb46fbd6884290eb0de9696102405fc606d2acf56e059ed3e827610e6a
3ef42a5927c4e231f17323619d6a60d1:e793031d12c9e5b10708c62d49a56c77fd9ef463606609036d22af83490106c213224e5
3a016c3e71238462f8b42ebb733e5856:cb1595d06424c7e1ec3c353f5eee2d6cf1b804306dcdadb09a6be9a066b89581270464d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Scalability
&lt;/h3&gt;

&lt;p&gt;Nucleoid follows single-threaded multi-process paradigm. The sharding handler takes a JavaScript function and lets developers create own scalability policies. The function receives additional data such as request headers, body etc. and it also comes with Nucleoid runtime along with the built-in data store, so that the sharding function can persist user data in order to support &lt;code&gt;memtable&lt;/code&gt; like in Cassandra.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx nucleoidjs start &lt;span class="nt"&gt;--cluster&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;npx&lt;/code&gt; command starts specialized Nucleoid instance and acts like a front door to the cluster. The default sharding function takes &lt;code&gt;Process&lt;/code&gt; header from REST and looks up in process list for IP and port information, and cluster instances can be added with calling terminal with &lt;code&gt;process1 = new Process("127.0.0.1", 8448)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The default function can be altered with including a function in &lt;code&gt;~/.nuc/handlers/cluster.js&lt;/code&gt; and returning process id from the function. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// cluster.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;jsonwebtoken&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bearer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;authorization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;bearer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;secret&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;decoded&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;company_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// This returns company id as a process id&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Benchmark
&lt;/h2&gt;

&lt;p&gt;This is the comparation our sample order app in Nucleoid IDE against MySQL and Postgres with using Express.js and Sequelize libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com/ide/sample" rel="noopener noreferrer"&gt;https://nucleoid.com/ide/sample&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fbenchmark.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fbenchmark.png" alt="Benchmark" width="600" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://github.com/NucleoidJS/benchmark" rel="noopener noreferrer"&gt;Performance benchmark&lt;/a&gt; is run in t2.micro of AWS EC2 instance and both databases had dedicated servers with no indexes and default configurations. For applications with average complexity, Nucleoid's performance is close to linear because of on-chain data store, in-memory computing model as well as limiting the IO process.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Thanks to declarative programming, we have a brand-new approach to data and logic. As we are still discovering what we can do with this powerful programming model, please join us with any types of contribution!&lt;/p&gt;

&lt;center&gt;
  Learn more at &lt;a href="https://github.com/NucleoidJS/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidJS/Nucleoid&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz0h01xt02x9o2thu0o4.png" alt="Nucleoid Logo" width="62" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
    <item>
      <title>react-event: Event-driven Alternative to React Context</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Tue, 10 Jan 2023 19:45:00 +0000</pubDate>
      <link>https://forem.com/nucleoid/synapses-event-driven-alternative-to-react-context-2mdm</link>
      <guid>https://forem.com/nucleoid/synapses-event-driven-alternative-to-react-context-2mdm</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i @nucleoidai/react-event
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;react-event&lt;/code&gt; is an alternative to React Context with event-driven style that helps to build  loosely coupled components.&lt;/p&gt;

&lt;center&gt;
  &lt;a href="https://github.com/NucleoidAI/react-event" rel="noopener noreferrer"&gt;https://github.com/NucleoidAI/react-event&lt;/a&gt;
&lt;/center&gt;




&lt;h3&gt;
  
  
  How it works?
&lt;/h3&gt;

&lt;p&gt;Subscribers are registered an event with the custom hook &lt;code&gt;useEvent(eventType, initialValue)&lt;/code&gt;, once publisher posts an event and its payload, &lt;code&gt;react-event&lt;/code&gt; asynchronously sends the event to subscribed components and subscribed components will eventually be re-rendered with fresh data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hello World 🐦
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;publish&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@nucleoidai/react-event&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PublishComponent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt;
          &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;publish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;BUTTON_CLICKED&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;string&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;red&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
          &lt;span class="p"&gt;}}&lt;/span&gt;
      &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Button&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useEvent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@nucleoidai/react-event&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Component1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;initValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;BUTTON_CLICKED&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;initValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useEvent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@nucleoidai/react-event&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Component2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;initValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;string&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;BUTTON_CLICKED&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;initValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9vnbvrwmoiox3pnv20a.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa9vnbvrwmoiox3pnv20a.gif" alt="Sample react-event" width="500" height="500"&gt;&lt;/a&gt;&lt;br&gt;
The complete sample project is &lt;a href="https://github.com/NucleoidAI/react-event/tree/main/sample" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stateless Handling 💊
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;react-event&lt;/code&gt; supports stateless components with caching last published payload for the event type, so that if the component is re-rendered, it won't lose the payload. For example, Component 3 in this example is not re-rendered yet, but &lt;code&gt;react-event&lt;/code&gt; holds the last payload for the event type, and once the component is rendered, it returns the payload instead of initial value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5mnecm57m7emio8hoxn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5mnecm57m7emio8hoxn.png" alt="react-event Diagram" width="491" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Event-driven Architecture
&lt;/h2&gt;

&lt;p&gt;Event-driven Architecture is commonly used in Microservices systems that pretty much targets similar problem; loose coupling. This style of architecture require middleware like Kafka, RabbitMQ etc. and we are trying to adopt the very same idea to React.js, of course with some modification such as "Stateless Handling".&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 My personal experience with React Context wasn't pleasant especially, when a project gets bigger. We've been working on &lt;a href="https://github.com/NucleoidAI/IDE" rel="noopener noreferrer"&gt;Low-code IDE project&lt;/a&gt;, which contains a good amount of reusable components, but they are connected with the giant reducer. We were considering  having multi context reducers concept to ease the problem, seems like it may even complicate more the structure when contexts have to talk to each other.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F029dek4adlrstyfmncew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F029dek4adlrstyfmncew.png" alt="React Reducer Funny Meme" width="500" height="562"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Advanced Usage 🙌
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;react-event&lt;/code&gt; can coexist with React Context, actually, it might be even better for complex projects. React Context may handle large dataset with dispatching, which re-renders all listening components (Usually majority of components) and in meanwhile, Synapses can help with local events and limit re-rendering for components that reacting only certain events. This can help to lower workload on a context reducer as well as provide better performance overall.&lt;/p&gt;




&lt;center&gt;
  Star us on GitHub for the support
  &lt;a href="https://github.com/NucleoidAI/react-event" rel="noopener noreferrer"&gt;https://github.com/NucleoidAI/react-event&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz0h01xt02x9o2thu0o4.png" alt="Nucleoid Logo" width="62" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>typescript</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Build REST endpoints with Low-code Backend</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Thu, 13 Oct 2022 17:02:41 +0000</pubDate>
      <link>https://forem.com/nucleoid/build-rest-endpoints-with-low-code-backend-1fd7</link>
      <guid>https://forem.com/nucleoid/build-rest-endpoints-with-low-code-backend-1fd7</guid>
      <description>&lt;p&gt;Nucleoid low-code framework helps to build REST endpoints with declarative runtime, which manages the control flow and stores in built-in datastore under the same runtime.&lt;/p&gt;

&lt;p&gt;Underlying declarative runtime re-renders very same JavaScript codes, makes connections in the graph and eventually saves the JavaScript state so that it doesn't require external database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Business Logic
&lt;/h2&gt;

&lt;p&gt;All JavaScript codes are re-rendered and tracked by the runtime with using &lt;a href="https://en.wikipedia.org/wiki/Abstract_semantic_graph" rel="noopener noreferrer"&gt;abstract semantic graph&lt;/a&gt; so that the runtime builds up the graph around business logic and in meanwhile the runtime is responsible for technical details.&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/nucleoid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2573%2F1734871b-2809-4197-b413-ad05ac0e9b5a.png" alt="Nucleoid"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F414571%2F4b9b4b88-98db-41ea-b3dc-86ca83e6667f.jpg" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/nucleoid/low-code-framework-concept-for-nodejs-55b0" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Low-code Framework Concept for Node.js 🥑&lt;/h2&gt;
      &lt;h3&gt;Can Mingir for Nucleoid ・ Jul 27 '22&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#node&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#lowcode&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#backend&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Data
&lt;/h2&gt;

&lt;p&gt;As tracking JavaScript codes, the runtime also saves the JavaScript state as a data storage so that the runtime itself doesn't require any external database. This eliminates a good number of codes as well as complexity of the application. Frankly, it opens up different possibilities. (I'll talk about more in next articles)&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;💡 The main objective of the project is to manage both of data and logic under the same runtime, so that the application can be written with less code lines and without requiring external database.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  REST
&lt;/h2&gt;

&lt;p&gt;So far, we have 2 options to integrate with Nucleoid runtime in order to build REST APIs:&lt;/p&gt;

&lt;h3&gt;
  
  
  Express.js
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nucleoid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;nucleoidjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// npm install nucleoidjs&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;👆 This is it! It saves your object without external database.&lt;/p&gt;

&lt;p&gt;Here is more about complete examples:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/nucleoid" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2573%2F1734871b-2809-4197-b413-ad05ac0e9b5a.png" alt="Nucleoid"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F414571%2F4b9b4b88-98db-41ea-b3dc-86ca83e6667f.jpg" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/nucleoid/crud-with-nucleoid-low-code-backend-53c5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;CRUD with Nucleoid (Low-code Backend)&lt;/h2&gt;
      &lt;h3&gt;Can Mingir for Nucleoid ・ Aug 2 '22&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#node&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#lowcode&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  OpenAPI
&lt;/h3&gt;

&lt;p&gt;We support OpenAPI 3 with additional &lt;code&gt;x-nuc-action&lt;/code&gt; field, which takes very similar pure JavaScript codes in Express.js, but it prepares for running with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;npx nucleoidjs start&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"openapi"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3.0.3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"/users"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Create User"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"request"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"response"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"$ref"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"#/components/schemas/User"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"x-nuc-action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"function action(req) {
      const name = req.body.name;
      return new User(name);"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://nucleoid.com/ide/" rel="noopener noreferrer"&gt;Nucleoid IDE&lt;/a&gt; is an online editor that packages 👆 which helps to run with OpenAPI.&lt;/p&gt;

&lt;center&gt;
  Give a try at &lt;a href="https://nucleoid.com/ide/" rel="noopener noreferrer"&gt;https://nucleoid.com/ide/&lt;/a&gt;
&lt;br&gt;
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4aya1amxp63nxm5rwpbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4aya1amxp63nxm5rwpbc.png" alt="IDE"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F551nv9y4u5o25hslzycj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F551nv9y4u5o25hslzycj.png" alt="Swagger"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Query
&lt;/h2&gt;

&lt;p&gt;Nucleoid runtime also opens up terminal channel in order to run statements like SQL. This gives the runtime acting like database with pure JavaScript along with simple npm project 😎&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgl6gxgrn9cla6pw2fh57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgl6gxgrn9cla6pw2fh57.png" alt="Query"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thanks to declarative programming, we have a brand-new approach to data and logic. As we are still discovering what we can do with this powerful programming model, please join us with any types of contribution!&lt;/p&gt;

&lt;center&gt;
  Learn more at &lt;a href="https://github.com/NucleoidJS/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidJS/Nucleoid&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Ficon.png" alt="Nucleoid Logo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>lowcode</category>
      <category>showdev</category>
    </item>
    <item>
      <title>CRUD with Nucleoid (Low-code Backend)</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Tue, 02 Aug 2022 18:56:18 +0000</pubDate>
      <link>https://forem.com/nucleoid/crud-with-nucleoid-low-code-backend-53c5</link>
      <guid>https://forem.com/nucleoid/crud-with-nucleoid-low-code-backend-53c5</guid>
      <description>&lt;p&gt;Nucleoid Low-code Framework works with underlying declarative runtime environment that re-renders very same JavaScript codes makes a connections in the graph and eventually save the JavaScript state so that it doesn't require external database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👽 lets developers build APIs with the help of AI (Lots of Graph)&lt;/li&gt;
&lt;li&gt;❤ works with underlying declarative runtime environment&lt;/li&gt;
&lt;li&gt;🤘 the runtime also comes with built-in datastore&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quick Setup&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nucleoid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;nucleoidjs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// npm install nucleoidjs&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create
&lt;/h3&gt;

&lt;p&gt;let's start with creating &lt;code&gt;User&lt;/code&gt; class and its first user object with this 👇&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🌵 &lt;u&gt;The reason why you don't need external database&lt;/u&gt; is Nucleoid runtime manages and stores JavaScript state. Every time when there are statements run through the runtime, Nucleoid runtime adjusts the AI graph and stores within runtime-managed &lt;code&gt;fs&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Read
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users/:id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When a class like &lt;code&gt;User&lt;/code&gt; registered, the runtime creates &lt;u&gt;shortcut array&lt;/u&gt; for its instances, you can query or use the id (&lt;code&gt;var&lt;/code&gt; name) of the instance for the access later down. Alternatively, you can do like this too &lt;code&gt;User.find(user =&amp;gt; user.id === id)&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Update &amp;amp; Delete
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users/:id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users/:id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similar to examples above, it works with vanilla JavaScript, and the runtime re-renders and manages the JavaScript state. Additionally, you can write up some business logic in JavaScript as well. For example, you may say &lt;code&gt;if (user.name.length &amp;lt; 3) { throws "INVALID_USER" }&lt;/code&gt; if you want certain limitation on users' names.&lt;/p&gt;

&lt;h3&gt;
  
  
  Query
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;nucleoidjs&lt;/code&gt; package also opens up terminal channel in order to run statements like SQL&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ywdtjyhjd20tl9ejxxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ywdtjyhjd20tl9ejxxg.png" alt="Terminal Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Nucleoid IDE (OpenAPI Editor)
&lt;/h3&gt;

&lt;p&gt;We are also building online OpenAPI editor that helps to build up very same APIs with the user interface. It is especially designed for OpenAPI integration and also has a connection to CodeSandbox so that you can easily run your projects on the sandbox.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-1.png" alt="Screenshot 1"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thanks to declarative programming, we have a brand-new approach to data and logic. As we are still discovering what we can do with this powerful programming model, please join us with any types of contribution!&lt;/p&gt;

&lt;center&gt;
  Learn more at &lt;a href="https://github.com/NucleoidJS/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidJS/Nucleoid&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Ficon.png" alt="Nucleoid Logo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>lowcode</category>
      <category>ai</category>
    </item>
    <item>
      <title>Low-code Framework Concept for Node.js 🥑</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Wed, 27 Jul 2022 17:34:00 +0000</pubDate>
      <link>https://forem.com/nucleoid/low-code-framework-concept-for-nodejs-55b0</link>
      <guid>https://forem.com/nucleoid/low-code-framework-concept-for-nodejs-55b0</guid>
      <description>&lt;p&gt;We've launched a project that it can automate data and logic in Node.js, so that it can organically reduce code lines.&lt;/p&gt;

&lt;p&gt;Nucleoid Low-code Framework works with underlying declarative runtime environment that re-renders very same JavaScript codes makes a connections in the graph and eventually save the JavaScript state so that it doesn't require external database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hello World&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This 👆 will save and return variables without external database even if the program restarted.&lt;/p&gt;

&lt;p&gt;The Nucleoid runtime environment tracks JavaScript state like variables, object, class, etc. that it can control all technical codes like pooling, connections, in meanwhile, developers can focus to build up business logic with vanilla JavaScript.&lt;/p&gt;

&lt;p&gt;Example with actual objects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Daphne&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Daphne&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Theory
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Applying declarative programming at the runtime gives us ability to include data management in the same process.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In different words, the main objective of the project is to manage both of data and logic under the same runtime, at the same time, we can also stream/export data to external database like NoSQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;nucleoid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once a variable is defined like &lt;code&gt;var a = 1&lt;/code&gt;, the runtime does 3 major things. First, it places the &lt;code&gt;var a&lt;/code&gt; in the graph and makes the connection between dependent variables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fvariable-graph.drawio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fvariable-graph.drawio.png" alt="Variable Graph"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Second, updates state with new values in order get affect&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;var a&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;var b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;var c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;However, actual execution is different since variables are tracked in the graph.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and finally stores statements in the runtime-managed &lt;code&gt;fs&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  IDE (OpenAPI Editor)
&lt;/h2&gt;

&lt;p&gt;The framework works with Express.js, we also made small UI that builds up the very same codes with OpenAPI, package and run on CodeSandbox.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com/ide/" rel="noopener noreferrer"&gt;Go to Nucleoid IDE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-1.png" alt="Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;This paradigm is still a part of the declarative programming, but applied at the runtime unlike Prolog or Haskell. As we are still discovering what we can do with this powerful programming model, please join us with any types of contribution!&lt;/p&gt;

&lt;center&gt;
  Learn more at &lt;a href="https://github.com/NucleoidJS/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidJS/Nucleoid&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Ficon.png" alt="Nucleoid Logo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>node</category>
      <category>lowcode</category>
      <category>backend</category>
    </item>
    <item>
      <title>Nucleoid IDE</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Sat, 23 Jul 2022 14:20:31 +0000</pubDate>
      <link>https://forem.com/nucleoid/nucleoid-ide-4gh8</link>
      <guid>https://forem.com/nucleoid/nucleoid-ide-4gh8</guid>
      <description>&lt;p&gt;Nucleoid IDE helps to build up your APIs with the user interface. It is especially designed for OpenAPI integration and also has a connection to CodeSandbox so that you can easily run your projects on the sandbox or &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-1.png" alt="Screenshot 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Fscreenshot-2.png" alt="Screenshot 2"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thanks to declarative programming, we have a brand-new approach to data and logic. As we are still discovering what we can do with this powerful programming model, please join us with any types of contribution!&lt;/p&gt;

&lt;center&gt;
  Learn more at &lt;a href="https://github.com/NucleoidJS/Nucleoid" rel="noopener noreferrer"&gt;https://github.com/NucleoidJS/Nucleoid&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://nucleoid.com" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.nucleoid.com%2Fmedia%2Ficon.png" alt="Nucleoid Logo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>OpenAPI Integration</title>
      <dc:creator>Can Mingir</dc:creator>
      <pubDate>Sat, 23 Jul 2022 14:18:00 +0000</pubDate>
      <link>https://forem.com/nucleoid/openapi-integration-229o</link>
      <guid>https://forem.com/nucleoid/openapi-integration-229o</guid>
      <description>&lt;p&gt;Similar to building on Express.js, you can also build the same APIs with OpenAPI. There is only one additional field &lt;code&gt;x-nuc-action&lt;/code&gt; that is triggered when the API has been called, which run the action function inside the Nucleoid runtime.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;POST https://localhost:8448/openapi&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"api"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"get"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hello World"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"in"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"query"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"request"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"response"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"x-nuc-action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function action(req) { return { message: 'Hello World' }; }"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
