domingo, 9 de abril de 2017

The Hitchhiker’s Guide to the Galaxy

The Hitchhiker’s Guide to the Galaxy


To be honest i liked the humor, the jokes were fun and the unpredictable twist in the story were fine. 

I am not sure why but i do not like to much the book, i mean, the start of the story was amazing, i have read a lot of books but i can count with mi hands how many of them start with the destruction of an entire planet, but surprice, it was not a planet, it was a computer, the most powerfull computer in the univerese, and it was build by mice (of course, how could be posible it was not that way?)

I have to admit, i was lost sometimes with the flash backs, but usually explain something of help to understand a specific carácter and/ or  they role in the conflict (?), i do not have idea if there is a conflict. 

I am super predictable, but my favorite part was the answer given by the super computer, the anwer of everything … ok, i am going to put the quote: 

"Alright," said Deep Thought. "The Answer to the Great Question...""Yes...!""Of Life, the Universe and Everything..." said Deep Thought."Yes...!""Is..." said Deep Thought, and paused."Yes...!""Is...""Yes...!!!...?""Forty-two," said Deep Thought, with infinite majesty and calm.

Also i am intrigued about the answer /question.

Oh the descriptions are like completly absurd ideas taken from surrealist poem, this example is ilustrative: "The ships hung in the sky in much the same way that bricks don't"

Some of the ideas i like, is the planet used for the design and construction of other planets, and how a kind of climax happens there, is the place with a story connected to the protagonist (again, i am not sure the novel has one), the Earth, the cause of the creation, and why the destruction represents a problem for the mice.

I also love the computers, with real human personalities, usually when i imagine a machine helping the humanity is kind or al least try to serve as well as posible the purpose of it´s creation, so it was fun and satisfying.

I hated the end of the book, i am sure that it could not be called an end, i have the same experience whe i finished  The Dark Tower III: The Waste Lands , yo read the last page, yo know what happen before and you can imagine the next, but you cannont be sure and of course, it gives you an unsatisfactory feeling like if you did not read the book at all. 



domingo, 19 de marzo de 2017

Technical Overview of the CLR

Technical Overview of the CLR

the article Technical Overview of the Common Language Runtime by Erik Meijer and Jim Miller, is a comparison between JVM (Java Virtual Machine) and CLI (Command Line Interface).
The main difference is that the CLI is a platform that supports a big range of languages.

About the JVM, is usual to think that it is only a runtime environment for Java programs, but as an example of the opposite, some variants of LISP uses JVM for its execution.

Some of the important consideratios with  implementation of alternative paths for native compilers are:

Portability: This is, using an intermediate language you need n + m translators instead of n * m translators (n languages in m platforms).

Compactness: Intermediate code is more compact than the original source.

Efficiency: you can adapt the dynamic behavior of the program delaying the commitment to a specific native platform.

Security: Intermediate code is more amenable to deploy.

Interoperability:  sharing a common type system and high-level execution environment,  becomes easier than binary interoperability.

Flexibility: Combining high level intermediate code with metadata enables some features like: dynamic code generation.

Some of the points in the article about CLI and JVM:

*JVM does not provide encoding type-unsafe
* In the JVM all storage locations are 4 bytes wide
* In the CLI, storage locations are polymorphic, this means that the wide could be 4 bytes or longer.
*In the CLI the generic types can readjust the value size according with the current processor.
*JVM is that it does not indicate overflow during operations on integer data types
* CLI provides built-in support for boxing and unboxing, it means, a value can be turned into reference type object and viceversa.



Well, both have features that make them usefull but, mostly depends of the kind of language to implement, so is convenient to be consent of what the language needs to perform.

domingo, 12 de marzo de 2017

Building Server-Side Web Language Processors

Building Server-Side Web Language Processors

OK … I can undestand why but honestly i do not like web development. That is fun because I prefer using web applications than real apps stored in my hard drive. (why every service needs an app? It has no sense).

But it has sense, nowdays is required for all the entrprices to have a web page and some of the requirements for (lots of) jobs  are web experience or web development skills. One of my partners is a little bit obsessed about web design and development, I am sure hi will be In total agreement with the article.

However, even if the purpose is the same (compilers here, compilers there) in web the expecting result is an HTML page but (opposite of my sister thought, she is not well informed about, not her fault) it is not most easy than grite a local version of the same language processor. It is necesary to transform the input to one with delimitator used to pull apart the static code used for the output and the code that will be calculated and finally  to something usable for the browser.

I like the idea of having specific conventios for variables. But honestly i think it could not be the best idea, even if you write abot if another developer needs to check the performance of the compiler/ interpreter it is posible to have nonsense or to be complicated to adapt.

I did not have idea of how to use customized tags for specif language web implementation, but it sound like an usefull tool. Now (I think I undesrtand a little more how it works), It requires a Tag Library Descriptor file, a XML file, which needs to contain information of the library and the tags it contains.


I have a confuse opinion of the article, I half agree about the interest to meke something in a web version because “instead of a processor that just runs on a command-line shell.”it is more interesting fore most of students but if it was the case for me it will be like hell. (my fault, not the proyect´s but… )

domingo, 5 de marzo de 2017

Ruby and the Interpreter Pattern

Ruby and the Interpreter Pattern

For this time the article that we had to read talks about an interpreter Framework developed by our professor Ariel Ortiz using the Ruby language.

I have use the language before but just for some few ideas and quick aritmethic operations. In my opinion it is a friendly and nice language. I'd like to investigate more about but i have a mess of programming languages in my head right now … maybe soon.

I remember that everything in Ruby is an object (I forgot it but then, when i was reading it comes to me), including: strings, numbers, arrays (lists), hashes (maps or dictionaries), symbols, procedures (closures), and even classes.

Going back to the article,first, why Ruby?  Ruby is an interpreted, dynamically typed programming language, that helps simplifying the construction on languages interpreters, more specific it has the advantages of having garbage collection, open classes, first class continuations, built-in regular expressions and hashes.

The article is mainly about the S-expression Interpreter Framework (SIF), In general way a S-expressions are a parenthesized prefix notation, mainly used in the Lisp family languages because it's origin lies within the Lisp family of programming languages whose entire syntax consists of those expressions.

Is also mentioned the article “The S-expression Interpreter Framework (SIF) provides the basic building blocks that allow writing interpreters that can easily be studied, extended and modified”, it is actually really useful and can be used in  various ways in language design or/ and implementation.
In my experience the Lisp descendants are at the beginning hard to learn but with practice the lines are less and has lots of easy ways to do the same actions with less problems. 

Reading a little more explains that SIF implementation was made to define languages using this notation easily (not for me but in general cases), but it also can be used to define other programming styles like imperative or object oriented.

Reading it was really interesting and it explains some doubts i had.

domingo, 26 de febrero de 2017

Mother of Compilers

Mother of Compilers

“Oh my God, we exist”
I laughed a lot with that phrase, but I will talk about that later.

 I have heard abot COBOL but I did not know that a womer was in the devlopment, it is an iconic programming language, it is the firs way to comunícate instructions to a machine for “average” people, and sometimes we talk about the extrordinary impact it has and there are some jokes but it is just a reminder of the language in a fun way.

Going back to the video and the article I was really amazed when I begun reading and watching the video about her, there is so many things that we should be grateful with her, She was responsible not only for the development of the Cobol, she was a participant of the continuous innovation in software, because everybody suddendly wanted to be in the computer industry. I am not saying it is a bad idea, I mean, I am here and if not for that maybe I will be interested in other stuff and not IT.

I like the story about the Computer Bug that was a real world bug, I use the term bug for errors in my programs and debugging as usual part of my vocabulary and time ago I listened the story but I in that moment I had not idea it was part of Grace Hopper´s memories.

I agree abot the idea of equality of Opportunities independant of the gender, if someone has the abilities then should try and maybe make amazing things.

Ok taking the first line again, I do not know why are so few women in IT, in more traditional cience is, at least what I have seen, almost the same number of male and female students, workers and professors but it will be great if more women could be interesting in this area, is facinating and has lots of braches of study. 

domingo, 5 de febrero de 2017

Internals of GCC

Internals of GCC

On the podcast, Morgan Deters that is in the Washington University in St. Louis talk about the Gnu compiler collection (GCC). He talk about why compilers are relevant for us, a topic that has been treated before.

Usually we do not care about compilers, we are busy trying to make a program but we rarely tink about the tolos that make all work.

GCC is a compiler collection that supports many languages such as C, C ++, Objective C, Chill, Fortran, Ada, etc.

GCC is capable of receiving a source program in any of these languages and generate a binary executable program in machine language, which is going to run in our computer. First the compiler needs to read a plain text, this is the source file, and then  understand what does it mean, the compiler needs to know the variables, the type and understand the semantic of the content.

He explains that to be able to have a general purpose compiler, it was decided to divide it into various layers, the front, middle and back layer.

The middle layer takes the input of this first layer and optimizes it in order to make it better for the assembler to analyze it, finally at the backend we specify the architecture in what our code must be executed.

And in the back layer an optimization  is made to the machiine code.
That is the reazon why we could have diferent languages in the front layer. Another thing I find really usefull is that GCC is flexible and portable, it can run in many platforms of Unix, Mac OS and Windows. 


The code optimization, one of the most used and valued parts is, in my point of view not enoough understood for programmers. Honestly now i am a little afraid of the idea of make a compiler …

domingo, 29 de enero de 2017

The Hundred year language

The Hundred year language

I have no idea of what I am going to have tomorrow for brakefast.

I do not think al lis going to change, i mean, like the autor i do not think we could just talk to a computer or something and have all done, programmers will be need, but sure there will be new languages.

The possibility of give some instructions and create functional programs do not sounds like is going to occur in some years (I know, we are not talking about tomorrow or 5 years but…)
I like the idea of the tree of languages and the evolution of many languages in others more efficient or whit a more conveniet allocation of memory.

I agree abot the suggestion of the layers, at first it sounds inconvenient but in daily life we ususally do not use all the processing power we have and some seconds more of time to run a process will not be a trouble, so if we have layers those could be reused in other aplications and save some memory or maybe used in many aplications at the same time.

And it moves me to the next point, multicore and use of the parallel programming. Computers are used a lot in scientific research, most for calculations, and is never enough computational power, so that could be a solution.

I differ in the opinion of object oriented programming, maybe for the Internet of things, but i think is posible to  have a central control and OOP could be good in the situation. Is a good idea of having control of all the components if they are of different kind and need to act in a separate way so the specific characteristics could be preserved.


I have use clojure a Lisp “baby” and the use of list in everythink is really comfortable and th idea of a generic type … i hope it continue in the future.