Live data from Hacker News

The perfect language and why Go still isn't it

snazz.xyz

21–30 of 139 posts

Re: The perfect language and why Go still isn't it

#21
post #9

Language can't be small, if it's universal enough. Otherwise you end up with trade-offs for its size, which limit scenarios where that language can be used. So there is no "perfect" language. All languages have some trade-offs. If you want small - you pay for it.

> Language can't be small, if it's universal enough

t, u := x | λx.t | (t u)

Small language (three production rules), definitely universal.

Of course the semantics is a lot more complicated than most people expect. But it IS syntactically very simple

Re: The perfect language and why Go still isn't it

#22

F# hits all his 'perfect language' points for me. It feels like a more concise, opinionated and beautiful refinement of C#.

I really like F#, but it has a few major pain points that hinder adoption: The first is that once a user reads over the various functional things like let statements, record types, union types...etc, you still don't really know how to code in F# unless you already have a .NET and in particular C# background. Nearly all the documentation and books (I have 3 of them) assume you're a C# dev making the switch. This is si…

You are not wrong. In fact I would argue it would be very hard to learn F# without knowing C# even if resources did not assume you did, since one of F#'s major strengths is the ability to use the entire .NET ecosystem just like Clojure as you said, and the .NET ecosystem is written for C# semantics (usable from F# but generally with some slight syntax switching).

On the tooling front, Microsoft include it as a prime language with C# and VB.NET in dotnet core, and ship F# tools with their latest IDEs, which I appreciate and is almost more than I would expect, since their flagship is C#. It would be nice if it was better, but that would require it to be a lot more popular which is fair enough.

Static binaries are something that would be real nice. I've done it with F# using CoreRT, but its certainly not as simple as Go.

Re: The perfect language and why Go still isn't it

#23
Wait... We must having different definition of perfect. I would say Go is a very good language, and probably be one of the best in terms of simple and practical design, fast execution, fast compilation etc.

The perfection, however, is not something Go never meant to be. The perfect language possibly support fully dependent type like Idris while maintains zero abstraction cost like Rust, having precise syntax rule like Lisp, and a powerful runtime like Erlang, and the list goes on.

The success of Go lies in it's trade-offs, the designers are opinionated, knowing well what they want and what they don't, and executes things well in the implementation.

Re: The perfect language and why Go still isn't it

#25
post #21
post #9

Language can't be small, if it's universal enough. Otherwise you end up with trade-offs for its size, which limit scenarios where that language can be used. So there is no "perfect" language. All languages have some trade-offs. If you want small - you pay for it.

> Language can't be small, if it's universal enough t, u := x | λx.t | (t u) Small language (three production rules), definitely universal. Of course the semantics is a lot more complicated than most people expect. But it IS syntactically very simple

Theoretical cases that are unusable in practice aren't interesting in the above context. We are talking about practical languages. It's not about Turing completeness.

Re: The perfect language and why Go still isn't it

#26
post #25
post #21

Earlier quoted context omitted.

> Language can't be small, if it's universal enough t, u := x | λx.t | (t u) Small language (three production rules), definitely universal. Of course the semantics is a lot more complicated than most people expect. But it IS syntactically very simple

Theoretical cases that are unusable in practice aren't interesting in the above context. We are talking about practical languages. It's not about Turing completeness.

s := a | (s s)

common lisp syntax. Even simpler, but that shifts much of abstraction capabilities to the operational semantics.

Re: The perfect language and why Go still isn't it

#27
post #18
post #6

Earlier quoted context omitted.

As much as I like Pascal, and I am a big fan since Turbo Pascal since version 4 for MS-DOS, using all of them until about Delphi 3, lack of some kind of automatic memory management is a killer for anyone that cares about code security. Delphi only supports it for COM and Objective-c/Swift interoperability, everything else is as manual as TP for MS-DOS, and I bet FP hasn't improved in that regard.

Ah, a young lad :) I started tinkering with Turbo Pascal 3 and even have some experience with Pascal on the Apple II. (Not because I am THAT old, but that were the only computers my school had at the end of the 80ies) The successors of Pascal are also highly interesting. I used Modula-2 quite a lot, but never got deep into Oberon. I do think one big advantage of Go is, that it so strongly draws on the Wirth languages…

Yeah, quite young indeed. :)

I was initially also drawn into Go, mainly due to its Oberon-2 influence as well. Even did a couple of contribution attempts during pre-v1 days , but they weren't that good anyway.

However back in the Oberon days, what I liked was the evolution that followed suit, Oberon-2, Component Pascal, Active Oberon and finally Zonnon.

As such, I never appreciated the minimalism discussions around Go and not having modern language features. For that we already have Wirth cutting down Oberon features in every Oberon-07 language specification document revision.

Still, I do look forward for some Go 2.0 roadmap items to actually land in Go, and advocate for its use in applications that would be otherwise written in C, if Go wasn't a thing.

And I also collect examples of actual systems work done in Go, regardless of it not being suitable in the opinions of anti-GC crowd.

Re: The perfect language and why Go still isn't it

#29
post #9

Language can't be small, if it's universal enough. Otherwise you end up with trade-offs for its size, which limit scenarios where that language can be used. So there is no "perfect" language. All languages have some trade-offs. If you want small - you pay for it.

I agree that every language has its trade-offs, but you can move lots of stuff into the standard library of the language.

Taken to the extreme, the result can be an extremely small language. If your language is expressive enough, the result can also look like it is a much larger language. For example, Forths implement if/else, for/do, while/do, repeat/until, switch/case in terms of some stack manipulation and ‘jump’. Similarly, Common Lisp builds its control structures, object oriented programming support, etc, out of a few primitives.

Re: The perfect language and why Go still isn't it

#30

Wait... We must having different definition of perfect. I would say Go is a very good language, and probably be one of the best in terms of simple and practical design, fast execution, fast compilation etc. The perfection, however, is not something Go never meant to be. The perfect language possibly support fully dependent type like Idris while maintains zero abstraction cost like Rust, having precise syntax rule lik…

pirlelang: perfect idris rust lisp erlang
Post reply on HN