Hacker News new | past | comments | ask | show | jobs | submit login
Ciao Python, Hola Go (espians.com)
46 points by tav on Nov 27, 2009 | hide | past | favorite | 34 comments



I don't understand this winner-take-all mentality around programming languages. Why "switch?" Why not instead simply add another tool to your toolbox? I like having a myriad of languages and libraries at my disposal. Each has its strengths and weaknesses. Understanding those allows you to choose the best tool for the job at hand.

One thing we need to learn to accept is that no tool is ever perfect. What is optimal for building applications may get in the way when doing embedded work. An outstanding teaching language may not be efficient enough for experts. There are many different situations we'll encounter as programmers. Not every can be resolved with the same set of tools, so the more we have available (and understand!), the better.


> Why?

Because you have a blog and must fill it with something or it whithers. Controversy is more filling than pragmatic rationalism.


Can't blame the guy, though, since we reward this type of writing by making this "Ciao Apples, Hola Oranges" essay #2 in HN.


That explains the blogs (and, well, a large part of the media) but doesn't answer the phenomenon of language wars.


s/language/religious/ and wars over religion have been going on for thousands of years. I don't think that explains it but the mentality seems very similar to me.


I think it depends what you do with your toolbox. Most people have a limited amount of working memory and filling it with syntax rules + library APIs of 15 programming languages is not best way to get most tasks done (unless the task is to learn as many languages as possible).

I would prefer to know as few languages and APIs as possible that let me get my work done. Python is one of the languages and the other one is C.

C is for doing realtime stuff and Python is for everything else (setup, network IO, GUI, web, etc). Unlike the author of the artice I like using Twisted and it works reasonably well for what I am doing.


I disagree: the more people work on improving my favorite programming language, the better. Who knows, if it became really popular, it might even be possible to find jobs using the programming language.

I like learning new languages, but realistically, I can not be very good in an unlimited number of them.


Bah, a voice of sanity. :-)

I think the problem is that the bigger the ecosystem for an environment, the more valuable peoples' skills are, with those tools.

Hence, language advocacy is an "efficient" choice (see the blog post about Perl on the front page, right now... pure flaming comments voted high.)



It seems a little early to be making any committed switches. I think I'd wait until after I built something significant before I announced that something new was better than something old. Especially when betting on a combination of new tech such as Go and NaCl.

Most of the reasoning here that's not flat out wrong (such as to the reference to lack of Google support for Python, inability to secure the platform, ), seems performance focused, so perhaps that's a sufficient justification?


"A little early" seems like a giant understatement. Go has only been out for about a month. Python has been out for ~18 years, About 200 times longer than Go.

Why someone would choose to switch from a well established language to a brand new bleeding edge one is beyond me.


A calculated gamble on the new language becoming popular in the next several years?

It's like investing in a company; the smaller it is when you throw in your lot, the better placed you'll be when it grows big. Imagine that Go becomes the Next Big Thing five years from now, displacing large amounts of C/C++ code--this guy would then have five years of experience under his belt in the hot new language right as its popularity spikes.

The potential downside is that the language never takes off and you end up an expert in something that no one wants (see also: Lisp.).


By switching this early to Go you'd have to write much of what is available as third party libraries in Python yourself.


On the upside, this gives you the ability to be the one that implements and open-sources some of the later heavily-used libraries and to carve a name for yourself in a burgeoning Go community.

This would hopefully lead on to job opportunities down the road.


This is a very good point. Getting in ahead of the curve on up-and-coming open source projects is an excellent way to become an in-demand consultant/freelancer/contractor.

I managed to get in fairly early on Drupal, and it's been a nice source of work over the years.


I'm hoping someday in the future your statement will sound silly. There's got to be some way we can avoiding rewriting all the libraries every time a new language comes around.


The Parrot VM [http://www.parrot.org/] has been discussed here before: [http://news.ycombinator.com/item?id=552850]

Projects like this might help, but I suspect there will always be someone willing to port a library to be native.


Well, auto-generating cross-language bindings so that you can make function calls between code written in arbitrary languages would be a good start. Limited subsets of this exist, usually variations on "how to call C libraries from other languages" since that's the most common scenario.

For example, there's SWIG: http://www.swig.org/

Unfortunately, there tend to be subtle issues of impedance mismatch that make cross-languages bindings never feel quite right.


clojure, scala, jruby, etc all can use java's large source of libraries.


Yeah, this is my main reaction, too. I couldn't switch until something like scipy was available.


So what he wants is a modern language in which to write fast programs for NaCl? I find Go to be a rather strange choice for that given that it is quite new and a bit unoptimized. I think that D might have been a more intuitive choice as it provides you with a mature environment to write native code that does way with a lot of the pain you get when using C++

Than again, if you want to be really cutting edge and be mentioned in a lot of conversations, Go is probably a much more interesting choice as it as more of a hot topic right now.


I think he forgot to write part where he explains why native client is better than ActiveX, or did I just overlook it?

Anyway, he seems to have a very specific, narrow use case (native client).


It's explained better on the Wikipedia page

http://en.wikipedia.org/wiki/Google_Native_Client

It seems to be sandboxed, whereas ActiveX is a security nightmare.


I am pretty sure ActiveX had some kind of sandbox model as well?

Even so, I remain very skeptic about this.


There's "sandboxes" and then there's sandboxes. Native Client uses the latter while ActiveX had barely the former.

It does present a real concern and exposing additional APIs is going to always present increased security risk. That said, having looked a bit at Native Client's sandbox and having examined the findings of the well respected security researchers who examined the sandbox protections, Google's taking a pretty good whack at it and their sandbox itself is fairly sound.

My worry is not with their sandbox, but the additional APIs that they expose with it. (See also: WebGL which now throws your entire GL stack into your web browser as security critical code.)


Because ActiveX is a proprietary, Windows-only technology?


OK, I was thinking in the security sense, but of course broader availability is interesting.


"And, sure, the guys behind it had made some of the biggest contributions to computer science to date, including: UNIX, regular expressions, Plan 9 and even UTF-8!"

It's a little far-fetched to say that two operating systems and a string container are some of the biggest contributions to computer science to date.


But it isn't that far-fetched to say that some of the people behind Go did made substantial contributions to computer science. Which is indeed what he wrote. Whether those four particular aspects of their work are the same ones you'd point out or not.

More to the point though, it is a dumb reason to use a language. Though not a dumb reason to pay attention to it or its design.


What would you say are greater contributions than UNIX or regular expressions (which you skipped)?



If we're talking computer science then I kind of have to agree that Unix and regular expressions are minor contributions if they even rank at all. There are several theoretical concepts and core algorithms which are much much more significant.

On the other hand if we're talking about computing and programming in general then they are pretty damn major, possibly on the top 10. One has to remember that CS isn't programming and programming isn't CS.


"Computer science" is, unfortunately, often used as a catchall term for "everything related to software and programming".

Not to mention that computer science, in the narrow sense, isn't about computers and isn't a science. Three cheers for unclear terminology!


In what way can it reasonably be said that the inventors of Go also invented regular expressions?




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: