Live data from Hacker News

Ask HN: Why isn't Plan9 popular?

news.ycombinator.com

61–70 of 83 posts

Re: Ask HN: Why isn't Plan9 popular?

#61
post #47

Earlier quoted context omitted.

>The last time I checked concurrency isn't possible with standard C++ If you don't know, then I can't tell you. People have been doing threading, re-entrant code, libevent/libev in C and C++ for decades. (cf. DragonflyBSD) I didn't say it was trivial, just that it's an industry standard for when you need to get things done (TM).

It appears you are being intentionally obtuse, so I repeat: Neither the current C and C++ language standards provide any support whatsoever for concurrent programming . Therefore you cannot do concurrent programming in either of those languages without resorting to using operating system specific or 3rd party libraries. DragonflyBSD, a project that was only started in 2003, has obviously not been around for "decades"…

>Neither the current C and C++ language standards provide any support whatsoever for concurrent programming.

They're not supposed to. They're systems programming languages. When you're writing a kernel or embedded software, having the language mandate some kind of concurrency model at the standards level is nonsensical.

I wasn't linking decades to DragonflyBSD, I was saying that the techniques and methods have been known and used for decades.

The original point, restated here for clarity is this.

Go was supposed to be a new-age systems programming language. Its current design (mandated concurrency model and global GC) preclude that from ever happening without fundamental changes.

Rust has a better chance of becoming the next systems programming language.

I don't know what your niche or corner of the realm of software is, but I get the feeling you're commenting on a field you have no substantial experience in.

It's evident to anybody with any real experience or wisdom concerning software that having choices like concurrency made for you at the language-level narrow the scope of usefulness for that particular language and pretty much precludes it from being a top-grade choice for embedded/systems development.

Example:

Were it not for the glut of hardware performance and memory capacity improvements in smartphones, Dalvik/java would've been impractical at best on Android. It's still a vastly inferior experience compared to the iPhone, which is obj-c with optional drop-down to C/C++.

And don't mention the NDK for Android, it's a bad joke.

Bootstrapping a runtime for a language that depends on a particular concurrency model irrespective of the problem at hand is stupid beyond my faculty for describing with words.

tl;dr good luck using Go for hard real-time systems.

Why do you think C++ achieved popularity so quickly? It was pliable to the demands of the problem being solved just like C at the expense of complexity.

Re: Ask HN: Why isn't Plan9 popular?

#62
post #47

Earlier quoted context omitted.

It appears you are being intentionally obtuse, so I repeat: Neither the current C and C++ language standards provide any support whatsoever for concurrent programming . Therefore you cannot do concurrent programming in either of those languages without resorting to using operating system specific or 3rd party libraries. DragonflyBSD, a project that was only started in 2003, has obviously not been around for "decades"…

>Neither the current C and C++ language standards provide any support whatsoever for concurrent programming. They're not supposed to. They're systems programming languages. When you're writing a kernel or embedded software, having the language mandate some kind of concurrency model at the standards level is nonsensical. I wasn't linking decades to DragonflyBSD, I was saying that the techniques and methods have been k…

Fair enough, if you define a "systems programming language" as one in which it's appropriate to write a real-time operating system kernel, Go is very likely not the language for you given its built-in garbage collection. Its suitability as a language for OS kernels has been discussed in this thread, with comments from the Go authors: http://groups.google.com/group/golang-nuts/browse_thread/thr...

However, if you define a systems programming language more broadly to include statically typed languages that compile to machine code with good support for a theoretically and practically sound concurrency model based on CSP, Go might very well be something worth investigating.

And I wouldn't say that C++ achieved popularity "quickly" inasmuch as according to Stroupstrup he started working on it in 1979 (http://www2.research.att.com/~bs/bs_faq.html#invention) but it wasn't in widespread use until the early/mid-1990's and wasn't standardized until 1998. By that timetable I'd say that Go has a few years yet before it can fairly be judged a success or a failure.

Re: Ask HN: Why isn't Plan9 popular?

#63
I think it is significant that both Unix itself and Linux were category killers. Unix succeeded because people kept going "Wow, there's nothing like this!" and writing in to get it, copying it passing it on to other people. When Linux took off, there was no Free-ly available Unix-like OS (at that time). Linux quickly gathered a critical mass of users who saw it as something like the answer to their prayers. I guess the strengths of Plan9 were not such as to create a new category for itself, and its flaws made it an unsuccessful competitor against existing Unix-like systems.

Re: Ask HN: Why isn't Plan9 popular?

#64
post #62

Earlier quoted context omitted.

>Neither the current C and C++ language standards provide any support whatsoever for concurrent programming. They're not supposed to. They're systems programming languages. When you're writing a kernel or embedded software, having the language mandate some kind of concurrency model at the standards level is nonsensical. I wasn't linking decades to DragonflyBSD, I was saying that the techniques and methods have been k…

Fair enough, if you define a "systems programming language" as one in which it's appropriate to write a real-time operating system kernel, Go is very likely not the language for you given its built-in garbage collection. Its suitability as a language for OS kernels has been discussed in this thread, with comments from the Go authors: http://groups.google.com/group/golang-nuts/browse_thread/thr... However, if you defi…

>By that timetable I'd say that Go has a few years yet before it can fairly be judged a success or a failure.

I don't care, that's not what I'm talking about.

I was talking about the use-case uncanny valley it sits in.

If you have a point unrelated to anything I said, use your blog. I've had enough grief from hackerne.ws over the past week that I have zero patience for someone using me as some kind of pontification aid.

I know what's involved in making a kernel, and what's typical for systems programming and embedded development today. I don't give a good goddamn what the devs of Go have to say about it.

Use case inappropriate. That's the last time I'm repeating myself.

Re: Ask HN: Why isn't Plan9 popular?

#65

Earlier quoted context omitted.

Speaking of Plan 9 and Go, I have to ask the same question: why isn't Go more popular?

Not substantially performant for use in systems programming. Not substantially powerful or enough libraries for use in web dev (yet, this could change). Global GC (inappropriate for the niche it's ostensibly targeting). Overly opinionated about concurrency. (C++ and Java are the gold-standard for library-centric concurrency methodologies) Go sits in an uncanny valley.

It's hard to make any judgement of a language that's barely a year old, especially about performance and libraries. All industry standard languages are at least a decade old.

> C++ and Java are the gold-standard for library-centric concurrency methodologies.

It's a standard, but it is not by any means the gold standard. Just about anything would be a better concurrency model. Also see "Threads Cannot be Implemented as a Library": http://www.hpl.hp.com/techreports/2004/HPL-2004-209.html

Re: Ask HN: Why isn't Plan9 popular?

#66

Earlier quoted context omitted.

Not substantially performant for use in systems programming. Not substantially powerful or enough libraries for use in web dev (yet, this could change). Global GC (inappropriate for the niche it's ostensibly targeting). Overly opinionated about concurrency. (C++ and Java are the gold-standard for library-centric concurrency methodologies) Go sits in an uncanny valley.

It's hard to make any judgement of a language that's barely a year old, especially about performance and libraries. All industry standard languages are at least a decade old. > C++ and Java are the gold-standard for library-centric concurrency methodologies. It's a standard, but it is not by any means the gold standard. Just about anything would be a better concurrency model. Also see "Threads Cannot be Implemented a…

>It's hard to make any judgement of a language that's barely a year old, especially about performance and libraries. All industry standard languages are at least a decade old.

It's a product of their design decisions and has nothing at all to do with implementation or time.

Look at Rust if you want to see a realistic up-and-coming systems programming language.

>It's a standard, but it is not by any means the gold standard. Just about anything would be a better concurrency model.

Right, well get back to me when you write that multi-threaded web server in Python.

Re: Ask HN: Why isn't Plan9 popular?

#67
post #30

Earlier quoted context omitted.

> C++ and Java are the gold-standard for library-centric concurrency methodologies The last time I checked concurrency isn't possible with standard C++. And multi-threaded programming in Java has been called many things, but "gold-standard" isn't one of them.

You can use Java's concurrency features to implement better concurrency features (as opposed to the language just giving you better concurrency features from the outset), which is presumably what was meant by "less opinionated" or "library-centric". You can have asynchronous or synchronous message passing or STM on mutable references to immutable data or really anything built on top of Java, but an opinionated langua…

I think you're the only one to get my point so far.

A lot of the best libraries and concurrency approaches I've implemented in Clojure so far have been imports from Java. (NIO2 being one example)

Re: Ask HN: Why isn't Plan9 popular?

#68
post #27

Earlier quoted context omitted.

Go is in a "public beta" status, i.e. what you see right now is its development, not its refinement. It basically hasn't reached a 1.0 release version yet. Participants of the mailing list are very early adopters who write some libraries for it. It's still likely enough that important parts of the language spec will change in non-compatible ways, and especially the standard library still isn't too stable (e.g. the ht…

What about D?

That's a good question. D has been around for quite some time, has some well-known names (Bright, Alexandrescu), but has yet to break big. Compared to it, Go, a much more recent development, tends to do quite well (just my estimates, PL mindshare is a bit hard to measure).

I think it's mostly because of some internal and positioning issues. I haven't been following it recently, but I remember some problems with different standard libraries, D 1 vs D 2, and three compilers that each had issues. Maybe that's resolved, but it certainly didn't make things look too good.

Also, it seems to be more a successor to C++, which makes some people a bit distrustful. Yes, it's much cleaner, but also quite a bit more complex than C, and not a total programming environment as Java or C#. So it mainly gets its users from the C++ camp, which isn't the mightiest army nowadays (And whose Windows battalions aren't supported very well by D).

Go is in the news a lot because of its Google and Unix (Pike, Thompson) heritage, because it's a bit simpler (more C crossed with Python than ++C++), and because it has some prominent concurrency support, which is close to the current hype (every emerging language has to prove its mettle there).

By the way, don't read this as a value judgment. It's just a personal assessment why I think that Go is currently a bit more popular and will continue to be so.

Re: Ask HN: Why isn't Plan9 popular?

#69
I used plan 9 for a while, and I really like it; but when I was looking to use a network filesystem I tried a 9p remote mount between two Linux servers over the internet. I was disappointed to find that it was much much slower and generally performed worse than sshfs, perhaps due to lack of caching and readahead. Perhaps there is some way to use 9fs more effectively with a caching / readahead layer, I guess it would be simple enough to implement such an intermediate server in plan 9.

Re: Ask HN: Why isn't Plan9 popular?

#70
post #15

(In my opinion) Here's a bunch of reasons why Plan9 isn't popular, and then a reason or two why something like it likely will be before too long: The first obvious answer (also mentioned in other comments) is because "Systems Software Research is Irrelevant". See Rob Pike's paper by that name: http://herpolhode.com/rob/utah2000.pdf To the reasons Pike offers there, I'll add: 1. The companies that owned the software h…

I'd put more money on enough people finally paying enough attention to DragonFlyBSD for it to really gain traction. Check out the blurb on their main page ( http://www.dragonflybsd.org/ ): The DragonFly project's ultimate goal is to provide native clustering support in the kernel. This involves the creation of a sophisticated cache management framework for filesystem namespaces, file spaces, and VM spaces, which allo…

> which allows heavily interactive programs to run across multiple machines with cache coherency fully guaranteed in all respects.

Cache coherency gets increasingly expensive with scale. At some point, the costs exceed the benefits.

The location of point depends on lots of things, but if you're on the other side....

Also, there are many kinds of coherency.

Post reply on HN