sábado, 2 de febrero de 2019

The hundred- Year Language

It is impossible to predict anything in a hundred year; the world improves on an exponential way. This same happen with the programming languages, it is uncertain to know in which language will be software implemented.

It is true that the evolution of programming languages depends on the evolution of species, this is because the necessities that humans have and how the technology grows. Something that is also true, is the fact that any programming language can be divided in two parts, fundamental operators, and the rest of the language.

The most important part of a programming language are the fundamental operators and not just for the axioms, but that there be few of them. The evolution of the trees goes under these languages that have the smallest, cleanest cores. If you ask me how programs will be written in the future, I would tell you that is impossible to know or even to get close. I assume that maybe people would not tell computers what to do anymore, or maybe it will be easier or more automated. To assume we must consider that languages are not technologies at all, they are notation. Programs are a formal description of a solution of a problem that we want a computer to compute. Maybe languages do not involve a lot trough the years, but the solutions are optimized with the past of the years, they are faster solutions to compute.

The best way to resolve problems is to separate the meaning of a program from the implementation details. Code can be reusable because its bottom-upness. They are reusable because they are languages. We have to enjoy todays languages because they offer us differences between them and similarities

sábado, 26 de enero de 2019

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



Building a compiler is more than translating high-level programming languages to assembly or machine code. A compiler is an instance of translators from a source language to a target language.
In this document it is explained that we have the same structure in many translators: an input sting which is composed into tokens, these tokens are grouped into phrases and then these phrases are mapped to the output sequence determined by the structure a context in which they occur.
We also learn that compiler development tools, like lex and yacc, can be applied for many translation problems.

It is explained that Dot is a tool that reads a textual graph and produces a drawing of the graph specified. To do something like this, the following actions are needed:

1-     Read the textual graph using context-free parsing techniques
2-     Check semantic consistencies between components
3-     Construct internal representation
4-     Determine the output
5-     Modify the output
6-     Generate postscript for the graph

For translating Latex to html the translation should follow the following actions:
1-     Read the latex document using context-free parsing techniques
2-     Construct internal representation
3-     Process Latex constructs and output

We notice that the steps are less than the graph example, and it is because the source and target languages are semantically much closer in the Latex to html case.
Essentially, with both cases we can see the same main phases of the compiler. A lexical analysis and parsing, A semantic analysis, code generation and code optimization.

In Lexical analysis and parsing, the compiler refers to the type or scope of a variable. In code Generation, the compiler transverse the tree representation of a program to generate assembly or machine code for the target machine. In optimization step, the compiler basically makes code transformations to make the program faster.


jueves, 17 de enero de 2019

This is ME

"Hello there", my name is Sergio Adrian González Hidalgo,but I prefer to be called Adrian. I am studying the eighth semester of major in Computer Science at Tecnológico de Monterrey Campus Estado de México.

I am currently working as a Junior Consultant for DGA Consulting Technology developing Business Intelligence apps for Grupo Bimbo. 

From this course, I expect to learn the structure and the importance of Compiler Design and try to apply it to my daily life as student or at my job. I also want to improve my programming skills and find other ways to solve problems.
My hobbies are:
  • Painting: I have painted with watercolors, chalk pastel, colors, and acrylic paint. I prefer to paint movie characters.
  • Watch movies: I love going to the cinema. I usually go twice a week if the school and my job allows me to do so. My favourite genre is the suspense. One of my current favorite directors is Edgar Wright, I enjoyed Baby Driver a lot. My favourites movies are:

  1. A Star is Born
  2. Christopher Robin
  3. Watchmen
  4. Avengers:Infinity War 
  5. Star Wars (All of them)
  6. Lord of the rings
  7. Psicosis
  8. Baby Driver

  • Play Videogames: I have played videogames since I was a kid, I mainly enjoy shooter videogames because I consider myself good at them. One of my previous dreams was to become a profesional gamer.
  • I don´t watch series because I don´t like to wait for another season.