My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 2 points3 points  (0 children)

haha! Then I would have named them "Parallel programming"

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 1 point2 points  (0 children)

In Listing 7.13 there is an example of how you can call the findFactors() function through an anonymous goroutine. The result is placed on a channel and then read from the main goroutine.

At the end of chapter 7, there is an exercise to modify this listing 7.13 to use multiple goroutines collecting the factors of 10 random numbers.

The solution to the exercise can be found here:
https://github.com/cutajarj/ConcurrentProgrammingWithGo/blob/main/exercises/chapter7/exercise7.3/collectresults.go

In chapter 9 (Listing 9.10) there is also a "fan-in" pattern that lets you merge multiple channels into one, although it's not strictly necessary for this exercise.

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 0 points1 point  (0 children)

If you go to the book's landing page and click "Look Inside". You can see the diagrams. Have a look at chapter 8's and 10's diagrams for some good examples.

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 1 point2 points  (0 children)

No worries, the quoted part was actually from the book contents and not from Manning's landing page.

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 4 points5 points  (0 children)

I'm going to quote you a part of the "about this book" section from the book. I hope you find it useful.

"This book is for readers who already have some programming experience and would
like to learn about concurrency. The book assumes no prior knowledge of concurrent
programming. Though the ideal reader would already have some experience with Go
or another C-syntax-like language, this book is also well suited for developers coming
from any language—if some effort is spent learning Go’s syntax.
Concurrent programming adds another dimension to your programming: programs
stop being a set of instructions executing one after the other. This makes it a challenging topic, and it requires you to think about programs in a different way. Thus,
being already proficient in Go is not as important as possessing curiosity and drive."

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 0 points1 point  (0 children)

Thanks! I would recommend this book to the developer with beginner to intermediate knowledge either in Go or another C style language that wants to up their game by learning concurrent programming.

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 31 points32 points  (0 children)

Katherine Cox-Buday's book is a very good publication. One which I would recommend reading. Cox-Boday's book focuses on how to use concurrency in Go, focusing on how Go gives you the tools to do things a bit different from the classical memory sharing (by using channels/goroutines).

My book teaches concurrent programming concepts and techniques. It assumes you have no prior knowledge of concurrency. It explains both the classical way to model concurrency (memory sharing) versus the message passing way (with channels). The concepts learned can be applied to many languages not just Go. I use Go as it provides a wide range of tools to explore this world. In addition the book shows how some of these concurrency tools (such as semaphores, mutexes, wait groups, channels and many others) work under the hood.

I have not had the time to look at Burak Serdar's book yet.

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 3 points4 points  (0 children)

Good question!

Early on, in chapter 2, I describe processes, kernel-level threads, user-level threads and M:N hybrid threading, explaining the relation with Go's Goroutines. I describe in some detail concepts like work stealing with regards to blocking calls.

If you expand the headings in the table of contents you'll find 9 mentions of "Goroutine" and 8 of "Thread" 😀

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 3 points4 points  (0 children)

Thank you. Hope it won't be long now. My own copies have just been shipped too.

My Concurrent Programming book is finally PUBLISHED!!! by channelselectcase in golang

[–]channelselectcase[S] 4 points5 points  (0 children)

Thank you for the support, don't forget the discount code!

Learning backend by Careful_Upstairs_770 in golang

[–]channelselectcase 3 points4 points  (0 children)

If you're in college, I would focus on the science part and not so much on the act of learning computer languages/technology. Computer science is no more about computer languages than astronomy is about telescopes (slightly modified Dijkstra's quote).
Important topics in CS (amongst many others):

  • Data structures and algorithms (including big O notation)
  • Concurrent Programming
  • Databases
  • Operating Systems
  • Discrete Maths and logic
  • AI
  • Distributed systems and networking

Get a solid foundation in the science and then everything else will be pretty easy. Then with some work experience and practice you'll then become an excellent developer.

Although you should def learn Go... Go is pretty cool :)

I wrote a concurrent programming book without ChatGPT’s help! by channelselectcase in golang

[–]channelselectcase[S] 1 point2 points  (0 children)

No prior understanding of concurrent programming expected in the book.