<?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>DEV Community: Nissan</title>
    <description>The latest articles on DEV Community by Nissan (@nissanboss).</description>
    <link>https://dev.to/nissanboss</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4059038%2F02d1c551-c78a-48fa-921b-51aab96cc9f3.png</url>
      <title>DEV Community: Nissan</title>
      <link>https://dev.to/nissanboss</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nissanboss"/>
    <language>en</language>
    <item>
      <title>I built a programming language with no symbols, and the hardest part was the word "and"</title>
      <dc:creator>Nissan</dc:creator>
      <pubDate>Sun, 02 Aug 2026 12:07:33 +0000</pubDate>
      <link>https://dev.to/nissanboss/i-built-a-programming-language-with-no-symbols-and-the-hardest-part-was-the-word-and-3ioh</link>
      <guid>https://dev.to/nissanboss/i-built-a-programming-language-with-no-symbols-and-the-hardest-part-was-the-word-and-3ioh</guid>
      <description>&lt;p&gt;I'm Spanish, and I kept watching people around me try to learn programming&lt;br&gt;
and give up. Not because loops are hard, but because they were learning two&lt;br&gt;
things at once: the concept, and what &lt;code&gt;while&lt;/code&gt; even means.&lt;/p&gt;

&lt;p&gt;So I built Fal. All words, in Spanish, no symbols at all.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;si edad es mayor que 18
    escribe "Puedes pasar"
si no
    escribe "Todavía no"
fin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It runs in the browser if you want to poke at it:&lt;br&gt;
&lt;a href="https://nissanboss.github.io/Fal/" rel="noopener noreferrer"&gt;https://nissanboss.github.io/Fal/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two things I didn't see coming.&lt;/p&gt;
&lt;h2&gt;
  
  
  The word "and" nearly broke it
&lt;/h2&gt;

&lt;p&gt;In Fal, &lt;code&gt;y&lt;/code&gt; (and) is both the logical AND and the argument separator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;si a y b           # AND
suma con 1 y 2     # separator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So &lt;code&gt;y&lt;/code&gt; was reserved and you couldn't name a variable &lt;code&gt;y&lt;/code&gt;. Annoying the&lt;br&gt;
moment you want coordinates. I assumed it was unfixable and moved on.&lt;/p&gt;

&lt;p&gt;Then the author of EsJS turned up in a thread and said context should&lt;br&gt;
decide it, not a reserved word list. He was right, and the fix was&lt;br&gt;
embarrassing: as a keyword &lt;code&gt;y&lt;/code&gt; is always infix, it always comes after&lt;br&gt;
something. As a name it's always where a value goes. The parser already&lt;br&gt;
knew which one it was looking at.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;escribe x y y            # "x AND the variable y"
tipo Punto con x y y     # fields x and y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Exact decimals were a footnote that became the main feature
&lt;/h2&gt;

&lt;p&gt;A number is an int64 while it fits, an exact rational once decimals show&lt;br&gt;
up, and only falls back to float when there's no exact answer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;escribe 0.1 mas 0.2             # 0.3
escribe (0.1 mas 0.2) es 0.3    # verdadero
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks like a party trick. Then I wrote an example that sums 23 expenses&lt;br&gt;
from a CSV: Fal gives 1546.19 and the categories reconcile to the cent.&lt;br&gt;
The same sums in float give 1546.1900000000005, which doesn't reconcile&lt;br&gt;
with its own parts.&lt;/p&gt;

&lt;p&gt;Decimal and BigDecimal exist everywhere, I know. The difference is that a&lt;br&gt;
kid adding two prices doesn't have to know they exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it isn't
&lt;/h2&gt;

&lt;p&gt;Nobody's shipping production software in this. Tree-walking interpreter,&lt;br&gt;
about 8x slower than Python, no package ecosystem. It's a ramp. If someone&lt;br&gt;
gets what a loop is here and then moves to Python, that was the point.&lt;/p&gt;

&lt;p&gt;Go, ~5800 lines, no dependencies. Source:&lt;br&gt;
&lt;a href="https://github.com/NissanBoss/Fal" rel="noopener noreferrer"&gt;https://github.com/NissanBoss/Fal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you think the &lt;code&gt;y&lt;/code&gt; fix has a hole in it, I'd like to hear it.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>go</category>
      <category>showdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
