When going gets tough, you call GCC.

Hi :D

In this entry I will talk about the podcast Internals of GCC by Software Engineering Radio with Morgan Deters as guest. 

At the beginning of the podcast we can hear when they talk about the relevance of creating new compilers. In my opinion, this is important because we can have a better compiler than the actual ones and also we can take this as a challenge to build our own compiler, taking on count the new technologies and even new architectures (but I believe I’ve talked about this in other entries).

Then, the podcast talks about the GNU Compiler Collection. This is one of the most important “frameworks” in order to compile a lot of different languages. Also, the GCC is really flexible and portable, as we can use it in several operating systems and architectures and we can even generate the files it uses in the compilation process (like the object file) and it allows us to link some external libraries with just one more option.

Talking about how GCC works, I was pretty surprised when the mentioned that it had 3 parts: a front-end, a middle-end and a back-end. I think this is pretty useful, because, as we learned on several courses, the modularity is a great advantage when you can replace a component by another in a transparent fashion. Also, this kind of reminds me the adapter pattern we learned on our Software Design and Architecture course, where we had two different technologies and we applied this patter in order to ensure the communication between both technologies (I think this might apply for the middle-end). It’s important to remember that GCC can be more than a C compiler (a lot of use just use the C Compiler). GCC can receive a file expressed in several languages (using its front-end) and run it in some specific architecture (done by the back-end) and the user should not notice any difference if he/she is using different architectures.

I hope you enjoyed this entry :D


"My compiler is my sword"

Hi! :D

In this entry I will talk about the article Making Compiler Design Relevant for Students who will (Most Likely) Never Design a Compiler by Saumya Debra.

Designing a compiler is a task that should be accomplished by all the students in the Computer Sciences majors. It will define if they are ready for future challenges. Definitely, this is one of the things or topics that will be useful for their professional lives and they should not forget how to do it… Or is it?

Let’s remember a compiler is not a small project. It takes several hours to build a compiler, and it could be really sophisticated, depending on the language (in the compilers courses, students use to work with subsets of languages). Actually, many Computer Science students are encouraged (or required) to take a compilers course; however, a great part of these students will not design a compiler in their lives (maybe for a final project, but that will be the first and last compiler designed by them). Personally, I can tell that I might be one of those students that will never design a compiler in my professional life. Nonetheless, I’m really interested on learning everything I can about compilers. How is this possible? 

Designing a compiler is not an easy task, but also is not composed of only one big “module”. We can divide the compiler design in several phases, and each of these phases will help us not only for the compiler we are going to deliver as a final project, but also will help us to develop some skills that can be applied in the programming world (and might be even used in the networking world, who knows!)

Reading the article, we can notice several examples of how a compiler can helps the students to solve complex problems that involves parsing, translation between a language to another and the use of other tools that should be in the knowledge of a great part of the students: Regular Expressions.

I think this is everything for this entry. Hope you enjoyed!! :D


System.Console.WriteLine("Hello, World!");

Hi! :D

This is my first entry in my new Compilers blog, so I'll introduce myself:

* My (almost) full name is Edwin A. González (yes, I have a middle name).
* At the time of this entry, I'm 19 y.o.
* I like playing videogames and dancing hip hop.
* Books I like: 1984 - Orwell, Da Vinci Code - Brown, Harry Potter Saga - Rowling (yes, I'm a Potterhead), Strange Case of Dr Jekyll and Mr Hyde - Stevenson.
* TV shows I like: Criminal Minds, NCIS, The Big Bang Theory, New Girl, The Simpsons.
* Movies I like: Frozen, Despicable Me, Kill Bill (both), Pulp Fiction, V for Vendetta, The Avengers, Rise of the Guardians, Wreck It Ralph, Hotel Transylvania, Scary Movies, Iron Man, Sherlock Holmes, etcetera.
* Things I liked recently: Guardians of the Galaxy, Once Upon a Time (TV series), Maze Runner - Dashner.
* I like networking and programming

I expect to learn how a compiler works and how it is done. I'm excited about learning C#, because this is my first contact with a .NET language. Also, I hope the project won't be impossible and learn a lot of things while I develop it.


I guess that's all! See you in the next entry :)

[If you want to read more about me, feel free to visit "The Author" section]

- Copyright © Compilers - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -