New Book Review: "Julia for Beginners"
New book review for Tanmay Teaches Julia for Beginners: A Springboard to Machine Learning for All Ages, by Tanmay Bakshi, McGraw-Hill, 2019, reposted here:
Copy provided by Amazon.
As the author mentions in the preface to this book, the content he provides here is intended to work towards his goal of reaching out to and helping at least 100 thousand aspiring coders and to help them innovate along their journey of learning to code. He furthers his explanation by writing that this book is special because it specifically covers the Julia programming language, which was designed to solve a problem few languages today have the ability to solve: dealing with huge amounts of unstructured data. As he explains, the vast majority of programming languages were developed with goals not fundamentally aligned with ML (machine learning). In contrast, he argues that Julia is the first programming language to mesh together a number of individual technologies and techniques supporting the future of computing together in a performant, elegant, and easy way.
After walking the reader through an introduction and the steps associated with setting up a local Julia development environment, he presents various Julia constructs such as variables and input, conditions and iterations, arrays and dictionaries, functions, handling errors and exceptions, and reading and writing files, followed by a machine learning discussion and suggest next steps and reader resources to continue their programming journey. Most readers will likely be able to work through this book over a weekend, as it is less than 200 pages in length and provides all code inline with the text. Interestingly, the author does not provide the code in a downloadable repository, but the amount of code is minimal and I would expect young developers to likely learn more typing from scratch.
The author gently walks the reader through fundamental concepts at the outset, introducing simple code in the first chapter through a single statement program and use of the REPL (read-evaluate-print loop) interface provided by Julia much like other programming languages. Over the course of the first few chapters, the author introduces programs consisting of several statements, with chapter 4 ("Arrays and Dictionaries") introducing the first multi-page Julia program, and chapter 5 ("Functions") containing the longest multi-page Julia program, with its code snippets discussed along the way. And chapter 7 ("Package Management") presents introductions of several more advanced topics such as installing and usage of packages, multiprocessing, and calling code from other languages.
For someone completely new to programming, I think the author did a decent job introducing the Julia programming language. However, in my view this book exhibits at least two key issues. The first is that the book subtitle "a springboard to machine learning for all ages" seems to imply that readers will be taught ML. Unfortunately, ML is not introduced until chapter 9 ("How Machines Learn"), essentially the last chapter because chapter 10 ("Next Steps and Resources") is only 2 pages long and doesn't teach anything. As someone with a longtime software development career who has read many technology texts, I'm fairly certain this aspect of the book will disappoint many because it borderline misrepresents what this book is about.
Additionally, I think that many readers will feel this chapter is too disjointed from the rest of the book. The author starts by discussing evolutionary theory, which is largely irrelevant, and then states multiple times while choppily walking through several snippets of code that readers should not need to worry about whether they understand any of it yet. However, the author really never ends up providing any substantial explanations before the chapter ends, and then the book ends. If readers wish to learn Julia as their first programming language, this is the book that will help enable them to do so. However, an ML text it is not, and because this book provides such a gentle introduction, readers will quickly need to consult other resources.
The second key issue is the fact that new programmers are being targeted to learn the Julia programming language. In my view, Julia is absolutely not appropriate for new programmers because its adoption rate in industry is extremely low, and because it is largely not a general purpose programming language. I first learned of Julia back in 2014 when attending an annual software developer conference in St Louis, Missouri called "Strange Loop", and its adoption rate has arguably barely budged in the 6 years since. Sure its adoption rate has increased, but the adoption rate of the Python programming language has also increased, albeit in contrast with Julia exponentially increased, and is widely considered a friendly language that most new to development will benefit from picking up. Python is also considered a general purpose language that will help readers springboard into a wide variety of practical applications, including ML.