<?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: Elabsurdo984</title>
    <description>The latest articles on DEV Community by Elabsurdo984 (@elabsurdo984).</description>
    <link>https://dev.to/elabsurdo984</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%2Fuser%2Fprofile_image%2F3837167%2F44e66452-e4cf-444a-8c49-1e40d860b396.png</url>
      <title>DEV Community: Elabsurdo984</title>
      <link>https://dev.to/elabsurdo984</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elabsurdo984"/>
    <language>en</language>
    <item>
      <title>My Own Programming Language</title>
      <dc:creator>Elabsurdo984</dc:creator>
      <pubDate>Sat, 21 Mar 2026 14:40:37 +0000</pubDate>
      <link>https://dev.to/elabsurdo984/my-own-programming-language-5eli</link>
      <guid>https://dev.to/elabsurdo984/my-own-programming-language-5eli</guid>
      <description>&lt;h1&gt;
  
  
  I built my own programming language from scratch (and it took me 2 months)
&lt;/h1&gt;

&lt;p&gt;Ever since I started learning to code, I had one dream that always felt&lt;br&gt;
  too big: &lt;em&gt;what if I built my own programming language?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not a toy. Not a calculator. A real language — with variables, functions,&lt;br&gt;
  classes, error handling, and its own package manager.&lt;/p&gt;

&lt;p&gt;So I did it. And it only took me about 2 months.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Luz?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Luz&lt;/strong&gt; (the Spanish word for &lt;em&gt;light&lt;/em&gt;) is a lightweight interpreted&lt;br&gt;
  programming language written in Python. It's designed to be simple,&lt;br&gt;
  readable, and easy to learn.&lt;/p&gt;

&lt;p&gt;This is valid Luz code:&lt;/p&gt;

&lt;p&gt;name = listen("What is your name? ")&lt;br&gt;
  write($"Hello {name}!")&lt;/p&gt;

&lt;p&gt;for i = 1 to 5 {&lt;br&gt;
      if even(i) {&lt;br&gt;
          write($"{i} is even")&lt;br&gt;
      } else {&lt;br&gt;
          write($"{i} is odd")&lt;br&gt;
      }&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;It has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic typing&lt;/li&gt;
&lt;li&gt;Format strings — &lt;code&gt;$"Hello {name}!"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Classes and inheritance&lt;/li&gt;
&lt;li&gt;Lambdas — &lt;code&gt;fn(x) =&amp;gt; x * 2&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Error handling — &lt;code&gt;attempt / rescue&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A module system — &lt;code&gt;import "utils.luz"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A package manager called &lt;strong&gt;Ray&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A standalone Windows installer (no Python required)&lt;/li&gt;
&lt;li&gt;Full documentation website&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  I'm just a student
&lt;/h2&gt;

&lt;p&gt;I want to be upfront about this: I'm not a professional developer.&lt;br&gt;
  I'm a student who learned programming and decided to push myself further&lt;br&gt;
  than any tutorial ever asked me to.&lt;/p&gt;

&lt;p&gt;Building Luz taught me more than any course I've taken:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How a &lt;strong&gt;lexer&lt;/strong&gt; turns raw text into tokens&lt;/li&gt;
&lt;li&gt;How a &lt;strong&gt;recursive descent parser&lt;/strong&gt; builds an AST&lt;/li&gt;
&lt;li&gt;How an &lt;strong&gt;interpreter&lt;/strong&gt; walks a tree and executes code&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;closures&lt;/strong&gt; actually work under the hood&lt;/li&gt;
&lt;li&gt;How &lt;strong&gt;OOP&lt;/strong&gt; can be implemented from scratch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've ever been curious about how programming languages work,&lt;br&gt;
  building one — even a small one — is the best way to find out.&lt;/p&gt;
&lt;h2&gt;
  
  
  The hardest parts
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Operator precedence&lt;/strong&gt; was the first real challenge. Getting &lt;code&gt;2 + 3 * 4&lt;/code&gt;&lt;br&gt;
  to evaluate correctly requires a specific structure in the parser. Once&lt;br&gt;
  it clicked, it felt like magic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OOP&lt;/strong&gt; was the most complex feature. Implementing &lt;code&gt;super&lt;/code&gt;, closures,&lt;br&gt;
  and method resolution took the most time and debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The dot operator&lt;/strong&gt; caused a sneaky bug — the lexer was consuming &lt;code&gt;obj.attr&lt;/code&gt;&lt;br&gt;
  as a float literal. A small lookahead fix solved it, but it took a while&lt;br&gt;
  to find.&lt;/p&gt;
&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Luz is heading toward &lt;strong&gt;web development&lt;/strong&gt; — HTTP servers, JSON, fetch,&lt;br&gt;
  and eventually a full-stack story. The goal is to make Luz the simplest&lt;br&gt;
  language for building web things.&lt;/p&gt;

&lt;p&gt;The package manager &lt;strong&gt;Ray&lt;/strong&gt; is also growing. Soon you'll be able to install&lt;br&gt;
  community libraries with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  ray &lt;span class="nb"&gt;install &lt;/span&gt;user/package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Try it&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website &amp;amp; docs: &lt;a href="https://elabsurdo984.github.io/luz-lang/" rel="noopener noreferrer"&gt;https://elabsurdo984.github.io/luz-lang/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Elabsurdo984/luz-lang" rel="noopener noreferrer"&gt;https://github.com/Elabsurdo984/luz-lang&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Windows installer: available on the website&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear what you think — feedback, criticism, ideas.&lt;br&gt;
  This project is still young and I'm learning as I go.&lt;/p&gt;

&lt;p&gt;If you've ever thought about building your own language, do it.&lt;br&gt;
  It's the most fun I've had coding.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
