Entradas

Lin Clark on WebAssembly

There are several computer science students (including myself) who before entering the major had already some hands on experience with programming. I would dare to say that most of them started programming web pages. We all understand the basics, first put some HTML to define the structure of the page, then add CSS to style the page, some Javascript to add dynamic content and finally use your preferred programming language for the backend. In my case, the programming language which I used was PHP.  Nowadays, web applications turned out to be the next big thing. Many years ago, people used to download and install a software using a wizard or running some script to store the program in their computer, but now, this has changed. Now, the programs are not stored in the clients' storage, they are stored somewhere else (mainly in the cloud or a web hosting). So that raises the question: How users can access these applications? By an amazing software called the web browser.  I am still ve

Building Server-Side Web Language Processors

Web applications are everywhere. When I was a child, I remebered that almost all applications required a client to be installed or it was a desktop application. You had to download it, install it and the necessary tools (libraries) in order to work. The process was simple, just open the wizard, click next until it was done. But now, things have changed, now there are applications which do not require any type of installation, the only requirement... is to launch the application via a web browser (Firefox, Google Chrome, Opera, Microsoft Edge). The main advantage of this type of systems is that you do not depend on the machine, you just need to have Internet access (might be a disadvantage for several reasons including security, access to internet, etc). My friends from the major and I had experience with scripting and web design, due to the fact that it was a trend back then (it still is). So maybe a subject like compiler and interpreter design will generate more interest among student

Ruby and the Interpreter Pattern

For my Software Design and Architecture course, the students are taught mainly (for now) design patterns, which are meant to show programmers the correct way to address common problems every programmer will face through their entire career. Personally, there were many which I knew (for example, the adapter pattern) but they were formally introduced later on. For our Compiler Design class, we are using and leveraging the C programming language in order to build our first compiler of the Drac Language. In my case, for the Programming Language course we learned Clojure, a relatively new language based on Lisp. What is interesting about the article Ruby and the Interpreter Pattern is that Ruby is used in order to explain some programming technical concepts necessary for the course. When learning a new language, like Clojure, I consider that the first question to be asked should be: Why learn x language? Additionally,  this answer is complemented with the benefits of the language and their

Mother of Compilers

I am happy that since Programming Languages course I took last semester, I had the opportunity to know more about women in computer science. Most of the people in our field (at least students) mainly know about important MEN in computer science. Steve Wozniack, Tim Berners-Lee, Dennis Ritchie, Bill Gates, Alan Turing (well, this case is different due to his sexual orientation but history has finally make him justice), etc.  For me, it is an honor that the first programmers were women, but also it makes me angry because the only reason they were allowed to work there was for the reason that computer science, was not an official discipline, which later put the women out of the equation when men began to involve. In this week's blog activity, we were assigned an article and a short video documentary which talk about Grace Hopper.  COBOL seems like going really away of the modern day, but it is important to know that this language was one of the first high programming language focusing

Internals of GCC

The first programming language I learned was C, and getting to know how to run programs or even know issues about the compiler... well... I clearly had no idea of what a compiler was. In this week's blog, we had the opportunity to hear Morgan Deters talk more about GCC ( GNU Compiler Collection). Before arriving to this class, I had very little knowledge of how a programming language is turned into machine code. I only knew source code --> object code and that's it. Later on I knew that besides a compiler there was another component called an interpreter (like python). With the magic of tombstones diagrams, it is relatively easy to model how we can traduce x code to y code. From what I understood from the podcast, the first step is that the compiler compiles using the C language a primitive version and then compiles the entire version.  Most students (at least in the first semesters and in software engineer ) do not even care about the whole process that a code like print(&q

The future of programming languages

When I entered the world of programming, I was intimidated by the complexity of the C language. I have to admit that learning the language was tough because I had no knowledge about programming and the fact that I was still in middle school did not help. But with time, those complex components of the language turn out to be used by you in your daily life. I was used to treat Strings as an array of characters and knowing when to use certain data types. C language is a low level programming language if you compare it with Python, and, at that time I did not leverage the advantages that this type of languges offers speaking in runtime, memory and efficiency.  Java arrived when I was in high school, and object oriented programming was my highlight because of the process of abstraction which helped solve real world problems. Now strings were treated as a data type instead of an array, now things were simpler... and then I entered college, and I could not believe that the list could be treat

I will never design a compiler...

For this week, we were assigned to read an interesting article written by Saumya Debray, where he tries to explain why it is important to still take compiler design courses for computer science students. Personally, for this almost four years in my major, I have explored a wide range of topics like programming, networking, software engineering, algorithms, maths, etc, and the field (for now) where I feel more excited is the one related to cloud computing. Probably because of my job and the things I do day by day, I think that maybe one person would put more efforts to certain courses because of the thought that it might be more helpful for his/her career. Maybe for compiler design (just maybe), I had the thought that even though the course seems interesting and relevant for computer science, I might consider other courses more relevant for myself for my professional growth. After reading the article, I am not fully convinced of how compiler design will help me solve the problems I face