blog(first-language): add smallish changes and outline

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-02-03 22:32:40 +01:00
parent 661df7a3e6
commit 96e951880a
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -13,19 +13,20 @@ tags:
hide_table_of_contents: false 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 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 time of writing this post I have been teaching _Foundations of Programming_ for
5 years already. 5 years already.
Let's talk about the first language beginners come into contact with hands
on[^1].
<!--truncate--> <!--truncate-->
:::caution Spoiler alert :::caution Spoiler alert
At one point or another, this post will turn into full-blown Python rant as it 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], I'm also purposefully leaving out educational “languages” like [Scratch],
[Baltík] or [Imagine]. [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 I will describe it by taking two _very_ different paths, self-study and the high
the high school experience. Self-study path begins just a year or two before the school experience. Self-study path begins just a year or two before the high
high school and majority of the time they overlap which certainly creates school and majority of the time they overlap which certainly creates a unique
a unique experience. experience.
### Self-study ### Self-study
My first time touching a proper programming language was around 11 and it was 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 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 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 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 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 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 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# 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 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 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] 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 Around the time of attending the high school, C appeared in my life… I think
seen C for the first time in the lectures from FIT CTU[^7] I've seen C for the first time in the lectures from FIT CTU[^7]. After C we have
After C we have a mayhem of anything and everything. a mayhem of anything and everything.
Looking back I have to admit that I've managed to move from Java towards C# as 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 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# 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 ### High school
@ -89,6 +91,20 @@ Pascal
Python Python
## Common choices
### Python
### JavaScript
### C or C++
### Pascal
## What to look for
## My picks
[scratch]: https://scratch.mit.edu/ [scratch]: https://scratch.mit.edu/
[baltík]: https://www.sgpsys.com/infovek/index.htm [baltík]: https://www.sgpsys.com/infovek/index.htm
[imagine]: https://imagine.input.sk/index.html [imagine]: https://imagine.input.sk/index.html