Revenge of the Nerds

We've seen that Paul Graham is a massive fanboy of Lisp. He mentions that:

"As one data point on the curve, at any rate, if you were to compete with ITA and chose to write your software in C, they would be able to develop software twenty times faster than you. If you spent a year on a new feature, they'd be able to duplicate it in less than three weeks. Whereas if they spent just three months developing something new, it would be five years before you had it too."

Twenty times faster. Really?

To be honest, it takes at least 20 times more to think about the correct abstraction to be implemented in Lisp, not taking into account the amount of hours you'd spend interating lisp with whatever code standard you desire.

He gives a really interesting example: Write an accomulator.
In Lisp:
(defun foo (n) (lambda (i) (incf n i)))
in C++
[](int n, int i){return n + i}
So while I could agree that in 2002 languages like Lisp were more powerful than C++ and other languages due to the lack of Lambda expressions. Most languages today implement lambda expressions natively, and meta-programming is a must in plenty of languages. I'd say that the overall power of languages has risen to the occation, and given enough time, languages will converge in to a canonnical point where they all have the same power due to the evolution of languages.

It is laughable that Before C++11 they had to write this:

public interface Inttoint { public int call(int i); } public static Inttoint foo(final int n) { return new Inttoint() { int s = n; public int call(int i) { s = s + i; return s; }}; }
And It wouldn't even solve the problem.

For me it is the new era of programming languages, where there are some cannonical standards set up by functional programming which are being implemented by every language.


Graham, P Revenge of the Nerds (2002) Consulted on September 6th 2017. Retrieved from http://www.paulgraham.com/icad.html

Dick Gabriel On Lisp

Today we are going to discuss the main topic of Dick Gabriel's podcast on Software Engineering Radio.

In this podcast he discusses the creation on Lisp in Stanford.

The topic I want to talk about is: Why functional programming is making a comeback into the software engineering field, and why it didn't do it before.

Having automatic garbage collection and a meta programming via lists on top of a compiler creates a big problem that only processing power solves: Overhead.

When Dick Gabriel invented Lisp, it was considered real slow to implement a program in Lisp. The amount of overhead per instruction is monumental to programs for architectures that handle RAM below 128 MB. Once we had the massive capacity of today's computing power, we can implement Garbage collection in whim, like in Erlang without over-extending our capacity of software.

It is also quite interesting to me that Lisp died down. For me one of the most important things that came out of Lisp is that everyone hates the parenthesis way of coding, Plenty of people have mentioned that they prefer Erlang to Lisp. A Parenthesis based structure also causes overhead to the programmer as he has to make sure that every parenthesis they make matches to another parenthesis.

Nowadays, it seems that the only implementations Lisp has is in very specialized web-apps that require meta-programming to be coded. It is quite interesting that you can code lisp in lisp, as Dick mentioned, but I wouldn't consider it an advantage over other programming languages.

One last thing that was very interesting is the notion that coding can be considered an Art. And the compatibility between writing literature and writing code. They both require a certain discipline to be executed correctly. With enough repetition and enough practice, you can achieve excellence in both according to Dick Gabriel.

[Podcast] Software Engineering Radio. Ep 84. Dick Gabriel on Lisp (2008) Listened on August 30, 2017. Retrieved from http://www.se-radio.net/2008/01/episode-84-dick-gabriel-on-lisp/



Beating the Averages

Would you say functional programming lets you create and be more efficient in your language?  I have always sustained the point that if we were to create a messaging service, the almost perfect way to do it is without mutable state in a functional programming language. Nevertheless, this is only because I was able to expose my mind to a different programming languages.

I would have to disagree with Paul Graham on this one, coding in a functional programming languages, and having your job postings in them, elevates your costs and your available staff to a fraction of the already small pool of software engineers. Yes, you have advantages that are created due to the language, but hiring coders is becoming an increasingly difficult problem, and it is compounded if you ask for coders with "Extensive Lisp experience" and "Expert in Clojure" is going to be a hell of a ride.

Paul Graham has been a figure in the startup world because of his relationship with Y combinator. As the time has advanced, it seems that most of his posts are lauded by the community, In my personal experience, I've seen that most of his posts are a hit or miss for different types of communities.

But he does have a point, if 90% of startups fail, and 90% of startups are using the same languages, trying out something new, would probably work really good. But knowingly keeping the language to a set standard of language is really problematic as advice.

There is another argument which mentions that programmers who dabble in clojure are already smart, so that is why they code in clojure. So really, you are looking for programmers who code in functional languages, because that is a point that he is trying to make: Hire smart coders, and you'll have a good startup.


Graham, P. Beating the Averages (2001) Consulted on Aug 22, 2017. Retrieved from http://www.paulgraham.com/avg.html

The Semicolon Wars

This is the first installment in a series of articles that I'll be reviewing to add some content to my blog. The first article to review is going to be "The Semicolon Wars" by Brian Hayes.

The article was published in the acclaimed magazine "American Scientist".This article starts by creating a metaphor between the languages spoken in the world, and the programming languages in the world. One of my highlights of the article, is the following quote:

"That means that we've been inventing one language a week, on average, ever since Fortran."

I recommend this article if you really want to pique your curiosity start, like me, a deep dive in Wikipedia, searching for languages older than Google. One of my favorite searches was the "Simula 67" language. Which is really amazing to see. It looks like the weird son of Visual Basic with C

Simula 67 code for a Sigma function. [Thanks Wikipedia]

Real Procedure Sigma (k, m, n, u);
   Name k, u;
   Integer k, m, n; Real u;
Begin
   Real s;
   k:= m;
   While k <= n Do Begin s:= s + u; k:= k + 1; End;
   Sigma:= s;
End;

There are conventions as long as there are variants, the author mentions. I do think it is a fun and  insightful thought. Which is why I decided to do my opinionated echelon of the best programming languages (and also making other programmers mad in the process.)

Tabs vs Spaces
tabs, as tabs are resizable to each one's comfortable view. But I should probably switch to spaces, because Programmers that use spaces earn more

Naming Conventions
droopyCamelCase for all methods
CamelCase for all classes
_  for private members.
_  for spaces (javascript go away with your - )

IDE
Sublime text for life. IntelliJ and Webstorm for all other things

One of the interesting things that the article made me reflect about is Hendrik Einchenhardt's quote:

"shared mutable state is the root of all evil."
As a final note, regarding the Author's comments on Lisp.


Hayes, B. The Semicolon Wars American Scientist (2006) Consulted Aug 14 2017. Retrieved from http://webcem01.cem.itesm.mx:8005/s201713/tc2006/semicolon_wars.pdf 


About me

Programming Languages

- My expectations:

I will be able to code in Clojure, observing the new trends in programming languages, including functional programming in an efficient way.

· Your hobbies and personal interests.

I love playing video games, specifically Rocket League, but I also exercise almost daily, and I try to read at least 30 minutes a day. Lately I am very interested in psychology, so I am reading and studying a lot of this.

  Books, music, movies, TV shows, etc. Which you have recently enjoyed.

Books you've enjoyed a lot lately: Influence by Robert B. Ciadini. Rework, by Jason Fried. Think Like a Freak, by Freakonomics, and Paul Allen's Idea Man. Also, the series that I liked the most is Black Mirror.