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

domingo, 31 de enero de 2016

Dick Gabriel on Lisp

In this episode for the Software Engineering Radio, Dick Gabriel talk about the wonders of the LISP language. Gabriel has experience in various areas ranging from mathematics to AI. The podcast begins with a brief introduction about LISP. In short, it is a functional language in which functions take several arguments and returns a value, in this way, the next function is evaluated. The core of the language are the lists.

Right now I am learning Clojure, which is a general purpose programming language and it is a LISP dialect, so there is a direct relationship between the two languages.

Most of the things that Dick Gabriel talked are a bit unknown to me, for example the fact that the language has over 50 years of existence in this world. It is hard to imagine that a language with many years is not as well known among programmers of my generation (college's friends), probably some students have heard of him, but I personally never heard of that language so far.

As I wrote in past blog entries, LISP has many advantages, in this case, Gabriel commented the relationship of the language with artificial intelligence. Programmers often have no idea what to do. They just begin with the problem's definition, then they read the requirements and specification and try to make programs to demonstrate some version of human intelligence or his behavior. All the source code has been written through experimentations.

The aim is to go further than what people can do.

I agree that LISP is a very different language to those that we are accustomed (Java, C, Python ...), however, all the texts recommend fully this curious and powerful language. It is important to say that all the texts have been written by experts in LISP or they have had many years of experience with the language.

So I think despite the difficulties you may have at first, the constant practice can give results, in order I can be able to experiment all the benefits that I read when programming in that language.

0

sábado, 23 de enero de 2016

Beating the Averages

The article written by Paul Graham tells the story about the creation of the startup called Viaweb, which aimed to build online stores. This application was the first to be based on the web as it do not run on a desktop computer like the others applications. It should be noted that the success of the startup -created by Morris and Graham- was that it was written primarily in Lisp, which allowed them to have an advantage over their competitors.

The power that had Lisp was that they had the ability to implement modules quickly and efficiently, so the company grew faster than others, due the fact that it always was at the forefront.

What it aims to expose in the article is that programmers should have a wide view of programming languages and they can decide what used to develop high-level applications, as this can make a difference in the business world. As long as technology evolves so rapidly, programming languages are different. These are tools with which developers can express their ideas and communicate with the computer; thus, it does not matter if technology changes, the languages will not do that.

Something interesting that can be mentioned is that the article discusses the advantages of using Lisp and how that helped their succeed, however, it does not emphasize the fact that both (Morris and Graham) had experience programming in that language.

I believe that despite how attractive may be the idea of programming in Lisp or any other language that can give us a competitive advantage, it is always essential to take into account the personal experience that we have as developers in that language. As in the previous blog entry, we must take into account various elements to make a smart choice of the language we use and that it does not affect the development of the project, because without the experience required for Lisp, not only the time will harmed but also the costs that may incur a delay in system development.

The lesson that I learned is that in the world of IT business is always good be groundbreaking and not get stuck in a red sea where all competitors are.

0

domingo, 17 de enero de 2016

The Semicolon Wars

The article written by Brian Hayes and published in the computing science journal "American Scientist" describes one of the biggest problems that programmers face: the great number of languages that exist to develop code. The same happens with communication between humans, the ability to write code is very wide and there are currently about 2,500 programming languages. 

Brian Hayes does a comparison among programming languages in regards to syntax and family to which they belong, however, he emphasizes an idea (maybe a little radical) that is the unification of all languages. Naturally speaking and comparing with the humans environment, every language is valuable and there can not exist only one that solve all the problems. 

If we think in the statement done in the above paragraph, we can mention some reasons why it is not possible to achieve this "dream": 
  1. Some languages solve more easily some tasks, because they have been designed for that purpose. For example, there is the case that it is easier to develop a web site in Ruby due the fact it simplifies many tasks. 
  2. Some languages run programs without take too long, for example, Clojure eliminates the complexity associated with concurrent programming. 
Despite the author's statement about the unification of languages, I agree with the statement made by the end of the article: 
I write programs in Lisp for the same reason I write prose in English—not because it’s the best language, but because it’s the language I know best.
Every programmer choose the language depending on their experience, maturity of the language and new trends that exist in the market. There are many elements that must be taken into account to make a good decision and that it does not affect the project we are developing.

0

Triumph of the Nerds Part I

Impressing their Friends

The documentary produced by US public television tells the story of the beginning of personal computers in the early 1970s with the Altair 8800 and Apple II. The video includes a series of interviews with important figures which are related to such technological advances such as Bill Gates, Paul Allen, Steve Jobs, Steve Wozniak, Ed Roberts, among others.

Despite being described as nerds, all of them had very clear objectives of what they wanted to do in life. They were innovators, passionate about technology and highly intelligent, thus, they were able to revolutionize the software industry and hardware between years 1970 and 1980.

The documentary was very interesting because it shows the thinking of these "giants of technology" and the way in which emerged many of the ideas developed in his time. Nowadays, the companies that they founded forty years ago do not look like what we know now. The reason of this evolution is due to the strong growth and global recognition that they were obtained along the years.

However, it is possible to emphasize that from the beginning Microsoft and Apple had great success because although his inventions were rudimentary, they were revolutionary in their field. The trend in that year was the personal computer because it changed the way in which people interacted with the technology.

In that time, an important feature that defined them and they had in common was the teamwork with which they developed their ideas. For instance, Wozniak reduced the number of chips required for a computer and Steve Jobs had the vision of selling 1,000 units in only one month. Microsoft and Apple not only became big businesses, they opened the door of a large market that we know in the heart of Silicon Valley, where all companies are struggling to make a mark in this technological era and innovation.

Big ideas can begin with the wish to impress our friends. Nobody knows the impact that it may have on the world.

0