sábado, 27 de febrero de 2016

The Promises of Functional Programming

The article written by Konrad Hinsen talks about the many advantages of functional programming, specifically focusing on the Clojure language, which as we know is a dialect of Lisp, it was designed for the Java Virtual Machine and supports concurrency without problem.

After several weeks of programming with Clojure, I think that it is a very interesting and different language to what I am used to. As the author of the article says, functional programming varies greatly from traditional or imperative (as many people refer). From experience I can say that it is shocking change imperative languages like Python, Java or C (which are the most I have used in my courses) to a language like Clojure.

Clojure has important differences as the fact the lack of variables, the reason is that the programs are composed of functions and they do not change the state of variables because they are used to map input values to output values. In this way, we can say that the functions are the core <3 of this type of paradigm.

Another important difference is the use of recursion as a substitute for loops. The first time I heard the concept of recursion I found it very interesting and challenging at the same time, because it invites you to think in a non-traditional way, ie, using the definition of the problem go calling it with smaller instances. At first it may seem strange solve problems that had never thought recursively in other languages, however with Clojure can be very easy to solve and written in a few lines of code.

Probably concurrency and parallelism are the most important advantages, since with the evolution of technology we should take advantage of the power that computers provide us, for that reason, functional programming is considered a promise, because being a technique different then there are no coherence issues in data.

In conclusion, I hope to go slowly discovering all the wonders of this language that everyone speaks and can be the next step in evolution.

0

domingo, 21 de febrero de 2016

Triumph of the Nerds Part II

Riding the Bear

In this second part of the documentary entitled "Riding the Bear" we can see the events that follow the Apple's creation by Steve Jobs and Steve Wozniak, which revolutionized the IT and software industry to enter the global market that generates millions of dollars each year.

One of the most interesting facts is IBM's entry into this market, the company that is known for being conservative and rigorous had to choose between an experienced computer PhD and a Harvard drop out, this latter person was the largest software provider in the industry and his name was Bill Gates. At Microsoft, Steve Ballmer and Bill Gates knew the importance of IBM's visit, since at that time were the largest company that dominated the market. Bill Gates always took advantage of the opportunities presented to him, so that might have helped the growth of the company.

IBM created something that revolutionized the world, however, there were soon other companies that would be its competition. Besides that, I think IBM is very focused on being a rigid and conservative company, always concerned about making high-level business unlike other younger and flexibles companies as Microsoft.

I think one of the reasons why Microsoft grew very quickly, is the great vision that Bill Gates has, so despite growing up in a wealthy family, he is an entrepreneur and would not give up so easily. Their need to meet the needs of adolescents and adults inspired much of his ideas.

It was easier to create a new culture with people who are fresh out of school rather than people who came from other companies and other cultures (Charles Simonyi, Chief Programmer at Microsoft)

Finally, I was very surprised by the comments of Bill Gates in the final minutes of the documentary. What he is trying to tell us is that we should not rely on the luck we have, because we do not know how durable our success, there is no guarantee in the software industry to always be number one, so we must be concerned for always be innovating and go away from our comfort zone.


References
Mitchell, J. [Jamila Mitchell]. (2015, may 21). Triumph of the Nerds Part 2. [Video file]. Retrieved from https://vimeo.com/124201870

0

domingo, 7 de febrero de 2016

Revenge of the Nerds

As I have said since January in this blog, we know that Lisp has several characteristics that make it a powerful programming language and not so easy to understand.

The article written (once again) by Paul Graham starts talking about that the programming languages are not equivalent to each other (as many would believe or think). As programmers we know that this statement is true, since not all were created for the same purpose, for example, Lisp was accidentally created as an alternative to the Turing Machine.

From a business standpoint (as well as in the "Beating the Averages" article), choosing a project's technology is not an easy decision, so we can not leave this decision to any person who:
  1. is not an expert in the area,
  2. does not have deep knowledge or
  3. is not updated in regard to the newest and most convenient approaches.

Although I've never programmed in Lisp I can understand the differences over other languages. I find interesting the idea that language is different to what I'm used and I turn away from my comfort zone, because the beginning is not so easy. I agree that it is a language that departs from the "conventional" so it can be so powerful, because every programmer implements its own data structures, macros, etc.

I share the idea -just as the author of the article- that in order to excel in the IT world, it is important to implement approaches that are not fashionable or that everyone uses. Notably obviously it seeks not to waste time and effort using a less powerful language.

Not in all projects matter the language used to program, however, is a decision that we must study carefully to get more sophisticated programs that solve hard problems.

0