Day 12 – Simplifying

There’s a saying “better done than perfect”. When it comes to complex projects building prototypes first is most viable. Expansion and refactoring will come later.

While working on both first and second versions of Toe language and their compilers, there were times when it felt that releasing imperfect versions felt wrong. And in some ways it still doesn’t feel right to release a compiler with limited capabilities because as a developer I want to have as complete tool as possible and in kind giving a tool which is in prototype stage for others to use feels a bit irresponsible.

On the other hand, critics of waterfall are right in this matter. Building something until it’s perfect doesn’t make much sense if it takes too long. It’s better to have a barely functioning compiler with plans to expand it than nothing.

My current problem is somewhat related to what was happening six days ago when I wrote about implementing for unknown. One of the unknowns of every programming languages are conditions in while , if  and sometimes for  statements.

Note: For those who don’t know Python, there is no for statement which ends with condition. For comparison in language with syntax based on C there’s quite often a condition in the middle: for (int i; i < arr.length; i++) , in Python the same loop would be written without a condition: for index in range(len(my_list)):

At its simplest for condition in those statements is True  which is not very useful unless  it relies on a variable.

Next level of conditions is var1 > var2 where we compare either two variables or variable with a constant. Comparing two constants might be possible in some languages but at the end of the day it’s also not very useful.

Third and last level that we have to deal with are compounded conditions such as (var1 > var2) and (var3 < var2) . There are two conditions there joined by keyword and . Here is where the devil lives. While designing a language as a creator there’s no possible way to guess how many conditions can there be and how they will be compounded.

If I didn’t know humans I put there something basic which would cover most of the cases but wanting to be thorough pushes me to choose a different way. For the time being compounded conditions won’t be valid part of Toe language.

This is unfortunately one of the corners that has to be cut because there’s a bigger picture and other parts need to be addressed sooner rather than later. I will most definitely circle back to Toe language but right now I need something basic that works.