What is this site?
Welcome to Sonata!
Hello! This website is still a work in progress, but I’m going to be working on this as much as I can, thanks for stopping by!
This site is a collection of resources for myself and others who are looking to learn the following programming languages:
- Python
- JavaScript (Optionally TypeScript)
- Java
- C#
- Go
- Kotlin
This site acts as a documentation of my learning journey and a resource for others who are looking to learn some of the same languages. There is, however, a focus on Java and C# as these are the languages I prefer to use. As someone who is more keen on looking into patterns for languages, I’ll be making a lot of references to design patterns that fall in these categories:
- Creational
- Structural
- Behavioral
Alongside this, Sonata primary objective is to be a resource for learning and understanding, but I wont be repeating the same information for every language like variables, loops, conditionals, etc. These are the same across the roster of languages I’m documenting and their only difference is syntactic sugar. I’ll be focusing on the differences in the languages and how they can be used to solve problems in different ways, and ill assume that you have a basic understanding of how to learn a programming language.
Why Sonata?
Sonata (/səˈnɑːtə/; Italian: [soˈnaːta], pl. sonate; from Latin and Italian: sonare [archaic Italian; replaced in the modern language by suonare], “to sound”).
Sonata is derived from the Italian word “sonare” which means “to sound”. The name is a metaphor for the sound of music, there really wasn’t deep meaning behind the name other than the fact that it didn’t sound too bad. I’m a programmer, one of the hardest things to do as a programmer is naming things. One can assume this website as an orchestra of programming languages, but with some correlation between one another.
“There are only two hard things in computer science: cache invalidation and naming things.” - Phil Karlton
How Everything is Organized
Before heading into each section, I would like to mention that languages will change from time to time, employing a variety of new techniques and functionality in this never lasting battle of language supremacy. I’ll try to keep the documentation up to date, since this will be a resource for myself and others, but sometimes I might miss a few important topics for a specific language. If you find something that is missing, please let me know and I’ll add it to the documentation.
There will be a page only for understanding the basic syntax of any programming language and the fundamentals that are common across all languages. This includes the following:
The site is organized into the following sections (referencing from my obsidian vault):
Among some other sections that will have a variety of topics being covered. Most of the topics will be linked to official documentation, so I’m not going to be reinventing the wheel here, just providing a resource more manageable for myself and others. Adding journals would be missing the point of this site, but I hope to make a better site that includes personal blogs later.
For a quick-start, visit the JVM Based Languages document to get started with Java, or the C# Essentials document to get started with C#.
NOTE: If there are some errors in the documentation, please let me know about it since I am also learning and I make mistakes. Ill go back and correct them as soon as possible.