This week’s system design refresher:
Cloud-native vs. Cloud computing (Youtube video)
Visualizing a SQL query
Evolution of programming languages
Linux Storage Stack Diagram
Job openings
The most useful engineering conversation you’ll hear each week (Sponsored)
Dev Interrupted is the No. 1 source for what the smartest minds in development are thinking about, investing in & working on.
Hear career-changing wisdom by leaders from companies like Slack, Stripe, and Shopify delivered to your inbox every week. These are insights you can’t Google.
Cloud-native vs. Cloud computing
Visualizing a SQL query
SQL statements are executed by the database system in several steps, including:
Parsing the SQL statement and checking its validity
Transforming the SQL into an internal representation, such as relational algebra
Optimizing the internal representation and creating an execution plan that utilizes index information
Executing the plan and returning the results
The execution of SQL is highly complex and involves many considerations, such as:
The use of indexes and caches
The order of table joins
Concurrency control
Transaction management
Over to you: what is your favorite SQL statement?
Evolution of programming languages
C, C++, Java, Javascript, Typescript, Golang, Rust…
How do programming languages evolve over the past 70 years?
The diagram below shows a brief history of programming languages.
Perforated cards were the first generation of programming languages. Assembly languages, which are machine-oriented, are the second generation of programming language. Third-generation languages, which are human-oriented, have been around since 1957.
Early languages like Fortran and LISP proposed garbage collection, recursion, exceptions. These features still exist in modern programming languages.
In 1972, two influential languages were born: Smalltalk and C. Smalltalk greatly influenced scripting languages and client-side languages. C language was developed for unix programming.
In the 1980s, object-oriented languages became popular because of its advantage in graphic user interfaces. Object-C and C++ are two famous ones.
In the 1990s, the PCs became cheaper. The programming languages at this stage emphasized on security and simplicity. Python was born in this decade. It was easy to learn and extend and it quickly gained popularity. In 1995, Java, Javascript, PHP and Ruby were born.
In 2000, C# was released by Microsoft. Although it was bundled with .NET framework, this language carried a lot of advanced features.
A number of languages were developed in the 2010s to improve C++ or Java. In the C++ family, we have D, Rust, Zig and most recently Carbon. In the Java family, we have Golang and Kotlin. The use of Flutter made Dart popular, and Typescript was developed to be fully compatible with Javascript. Also, Apple finally released Swift to replace Object-C.
Over to you: What’s your favorite language and why? Will AI change the way we use programming languages?
The Linux Storage Stack Diagram shows the layout of the Linux storage stack.
Diagram by Thomas-Krenn.
💼 Join the ByteByteGo Talent Collective
If you’re looking for a new gig, join the collective for customized job offerings from selected companies. Public or anonymous options are available. Leave anytime.
If you’re hiring, join the ByteByteGo Talent Collective to start getting bi-monthly drops of world-class hand-curated engineers who are open to new opportunities.
Featured job openings
X1 Card: Software Engineer, Back End (United States)
X1 Card: Head of Infrastructure and Risk (United States)
Having this diagram makes it so easy to understand
The name of the Go programming language is just Go (and not Golang). Also I think the roots of Go are C, Pascal, Oberon, Smalltalk, Newsqueak, Modula, etc. I think neither C# nor Java had substantial impact on the design of Go.