Entradas

2-5: Lin Clark on WebAssembly

The goals of WebAssembly is to make it possible to have consistent performance in your applications. WebAssembly gives you a language that gives you the behavior of JavaScript and more features in order to achieve a better performance than JavaScript because this programming language was designed to be easy to use not to have an excellent performance. For example, the PC games in webpages (most of them) were develop with JavaScript; first, we need to remember that JavaScript it is not a language that was created to develop games, it was created to be easy so, naturally, it was. normal that this kind of web games have frame drops because of the language per se. At this point, the question that arises is "What is WebAssembly". WebAssembly (abbreviated Wasm), is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C, C++, Rust, enabling deployment on the web for client and serve

2-4: Building Server-Side Web Language Processors

I completely agree with the point of view that Ariel Ortiz gave in the paper "Building Server-Side Web Language Processors". In this paper he covered a lot of topics that I have been learning during all my courses of my professional career. I found interesting that he briefly and concisely describes how you can mount a webserver from scratch and also liked that he warned us that this was not trivial and was time consuming. I learn how to mount a server using an EC2 computer (AWS service that allows you to have a computer on the cloud) in my Web Development course. At the start of our eight semester the instructor Ariel Ortiz told us that the compiler will be going to be on a webserver. At first, I though "Ok, I was not expecting that" because the previous course of compiler design was directly run on terminal. But then I thought that it was a good opportunity to try new things that will give me more tools to my future work, so I am a little desperate to get

2-3: Ruby and the Interpreter Pattern

It is important to have in mind the following things when we talk about the S-Expression Interpreter Framework (SIF). First, the SIF follows the lisp-like notation, this means, that in order to write programs you need to have a little knowledge of how to write programs in Lisp (that is why Ariel Ortiz taught this topic in the last 4 weeks of the course, in order to be familiarized with all the topics that were covered in this paper). Another thing you need to have in mind is that SIF is written in Ruby programming language (many classmates mention me that Ruby it’s like Python but in steroids). Know, let's analyze how SIF works in the backstage. If you want to implement a totally knew special form, you will need to do it a certain way in order to let the compiler do his job and do it right. So, in the case that is covered in the paper (the if special form), you need to define a new class that NEEDS to be a Node in order to be used as a node for the interpreter pattern tree, al

2-2: Mother of Compilers

When we talk about women in the software industry our mind goes directly to Ada Lovelace but there is other (and in my opinion more important) woman that also it is necessary to know. I am talking about Grace Murray Hopper. Grace Murray Hopper was an extraordinary woman that established the bases of the Cobol Language and the first woman that not only though that computers were more than monsters of calculus. Influenced by the ideas and philosophy of Babbage she developed the very first compiler, the A-0 compiler. At first this compiler was underestimated by the community in order to change this point of view, Hopper tell the community to come and try the compiler with any problem that they had. One of the problems that the compiler solved was one on derivates, the machine accomplished the correct calculation of the first 15 derivates of a problem that a person was having of a very ugly function. Another thing that this compiler could accomplish, was the translation of French and

2-1: "Internals of GCC"

The very first thing that the podcaster said it is that the real name for GCC is Gnu Compiler Collection, it is important to know this because at the end it is the jargon of Computer Science and general culture among the computer scientific. So, let's start. First of all, we need to remember all the stages when we want to build a compiler in order to know how GCC internally works. So, the first thing that we will cover in this blog entry it is the lexical analysis; in this stage the compiler will strip down all the characters or character stream into a token stream this is, that the compiler will check if that tokens are reserved words or are variables that will be token in that program. In order to keep the second phase simple enough in this phase you create the abstract syntax tree (this is how we need to create the tree in order to produce or compute the operations in the order they are provided). In the third phase, like the podcaster said, the compiler needs to check

1-3:“The Hundred-Year Language”

If you ask me today how will the hundred year language will be I will answer you I do not care about that because I think that programming languages will always need to be written by humans and not by machines (unless we want a dystopia like Matrix). Nevertheless, I found interesting the point of view of the author where he describes that the new upcoming languages will not be fully optimized, actually they will be the opposite because it will be hardware robust enough to run that kind of programs in little times. In my opinion I think that the new upcoming languages will have this feature the author mentions, coupled with this that language will be easy to write and learn it because the human being (I am including me) is lazy enough that we will learn and use that language where we do not need to stay ours and ours programming in it, we will use the easier languages to program. If we go back in time a few years I am certain that the programmers on that time would not use the

1-2: Making Compiler Design Relevant for Students

It is incredible to think about all the potential that learning all the phases of how to build a compiler have. In the paper, the author talks a lot about of the importance of learning this topic. The paper starts saying that most of the students thinks that making a compiler it is a thing that they will not ever use in the future and how wrong they were. I liked a lot of how the author let us know that we can use all the knowledge learned in this subject to solve real life problems it is amazing. One of the examples that I found interesting was the translator of LaTeX syntax to HTML syntax. The interesting part is the way the author put this, he says that we need to think this as a translation problem; the first step in order to solve this problem is to get the RegEx expression in order to start making the tokens and go to the next phase of the creation of a compiler. The real difficult problem was to process all the special syntax of the LaTeX (things like tables, references and