Entradas

The Hitchhiker’s Guide to the Galaxy

This book was part of an initiative our teacher follows which attempts to make us read more novels and casual reading. The book titled  The Hitchhiker’s Guide to the Galaxy  is written by Douglas Adams and although it wasn't my first time reading it, I was really happy of reading it again., first of all it is a great book, with a great story which I really liked and best of all it is not a very long book, which made it easier to read and in general a great book to read. Avoiding spoilers, the story is about a man and his "human" friend travelling to the galaxy with a guide, titled the same way as the book. This guide explains the characteristics of species, planets, galaxy and during the pass of the story, you are meeting new characters and many "strange" events that in some cases there is no sense in them but they are fun for some reason, and remember, 42 is the answer of everything.  I would certainly recommend first of, buying this book, it's no

Technical Overview of the CLR

This last entry based on the article titled Technical Overview of the Common Language Runtime  written by Erik Meijer and Jim Miller. Basically what the authors do here is a comparison between Common Language Runtime (CLR) and the Java Virtual Machine (JVM). The CLR is basically a platform-independent development system which enables programs from different programming languages to be run on different types of hardware and it is composed by the Common Tape System and the Common Language Specification, after being written the applications written in CLR are compiled into Intermediate language and finally compiled into the hardware in which you want to run the code by the Common Language Runtime. In contrast, the JVM is an environment that is used to execute Java Programs, these programs are compiled into bytecode and then ran on any platform that has JVM installed. But, which one is better? And the answer is CLR, even though these two platforms are interesting and have their own str

Building Server-Side Web Language Processors

This entry is based on an article titled  “Building Server-Side Web Language Processors”,  by our teacher Ariel Ortiz. The article wants to explain that it is possible to build a language processor in a web environment. In order to do this, we must adapt our work to a web interface and we must also consider when trying to do this ourselves (because it can get tricky). The article tells us that developing a language processor for web it is not easy, it has a lot of challenges, not only the challenges we face while making a regular programming language, but also the challenges that come with having a web development. Challenges include handling the HTTP, security, adaptability, the specifics of each browser, and many others. There are several tools and practices which we can use to deal with these problems and overall it is a very laborious task. It is important to know the inner works of how a web language implementer works, the reading emphasizes a lot in this, and it is recom

Ruby and the Interpreter Pattern

This entry is from an article called “Language Design and Implementation using Ruby and the Interpreter Pattern”, written by one of our best teachers called Ariel Ortiz. The article talks about an implementation he made to evaluate different LISP expressions that are given as strings using a framework called S-Expression Interpreter Framework. The framework is a Digital Subscriber Line (DSL), it uses the Ruby language and allows us to build S-Expressions (for example Clojure, LISP) by the implementation of the interpreter pattern. The basic principle of the interpreter pattern is that some problems are solved far more easily by creating a specialized language to solve it, and then expressing the obtained solution in that language, interpreters are known to have two phases, the first phase is the one in which the parser reads in the program text, then it produces a data structure that is called an Abstract Syntax Tree (AST Tree), in the second phase the obtained AST from the p

Mother of compilers

This blog is about one of the most important women in computer science, her name was Rear Admiral Dr.  Grace Brewster Murray Hopper (AKA Amazing Grace). She is considered as a key element in computer science investigation because she was one of history's first computer programmers and also known as "the mother of compilers" because she built the first compiler ever. This is widely acknowledged cause as we know, building a compiler is a lot of work  Dr. Grace's als0 developed FLOW-MATIC and is the first English-like data processing language. This language makes it easier to build a compiler for another programming language o the root of programming languages tree, is the compiler that Grace built. Almost everything she made is an achievement and well if we think of the industry where she belonged, military and computer science, one can only imagine the difficulties that she faced into trying to fulfill her dreams and goals. Both industries were ruled by men an

Internals of GCC

This week, I will be discussing "Internals of GCC". A podcast by Software Engineering Radio with Morgan Deters as a guest. Morgan Deters starts this podcast by demonstrating his large range of experience in compiler and compiler design by explaining and talking about his graduate work. Then he starts to explain that understanding how a compiler work's and it's job should be relevant to anybody writing code and I cannot agree more. A compiler's job is to perform and be able to manipulate hardware specs and being able to explode each one of these features. A compiler should produce object code for the target platform. GCC has an interesting design, it consists of three parts, front end, middle end and back end. The middle end goes through the parse tree and gets all the representations of statements and the programs. When you're writing code and trying to make your system totally safe, it is important to know what is going on with your code and how the com

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

This article may have a really long title, but it explicitly invites you to read it, without having to go through too much stuff. "Making compiler design relevant for students who will (most likely) never design a compiler" is the title for an article written by Saumya Debray. I think this is one of the hardest classes for people in my major, not because it is misunderstood. Everybody gets the idea that they're going to built a somewhat version of a compiler, and that sound like a hard thing to do, therefore, they're prepared for that, and think is way too hard. Compiler design goes beyond a simple or advanced compiler. Compiler have to take a buch of code, and pretty much tell a computer to understand it. How do we make it efficient? Where should we throw exceptions? Why does a programming language behave certain ways. This questions are why compiler design should be relevant to anyone using a compiler for their language; basically, any developer. Lastly, there a