Over the years, there has been a gradual shift from standalone programs running on a host (mainframe, PC, tablet) to programs which have at least some network component. Often programs will interact with the 'cloud', which usually means that they will interact with some service running on some computer somewhere.
If you are a developer, you are increasingly required to write either the client side, the service side or both. You need to pay attention to the overall architecture of the system, to ensure that it is robust, secure, doesn't consume excessive bandwidth, is responsive, and when it crashes doesn't do too much damage.
But besides all of those, when it gets down to the nitty-gritty, you need to write your programs in some programming language. Which one? Often there are organisational constraints ("we only use language X here"), programmer knowledge ("but I only know how to program in Y") and probably many other issues. But just suppose you had the choice - then what guides you?
There are many lists of "popular" programming languages, such as Triobe . I have programmed in many of them (about 30, I think) but of course not all of them. For some of them my knowledge is deep, for many is shallow. But enough to have formed opinions about many of them.
Whenever I set out to learn a new language, like many programmers I have a 'standard' problem. For many years, this was to build a wine-cellar program. I never finished any of them, but that wasn't the point. More recently, I have gravitated to more and more network programming. At Monash University I taught a course in network programming and at the time the preferred language was Java. So I used that. Later, when I wanted to learn Go, I rewrote those notes using Go. But in the meantime I have used other languages, and there are others I want to learn.
But I've missed out some major languages:
main()- yeah, right!). Since I only program for Linux systems, I can maintain the moral indignation without any penalties :-).
So what is behind the choice of languages I have made? Firstly, they are languages I have used or would possibly like to use in future. They are all relatively platform independent and fairly high level. Some are interpreted, some compiled, and some compiled to intermediate code and then interpreted. That isn't a particular issue to me. In more detail,
node.jsallowed standalone applications. node.js has long been one of the languages I should learn, but I see that Deno is being proposed as a replacement
The structure of this book is as follows: first there is a general section laying out whatever theory or common practice is needed. It is then followed by sections for each langauage. Where possible, I have adopted the same sub-structure for each language, so that there are comparable programs for each one. Then a summary, sometimes.
Copyright © Jan Newmarch, email@example.com
Based on a work at https://jan.newmarch.name/NetworkProgramming/ .