Hello all, I've been thinking of the ideal introduction to Nim, for people who just heard about it.
The current documentation (the manual) can be a little "intimidating". Although it is very thorough and explains rationale for things, it is a far cry from being a "Nim in a nutshell" type of reference.
I envision the following:
a user visits the website. There is a getting started page, that lists:
Getting started with Windows, Mac, Linux, Android, iPhone, (wasm?)
in each platform, you can see how to do things, preferably the portable way, but also the complementing native api's, like bindings to cocoa api for mac, or the lean windows api, etc.
This is from a platform point of view.
There should also be an aspect point of view:
So, you want to make a command line tool.
So, you want to make a game,
So, you want to make a web application,
So, you want to make a GUI Desktop application.
So you want to make an android app
...etc
With step by step instructions, following the recommended workflow: start with git/hg source control, then how to do unit testing, how to best use the vscode ide (shortcuts and productivity), and how to debug your code.
But most important is to show the general steps (regardless of editor) of how to compile, how to quickly get a skeleton application up and running, then where to fill the missing code. (your actual app).
So to summarize, having a getting started documentation that shows two different perspectives: platform and purpose.
I would love to hear your ideas and how to make this happen easily, and cooperatively. (one idea is to have a wiki, at first, so we can share our knowhow easily)
Another related issue is that many programmers already know a mainstream language, and its sdk.
We can simply show the corresponding syntax in nim (when available), and the packages (or stdlib types) that provide the equivalent functionality - this can look like a reference table, or a "cheatsheet", and the programmer will then dive deeper to understand how to use them.
Nim to programmers with background in Java, or C#, or python, or ruby, or nodejs, or c++, etc.
what are your thoughts? Would this be a good way to structure a beginner's understanding and get quick results for him/her? Would you like to cooperate and make this happen?
Indeed most Nim documentation is in the area of "Quick-Start" or "Beginner, for example that one listed under Tutorials or Books at
https://nim-lang.org/documentation.html
Where Beginner means more someone with some programming experience but new to Nim, not someone with absolutely no computer-programming background.
Note that Rosetta-Code has also many Nim examples: http://www.rosettacode.org/wiki/Category:Nim
But of course more fine documentation is always welcome.
Where Beginner means more someone with some programming experience but new to Nim, not someone with absolutely no computer-programming background.
I've tried to make Nim Basics fall as much as possible in the latter category (while keeping it reasonably brief, and moving at a reasonable pace for people in the first category).
Yes that is true, and it is a fine tutorial.
But for someone without any computer programming experience one would have to explain basics of memory management (Stack, Heap, GC, ref/ptr vs value types) and maybe even basic computer layout (CPU, RAM, most basic assembler operations). Without that information, it is like driving a car without any knowledge of physics and how engine, gears and brake basically work internally. Fortunately most people know the basics already.
it is like driving a car without any knowledge of physics and how engine, gears and brake basically work internally. Fortunately most people know the basics already.
Fortunately, most people drive cars just fine without any knowledge of "how cars really work internally" ;)
Source: my friends and family
Hey everyone: Great resources! Plus, silly me, I haven't noticed: github provides a wiki
So I started a document, https://github.com/nim-lang/Nim/wiki/Quick-Start-2018
it's the overview, should have links to beautiful image-filled friendly explanations. I think it's all a person could ever want. No excuses after that!
When people say they wait for v1.0, what I hear is: a big 1.0, you will revamp your website, provide all the niceties, plenty of documentation to not get stuck, a customer friendly experience. comfort. you know, we all like that. so that's partly the goal here, imo. I think the seasoned writers can make the general layout, and we'll fill it by bits. Any takers? :-)