PostHole
Compose Login
You are browsing us.zone2 in read-only mode. Log in to participate.
rss-bridge 2024-03-20T18:44:00+00:00

SE Radio 608: Lane Wagner on Revisiting the Go Language

Lane Wagner of Boot.dev speaks with host Philip Winston about Go, the programming language that's popular for web, cloud, devops, networking, and other types of development. In addition to discussing existing features such as structs, interfaces, concurrency, and error handling, Lane and Philip take a deep look at generics, a recent addition to the language. They also explore the developer experience with Go.


Lane Wagner of Boot.dev speaks with host Philip Winston about Go, the programming language that’s popular for web, cloud, devops, networking, and other types of development. In addition to discussing existing features such as structs, interfaces, concurrency, and error handling, Lane and Philip take a deep look at generics, a recent addition to the language. They also explore the developer experience with Go.



Show Notes

  • SE Radio 202: Andrew Gerrand on Go

Lane Wagner

Learning Go


Transcript

Transcript brought to you by IEEE Software magazine and IEEE Computer Society. This transcript was automatically generated. To suggest improvements in the text, please contact [email protected] and include the episode number.

Philip Winston 00:00:18 Welcome to Software Engineering Radio, this is Philip Winston. My guest today is Lane Wagner. Lane has been a backend developer and data engineer for the last eight years in fields such as hardware sensors, data pipeline, social media analysis and educational software. Lane founded Boot.dev in 2020. Boot.dev is a learning platform that uses game design principles to teach courses in Go, Python, JavaScript, and various backend technologies. Lane has a bachelor’s degree in computer science. Lane, is there anything you’d like to add to your background?

Lane Wagner 00:00:53 No, that’s pretty good. I don’t know how much we’re going to go into past work history, but I spent a lot of time in Python and Go and yeah, struck out on Boot.dev just a few years ago. I only went full time on the project end of 2022, but like you mentioned it was kind of a side project since early 2020.

Philip Winston 00:01:12 Okay, great. Today we’re going to revisit the Go programming language. The last full episode we did on Go was Episode 202, Andrew Jaren. That was back in 2014, but I believe much of it is still true today. But let’s start at the top. What is the Go programming language?

Lane Wagner 00:01:30 Yeah, that’s a great question. So Rob Pike is one of the original authors of the Go programming language, Ken Thompson, these guys really came from a background in C, right? And the goal with Go as far as I understand it, of course I’m not one of the authors, but the goal with Go really was to build kind of a newer, more modern version of C and really stick to a lot of the kind of Unix philosophies that went into kind of vanilla C. And so the way I think about Go especially in 2023, what 12 years or so after the initial release, I think of Go as kind of modern C for the web.

Philip Winston 00:02:10 Okay, well Go is a compiled language like C++ and Rust. What are the implications of that in terms of the development process or deployment or just what is it to work in a compiled language?

Lane Wagner 00:02:23 Yeah. So if you’re coming from JavaScript or from Python, working with a compiled language can feel a lot different for several reasons. I mean first of all there’s a build step that you might not be used to, granted these days with a lot of JavaScript developers using TypeScript. There might be a little bit more of a familiarity with the whole idea of building something before you run it. But what I found to be the bigger difference, and to be fair this isn’t quite the same thing but static versus dynamic typing, right? Almost all compiled languages at least that I’m aware of have static typing Go. And that can be quite the mental shift when you’re moving into a language Go. Now you mentioned that Go is it’s compiled, it’s fast like C or C++, but there are a few unique properties and I don’t want to jump the gun on questions you’re going to ask, but one thing that’s pretty interesting about Go is that it is compiled, it is very fast, but I would not place it in terms of raw performance on the same level as C, C++ and Rust.

Philip Winston 00:03:25 So you’re talking about execution speed, but the compilation speed is also a factor. So it is a compiled language, but what I read was one of the developers of the language was tired of waiting on 45-minute compiled times. I’m guessing that was C++, but they didn’t mention what language. So how did they try to keep the compilation speed under control, and do you feel that was successful?

Lane Wagner 00:03:52 So definitely successful. I’ve worked on some pretty large Go projects. I don’t think I’ve ever had compile times more than just a few seconds, which is absolutely fantastic for a developer productivity, right? It’s kind of that old argument that was used a lot for dynamic languages, which is, we don’t have to wait 30 minutes for a compilation, but it also is a great money saving thing. if you’re using GitHub actions or some sort of CICD pipeline to deploy your code, fast compilation is a huge selling point. I guess part of it is cost but also it is, developer productivity if you’re shipping to production four or five times a day, it’s really nice when your build and deploy pipeline just takes a minute or two instead of upwards of an hour before you get feedback that the build failed, for example.

Lane Wagner 00:04:42 So definitely successful on that front and it is important to keep in mind the difference between, I want to be super clear about this, the difference between compile speed and execution speed. So Go does execute fast. When you write a program in Go, that program will be fast when you compare it to languages Java, JavaScript, Python. Like I said before, I wouldn’t place it into the same category of execution speed as C++, C and Rust. But as you mentioned, one of the trade-offs there is Go compiles extremely quickly. So, a similarly sized program in Rust or C is going to take much. I want to say honestly there’s at least an order of magnitude difference in compile speeds.

Philip Winston 00:05:26 This might be harder to quantify but I think of Go as a smaller language than some of the other ones you mentioned. Do you think that contributes to the compilation speed or how are they getting this speed? Because it’s definitely sounds significantly faster.

[...]


Original source

Reply