Hacker News new | ask | show | jobs
by kls 5231 days ago
There are a few archetypes of programmers, there are those that see the science of the computer, there are those that see the art of software creation and there are a few in between that see the philosophy in the middle. I would assume by your writing that you are in the first camp. The problem is those is the first camp favor languages with a different feature set than those that view it as a art. One cherishes their language because it enforces structure and rules, while those that see it as the art of human expression favor languages for their expressiveness and their ability to bend the languadge to their creative desires.

I like to use Lisp as an example because it is so hated by one camp and so loved by the other and that is the crux of the issue, language are developed for humans to express their ideas. We all think and abstract differently, I do not believe that their will ever be one language that rules them all, because it supposes that it can encompass the way all programers think, by nature it would be the most convoluted language ever designed, as such it would die in the design phase.

Conversely I see concepts like the JVM and the .NET VM as the future. I look at Java, Scala and Clojure as examples of innovation on all sides of the fence on a platform where they can interopt and leverage the creations by all languages that are supported on the VM. At the core, the issue is the differences in thought process and expression of that thought, until direct thought can be translated into software there is just no way to design Utopia++.

1 comments

Then your assumption would be wrong. I consider myself to be more artistic in writing my code. But thats besides the point I was trying to make.

While I enjoy the feeling of creation and I like doing fancy stuff on my computer, I still recognize that all code boils down to those three things I listed. No matter how artsy you get about it. I argue that creativity and expressiveness would be enhanced by having a common language that we could all understand and share our own skills through it. I like to think that if we had this utopistic language, the teaching of programming would become easier and it would be started earlier for students. Also the quality of the teaching would improve significantly.

Language is but a tool to transfer ideas out of your head to others, the better you are at one the easier it becomes. QuickSort works like it does because thats the algorithm. A linked list is like that because thats the data structure. I don't think it matters how you learn these concepts and how you visualize them in your head. My native language is not english but still I can think in it, through practice. I think the same applies to programming languages, just as long as the language has that expressive power. If it doesn't confine itself to a singular style or paradigm but lets you choose, isn't that the most expressive of languages?

Then your assumption would be wrong. I consider myself to be more artistic in writing my code.

I apologize for the assumption but you still fit one of the archetypes, as do I.

QuickSort works like it does because thats the algorithm. A linked list is like that because thats the data structure.

Algorithms are very different from the core constructs of the language and they are very different from say UI programming or system integration programming. Algorithms are closer to Mathematical proofs in it's certainty to be efficient. So long as it is the most efficient implementation. That being said, developing systems is a long way up the stack from algorithms.

I agree that there would be a lot of advantage to everyone adopting the same language, we reinvent the wheel constantly and many times poorly. I don't contend that fact, I just honestly don't see how it is going to be resolved any time soon due to the nature of languages. As a thought experiment lets say that someone was given the authority to make all other languages disappear and they chose COBOL to be the one language. There would be a lot of individuals upset about that decision. I personally would choose a Lisp, which would assuredly set more than just a few people off. I personally would not be happy if it resembled COBOL, Perl or PHP, I am not very dogmatic about languages and go with the flow, but my mind does not work the way those three do, and would not like it if a language resembled any of those. What if someone chooses a visual languadge where we have to drag and drop logic? Those languages are almost university hated by developers.

If one of the currently languages is not the candidate for a utopian language then we get into a worse situation where we now have to write a new language and reinvent the wheel yet again to get everyone on board. We are committing the same error that we are arguing against assuming that this time it will be different. If it is not different this time, we have compounded the issue.

I am generally an optimist, but when a broad category of humans are involved in a conceptualization I become a realist as the human element seems to be the one that foils the best laid plans. Some people choose technology for the specific reason that other people do not use it, they like to be in the know about something the broader population is not. That demographic alone means that there will be a group that will not use the one language, even if it holds superior advantage. I just don't see everyone being accounted for, I believe by it's nature a single language cannot account for everyone.

This is why I see ideas like the JVM as so powerful and immediately beneficial because they allow us to leverage the past efforts while still providing the assortment of languages that we need as a vastly different demographic. The main issue that we are trying to solve via a single language is the duplication of effort, I content that we can solve that through technologies like the JVM. Where a lib written in Java can now be used in more modern languages like Scala and Clojure, to me this fixes the issue in a more pragmatic way but even with that solution we have individuals that do not like the JVM platform for various reasons.