First, it is always hard to define our expectations in terms of newcomers. 
People that have never learned any programming language, but uses Linux ? 
Should we target children, that had barely CS/Mathematics lectures ? People 
also have different objectives in programming, so making tutorials that takes 
into account this diversity is hard.

I made this kind of comment on "Mastering Nim" by the past and I regret it. I 
thought that the cover was too bland. Actually, since it is colored, I have 
seen many people in public transport, trying to read the title on the cover. I 
also reproached to Araq the fact that the pixels were «too» small (aren't they 
pixels XD ?) or that it was missing the sdl dependency at first. Oh, it also 
did not specify that your font had to be in ttf format, and that some package 
manager might download your font in otf format (I had none other font installed 
and my program could not render text). Yes, it is maybe not easy for beginners. 
But I find it ironic to reproach the « Mastering Nim » to not be newbie 
friendly while it explicitly says in the preamble that it expects the reader to 
be already familiar with programming. It also explains the type and effect 
system, traits, metaprogramming, go in depth into procedure overloading 
resolution's algorithm, which are many things a newbie does not want.

> I believe that any good tutorial for a programming language, unless it's 
> meant for children, should start with console programs. That way you actually 
> learn the language and not a specific library.

@xigoi Araq made a bet to propose for the first time a tutorial that is not CLI 
oriented, while giving an overview of the programming language as a whole. The 
library pixels is a toy library and it doesn't use much of it (barely two 
functions putPixels and textToDraw). Notice he avoids speaking of all SDL2 
stuff (context initialisation, window events, etc...), and put the focus on the 
structural programming capabilities of the language and the design concepts.

I believe it is for a good reason that « Nim in Action » is still on the front 
page of nim-lang.org. It does not feel obsolete to me.

The main disincentive to me is the lack of internationalization. I wish there 
would be more tutorials in French, Spanish, German. When you are learning 
English as a foreign language, it makes learning a programming lang much 
slower, and, when progressing too slowly, we often give up.

Furthermore, (at least in French), Nim search queries are often concealed 
between queries for the Nim game, which is a mathematical/logic game.

> Sure, maybe, but I haven't had these kind of issues with any other languages, 
> mainstream or not, that I've tried lately.

I have tried rust. I downloaded rust, open the tutorial and learns that I would 
actually need rustup version instead. But rustup actually installs with cargo. 
They do have a CLI interactive exercise tutorial for beginners which is well 
made, but I would not recommend beginning with the borrow checking model of 
memory management as a first language.

We do have an Exercism track. The CLI interface of exercism is hard to install, 
it doesn't really help in fact, but one can do almost everything in the browser 
now. It helped me a lot, but I was not a newbie (having learned 3/4 programming 
languages before) and had to read the documentation in addition to Exercism.

C/C++ is not at all easy to begin with. You quickly have to learn how to write 
a Makefile in addition to the language. They are very unsafe, bloated languages.

Python3, pip search does not work anymore. Speak of an error message:

ERROR: XMLRPC request failed [code: -32500] RuntimeError: PyPI's XMLRPC API is 
currently disabled due to unmanageable load and will be deprecated in the near 
future. See <https://status.python.org/> for more information.

You want to force install a package, and then realize you had to install it as 
a user so you remove it. `sudo pip uninstall pytorch` and you manage to break 
your whole distribution (the problem is both in the user and concerns any 
programming language that a distribution uses, more than in Python but ...).

So far, all the programming languages I tested had issues or did not look 
beginner friendly at least in some aspects.

Reply via email to