Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

It's official: Go sucks, ABSTRACT BULLSHITE FTW

Name: Anonymous 2014-06-29 18:17

Name: Anonymous 2014-07-03 17:00

>>80
kill yourself you stupid nigger

Name: Anonymous 2014-07-03 22:51

>>79
Lisp is special language on a class of its own. I'd class it as a multi-paradigm language foremost. With Lisp macros, you can write a Lisp language that is imperative style or functional style.

Name: Anonymous 2014-07-03 23:25

>>82
It's like you think Lisp is the only language with useful macros.

Name: Anonymous 2014-07-04 0:39

>>83
That is correct.

Name: Anonymous 2014-07-04 0:39

>>83
I've only heard of perl being close and that it was recent and experimental.

Name: Anonymous 2014-07-04 4:32

>>82
Except it doesn't have type classes.

Name: Anonymous 2014-07-04 5:57

>>86
It doesn't have static typing unless you want to consider things like Qi

Name: Anonymous 2014-07-04 11:25

Early in the rollout of Go I was told by someone that he could not imagine working in a language without generic types. As I have reported elsewhere, I found that an odd remark.

To be fair he was probably saying in his own way that he really liked what the STL does for him in C++. For the purpose of argument, though, let's take his claim at face value.

What it says is that he finds writing containers like lists of ints and maps of strings an unbearable burden. I find that an odd claim. I spend very little of my programming time struggling with those issues, even in languages without generic types.

But more important, what it says is that types are the way to lift that burden. Types. Not polymorphic functions or language primitives or helpers of other kinds, but types.

That's the detail that sticks with me.

Programmers who come to Go from C++ and Java miss the idea of programming with types, particularly inheritance and subclassing and all that. Perhaps I'm a philistine about types but I've never found that model particularly expressive.

My late friend Alain Fournier once told me that he considered the lowest form of academic work to be taxonomy. And you know what? Type hierarchies are just taxonomy. You need to decide what piece goes in what box, every type's parent, whether A inherits from B or B from A.  Is a sortable array an array that sorts or a sorter represented by an array? If you believe that types address all design issues you must make that decision.

Name: Anonymous 2014-07-04 14:24

>>84
It isn't though. Hell even Javscript has decent macros now.

Name: Anonymous 2014-07-04 14:33

>>89
Your standards for decent macros must be really low.

Name: Anonymous 2014-07-04 14:34

Hipster god ``tj holowaychuk'' leaving Node.js for Go:

https://medium.com/code-adventures/4ba9e7f3e52b

Read it and weep, JS fans.

Name: Anonymous 2014-07-04 14:54

>>90
Sweet.js does a good job in spite of the fact that JS isn't homoiconic.

Lisp's macros certainly aren't the best, given that many are equivalent and some are arguably better. Io doesn't even need to hook into the run time (no fucking with the reader) except when you define new operator symbols.

>>91
Nobody cares.

Name: Anonymous 2014-07-04 15:26

>>92
Nobody cares.
I do, don't talk if you don't know shit

Name: Anonymous 2014-07-04 16:56

Everything he says under "Embedded Programming" is shit and he is an uneducated pig

Name: Anonymous 2014-07-06 1:29

>>94
Non-deterministic GC overhead is the reason languages like Go can't be used for real time systems. There are languages that try to ensure that the GC's share of a program's total execution time is well bounded (e.g., Real Time Java) but as far as I know no one has tried to do this with Go. Go's creator and major promoter (Google) does not use Go in applications where this sort of thing is a concern.

I'll agree that some of >>1's comments on unsafe operations are off base. If you don't have a lot of code that does direct hardware interaction you can just write that stuff in C and hide it behind Go's C FFI. And if you do have a lot of code that bangs directly on the hardware, your program is probably poorly designed. Even things like C language kernel mode drivers typically don't touch the hardware in more than a handful of carefully selected locations in the source. Anything else is hell to debug and test.

Name: Anonymous 2014-07-06 1:49

>>95
You are right and I would not use go for something like this (I actually would not use it at all) but this does not change the fact that >>1's link says bs about this

Name: Anonymous 2014-07-06 11:41

>>94
His wording about heap allocation is pretty weird. What he's trying to say is you have to be able to avoid calling malloc() ever. I agree with that.

I'm not sure if he's written code for one of these microcontrollers. I haven't, but writing code for an ARM chip with a few kb of TCM worked out pretty similarly to what he describes. I had malloc() but it was used to request allocations in EWRAM by carrier pigeon so I could later deliver data there by horse-drawn carriage, or more likely, send carrier pigeons to the other components asking them to send carriages with data directly to EWRAM, or vice-versa.

>>95
What's off base about that? I mean sure you can write FFI, but nobody is going to accept that for a language deemed suitable for embedded programming. Except the gophers.

I don't know what's better, the sweet sweet tears of gopher's failure to write an OS kernel, or Rob Pike's admission that he should never have described Go as a systems language.

Name: Anonymous 2014-07-07 3:56

>>97
Did the gophers really try to right a kernel? Why would you try to write a scheduler and memory management system in a language that requires both as a runtime component already?

I always assume that Rob just forgot to include the words "Google backend" in front of "systems language". He seems to be vulnerable (as so many of us are!) to forgetting that his current set of applications isn't the whole world.

Name: Anonymous 2014-07-07 7:31

>>98
Well they had a modified go compiler or runtime or something and eventually gave up on account of "fuck this!" I think they had something bootable, but I doubt there was a scheduler or even a program loader. No idea really.

He seems to be vulnerable (as so many of us are!) to forgetting that his current set of applications isn't the whole world.

Like that time he said you don't need to care about endianness because only compiler writers like himself need to know about it. Show me a modern codec that doesn't care about endianness. "That's not a website" is not an answer, Rob.

Name: Anonymous 2014-07-07 13:00

>>98

I always assume that Rob just forgot to include the words "Google backend" in front of "systems language".
What else do you want? We are in the age of cloud computing.

Name: Anonymous 2014-07-07 15:07

Sage for offtopic, but -

>>99
Like that time he said you don't need to care about endianness because only compiler writers like himself need to know about it.

If you look at the example he gave, he was actually right. The point being made was that you oughtn't care what the endianness of a C type is, e.g.

uint8_t *lebuf;
uint32_t val;

val = 0
| (lebuf[0] << 0)
| (lebuf[1] << 8)
| (lebuf[2] << 16)
| (lebuf[3] << 24);


works no matter what the representation of uint32_t happens to be. You only need to care about what the representation of the bytestream is, which is fine. It may indeed generate faster code on some systems if you just do

val = *(uint32_t *) lebuf;

but this isn't universally true or portable in any way.

Show me a modern codec that doesn't care about endianness.

For multimedia, I'd hope that any endianess issues would be handled in the format demux code (which is probably IO bound anyway) rather than in the compressor / decompressor where speed is actually important.

Name: Anonymous 2014-07-07 15:55

>>99

Like that time he said you don't need to care about endianness because only compiler writers like himself need to know about it.
Yeah. Values with matching endianness can save you 4x time, so you can just pixel = pixels[XY]

Name: Anonymous 2014-07-07 16:26

>>101
That's the point, it applies to the example he gave and little else.

I'd hope that any endianess issues would be handled in the format demux code

Format demux code isn't supplied by the compiler either so the point stands.

Name: Anonymous 2014-07-08 0:16

>>103
The example he gave is applicable in many places, though. My point is that using the portable method in >>101 in mux code (probably) doesn't have a huge performance impact.

Name: Anonymous 2014-07-08 19:11

>>104
What's really going on is you're taking great care about endianness, presuming that it is in conflict, taking the time to realign your data and perform two extra copies to avoid screwing it up.

Suppose: the raw stream is in memory, the CPU clock rate is in the low/mid tens of MHz with memory clocked to match, memory is not byte-addressable, the cache is write-through and there are two three other processors talking to RAM. Demux will still be pretty quick in isolation, by using something like 4-8x as much memory bandwidth.

All that probably isn't the case, but you're probably not writing console games for portables. You're probaby not even writing code, but if you do, please don't let the likes of that narcisist tell you what you can and can not do.

Name: Anonymous 2014-07-08 20:55

You all have horrible reading comprehension.

What he's actually trying to say is that in the normal order of things, semantic clarity and portability should be more important to you than writing every single line in the highest-performance way imaginable. If you decode byte-ordered values in the way he suggests, your code will work on both big-endian and little-endian architectures. In certain cases you can speed up your code by explicitly writing it as a noop, but that's an optimization, meaning you shouldn't do it prematurely. Ideally your compiler (or at least your standard library) would be smart enough to do it for you.

Name: Anonymous 2014-07-08 21:39

>>106
I Go'd your dad in his burrow (as he is a gopher).

Name: Anonymous 2014-07-08 21:48

>>107
fuck u in tha peeahole

Name: Anonymous 2014-07-08 21:52

>>106
Who said anything about premature optimization? The technique measurably breaks down in the scenario described, and it doesn't survive after profiling. Someone has to understand endianness explicitly and write byte-order-aware code, because guess what: not all compilers are at the theoretical limit of smartness. The current common solution is to call an inlined function that is a no-op when its unneeded.

I didn't bring this up to debate the technique. It is fine most of the time. The point was Pike didn't make it in the spirit of kindness. He granted exception to exactly one class of person, one he finds himself in. He pulls this shit all the time. When people didn't flock to Go in big enough droves, he complained that the hangers-on were stupid/ignorant/whatever.

Name: Anonymous 2014-07-09 19:05

>>105,107
Suppose: the raw stream is in memory, the CPU clock rate is in the low/mid tens of MHz with memory clocked to match, memory is not byte-addressable, the cache is write-through and there are two three other processors talking to RAM. Demux will still be pretty quick in isolation, by using something like 4-8x as much memory bandwidth.

Contrived statistically insignificant examples much?

The lack of byte addressability in particular means a C compiler will have to go to great lengths to avoid generating horrible code. I have done work on crappy architectures like the ones you describe and, frankly, having to check the compiler's code generation all the time becomes such a chore you may as well just rewrite your code in assembly once you know its performance is going to be a problem. This is especially true if you plan on ever changing your compiler (it's not fun, seeing your code miss half its deadlines because somebody had to change a compiler flag).

The point was Pike didn't make it in the spirit of kindness. He granted exception to exactly one class of person, one he finds himself in. He pulls this shit all the time. When people didn't flock to Go in big enough droves, he complained that the hangers-on were stupid/ignorant/whatever.

If you want to say Rob Pike is a bit of a self-important whiner we are in complete agreement. He pulled the same crap when Plan 9 didn't catch on in industry (see: Utah2k, where he spends half of his presentation insinuating that people who still do real work developing for Unix systems are fools).

>>106
Precisely. And in cases where the compiler isn't smart enough, tweaking the source isn't always the best answer.

Name: Anonymous 2014-07-09 19:48

>>110
Plan 9 didn't catch on in industry
Why's that?

Name: Anonymous 2014-07-09 20:13

>>110
Contrived statistically insignificant examples much?

I was told only compiler writers have this problem so I gave an example of something I've personally encountered. You yourself claim to have experience with what I regard as the most oddball aspect: memory which is not byte-addressable. This kind of weird collections of constraints is all over the place in the embedded world.

where the compiler isn't smart enough, tweaking the source isn't always the best answer.

What is the best answer? To switch compilers, incurring the kind of nightmare problems you describe above? That's not always even an option. Besides, if you're working with the same chip all the time, endian-awareness is not difficult. It's not like portability is a common concern in constrained systems. Usually the code is going to run on one device.

Name: Anonymous 2014-07-09 20:43

<vanila> hey
<simcity2000> vanila: hi
<vanila> what about a module system with SML style functors? wouldn't that make go cooler
<simcity2000> vanila: no
<taruti> actually doing generics with SML like module system would be kind of nifty :)
<vanila> simcity2000, why not?
<simcity2000> vanila: cool isn't the metric for defining how good a language is, but that aside I think you'd need a pretty different notion of types to make that sort of thing work in Go
<vanila> simcity2000, oh when I thought it through, I thought this would work without any changes to go - the reason I bring it up is because it solves the generics/polymorphism problem
<Tv`> vanila: nice troll
<vanila> Tv`, you've seen me here for weeks, you know I'm not trolling. What's are the bad vibes for?
<jmoiron> there've been a lot of trolls today
<Tv`> vanila: "generics" ... "thought it through" .. "without any changes to go"
<vanila> Tv`, simcity2000 said it would require changes to the type system - I was trying to say that it wouldn't. If this is a touchy/painful subject I'll talk about it with other people I know that are interested in go than you all
<Tv`> good luck on your chosen path
<simcity2000> vanila: it's an interesting idea if you're going from the generics angle
<taruti> vanila: what issues do you think there are with type system semantics with SML style modules and Go?
<taruti> *simcity2000
<vanila> taruti, You cannot create a homogenous linked list along the lines of http://golang.org/pkg/container/list/ - you can create a hetrogenous list this way. If you had SML style modules you could get the best of both worlds
<taruti> vanila: yes, I know...
<Tv`> e-dard: "solution", right
<vanila> taruti, That was in answer to the question you asked me
<taruti> vanila: no.
* bfrog (~tburdick@unaffiliated/submersive) has joined
<vanila> why are you all being so rude to me and acting so hurt?
<taruti> vanila: I was trying to ask simcity2000 what issues they think there would be fitting them together from a type system soundness perspective.
<simcity2000> taruti: I was actually thinking about Haskell-style functors, where you have a functor typeclass that relies on generic types
<taruti> simcity2000: Haskell type classes are very different from SML modules.
<simcity2000> apparently I don't know SML-style functors.
* nemothekid has quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
* scottferg (~scottferg@c-98-226-208-95.hsd1.il.comcast.net) has joined
<simcity2000> taruti: that's what I just picked up
<vanila> yeah I don't think you guys have understood what I'm suggesting, that would explain Tv` who is normally intelligent calling me a troll
Tv`!*@* added to ignore list.
<simcity2000> vanila: feel free to elaborate, I don't have much to do atm
<vanila> simcity2000: Well it's just a small change to make modules parametrized, then you could do generic containers in a type-safe way
* skitoo has quit (Quit: Leaving...)
<simcity2000> taruti: are SML functors just a $something that takes in structures with a given signature and produces new structures?
<e-dard> Tv` I think you misunderstood the issue. I'm doing that already. The issue is packages test binaries get run in parallel by default (if you have a multi-core cpu)

Name: Anonymous 2014-07-09 20:45

<vanila> hey
<simcity2000> vanila: hi
<vanila> what about a module system with SML style functors? wouldn't that make go cooler
<simcity2000> vanila: no
<taruti> actually doing generics with SML like module system would be kind of nifty :)
<vanila> simcity2000, why not?
<simcity2000> vanila: cool isn't the metric for defining how good a language is, but that aside I think you'd need a pretty different notion of types to make that sort of thing work in Go
<vanila> simcity2000, oh when I thought it through, I thought this would work without any changes to go - the reason I bring it up is because it solves the generics/polymorphism problem
<Tv`> vanila: nice troll
<vanila> Tv`, you've seen me here for weeks, you know I'm not trolling. What's are the bad vibes for?
<jmoiron> there've been a lot of trolls today
<Tv`> vanila: "generics" ... "thought it through" .. "without any changes to go"
<vanila> Tv`, simcity2000 said it would require changes to the type system - I was trying to say that it wouldn't. If this is a touchy/painful subject I'll talk about it with other people I know that are interested in go than you all
<Tv`> good luck on your chosen path
<simcity2000> vanila: it's an interesting idea if you're going from the generics angle
<taruti> vanila: what issues do you think there are with type system semantics with SML style modules and Go?
<taruti> *simcity2000
<vanila> taruti, You cannot create a homogenous linked list along the lines of http://golang.org/pkg/container/list/ - you can create a hetrogenous list this way. If you had SML style modules you could get the best of both worlds
<taruti> vanila: yes, I know...
<Tv`> e-dard: "solution", right
<vanila> taruti, That was in answer to the question you asked me
<taruti> vanila: no.
* bfrog (~tburdick@unaffiliated/submersive) has joined
<vanila> why are you all being so rude to me and acting so hurt?
<taruti> vanila: I was trying to ask simcity2000 what issues they think there would be fitting them together from a type system soundness perspective.
<simcity2000> taruti: I was actually thinking about Haskell-style functors, where you have a functor typeclass that relies on generic types
<taruti> simcity2000: Haskell type classes are very different from SML modules.
<simcity2000> apparently I don't know SML-style functors.
* nemothekid has quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
* scottferg (~scottferg@c-98-226-208-95.hsd1.il.comcast.net) has joined
<simcity2000> taruti: that's what I just picked up
<vanila> yeah I don't think you guys have understood what I'm suggesting, that would explain Tv` who is normally intelligent calling me a troll
Tv`!*@* added to ignore list.
<simcity2000> vanila: feel free to elaborate, I don't have much to do atm
<vanila> simcity2000: Well it's just a small change to make modules parametrized, then you could do generic containers in a type-safe way
* skitoo has quit (Quit: Leaving...)
<simcity2000> taruti: are SML functors just a $something that takes in structures with a given signature and produces new structures?
<e-dard> Tv` I think you misunderstood the issue. I'm doing that already. The issue is packages test binaries get run in parallel by default (if you have a multi-core cpu)

Name: Anonymous 2014-07-09 21:00

>>113,114
<vanila> yeah I don't think you guys have understood what I'm suggesting, that would explain Tv` who is normally intelligent calling me a troll
Tv`!*@* added to ignore list.
Hello, vanila.

Name: Anonymous 2014-07-09 21:03

>>113,114
There was no need to split this into two posts. The post size limit on here is ridiculously high.

Name: >>116 2014-07-09 21:04

Oh wait, it was a double post. Never mind.

Name: Anonymous 2014-07-09 21:08

What IRC channel is this from? http://pastebin.com/LDC8Js9G
Who created that pastebin and why? Is this some sort of imageboard thing?

Name: Anonymous 2014-07-09 21:13

Is this some sort of imageboard thing?
Yes

Name: Anonymous 2014-07-09 23:37

>>116,117
There was no need to split this into two posts. The post size limit on here is ridiculously high.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List