domingo, 28 de febrero de 2016

The Promises of Functional Programming

Doing for the first time a program is an activity that in many cases can be very difficult for some people, all of this depending on which is the problem that the program is trying to solve and which is the language that the programmer is using to create the solution because the truth is that the language in this case can be the difference between have a good experience in the programming or to have a nightmare trying to solve a problem that is not really difficult in itself but that the language doesn't allowed you to solve it in an easy way. Now the language despite of being different to the other languages, specially the most popular languages like Java or Python, share an important characteristic between them that is that they belong to the family of "imperative programming " instead of the family of the "functional programming". 

The "functional programming" as Hinsen says in his article is a form of programming that allows to write a program using functions, like the mathematical expression, which change the way in which most of the programmers know how to do a program, all of this because the "functional programming" have characteristics like the absence of variables or loops and the extremely use of the recursion which makes the activity of programming with a functional language a task that involves a high learning curve and a different way of thinking, different of how the "imperative world" works. 

Now, like we programmers can say that if "functional programming" is not very popular in the industry it is not necessary to learn how to manage the tools of this form of programming which maybe can be a huge mistake because in the present the technology has advanced so fast that the same has created forms in which a program can be executed talking about the parallelism and concurrence programming which is an application area that the "functional programming" serves very well and for the same is important that as a programmers give to this way of thinking and programming a chance because in the technology world anything have an static position.

In functional programming it is common to write functions that take functions an parameters and yet return another function, they are called high-order functions.

The article then talks us about concurrency and parallelism. The big issue with concurrency is the difficulty of maintaining the data in a coherent state. And for parallelism the difficulties are to identify independent computations inside a program and coordinating them with the required communication operations so that the resulting program always produces the correct result and does this efficiently for typical input parameters.

If you're interested in reading this article, here is the link: The Promises of Functional Programming.

domingo, 21 de febrero de 2016

Triumph of the Nerds Part II

The second part of the documentary "The triumph of the nerds" talks about the fight that all the computer companies had to remain at the top of the food chain, an example of this is IBM, that at the time were mostly focused on the creation of mainframes, but at the time the boom was the personal computer so if they took more time they were going to lose a lot of ground that they could not get back.

After seeing "Triumph of the Nerds Part II" and knowing the history between IBM and Microsoft, its very amazing see that thanks to the disruption between IBM and Microsoft caused for the discussion related with the OS of IBM computers (where IBM doesn't want to use "Windows" like instead of its own OS called "OS/2") IBM went of the glory to the hell which proof that the PC world is not an easy context for the business thanks to the velocity in which this context changes with technological advances that are presented faster and faster.

Its not a surprise that Microsoft is a giant in the IT industry in our days where this company covers since software development to hardware development all of this thanks to the "good" decisions that the company has made over the time and its important to mention that all this decisions were unleashed since the company discovered that the software is the essential tool for a PC because the software and specially a good OS can be the difference between a computer that is easy to use for the average person and a computer that is hard to use which is synonym of a failure in all the aspects.

This was a very interesting episode to watch because of all the information and history background that we learned from it, all the decisions that have lead the market to what it is today and all the repercussions of the proposals that were rejected and the individuals that after learning what could have been are most likely crying themselves to sleep every night. Further confirming the idea that in the computer and software industry (or world if you may), you don't only need the idea, but you also need to have the necessary means and the drive to implement them, because otherwise you will have to watch as the competition steals all the glory (and the moneys), as you get to be forgotten as a mere whisper in the wind without any other thing that a mention on a documentary in years to come (only to be forgotten later).

If you are interested in watching this video, here is the link: Triumph of the Nerds Part II

martes, 9 de febrero de 2016

Revenge of the Nerds

Nowadays, when we talk about the different programming languages that exist in the market for different purposes is inevitable thinking in more than a couple of options that we like programmers can use to solve the same problem with the tools that the language in that moment is offering us. Now, like Paul Graham says in his article called "Revenge of the Nerds", is truth that some languages are better for certain problems than others, all of this because some of these languages can bring to us like programmers a set of many tools or exclusive characteristics that can handle the solution for the same problem in a better way, which can be a solution that is more direct, optimal and efficient than the others solutions that can be reached with the other languages. 

Supporting in a certain way the point of view that Graham express in his article, is amazing that in the industry world where the majority of the actual students of IT engineering careers want to work exist people called the "pointy-haired boss" that decide what is the best technology and language that a team can use to build a project when this person doesn't know how the world of technology is really changing outside and how all the tools that are available in the market work, because the decisions that this "boss" is taking is inspired in what is mainstream in the moment, not the best option in all the cases. 

The previous can make us think that Lisp, in this case, can be the optimal tool to reach the solutions for many problems that exist outside in a better way, being this an alternative that may be very difficult to see because this language (despite of having characteristics that are implemented in many popular languages like Java, Python or Pearl) doesn't enjoy the same level of popularity that other languages have, which makes it unable to be a realistic option for the "pointy-haired boss" because this language doesn't have the same support in the industry that the other options thanks to its "low level of popularity" and as a personal opinion, our obligation as new IT professionals should be break down this obstacles taking risks in the moment when we have to choose a tool to develop something as Graham says "using the most powerful language that exist for our problem and wait for our competitors' pointy-haired bosses to revert to the mean" doing with this action a positive change in the industry generating more ways in which the IT specialists can find and develop new tools and solutions that can be the future breakpoint in the industry.

What I learned here is that despite what the bosses say, when we are startups, always design the products to please the users, not them, because in the end, the users are the ones who are gonna buy them. Also always try to use more powerful languages to get shorter programs, and with that you will reduce the time it takes to write it. This also helps us when resolving too complicated programs.


If you're interested in reading this article, here is the link: Revenge of the Nerds.