domingo, 23 de octubre de 2016

Triumph of the Nerds Part 3

Triumph of the Nerds Part 3

This documentary is mostly about the invention of the GUI (Graphical user interface).
It all begins with the Xerox Alto, the Xerox Alto introduced some ideas, which it used:
  • ·       Object Oriented Programming
  • ·       Networking
  • ·       Graphic User Interface


Well nowdays is really common to use Object Oriented Programming, and actually is a obligatory subject in the basic programming. We are accustomed to use it, and has many applications. Actually I really like it.

But at that time, well still happens, the graphical user interface
In December 1979, Steve Jobs visited Xerox Parc, where he was shown the SmallTalk-80 which had OOP, networking for the Enterprise and GUI. In this moment he realized that the GUI was the future of the personal computers and it could be what  Apple needed to become the market leader.
The Lisa was the first Apple computer to have GUI, but it was not a commercial success because of the high price compared to the IBM computers, and it is logical, I mean if something looks nice and it is easy to use probably will be succesfull but if it does the same things that a cheapper version  well … thats why Apple had lots of troubles.

After some time, Apple developed another GUI called the Macintosh, its cost was slower, close to the price of the IBM machine. The Machintosh became the first affordable PC with a GUI Interface. But now the problem was the lack of applications, it were too few things to do in it.
Bill Gates, again, saw another opportunity for his company to, make an empire … cof cof i mean,  grow. He saw that the future was in the GUI and began working on one, (chan chan chan , Does somebody say Windows?). When Apple noticed that Miscrosoft was doing the same and they treated to stop them.


They lose … I mean I think it's obvious.

lunes, 17 de octubre de 2016

Rich Hickey on Clojure


The podcast was half the visión of clojure and half things you notice when you are using clojure.
Ok at this point whoever has used clojure must have noticed, at less I did, that clojure is compared with lisp a relaxed versión of the same functionality. But why? Lis pis oriented to very intelligent people who wants to code something but Clojure could be used for whoever wants to try a new style of coding or just need to make math functions.

Well I didn’t know that Clojure introduces maps and vectors to Lisp, Lisp used to use lists only, I thought that Lisp actually did it first.

I need to admit that I'm not accustomed to the unmutable objects used in clojure but has some advanages and disadvantages.

One of the things I noticed after hear the podcast is that at the beginning seems really difficult to learn Clojure than java or C but is because we are familiar to change variables and do all with imperative programming but the truth is that functional programming is easily to learn and you do not need to worry about tipe of data and that things.

I mean for use Clojure you need to understand what is abstraction and not just that you shoud be able to use it in your favor  but it depends the way you think and that is the diffucult part.
We already know about concurrency and parallelism, those are the big features of the Lisp descendants.


Many of the advantages of Clojure are just functionalities that make best aproach for the computer but  from the programmers point of view this is hidden. As it is mentioned in the podcast “it feels semantically like a copy, but it’s not a brute-force duplication of the data … there is some more clever stuff going onand is exactly that what makes clojure the intereting and usefull.

lunes, 10 de octubre de 2016

The promises of functional programming

The promises of functional programming


It is fun how the way we make programs has change in a relative short time but in most of one way it continues in basically the same way.

I like clojure, but to be completly honest I am sure it was really difficult to learn, the most of languages are basically an implementación of the same way to make functions, in the strict and nonstrict idea of the word but you have variables and loops and is similar to the basic way to think, definitely Lisp children takes you out of your confort zone… honestly at some point in the first contact whit Clojure I thought that It will not have more ways to do cycles than recursion and that terrorized me. Now I think learning Lisp requires thinking different and lot of effort.

About the functional programming, well, by definition a function takes some data and every time you give the same arguments the function will give you the same output and it works specially when you are trying to identify and implement patterns of an algorithm or like the obvious implementation, make mathematical programs for make fast a process.

Now, Why functional programming?

 Because you can … well yes, because you can do (in a easy way) parallel programming and be carefull with concurrency.

Usually is completely normal to have (lots ?) troubles with variables. maintaining the data in a correct state depends of the thread that tries to modify data and what happen when another one is accessing for reading or writing at the same time.


The problema is that data is often corrupted by other threads but if you are not able to change the value of the (I know those are not variables but i do not know how to name them) variables, well you are save.

lunes, 3 de octubre de 2016

Revenge of the Nerds

Revenge of the Nerds


I think there is not a Best programming language, if you can do something  in one language it can be , most times easily,  done in another language.

With that said now the question is “which should I use?” but more specifically, if I want to make my own business or if I am working with some programming language “Why I am using this language?”
Well, sometimes happen that  if there is boss thas just has a little idea of the software developement, something that could happen is the boss saying the team should use an specific programming language just because, in the best case it works well for a required activitie but in most cases, everyone use the same. But the truth is that they restrict the innovation that can be used to créate more sophisticated software.

Usually a programmer has a favorite language and actually knows the features of it and can do many things but sometimes it represents a restriction and the programmer knows that but not is always able to change the tools  because … the boss.


 Well now is Lisp time

*glorious trumpets music*
In the text is mentioned that languages are used for a while but whit the time basically a new, better and flirtatious language and it is fine but at some point we have some survivals and one of them is Lisp, maybe not the original lisp but many of the variants, and actually they has part of the syntaxis and the features that make Lisp amm … Lisp.
The reason that is explained of the persistency of Lisp is that basically it is math and math is allways continuous.
But not just that, Lisp has conditionals, function type, recursion, and LISP was the first to support it, variables are pointers, I liked this -> values are what have types, not variables, Garbage Collection etc …

Conclussion: Maybe learn Clojure is not sooooooo bad :)