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

Pages: 1-4041-8081-120121-

It's official: Go sucks, ABSTRACT BULLSHITE FTW

Name: Anonymous 2014-06-29 18:17

Name: Anonymous 2014-06-29 18:23

yager
DC

Name: Anonymous 2014-06-29 18:55

Rust and Haskell ... I consider to be good language
"good" for what?

Name: Anonymous 2014-06-29 19:37

Rust
Lame

Haskell
Bloat, lame
Just because it is the only popular ``pure'' functional programming language does not mean it is good

Name: Anonymous 2014-06-29 20:31

>>4
lame
Like wiggity wack yo dude! dont be dissin my shizzle yo man!

Name: Anonymous 2014-06-30 10:19

The main problem of Go is statical typing, which have long been proven to be pseudo-scientific crackpottery, like strong AI.

Name: Anonymous 2014-06-30 11:33

>>4
The last I heard from SPJ was that Haskell is (he said this playfully) "useless" in the sense that it's academic and not suited for a lot industry of areas. It's still useful, the Real World Haskell movement is a good thing, especially because people are learning to adapt or create other useful programming languages to allow better correctness guarantees.

The true utility of Haskell is to show how useful certain concepts are. People have gone beyond that to make the guarantees stronger. In truth Haskell is a focal point for a certain body of knowledge. It's not bad, it's not like we'd be better off not knowing what Haskell and related languages have to say. You can write monads in nearly any language.

>>6
Go? I think u mena satirical typing.

Name: Anonymous 2014-06-30 12:54

Ruby a shit

Name: Anonymous 2014-06-30 12:58

>>8

Shit doesn't make you rich (unless you sell fertilizers). But Ruby does:
https://www.kickstarter.com/projects/lindaliukas/hello-ruby

Name: Anonymous 2014-06-30 13:31

>>7
Haskell is useless

http://www.youtube.com/watch?v=iSmkqocn0oQ

Are you referring to this? I feel like you heard the title of the video somewhere and didn't actually watch it.

Name: Anonymous 2014-06-30 13:47

>>10
Yeah, that's the one.

Name: Anonymous 2014-06-30 13:47

>>7
In that case I agree, I am learning myself haskell anyway

Name: Anonymous 2014-06-30 15:35

>>12
Yes. Haskell is good to know, and often good to use.

Writing code in something like Haskell isn't necessarily harder, in fact I think it's easier if you approach it tabula rasa. It's often seen as hard for the experienced programmers because it's not closely related to anything in their language tree. You can't reach for the same tools, but you do get other ones, about half of which are there to prove the other half actually works and are being used correctly.

Right now, Rust is trying hard not to become Haskell (OCaml really) for systems programming. It's a shame in a sense, but they're really terrified of looking threatening to C++ programmers. That's valid in a marketing sense, but as someone who fights viciously for the future he wants to live in I would rather be a little more daring in hopes that C++ programmers will acclimate via network effect if nothing else. I don't want it to become Haskell, but a zero-overhead and more practical OCaml with idioms intelligible to C++ programmers where applicable sounds about right.

Name: Anonymous 2014-06-30 15:38

>>13
You can't reach for the same tools
Actually, you can, with IORefs, mutable arrays, C FFI and unsafePerformIO.

Name: Anonymous 2014-06-30 15:39

>>13

Haskell is seen as hard, because it takes more lines of code to do useful things, like stateful code. Moreover, it is impossible to write efficient code in Haskell.

Name: Anonymous 2014-06-30 15:47

The Haskell hype is similar to the OO hype of some years ago. If you don't know it, you can't criticize it. If you DID know it, you wouldn't criticize it. If you DO criticize it, well clearly you just don't "get it". And of course there's a special "vocabulary" you have to learn to use appropriately -- call a 'method' a 'procedure' and you've grouped yourself with the incompetent wanna-be's.

Name: Anonymous 2014-06-30 15:48

>>15
You're wrong on both counts.
1) Haskell is seen as hard because of its heady libraries and loads of compiler extensions. The core of Haskell is really simple, though: lambda calculus and pattern matching.

2) It is totally possible to write efficient code in Haskell, as has been demonstrated lots of times. It's just hard to reason about performance with all that laziness and compiler aggression and nonstandard runtime workings going on. But if you do devote some time to optimization, you'll get efficient, Java or C efficient (which is good enough in the vast majority of cases).

Name: Anonymous 2014-06-30 15:58

>>14
Sure, you can write Fortran in anything but I mean in the context of writing idiomatic code. I don't think it would be all that hard to learn how to write that kind of code in Haskell if that's all you wanted to do.

>>15
I assume you're trolling because the efficiency thing is obvious bait, and Haskell sources aren't all that long unless you're comparing to something like J.

However the "useful things, like stateful code" quip is exactly what I'm talking about. Most of your code doesn't need to be stateful, even in languages that aren't seen as primarily functional. Fluent-style code in any language has a very low density of stateful operations. When you stop thinking about using interim side-effects as a means to get interim results and start focusing on expressing transformations between function input and eventual output, functional languages try to give you all the tools you need to do so painlessly. It is a different way of thinking, and that can be hard to grasp at first.

Name: Anonymous 2014-06-30 15:59

>>16
But it's true: the vast majority of criticism is that "ZOMG it haz no effects", "whatcha mean I can't mutate me some shit in a dope for loop, shizzle my nizzle?" and "it's academia and academia is useless, all useful things are created by braindeads like teh Guido".

Good Haskell criticism is very rare. I'd suggest you look at the Harper-blog
http://existentialtype.wordpress.com/2012/12/03/exceptions-are-shared-secrets/

and at the intro to Lippmeier's thesis
http://benl.ouroborus.net/papers/thesis/lippmeier-impure-world.pdf

Name: Anonymous 2014-06-30 16:03

>>13
Design decisions in Rust are driven primarily by the needs of Servo, which as you can imagine is a huge project with lots of people working on it. Hypothetical popularity isn't a big deal to them. They mostly want their program to work. So, many of the changes have been a direct result of trying certain features and observing whether they improved the development process of Servo, or made it worse. Very empirical.

Name: Anonymous 2014-06-30 16:09

MOZILLA QUALITY, SERVO CERTIFIED™

Name: Anonymous 2014-06-30 16:37

>>20
That's true in a lot of ways, but not entirely.

The developers have periodically expressed fear of becoming too much like Haskell or looking too much like OCaml. Familiarity to C++ programmers is often cited as motivation when modifying syntax or arguing against features. This has nothing to do with Servo, you can't measure something you don't have.

A good example is there was a pyramid of deeply nested matches in Servo (or maybe it was rustc) and separately IoResult handling was also really icky. Instead of solving the problems generally (do-notation and HKTs were popular requests) the half-measure of writing specific workarounds for each was taken. They were both very ugly, just less ugly than not using them.

Name: Anonymous 2014-06-30 17:12

>>22
HKTs?

Name: Anonymous 2014-06-30 17:16

Higher-kinded types.

Name: Anonymous 2014-06-30 19:13

systems programming
There still hasn't been a language that makes C89 not worth using for systems programming and just about everything else.

Name: Anonymous 2014-06-30 19:42

>>25
I think C99 is a significant improvement, and C11 would be great if MS would shut up about C++ and implement it already. Who am I kidding? no VS user is going to try to compile my code.

If Rust had the libraries I'd bring it up. Right now it's pretty much only good for writing compilers and video games.

Name: Anonymous 2014-06-30 19:50

>>25
BLISS was pretty nice and it had way better macros than C.

Name: Anonymous 2014-06-30 20:04

>>26
C11 is a abomination but it has some useful stuff
Same goes for C99
I use both

Name: Anonymous 2014-07-01 9:14

>>26
Rust

systems programming

Functional programmers need not apply.

Name: Anonymous 2014-07-01 9:48

>>26
For videogames you need libraries and fast languages, something that rust has not

For compilers Professors still prefer SML and OCaml while the real world uses C and C++. Rust is not going to change that

Finaly: Rust sucks and I fucking hate you gsyifzsuigYUIutfyuihjk

Name: Anonymous 2014-07-01 9:54

>>29

Functional programmers need not apply.
you can simplify this to "unemployed need not apply", because I've never seen an employed functional programmer.

Name: Anonymous 2014-07-01 10:08

>>31
So you only hire those who are already employed?

Name: Anonymous 2014-07-01 10:08

Why functional programmers always get fired?

Remember, there are potential negative consequences of retaining a poor performer after you've exhausted all the options available:
- You'll annoy other members of your team, who may have to work harder to "carry" the poor performer.
- You may promote a belief in others that you're prepared to accept mediocrity – or, worse, underperformance.
- You may waste precious time and resources that could be better used elsewhere.
- You may signal that some employees deserve preferential treatment.
- You may undermine the whole idea of finding the best person for the job.

Name: Anonymous 2014-07-01 10:40

>>30
You mean like libraries for windowing, 2D and 3D graphics, font raster, asset management, linear algebra, physics, scripting, controller input and HMD support with speed in the ballpark of C? [ Check. ]

Name: Anonymous 2014-07-01 11:43

>>34
Almost

Name: Anonymous 2014-07-01 13:10

>>35
Almost what, exactly?

Name: Anonymous 2014-07-01 16:46

Haskell is useless and hard because I hate learning and reading.

Name: Anonymous 2014-07-01 16:55

>>37

then how come you know English?

Name: Anonymous 2014-07-01 18:24

>>30
And the real world are retards who don't know what they are doing and cause people to die unlike the academics/professionals.

Name: Anonymous 2014-07-01 18:30

I thought functional programming went against the grain against ``enterprise'' but you guys also seem to make fun of that. Retarded noobs, functional is the future (quantum) and too hard for you low IQ mongrels. In the future there will be no such thing like libraries or 3rd party support, just the pure technical performance of the language (speed, efficiency, elegance, performance, expressiveness, safety, it must be at the top in all good qualities) will be the judge and ensurer of its popularity and use.

Name: Anonymous 2014-07-01 18:32

>>40
The problem is that modern functional programming languages are going the enterprise reddit way, see haskal

Name: Anonymous 2014-07-01 18:35

>>41
And if they didn't, you would say that the problem is that no one uses them. Fuck you. There's nothing bad in popularity per se, provided that popularity it based on merit and not on aggressive marketing.

Name: Anonymous 2014-07-01 18:46

>>40
Wrong! Worse is better.

Name: Anonymous 2014-07-01 18:51

>>42
I said nothing about popularity, you headless creature

Name: Anonymous 2014-07-01 19:04

>>41
All popular languages do that. It's a symptom of the fact that the enterprise segment not just the largest segment, it's the overwhelming majority. Even open source is full of enterprise nowadays.

Put another way, people are currently being paid to write code in all of the languages listed in this thread. For each language, someone was hired by some visible corporation within the past three months and someone will be hired within the next three. They're all enterprise.

Name: Anonymous 2014-07-01 19:25

>>40

In the future there will be no such thing like libraries or 3rd party support
that is one grim future

Name: Anonymous 2014-07-01 22:18

Name: Anonymous 2014-07-01 22:30

Alright guys, for school we have to make a portfoloi project showing off our coding abilities. I decided to kill two birds with one stone and create Mirage++. This one will be coded a lot better then the old version. Now that i have a year of college under my belt i actually know how to do things possibly. All networking is handled by Raknet a industry standard. The graphics are directx. All the editors are external so it wont slow the client down. This post is mainly just to manage my updates when i make them. Not a lot to look at at the moment.

I have only put 4 days of work into this so far as i just started. But in my final quarter i will be pouring my time into this. If i do not return home for the current 2 week break then i will be working on it a ton aswell.

Audio and Graphics:
I currently have a proffessional audio student creating custom free to use audio for the engine and the games created with it. I hope to get a graphics artist to do the same.

Map Editor:
I am currently using the OGMO map editor. It is open source and provides the tools i need. Once Eclipse++ is done i may make my own map editor. But this manages everything i need allowing me to spend more time on the actual engine. Tilesheets appear in a seperate window so you can dual monitor map.

Any sized maps. The map will start to scroll if it wont fit on the screen.
Giant maps! want 4000 tile maps? No problems.
Only loads the relevant tiles. Have a 10000 tileset but only use 100 on the map? Only 100 are loaded.
Maps are loaded Via XML so any map editor will work if a switch is needed.
Maps will then be converted to binary to reduce file size.

Name: Anonymous 2014-07-01 22:31

>>48

Main is as clean as it can be with a state manager that will manage the entire game. I am trying to keep the code as simple as i can so that everyone will understand it.

//====================================================================================================
// Includes
//====================================================================================================

#include <SGE.h>
#include "BaseState.h"
#include "GameStates.h"
#include "FrontEnd.h"
#include "GamePlay.h"
#include "Raknet.h"

using namespace SGE;

//====================================================================================================
// Globals
//====================================================================================================

bool gQuit = false;
BaseState* gCurrentState = NULL;
GameState::Type gNextState = GameState::FrontEnd;
SGE_Cursor gCursor;
Raknet gRaknet;

void SGE_Initialize()
{
gCursor.Load("cursor.png");
}

void SGE_Terminate()
{

}

bool SGE_Update(float deltaTime)
{
// Update Cursor Position
gCursor.Update(deltaTime);

// check if we need to change state
if (gNextState != GameState::Invalid)
{
if(gCurrentState != NULL)
{
gCurrentState->Unload();
delete gCurrentState;
}
//switch states
switch(gNextState)
{
case GameState::FrontEnd:
gCurrentState = new FrontEnd(gRaknet);
break;
case GameState::Gameplay:
gCurrentState = new GamePlay(gRaknet);
break;
}

// enter the new state
if(gCurrentState != NULL)
{
gCurrentState->Load();
}
}
// update current state
gNextState = static_cast<GameState::Type>(gCurrentState->Update(deltaTime));

if (gNextState == GameState::Quit)
{
gRaknet.Disconnect();
gQuit = true;
}

return gQuit;
}

void SGE_Render()
{
gCurrentState->Render();
gCursor.Render();
}


Well as i said not much to see yet. But stay tuned for updates and show your support to keep me motivated

Name: Anonymous 2014-07-01 22:46

>>49
you could just #include "void.h"

Name: Anonymous 2014-07-01 22:56

>>47
Now we'll spend most of our time waiting for the fucking compiler to complete. Everybody raves about how awesome dependent types will be but everybody seems to forget that type checking and type inference are a pain in the ass with that crap.

Name: Anonymous 2014-07-01 23:24

typechecking is NP-hard

Name: Anonymous 2014-07-02 5:25

>>52
Proving an invariant is undecidable via the halting problem. Typechecking a program with dependent types reduces to proving invariants.

Name: Anonymous 2014-07-02 6:10

>>53
So how's your bachelors in computer science from your no-name unicollege going, faggot?

Name: Anonymous 2014-07-02 8:11

>>54
I will not confirm or deny my having or not having a bachelors in computer science, but if I did have one, it wouldn't be going anywhere.

Name: Anonymous 2014-07-02 10:49

Typechecking a program with dependent types reduces to proving invariants.

In case anyone is falling for this, typechecking dependent types is just automated proof checking. >>53 is trying to tell you that it's the same as automated proving, which it isn't. Supplying the proofs is the programmer's responsibility.

Name: Anonymous 2014-07-02 11:04

>>53

If you are so smart, why are you so poor?

Name: Anonymous 2014-07-02 11:27

>>57
Select one:
1) Sure, he is smart but is he Abelson smart?
2) Sure, he is poor but is he Abelson poor?

Name: Anonymous 2014-07-02 16:55

>>38
Because English the best language in the world. In fact, I think everyone should program in it. Since that's not a reality, the most practical language is C.

All great programmers always program in C and that will always be the case. Real programmers shouldn't have to worry about any advancement from mathematics. That kind of stuff is impractical because computers and programming obviously have neither relations nor origin to such a discipline. And I do not care to learn or believe otherwise! Please continue to argue with me.

Name: Anonymous 2014-07-02 18:26

>>59
Wrong, Hangugmal is the best language. English is a terrible! mashup of a bunch of euroshit.

Name: Anonymous 2014-07-02 18:41

>>60
euroshit
Back to the jungle for you, feces-loving ape.

Name: Anonymous 2014-07-02 19:18

>>60

<丶`∀´>

Name: Anonymous 2014-07-02 19:43

The best language of all is loglan, no discuss.

Name: Anonymous 2014-07-02 19:54

>>60
I've never heard of this Hangugmal. And I won't look it up, which makes it already inferior to Haskell. This leaves English as the most superior language and C as the best programming language.

Name: Anonymous 2014-07-03 2:09

>>60
cheonsung samsung jeonyang hyun daenida kekekeke

Name: Anonymous 2014-07-03 10:20

>>13
Writing code in something like Haskell isn't necessarily harder, in fact I think it's easier if you approach it tabula rasa
Bullshit.
Lazy evaluation makes reasoning about performance really hard for no practical gains. I'd argue that learning Haskell has your first language is practically impossible.

Name: Anonymous 2014-07-03 11:14

>>64
This leaves English as the most superior language
Bullshit.
Homophones make reasoning about word selection really hard for no practical gains. I'd argue that learning English as your first language is practically impossible.

Name: Anonymous 2014-07-03 11:22

>>67
Totally the same thing.

Name: Anonymous 2014-07-03 11:25

>>68
What is the same thing as what? And do they speak English there?

Name: Anonymous 2014-07-03 11:32

>>69
Homophones and lazy evaluation.

Name: Gay phones 2014-07-03 11:55

Gay phones

Name: Anonymous 2014-07-03 12:02

English is a homophone=fag communication. It was created to allow international communication of fags.

Name: Anonymous 2014-07-03 12:03

>>66
The practical gain is that computation is deferred to when it's strictly needed and that the logic to achieve this behavior is trivial to write and that you can get powerful results from a tiny amount of logic. Yes, this level of abstraction makes it opaque to try and reason its logic for the sake of performance. I take opinion that the higher level abstract logic makes it easier for the compiler to apply higher levels of optimization to the abstract code. I think this is the difference between using a declarative language like Haskell where the compiler is supposed to be powerful and all knowing and using an imperative language like C where programmers are supposed to instruct the compiler because the compiler doesn't understand the programmer's high level intent.

Name: Anonymous 2014-07-03 12:59

>>67

I'm bored with this thread. These were my troll posts.
>>37
>>59
>>64
/poe's law

Anyone who posts similarly silly arguments and actually believe them are self-deluded and not worth your time. I applaud those who ignored these posts.

Name: Anonymous 2014-07-03 13:16

>>73
If you don't know when to schedule a computation, you've done your analysis wrong.

Name: Anonymous 2014-07-03 14:51

>>66
You can read about the advantages of laziness here:
http://augustss.blogspot.ru/2011/05/more-points-for-lazy-evaluation-in.html

The key advantage may be seen in this baby:
any :: (a -> Bool) -> [a] -> Bool
any p = or . map p


Here, lazy evaluation gives both performance advantages and stylistic advantages.

Name: Anonymous 2014-07-03 15:00

>>74
Optimize your quotes, failtroll.

Name: Anonymous 2014-07-03 15:06

>>74
Where the fun in ignoring troll poasts? That's the main reason I come here.

Name: Anonymous 2014-07-03 16:50

>>73
I think this is the difference between using a declarative language like Haskell where the compiler is supposed to be powerful and all knowing and using an imperative language like C where programmers are supposed to instruct the compiler because the compiler doesn't understand the programmer's high level intent.

And which is Lisp?

Name: Anonymous 2014-07-03 16:55

>>79
The stillborn useless one/

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.

Name: Anonymous 2014-07-10 0:13

Wow, #haskell really is a shithole huh.

Name: Anonymous 2014-07-10 1:33

>>110
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.

Sometimes it's better to just give up and write the assembly yourself. That at least protects you from awful breakage that can happen even when changing compilation options on the exact same compiler, or upgrading to a newer version of same. I'm not saying that assembly is always the best choice but if changing compilers is a more likely event than changing ISAs it has its benefits.

If the unthinkable happens and you do happen to switch to a different chip later, assembly also has the nice property of making it totally obvious what code was written with ISA specific assumptions in mind. If you have co-workers that apply guards like #if __LITTLE_ENDIAN__ to 100% of the code they write, I want to know what magical environment you work in because everyone I've ever known will fuck this up if you're aren't testing for bi-endianness.

Name: Anonymous 2014-07-10 1:36

>>122
>>110
Crap, I mena >>112.

Name: Anonymous 2014-07-10 2:57

Sometimes it's better to just give up and write the assembly yourself.

That's fine, but I'd consider that tweaking the source and then some. I'm not arguing against the practice. I mean the cases where you need to care about this stuff and the cases where you end up writing assembly have quite a lot of overlap.

If you have co-workers that apply guards like #if __LITTLE_ENDIAN__ to 100% of the code they write

No, that's a pipe-dream. The upside is you can put this into library code and fail code review if someone tries to write their own. Maybe it's already there, try man 3 endian. Note the functions are all either htofoo or footoh, so they are portable modulo availability.

Example third-party implementation: https://github.com/digidotcom/xbee_ansic_library/blob/master/include/xbee/byteorder.h (Note the no-ops when the host has the same byte order.)

Name: GNG is Not GNU 2015-09-11 23:26

>>94
Re: "Everything he says under 'Embedded Programming' is shit and he is an uneducated pig"

Hmm, actually it looks like Oberon might be a better choice for embedded programming, if only someone would download the Oberon sources and change all the CAPS LOCK keywords to something more sensible (pretty easy fix). Go Language is after all just a plagarized copy of Oberon (half serious - it is inspired by Oberon). But oberon allows you to use the Stack, which is great for embedded programming... Go language leaves you heaps of shits, but Oberon allows you to stack a deck of cards. The big problem with Oberon is CAPS LOCK IS UGLY and the reserved words could be more terse (PROCEDURE could be shortened to "PROC" or "pro". Oberon programmers are hypocrites when they use VAR, instead of VARIABLE. So if they use VAR, why not use PROC instead of PROCEDURE? Because they are hypocrites. So someone could download oberon and make it usable! Wirth will never be convinced since he's stuck in academic obscurity and does not seem to interact with any developers whatsoever on any mailing lists or usenet - out of site, out of mind.

Name: GO IS SHIT BABY GARBAGE 2015-09-11 23:54

GO IS SHIT BABY GARBAGE

Name: GO IS SHIT BABY GARBAGE 2015-09-11 23:55

GO IS SHIT BABY GARBAGE

Name: GNG is Not GNU 2015-09-11 23:57

There is also some cricism of Golang here:

http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-programmers/

Note that his criticism, could also be criticized too. Cricitism is not immune to criticism of criticism.

Name: Anonymous 2015-09-12 0:09

Name: GNG is Not GNU 2015-09-12 0:17

"Swift is a new programming language for iOS and OS X apps "

Locks you into buying only apple products - Apple is trying to control you - like in 1984 where people worship APPLE COMPUTER, remember? Or did they.

Name: Anonymous 2015-09-12 1:50

I've also included some comparisons to both Rust and Haskell (which I consider to be good languages)

Says it all really

Name: SWIFT IS SHIT BABY GARBAGE 2015-09-12 13:48

>>130
SWIFT IS SHIT BABY GARBAGE

Name: le /g/reentextman 2015-09-13 10:21

using a closed source language
Cuck

Name: Anonymous 2015-09-13 10:57

>>133
Languages can't be closed source. For the simple reason that they are not programs.

Name: Anonymous 2015-09-13 15:29

How much is Mozzarella paying this yager.io fella to shill for Rust.

Name: Anonymous 2015-09-14 5:06

>>110

Rob Pike in his pdf file says

"Linux may fall into the Macintosh trap: smug isolation leading
to (near) obsolescence."

iPad is obsolete. iPhone obsolete.

Name: Anonymous 2015-09-17 1:56

>>133,135
Back to /g/, mental midgets.

Name: Anonymous 2021-07-27 22:22

I believe in Go supremacy.

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