martes, 30 de agosto de 2016

[Discussion] The hundread-years programming language

This blog post is my personal opinion after reading the article "The Hundread-Year Language" written by Paul Graham in his website [1].

Can you imagine how is the future going to be? As we can see from now, it is more than probabble that computers will still be one of the main tools for industries and also for people in their day-to-day tasks. Maybe people outside the technology field don't get worry about this but computer scientists should start to think how the future is going to be, or maybe even more, what is the future going to need? In terms of programming languages the growth is not describing an exponential curve, but instead it gets similar to a linear growth. As Graham says, programming languages build evolutionary trees and some branches look promising.

This raises the question: what branch should we bet on for? Are Object Oriented the future of programming languages? What will happen in a hundred of years? There will be a new paradigm that it's going to rule them all? I like to think that we will find new ways to design programs, maybe we will not even use a programming language at all (there are other ways to create programs such as graph connections, logic blocks or even genetic

Another question that arise when I was reading the article is the next one: are "features" (of the programming language) considered a case of premature optimization? Even if cool features of a programming language are a burden for compiler designers, they are justified by the advantages they provide even if they convert the code less efficient. I think that the main reason is to provide an easy to use programming language to the developers, which is more important than other thing. At the end of the day, if programming becomes too difficult it would be a problem. So the question here is, it is worth it to sacrifice efficiency in order to gain simplicity when writing code? As Paul Graham says, "Wasting programmer time is the true inefficiency".

I would bet on quantum computing as the primary technology of the future. This new way of make computation will for sure create new ways of designing algorithms and so a new way to implement such algorithms using new kind of programming languages suitable for quantum algorithms. It is a new area I want to discover and I look forward to a good evolution of this area.



LOL Quote: "If SETI@home works, for example, we'll need libraries for communicating with aliens. Unless of course they are sufficiently advanced that they already communicate in XML."

References
[1] http://www.paulgraham.com/hundred.html

martes, 23 de agosto de 2016

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

This are my impressions about the article Making Compiler Design Relevant for Students who will (Most Likely) Never Design a Compiler written by Saumya Debray, teacher of the department of Computer Science in the University of Arizona.

The article talks about, –as the title suggest compiler design but it focuses in giving examples of why and how students may use the knowledge of the field in other areas of interest. Obviously the author first describes the phases involved in compiling and what I liked most of this part is that he makes some references to actual use cases. The main example he mentions is about translation problems. I didn’t thought about seeing translation problems as part of a compiler, I mean using a compiler outside the context of programming languages.

Also I didn’t know that translation problems could be solved with a compiler view approach. I am particularly interested in scenarios like the ones mentioned in the lecture about translating regular sentences to a –for example SQL queries. This calls for my attention and I started to think if this is the way that AI applications (such as Siri) are built.

I believe in what the author says and it is that maybe we will never create a compiler but it doesn’t mean that such knowledge will be trowed away. In many cases, some of the techniques or algorithms we will learn, they will also be useful for applying in other problems.

Compiler Design is a course that we take in the last semester of the Computer Science career at Tecnológico de Monterrey. It sounds such an interesting topic so I wonder why it is placed as part of the final semester. I would preferred that it would be placed in the middle of our formation so we could use this knowledge in other courses and projects.

Honestly I am a bit scared about the difficulty of the course, but I like to be challenged and I know for sure this will be one of the best courses of my career.

jueves, 11 de agosto de 2016

Introducing myself

Undergraduate student of BSc in Computer Science.

Technology: I love programming, mostly web applications. I have no "main language" but the ones where I feel more comfortable are Javascript and Ruby. Most of my programming career I have been using Java so I know it quite well. I am influenced by agile methodologies and I would like to become a software architect, after that I would like to run my own startup and to lead new projects :) 

About myself: I don't have much hobbies but among them are: watch Anime Series (my favorite is Steins;Gate) and get involved in the otaku community. Another thing I use to do is yoga (or I'd like to do), it's a relaxing experience that no other activity has ever make me feel, it feels good to be "sensible" about your body. I try to exercise often so I also do jogging and whatever I find to exercise myself. Music, my favorite singer is YUI (JPOP japanese singer) but I have no preference in any particular genre. I am a fan of watching TV Series (fan of Game of Thrones) and also of going to the movie theater.

I am so happy that I could take this course with the teacher Ariel Ortiz and I have big expectations about what we will see in the course. I heard that it's a very difficult topic but I would like to be challenged in this last semester. I hope this course give me the basics so one day I could create a language that improves the life of some developers :)