Sif


Last semester I had the chance to use Ruby for the first time. Oddly, it felt like a combination of many languages I was used to. The fact that everything is an object was really interesting and programming with it was relatively easy. However, I was not expecting to use it in Compiler Design.
I liked to see how previous concepts like the Interpreter Pattern where applied in a real case scenario. SIF offer interesting ways to define classes and call methods. It’s very impressive that you can do both Imperative and Functional Programming.
I can see how many things I’ve learned in Clojure one year ago can be applied to SIF, mainly because it’s syntaxis is based on Lisp, which was the base for Clojure. Things like the use of Parenthesis, the 3 argument structures, reliance on lists and recursion are presents in this language.
The way it makes easier to understand all the work that is done behind the code, how those commands are interpreted by the compiler in order to carry them out. Now I can understand the purpose of the last classes of my Programming Languages course.
This makes me think about the importance of teaching students to design compilers. Thought it’s true most of them won’t ever do something related to it, knowing this makes them see the logic behind many programming languages, thus improving their understanding of said languages.
SIF is a very simple language, but its features allow to add a huge amount of functionality. I’m very curious to see if I can implement some basic commands using SIF.
In the end, just like previous articles, this one has managed to make me appreciate more the compilers and their use in my daily activities as a programmer. if I know how the language works backdoors, then I'll know what it can do and its limitations. Thank you for reading, see you next time.


Comentarios

Entradas populares de este blog

Making Compiler Design Relevant for Students who will (Most Likely) Never Design a Compiler

Introduction