domingo, 28 de agosto de 2016

The Hundred-Year Language

This week articles is called "The Hundred-Year Language" written by Paul Graham and like the name of the article mentions it is about how programming languages are going to be like in a hundred years. First he does some expeculations if some of the current languages are going to have a dead end, like cobol. He deduces this by making an analogy in which the different programming languages grow in a tree type, this is some of them evolve in new ones and others simply ends. According to Graham Java is going to be one of those programming languages, although it may seem that Java is one of the most famous languages now a days, it may not have what it takes to pass to the next generation.
But why is it easy to predict how a language is going to be in a hundred years, this is because programming languages grow and evolve really slowly, against technology which is faster and have new gadgets every year, we still programming this tech with the same languages, and because of that we are waisting a lot of the power that this new technologies can bring.
He talks about parallel computing which a trend in the 1990's and was thought to be a new paradigm in programming but now a days even though we use it, it hasn't provide that revolution programmers were thinking.
In the past the ones that design the new programming languages were the academics, people that do research and based on that they develop, but now it is different, the ones that make improvements are the developers which actually use the language in practical purposes, an example for this are Pearl, Python and Ruby.
We can't actually now how a programming language will look like, because if we think about it we adapt them to the technology, but maybe with the advance we are having in quantum computing may be probable that we are heading that way.

If you are interested in reading this article, here's the link: The Hundred-Year Language.

martes, 23 de agosto de 2016

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

This week lecture was about how compilers phases (lexical, semantic.. etc) can be used in other kinds of activities. The paper is called "Making Compiler Design Relevant for Students who will (Most Likely) Never Design a Compiler" by Saumya Debray of the Department of Computer Science of the University of Arizona.
The concept behind the word "compiler" can be very difficult to express, throughout the major of Computer Sciences this word comes up quite a lot.  We use it but we don't fully understand it, that why this paper is so important, it clarifies the concept by defining the phases that it has to go through in order to become a compiler.
The first phase is the "lexical analysis" which takes an input and separates it in characters, and then they are parsed into groups of "tokens", that means, it takes the input, read it character by character and then grouped into a set of characters that mean something.
The second phase is the "semantic analysis", makes associations in a tree way, it links the defined variables with the same ones below in the code, so it knows what type the variable is, and how to used it, in other words it shows how it flows the information inside the input received.
The third phase is the "code generation" in which the tree generated in the previous phase is translated into assembly or machine code.
The fourth and last phase is the "Optimization" in which the compiler tries to optimize you code, that means, to make it run faster. It reduces  the cost of the generated code for some cost measure of interest.
In conclusion, this phases can be used in several similar processes like the construction of a program where you read some kind of input, process it and generate some kind of output, that means that you can use apply it in many cases.

If you are interested in reading this paper, here's the link: Making Compiler Design Relevant for Students.

jueves, 11 de agosto de 2016

Introducing myself

For all of you reading this, my name is Carlos Sebastian Loredo Gomez, Sebastian for short.
My expectations for this course are: to know how a compiler work, how to implement a compiler using C# and how Interpreters and Translators work.

About my hobbies and personal interests: I love to watch sci-fi series in TV and to read books (Stephen King particularly). If there's more I don't recall it at the moment.

A book I have recently enjoyed: The Wind Through the Keyhole which is about the story of a kid that has to fight a dragon.

TV programs: Well I think I have a lot to put in this part since all my holidays were about watching TV series. I'll just list them in order of how I liked them. Stargate SG-1, Fringe, Warehouse 13, Black Mirror, Eureka... just to mention some.