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.
