mirror of
https://github.com/mfocko/blog.git
synced 2024-11-21 12:33:57 +01:00
blog(first-language): add smallish changes and outline
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
661df7a3e6
commit
96e951880a
1 changed files with 31 additions and 15 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue