lunes, 18 de febrero de 2019

Mother of Compilers

After reading the article entitled "Grace Hopper - The Mother of Cobol" and after watching the documentary called "The Queen Of Code", directed by Gillian Jacobs in 2015, I can say that I realized that Grace Hopper did a pretty job useful for humanity, and this was very useful both at that time and today.

I thought the story of how the term "bug" was popularized was very funny. I did not know the story well and I thought it was quite peculiar how that term came about when a moth was found inside the computer, and that was what prevented it from working, which is why a bug literally impeded its operation.

On the other hand, it seems incredible to me how Grace Hopper managed to be assigned to the Bureau of Ships Computation project at Harvard, especially due to the fact that at that time, a woman with a Doctorate could not aspire to do great things. It is for the above, that I found it surprising that even after all they have managed to create the first compiler and thus lay the foundations to create Cobol (And lead the developer team). At that time, computing was unique to men, and that's why I think she should have been very talented to do so much. Even in the documentary they said that it was a very common joke to say that women in computing were like unicorns, because they do not exist, however, she was very ahead of her time and demonstrated the great capacity women have in computer science and in any other job that would be considered exclusive for men.

I think that for a long time it was an obstacle for humanity to live in a society so sexist that it did not allow women to grow professionally, because probably many other women, like Grace Hopper would have managed to give much more to society if not for all impediments given only by the fact that they are women.

I think that the time in which we live now, that has changed a lot, but not enough since there are still people who think the same way they thought 100 years ago, especially people without education. It is unfortunate that she has not been as well known as Alan Turing, since history did not allow it. Fortunately, there are people who give themselves the job of making known great figures in the history of humanity, in such a way that they can recognize and give credit to those people who deserved it for their work, effort and intellect.

domingo, 10 de febrero de 2019

Internals of GCC

After listening to the podcast called "Internals of GCC" by Software Engineering Radio with Morgan Deters as guest, I can say that I was impressed by all the work done the developers of compilers. I truly think that people, or at least programmers, should be more interested in how a compiler works, because as they say in the talk, we all want our programs to run efficiently in modern computers, even when it is not necessary for a developer to worry about all the internal details involved in the compilation, it would be good in my opinion, to know at least superficially what this process does.

On the other hand, I also found interesting what was talked about the gnu compiler collection (gcc) which is basically a Collection of compiler framework, that is very portable and flexible, because it is used in Windows, MacOS and other systems operatives.

To achieve its objective, the podcast says that gcc internal is very modular, since it is composed of a language specific front end, a middle end and a back end.

The language specific front end (which can interchange between different languages ​​such as c ++ and java) acts as a black box and takes the given input in a plain text file or a source code, and so the form to a standard tree (AST) and it makes it generic. Then the middle end takes the generic tree from the front end and optimizes it to convert it into the RTL tree form (register-transfer language). Finally the backend takes the RTL and from it generates the machine code.

It seems to me a marvelous job that a single framework is compatible with so many systems and languages, and I think that the importance of knowing about compilers lies in this, because thanks to the techniques used, it is possible to translate the programming language into a Machine language on many different platforms and efficiently.

martes, 5 de febrero de 2019

The Hundred-Year Language


About the article called "The Hundred-Year Language" by Paul Graham, I can say that I found the author's observations very realistic, even though they are only assumptions. One of the statements that seemed important to me is that it says that "like species, languages ​​will form evolutionary trees, with dead ends branching off all over".

On the other hand, it is not surprising that the author considers Cobol as "an evolutionary dead-end-- to Neanderthal language." Since in spite of the fact that in his times it is said that it was a very popular language, it does not seem to have any intellectual descendants. I have heard that Cobol continues to be used but in a very forced way, it is used in systems that do not have the necessary flexibility to evolve, as it is in the case of some banks.

I found it quite consistent what the author says about Java, which predicts that the same thing will happen to Cobol, which will become to an evolutionary dead-end. And although many people may disagree, the reality is that if we compare Java with other languages, it is not as friendly or as flexible as other languages. And in my opinion, maybe it will continue to be used for many more years but in the same way as with Cobol, only in systems with many difficulties to evolve.

Something that did not make much sense to me is the objective of the author's article, because it says that "The reason I want to know what languages ​​will be like in a hundred years is that I know what branch of the tree to bet on now", and although I think it would be very good to learn a language that is a pioneer of the languages ​​of the future, I also think that maybe it would not be very useful, mainly because the because the people interested are those who want to make languages ​​or compilers. Also because normally programmers do not learn a language because it is good in its mathematical bases, but we learn it because it is one of the most used or because it is what is needed in the company in which we work.