diff --git a/blog/2024-02-04-first-language.md b/blog/2024-02-04-first-language.md index 3fbf727..13a79f2 100644 --- a/blog/2024-02-04-first-language.md +++ b/blog/2024-02-04-first-language.md @@ -13,19 +13,20 @@ tags: hide_table_of_contents: false --- +Let's talk about the first language beginners come into contact with hands +on. + I recall my first-time experience with programming quite vividly and also at the time of writing this post I have been teaching _Foundations of Programming_ for 5 years already. -Let's talk about the first language beginners come into contact with hands -on[^1]. - :::caution Spoiler alert At one point or another, this post will turn into full-blown Python rant as it -is the most common choice for the first language. +is the most common choice for the first language and not very suitable in my +opinion. I'm also purposefully leaving out educational “languages” like [Scratch], [Baltík] or [Imagine]. @@ -40,20 +41,21 @@ I'll start with my own journey, so you can take in account any bias that I have. ::: -I will describe my journey by taking two _very_ different paths, self-study and -the high school experience. Self-study path begins just a year or two before the -high school and majority of the time they overlap which certainly creates -a unique experience. +I will describe it by taking two _very_ different paths, self-study and the high +school experience. Self-study path begins just a year or two before the high +school and majority of the time they overlap which certainly creates a unique +experience. ### Self-study My first time touching a proper programming language was around ‘11 and it was a VB.NET[^1]. If you have a look at this language, it is a rather verbose language. However if you understand English, it is very easy to read because of -the said verbosity. When you dig deeper, you may find some very weird stuff +said verbosity. When you dig deeper, you may find some very weird stuff going on, like indexing of arrays, or even allocating arrays that preallocates one more or one less[^2] element than the specified size. Syntax is also quite -unusual with apostrophes marking the comments. +unusual with apostrophes marking the comments. You could say each language has +its own peculiarities. Overall it's not that bad and the book I've had[^3] was rather nice. In retrospective I would say that VB.NET is very nice first language, because it's @@ -71,17 +73,17 @@ that consider C# the _Microsoft's Java_[^5], but you cannot hide the fact that in the recent releases there are features that are almost 1:1 taken from the C# and implemented in the Java. Most of them are _quality of life_ things that make the life of the developers less painful. All in all, there are still many things -that you need to workaround in Java by abusing interfaces and design patterns +that you need to work around in Java by abusing interfaces and design patterns and some of those things can be done in a very simple way in other languages[^6] -Around the time of attending the high school C appeared in my life… I think I've -seen C for the first time in the lectures from FIT CTU[^7] -After C we have a mayhem of anything and everything. +Around the time of attending the high school, C appeared in my life… I think +I've seen C for the first time in the lectures from FIT CTU[^7]. After C we have +a mayhem of anything and everything. Looking back I have to admit that I've managed to move from Java towards C# as the preferred language, though this has not been reflected in my professional experience (both working and teaching) and I haven't even touched the C# -recently apart from the LeetCode challenges. +recently apart from some LeetCode challenges. ### High school @@ -89,6 +91,20 @@ Pascal Python +## Common choices + +### Python + +### JavaScript + +### C or C++ + +### Pascal + +## What to look for + +## My picks + [scratch]: https://scratch.mit.edu/ [baltík]: https://www.sgpsys.com/infovek/index.htm [imagine]: https://imagine.input.sk/index.html