Hacker News new | past | comments | ask | show | jobs | submit | dondraper36's comments login

I think that the first edition is mostly as relevant now as it was 7 years ago, but it's really great that this terrific book gets updated.

The expected release date is December 25


To expand on this, the link is to a raw EAP and expected release date is December 2025 not Christmas this year.


No, it's not the case and this terminology shouldn't be used as it's confusing and unhelpful.

There are reference types in Go even though this is also not a super popular term. They still follow the pass-by-value semantics, it's just that a pointer is copied. A map is effectively a pointer to hmap data structure.

In the early days of Go, there was an explicit pointer, but then it was changed.

Slices are a 3-word structure internally that includes a pointer to a backing array and this is why it's also a "reference type".

That said, everything is still passed by value and there are no references in Go.


You are splitting hair, Maps are effectively references.

That's like saying C++ doesn't have references since it's just a pointer being copied around


No, there is a real difference, this is not splitting hairs.

Go is always pass-by-value, even for maps [0]:

  x := map[int]int{1: 2}
  foo(x)
  fmt.Printf("%+v", x) //prints map[1:2]

  func foo(a map[int]int) {
    a = map[int]int{3: 4}
  }
In contrast, C++ references have different semantics [1]:

  std::map<int, int> x {{1, 2}};
  foo(x);
  std::print("{%d:%d}", x.begin()->first, x.begin()->second);
  //prints {3:4}

  void foo(std::map<int, int>& a) {
    a = std::map<int, int> {{3, 4}}; 
  } 
[0] https://go.dev/play/p/6a6Mz9KdFUh

[1] https://onlinegdb.com/j0U2NYbjL


foo is receiving a mutable reference and it can't modify the map without those changes leaking out permanently to the caller: https://go.dev/play/p/DXchC5Hq8o8. Passing maps by value would have prevented this by copying the contents.

It's a quirk of C++ that reference args can't be replaced but pointer args can.


The point is that the local variable referencing the map is a different entity than the map itself. Foo gets a copy of that local variable, and the copy references the same map object.

And the fact that C++ references can be used for assignment is essentially their whole point, not "a quirk".


rsc, thank you very much for all the hard work on the language that brought me into software engineering.

Despite playing around with several programming languages, Go still feels like home.

The development experience is terrific and I really appreciate how unapologetically simple and responsible the language and its creators have been.

Good luck and all the best in all your endeavours!


> rsc, thank you very much for all the hard work on the language that brought me into software engineering.

You're quite welcome, and thank you for this comment. I never expected when we started that Go would have such a positive impact on people's lives, bringing new people into programming and software engineering. That's definitely the impact I'm most proud of.


Thank you guys from another fan! Go literally saved my career as a software dev: got burned out around 2014, tried Go as therapy and have been a happy gopher ever since :)


Thank You rsc. This is sad because Go is one of the few language that is good and conservative instead of hype and feature creep. And that is primarily because you say No to a lot of things.

I do wonder, if you could re-do Go or another programming language again. What feature / changes would you add or take out.


I've been programming for 20 years and Go has proven to have more gravity than any other language I've used. When I just need to get something done, it's what I reach for. Thank you for your part in building such a useful tool.


Thanks for helping the OEIS site stay alive. I was absolutely delighted by it the first time I visited it, decades ago. Equally delighted when I visited recently and saw some “Russ Cox” contributed.


Same sentiment as the above poster. I’ve been working with Go since 2014, after using many languages before, and none match the ease and efficiency of development for my work. Thank you so much!


Thank you very much rsc! Golang not only helps me feed my family but also I created many friendships from using it :)


The book is really cool, but somewhat surprisingly it doesn't even mention NAT.


Co-author of the book here. Thanks for the comment. I agree, it does seem surprising to miss NAT. I opened an issue (which we will address at some point): https://github.com/SystemsApproach/book/issues/75




But ARP and NAT are not the same


the textbook is better, I think that might mention it but I don't recall


That echoes my experience as well. Also, I have noticed that at least for me Tinder has been very strange in that it keeps showing the same profiles every day, most of which are fake anyway.

It became so absurd that even IRL it's much easier to meet someone and start a conversation than on the app that was literally created to simplify that.


Operating Systems: Three Easy Pieces is very good


I think I have a somewhat similar case. Whenever there's an important or interesting task at work, it's literally impossible for me to distract and stop before it's done. I can skip my dinner and sleep because my mind is fully focused on the task. Because of that, I can also do a lot.

On the other hand, I cannot watch movies or read books because my mind wanders every second and it's really hard to concentrate.

I also suffer a lot from frequent anxiety.

Anyway, amphetamines are not allowed where I live


Martin Kleppman, best known as the author of the fantastic book Designing Data Intensive Applications, talks about modern data systems, his current work on collaborative software and, most interestingly, the second edition of DDIA.

He mentions that in the new edition, there will be more information and focus on cloud services, and some "dead" technologies like Hadoop MapReduce will be omitted.

In general, however, Martin is happy that most of the book is still fundamental knowledge and ages pretty well.

A bit not as well known is the fact that Martin is doing research in collaborative, so-called "local first" software (think, CRDT) where local devices play the central role.

In general, I think Martin Kleppman is a terrific writer and teacher.


DDIA = Designing Data Intensive Applications

This book has already become legendary but a bit less known is the set of lectures from Martin Kleppman on distributed systems.

Apart from the great lecture notes, there are also videos:

https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_H...

The course is pretty concise but Martin is a great teacher and the quality is superb as is the book itself.


It's really impressive what a team of one experienced developer managed to deliver.


A few days ago I asked about resources on being pragmatic in terms of architecture. This seems to be a perfect example :)

Kudos to the author


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

Search: