Posts

Showing posts from March, 2021

Assembly, trees, context free language, what's going on?

 Hi everyone, in this week we'll dive deep in Episode 61 of the Software Engineering Radio,  where they discuss the internals of GCC. A compiler collection designed to be used for many diverse languages such as Java, C, Fortran, C++, amongst many others. It was a very dense podcast, with lots of information to process which I just think furthermore proves just how complex compiler design is. You must listen very carefully as invited guest Morgan Deters explains the main concepts. Basically there are three layers underneath the GCC compiler, the front end, middle end and back end, each in charge of a different phase of the compilation process, the frond end provides an interface for each of the languages that I've mentioned earlier, constructing an internal tree with all the reserved words and operands that are to be found in the plain text code. You could say that during this first stage, the compiler is going through the semantic analysis phase, placing a node for each of the

100 years of knowledge, how will it look like

 Hi everyone, in this week's blog we'll be discussing a very interesting subject addressed by Paul Graham in his essay The Hundred-Year Language. We're presented with the quesiton, how will programs be made in a 100 years time, how will they look like, how will programming languages look like and certain guesses on what they are going to aim for given the resources we assume computers will have by then.  One feature that stood out to me the most and one that we tend to oversee is simplicity. In an ideal world, we'll be able to write powerful and efficient programs with as little code as possible. Graham gives certain examples such as the concept of numbers being a list of digits, throwing away the idea of strings and making the axiom for a language as simple as possible. This translates into programmers not having to worry about how to optimize the resources they are given, consume time in identifying optimal solutions and letting the hardware handle whatever its given.