Hacker News new | past | comments | ask | show | jobs | submit login

I'll be very sad if this goes the way of Perl 6

It won't. It's an explicit requirement that it will not. Or even a Python 3. I had a slide saying as such in an earlier presentation:

https://docs.google.com/presentation/d/1DmyTABhGLvN0m2uHktvk... (slide 140)

Ian had a good talk & doc about this too recently:



How can you have an "explicit requirement" not to end up like Perl 6? Nobody planned to "end up like Perl 6", it's just something that happens when your new, backwards-incompatible version of the language doesn't catch on.

Also, sounds like Go 2 is going to make backwards-incompatible language changes. How is that different from Python 3, or even Perl 6?

Perl 6 decided from the beginning to break away from Perl 5 and not care about backwards compat. That was their choice. We don't make the same choice.

But Go 2 is also introducing backwards incompatible changes, no?

See the doc I linked above: https://github.com/golang/proposal/blob/master/design/28221-...

Probably not. We can add things and we can opt-in remove things (e.g. user says they want v1.14 of language gets them new language features and removes some language features), but we can't change the semantics of existing programs. That is, if a program compiles with two different language versions, that program should mean the same in both versions.

Perl6 is amazing! Yes it took a while. Yes it doesn't have the same recognition as perl 5. Yes it's crazy. But it's crazy in fun sort of way.

So are chicken scheme and GNU Forth. The problem is that the Perl ecosystem and community are a shadow of what they used to be in the heydays of Perl 5. I used to write a lot of Perl but I wouldn't really recommend it to anybody these days, be it version 5 or 6.

"Shadow of what they used to be" is a nice gig if you can get it when the "used to" part was basically the scripting language.

Perl is still in top 20 programming language lists. That's arguably "below the fold" of search results, but hey, so are Lua and Haskell.

The Perl Community... I don't know exactly what you mean. I might believe that size in terms of active work on a growing number of modules has dropped; but I don't believe the quality of participation has. Even though I haven't written a line of production Perl in well over a decade I still like checking in every so often to see what they're talking about.

And for those for whom all you know about Perl 6 is its delayed arrival and related woes, I can guarantee there's more interesting things to be seen.

At least Perl 6 is DOA and there's little confusion about it. The fiasco that was Python 3 was much worse for how drawn out it was.

By the time the confusion about Perl 6 being DOA subsided (which still hasn't happened for some enthusiasts) Perl 5 was seriously damaged and it never recovered since.

Python 3 took a lot of time to take over but it seems that they're finally leaving Python 2 behind and the language is still extremely popular.

Honestly that would be great if it took the momentum out of Go and killed the language.

I loathe working in Go.

Why? It seems like a language that has a more or less stated purpose that it is fit for.

If it's used somewhere where other qualities are more important, well, that's not the language's fault.

Then don't, but actively wanting to see something gone that other enjoy is beyond tasteless.

I would love to completely avoid it, and I do when I can, but it has started to creep into every job out there now and especially in areas I spend a lot of time. So just avoiding it is not possible.

I maintain it has been shoved down the industries throat for no good reason other than Google. It does nothing better than any of the existing mainstream languages and in many cases is a large step backwards.

So no, I will not stop railing on Go and my hope it goes away sooner rather than later. Nor will I stop railing on how I think macOS is a cancer in the Unix ecosystem and also needs to die, how JavaScript deserves to be relegated to the trash heap, how Android has fucked the Java-ecosystem, and how Chrome has ruined the internet.

I don't like Go either, but I'm making my entire product on it. The reason is that I need multiple services, with a small memory foot print, which compiles to binary, all of which runs for web with either HTML or REST. As far as I can see there is no alternative. Java, which I've used for 15 years, requires a JVM, the currenct Alpine Docker for Java only go to 8, and require too much memory. Dlang looks interesting, but I can't find any modern resources on how to program it. The book I have says I have to pick between two competing collection libraries that are not interchangeable. C++ is not a good choice for what I'm doing. For the same reasons C# and Erlang/Elixer are out. As a result it does this better than mainstream languages.

In those 15 years never learned about Java AOT compilers to native code?

I never fully trusted it. Relatively recent posts show that the GraalVM crashes. While it would be nice to use something like this, I have to go to war with the army I have. That means using the Go troops. Perhaps the Java regiment will be useful in the future, but right now it's still learning to navigate the new terrain of native execution.

I wanted something that stayed close to the main community. I've never heard of people having much success with Maven.


GCJ was abandoned. Is there an AOT Java compiler that isn't severely proprietary and more expensive than a stack of laptops?

Just because the majority of them are commercial doesn't change the fact that they exist.

They are more expensive than a stack of laptops, because FOSS made the business of selling software tooling only worthwhile when targeting enterprise customers.

Those enterprise customers have developers using these compilers almost since Java exists.

> Just because the majority of them are commercial doesn't change the fact that they exist.

No, but it does explain why Java is not a worthwhile option for OP.

Moving goal posts? The OP asserted they did not exist.

That's fair. Implicit in my comment are all free programming languages. Right now I'm cost sensitive.

> It does nothing better than any of the existing mainstream languages...

Why say this? Even if you don't like Go it's objectively false. What languages are you comparing it to, Java? C++?

What would you say Go does objectively better?

I think you might say threading. Maybe? The JVM can be tuned to get similar performance. Where it fails to get similar threading performance, it has better tuning in general.

Simplicity of the language? Maybe? It's simple, but I think it's too simple. One of my issues with Go is that it's hard to tell what implements what. VSC support is a little hit or miss. The fact that I have to use an IDE, or extension pack in VIM/Emacs, to figure this out is terrible. I like that in C++, Java, Python, C#, and Typescript I can clearly see which things a current struct implements. It makes code navigation easier. The lack of generics makes certain natural, and I mean natural as in how the majority of other languages do things, solutions to problems hard. Do you want a set, i.e. a unique collection of things? Use a map, but keep in mind that equality is at the whole struct level so one field being off and you have logical duplicates. You can't make structs immutable.

Community lead structural design? Most Go apps appear to be transaction scripts where the database connection is created at the handler and explicitly passed down or perhaps buried in a Context. This makes testing hard. You have to mock/stub the DB interface to test business logical. If I want to introduce interfaces that wrap the DB away, I'm told by the community that I'm "overthinking things" or I'm not a true gopher.

Produces a binary? I agree.

Java and Python. It's two closest peers.

Go does not compete with C or C++ in my mind because of GC.

The ONLY thing it does better is packaging because of its standalone native binaries. But most folks using Go are writing software for servers and those are predominantly Linux x86_64... so ¯\_(ツ)_/¯

> Java and Python. It's two closest peers.

See, I don't particularly enjoy Go, but that's because of its weak type system, which Python is no better at. Still, I understand that a lot of people enjoy Python, so good that it exists.

Java is too verbose. I'd had understood if you have said Kotlin, but Java is not that much better, (yes, it has generics, but I myself prefer the way they're implemented in Rust/Swift).

I feel like your examples are not much better than Go and in some ways may be worse, (concurrency?). If you have said Rust, Swift, Scala, Kotlin...I still wouldn't want Go to die, but at least could get behind the argument.

I like Kotlin and I write a lot of Kotlin for personal stuff, but I think it is a niche language in the backend/server space and hardly qualifies as mainstream outside Android.

Python with PEP484 is pleasant.

The concurrency story in Java is great already and it is going to improve once Project Loom is integrated.

I fail to see how Java is significantly more verbose than Go. At least not the core libraries. The ecosystem is a mess but getting better. Java 11 with `var` for local variable inference is pretty much on par with Go in terms of verbosity.

Rust brings a lot of new things to the table but its main competitor IMO is C and C++. I've done very little Rust but what I have seen I like (though there are some things I dislike too... like lack of keyword args... a minor nit I suppose).

Scala is a shit show to maintain with some teams.

> Python with PEP484 is pleasant.

Not yet, I use types as an important form of documentation, so the vast majority of the library ecosystem would need to adopt optional types before I'd consider it so.

> Java 11

Not may people actually write Java 11 at work, most are stuck with 8, or even 6. Java 11 is basically even less mainstream than Kotlin right now, as not even Android supports it.

> is pretty much on par with Go in terms of verbosity

Yeah, but on par is not good enough, it has to be significantly better for your argument to work. Yet I don't see you calling for the eradication of Java. Also, gofmt makes it significantly easier to get familiar with a foreign Go codebase. Not a thing in the Java world. And not having to suffer the JVM startup time + having static binaries is indeed a real win for some.

> Scala is a shit show to maintain with some teams.

Yeah, it's a kitchen sink. Kotlin I like a lot better in this regard. But then everything can be a shit show with some teams.

P.S. Rust is getting rather good for writing web servers and with things like rocket.rs & aync/await, I think it'll be a real contender.

> significantly better for your argument to work.

No you misinterpreted my point. It has to be significantly better than what already exists at the time of creation. Java was this to C++ in the 90s and early 2000s. Go is not that language.

Go can serve as a sort of Java to people who don't want the JVM. There's no rule that says only one language is allowed in a particular space. Go has several strong points and several weaknesses, which are to be addressed in Go 2.

Java didn't have lambdas until 8 and now it does. Its generics implementation is not what I'd like to see. Still, it certainly has its place.

Go has been used to implement widely used technologies like Docker & k8, so it seems to have found its justification for existing as well.

Nobody is forcing you to use Go. If you loathe it so much then for goodness sake quit your job and do something you do find challenging or enjoyable!

Applications are open for YC Summer 2019

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