jueves, 29 de agosto de 2019

The Hundred-Year Language

The article talks about the “evolution” of the programming languages, the author makes an analogy between the Neanderthals and the “primitive languages” as Cobol, and how they were replaced by “more adaptive” versions. The author thinks that nowadays maybe the next specimen that will be “taken down” is Java, because there are appearing more languages that can adapt better to the needs of the hardware and programmers. The author continues the analogy explaining that as at the evolution theory, there are branches that may exist between different languages, but in this case, they are more complex and occur slower. Going deeper within the last point, the author explains that one factor that makes this happen is that the languages are notation, not technology.

Later, the article continues listing the two components of a language, the axioms (operators-like that are used to write the rest of the language which is the second part). In other hand, the author mentions the Moore’s Law and how it maybe stops working at the future due to the incapability to expand as much as the Moore law points it should do. Another interesting mention is the thumb’s rule which I didn’t know, that specifies that each translate layer between the hardware and main application cost a factor ten to the execution’s speed. The article continues exposing multiple examples of how different tools were developed being non-efficient (Lisp initial design, ARC, etc…) but how they  taken advantage from the bottom-up programming, what is writing series of layers , each one providing the base programming to the layer above.

Finally, the article also talks about some interesting points, as the parallel computing and some important points if we are considering designing a new language. For the first point, the author mentions that he thinks that it would be possible at the future, but purely it would be just for certain applications, and the other applications would need to be pass to a first version and later “mapped” to it’s optimized version for parallel computing. The “tips” to develop programming languages, mention that we need to keep in mind our target when developing, what type of program we want to be able to write and the size of the parser tree.

martes, 20 de agosto de 2019

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

The article is from a professor from the Department of Computer Science at the University of Arizona and list some points to attempt to make more attractive the course of compiler design. The article starts telling us which was one of the first exercises that the author left to a course of compiler designer, honestly it sounds complicate and the author confirms this when says that the point of the exercise was to give a first approach to the students to the use of lex & yacc. But returning to the main point of the reading, we can highlight that the examples used are simple to understand, but maybe in practice are hard to implement. I wonder what would be the practices that we will be doing at our course. 

I liked that the reading let me understand better the translation phases that we discussed the last class. As I understand the steps to do a translation, the order and “output” of each phase is the following:

1. Lexical Analysis and Parsing: Phase that takes a string and divides it into tokens (words, punctuation, etc..) and the parsing is the process to give structure to the tokens 
2. Semantic Analysis: Phase that works and then propagates information that is not part of the context-free syntax of the language (this means that the output of phase 1 is processed and distributed to the some "mechanisms" to match some rules 
3. Code generation: This phase process the tree representation of the program (starting with child nodes and doing operations with the father nodes “traversing”) and generates machine language
4. Code optimization: This phase attempts to reduce the cost of the generated code which can be energy usage, time consuming or size 

I don’t know if I’m missing or misunderstanding something, but I consider this is the more basic explanation and easiest way to understand the translation

lunes, 12 de agosto de 2019

First Entrance

Hi, my name is Ricardo:

I study ISC, now I'm at 9th semester, I like videogames, specially the shooters and sandbox,  more recently the fights videogames too (MK11), I still like reading dramas and sci-fi books and play basketball and football, I also like to go out to parties, cinema, eating wiht my friends or my girlfriend, with who I have been for almost 2 years and a half. Additionally, now I'm about to accomplish my first year working at CSQTech, I've enjoyed it so much, I have learned a lot of things and I hope to enter to a project full time after graduating. I'm going to graduate (if all goes right) this semester, I feel kinda nervous and scary because the time passed so fast but at the same time I'm very excited and trust myself to accomplish this and start living new experiencesoutside of school.

I expect to learn to the deep the function of compilers, and learn a bit more about C#, and well, I hope to pass the legendary exam successfuly and learn the basics of how to develop a compiler and pass the course.