Live data from Hacker News

Would You Bet $100M on Your Pet Programming Language? (2007)

prog21.dadgum.com

61–70 of 83 posts

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#61
post #39

Earlier quoted context omitted.

>I'm a fan of NodeJS, but I would never use it to try to solve a computation heavy problem, it's good at IO multiplexing No it isn't. It is very bad at it. It just uses the most primitive event loop and foists all the complexity of that onto you as the developer using it.

You're being downvoted but you're right.

He is, and I'm seeing more of this on HN over time. Many people who use see a bothersome comment, and while snide- he was accurate. People may use Node.js, drank the Kool-Aid, but in 5 years there's going to be an industry movement off of it and the messes being created today. I've used it, was not impressed by its technical merits, and wrote it off as yet more technological churn.

I'm not a fan of churn, and keep a keen eye eye out for true innovation. Which happens far less than people are convinced to believe. That's the biggest scam the tech world convinced everyone, that innovation is rampant and fast moving, when in reality everything moves at glacial pace.

I'm a late adopter of technology, proud of it because it's generally the smart move for most of us. I test drive shiny things I can make time for, but bringing it into my stack doesn't happen by reading a few blogs. It not only requires significant technical merit, but someone has to maintain all this shit.

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#62
post #2

(Note: This article, while good, is from 2007 so perhaps its advice is slightly out of date.) Personally, if I were going in completely blind I'd choose Python (with C as a backup). Numpy and Scipy are fast enough for most of the things that you need to do. It's the "it does pretty much everything" language. Is it great at very high performance games? No. But you can drop into C pretty easily (although I find Ruby +…

What projects on the scale/complexity of Photoshop are implemented in Python? Possibly large chunks of Youtube or Dropbox? I love Python for small scripts, and even don't regret it too much for programs with mild complexity (~5000 lines of Python), but the lack of explicit typing makes figuring out what any given function/class does pretty hard. What are the arguments? What do they do? What does the return type do? W…

Yelp is a multi MLOC Python code base. AFAIK YouTube is slowly being ported from Python to Go.

There are plenty of other large codebases in dynamic languages:

  - Wikipedia and Facebook written in PHP
  - Twitter was originally written in RoR
To be honest, it's my personal opinion that good static languages (i.e. type inferenced) are better than dynamic languages. I believe it's situational compared to traditional static languages (e.g. Java, C++).

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#63
post #16

I feel like the corollary to this is how quickly one could solve the problems in a pet programming language if $100M was on the line. If the compiler doesn't scale well, hire one of the authors for a bit as a consultant. C with Classes was once someone's pet programming language.

... and if the baby isn't born in one month, hire nine women! A lot of the development of mature software can't be parallelized. Paying Simon Peyton-Jones twice as much, or even cloning him, won't make Haskell improve twice as fast.

Peyton-Jones is not the only person working on Haskell. In fact, if it were only Peyton-Jones working on Haskell, the language wouldn't be where it is today.

Yes, the speed of development probably almost always scales sublinearly with the number of people working on it, but beware that perception may also be distorted by the old adage that "the last 20% of the work take 80% of the time". That is, when people are added to a project that has finished the first 80%, it may seem like progress scales terribly sublinearly with the people added, but what is observed may simply be the fact that the same amount of work leads to a smaller perceptible change once a project has sufficiently advanced.

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#64
post #62

Earlier quoted context omitted.

What projects on the scale/complexity of Photoshop are implemented in Python? Possibly large chunks of Youtube or Dropbox? I love Python for small scripts, and even don't regret it too much for programs with mild complexity (~5000 lines of Python), but the lack of explicit typing makes figuring out what any given function/class does pretty hard. What are the arguments? What do they do? What does the return type do? W…

Yelp is a multi MLOC Python code base. AFAIK YouTube is slowly being ported from Python to Go. There are plenty of other large codebases in dynamic languages: - Wikipedia and Facebook written in PHP - Twitter was originally written in RoR To be honest, it's my personal opinion that good static languages (i.e. type inferenced) are better than dynamic languages. I believe it's situational compared to traditional static…

Both twitter and facebook ran into some pretty hard limits on those platforms which in the case of twitter led them to abandon RoR and in the case of Facebook led them to create a compiler for the language (doable on that 100M budget but still quite an undertaking).

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#65
Yes. There's risk with every technical decision. I'd probably be inclined to use Haskell, for access to a top-notch community and a level of robustness (esp. in the face of refactoring) that, while it can be achieved in a dynamic language, is hard to hit without a static type system.

An upshot of Haskell is that it probably wouldn't take a $100 million budget because you can do a lot with a small team. We're going to need far fewer people than on a Java project, and you won't need the layers of management that come with big teams, and you'll also have smaller code and more of an ability to use the Unix philosophy (systems compromised to multiple, usually small, programs). Those wins aren't additive, but multiplicative.

So, yes, I'd definitely trust Haskell (or any mature FP language) on a $100M project. I'd trust Java on one too-- if I could find someone to do all the work, and trusted that person-- but I'd rather use an FP language and really kick ass.

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#66

Earlier quoted context omitted.

Part of Python's mantra is "Explicit is better than implicit"[1] which I fully, and wholly disagree with. You end up with a file that has 10 import statements and on larger codebases this just get worse and worse. Furthermore, this leads to less DSLs and other helpers that Ruby is just better at. In Ruby (or possibly just Rails?) say I want to get the start of the day 3 hours from now, when a sports game is supposed…

But, and I am a Ruby neophyte, someone, not the language designer, wrote a library / DSL that somewhere has "end_of_day" defined. Now I would never ever trust that this nice person got end of day right for my 100M project. Because they cannot. Is that end of day as in close of business or as in midnight? Is that end of day as in the time some we start that process in ? Or end of day as some arbitrary cut off for a gl…

It's ok to add tests for code you didn't write.

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#67
post #20

A project this huge is likely to be a distributed system. I can't think of any single binary that could provide $100m in value to one customer. Maybe some really important financial database, but even then...distributed? Right? That being said, we're going to have to use way more than one language, right? Like most projects, right? No. This question is a red-herring. I think a semi-decent point is being attempted, bu…

>I'm a fan of NodeJS, but I would never use it to try to solve a computation heavy problem, it's good at IO multiplexing No it isn't. It is very bad at it. It just uses the most primitive event loop and foists all the complexity of that onto you as the developer using it.

Could you provide an example? I'm using node and are pretty satisfied with the performance I have.

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#68

Earlier quoted context omitted.

Part of Python's mantra is "Explicit is better than implicit"[1] which I fully, and wholly disagree with. You end up with a file that has 10 import statements and on larger codebases this just get worse and worse. Furthermore, this leads to less DSLs and other helpers that Ruby is just better at. In Ruby (or possibly just Rails?) say I want to get the start of the day 3 hours from now, when a sports game is supposed…

The bit where you don't know for sure what's in Ruby and what's Rails-specific, argues against your own point for me. I can't help but feel that that sort of attitude is why the more work I take that involves maintaining Rails applications, the less I want to write a new application in Rails... I'd consider using just plain Rails, though my experiences with the code quality of even some aspects of that aren't super g…

See, I actually knew that it was just part of Rails, but this is my whole problem with the Python community. They have this explicit is better than implicit attitude that infects their appreciation of what makes code good.

Code is good if it is legible. Doing things quickly is good. Nobody actually writes "end_of_day" and doesn't expect it to work outside of a rails project without running it or testing it.

The Ruby community doesn't need to clutter up their codebases with senseless imports to make programming fun and useful. And people hand wave about how 3.hours is cluttering up codebases, but it really isn't. What clutters them is broken frameworks or abandoned protocol buffers. Rails (and ember) have this amazing idea that code shouldn't be anymore verbose than is necessary and Python just doesn't have that.

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#69
post #39

Earlier quoted context omitted.

>I'm a fan of NodeJS, but I would never use it to try to solve a computation heavy problem, it's good at IO multiplexing No it isn't. It is very bad at it. It just uses the most primitive event loop and foists all the complexity of that onto you as the developer using it.

You're being downvoted but you're right.

That's pretty standard now. HN is worse than reddit these days, it is amazing.

Re: Would You Bet $100M on Your Pet Programming Language? (2007)

#70

Earlier quoted context omitted.

>I'm a fan of NodeJS, but I would never use it to try to solve a computation heavy problem, it's good at IO multiplexing No it isn't. It is very bad at it. It just uses the most primitive event loop and foists all the complexity of that onto you as the developer using it.

Could you provide an example? I'm using node and are pretty satisfied with the performance I have.

An example of what? Performance is not the issue. The issue is your code is complex, hard to understand, and harder still to debug. It is one thing to force people to deal with an event loop and associated callbacks directly in C, you're expecting low level if you are using C. But for a high level language there's simply no excuse to be exposing low level details as the sole interface. Even go, which takes a very "boring and ordinary" approach to everything, does better than this.
Post reply on HN