Posts

Showing posts from October, 2017

Chapter 10: Riding the… bear?

Image
Reverse engineering was the main topic of the video (or at least, the one I found most interesting). How the company was available to replicate the ROM BIOS through this concept is something fascinating, whatever was meant to be hidden and secret, was forever known and open to the public after the reverse engineering process. This process involved two different types of employees, the ones that know how the system works, and the so called “virgins”, which knowledge of the ROM BIOS was inexistent. The journey to get to a completed product no one knew how it worked (at least the engineers in charge of building the chip) is the thing I liked the most. And that’s how Compaq made a portable computer, compatible with IBM. This was the start of the dozens of rivals IBM started acquiring thanks to the easiness to build a clone. The thing in common every clone-builder had, was its operating system, acquired thanks to Microsoft. Finally, this way the balance worked out for Microsoft...

Chapter 9: Physical wounds may heal, while damage to the soul always leaves a scar behind…

Image
Why is the Nineteen Eighty-Four novel by George Orwell relevant to a student taking the Programming Language course? To answer this question, first we should find a link between both subjects, which is lies under the “Language” concept. The title of the article is “Language as the “Ultimate Weapon” in Nineteen Eighty-Four”. And while this is aimed specifically on the book Nineteen Eighty-Four, I beg to differ; Language is the most important weapon anywhere. In politics, education, professional careers, programming… Language is something to be feared. Language can bring destruction. Language can bring enlightenment. We speak in different languages (this blog is in English, if you haven´t noticed). However, there are some things impossible to express with the knowledge we have about the English vocabulary. For example (my personal favorite), how can you say bon Appetit in English? Yeah, I thought so. There is no phrase to say that in English (we have it in Spanish). Some va...

Chapter 8: More robust, more compact, and more easily parallelizable; For an unlimited time offer, we present you: Functional Programming

Image
This blog is about how functional programming has a lot of advantages over traditional programming, such as concurrent and parallel programming. One of the first things that pops out when using Lisp is its syntax; simple yet flexible nested lists. This data structure usage is one of the principal advantages of functional programming; it allows to generate and execute other Lisp code. Now we have Clojure, which is a recent Lisp dialect that shines thanks to various features, one of which being their high optimized data structures, that offers extensive support for concurrency. A key concept in functional programming are abstractions, that expresses an algorithm in terms of concepts instead of operations. These functional languages can be grouped together in a few groups, like “Clojure and the Lisp Family” and ML family, where Standard ML, OCaml and F# are included. The difference between this two groups are that ML is statically typed (Haven’t heard of F# yet, it feels li...

Chapter 7: Clojure Podcast with our beloved friend, Hickey, Rich Hickey

Image
So… Clojure by Rich Hickey is the podcast we are covering up in today’s blog. We have seen and read about the advantages of Clojure, however, there was an interesting point that was said during the first part of the podcast (13:21) that struck me; “At the core, for instance, Clojure, is much much simpler than Java… There are two different notions of simplicity, you could say that LISP is simple because it has a very simple syntax, only consisting of a couple of abstractions… but Java is simpler because I am guided more”. This argument made me realize which of both, Java or Clojure is more “simple”. Of course, Java is more guided through the coding process, however, it is hard to comprehend what happens in each line of the code. For experienced Java developers, they may see it as something trivial, but for novice programmers, some coding standards or abstractions are put in their codes because they are told to do so. Many don’t go beyond the understanding of the logic behind ...