I may feel a bit guilty as I critisized the former Nim Homepage content...
But sorry, the new draft is really not nice.
Page look is unfriendly, content is not great also.
So here is my first content suggestion -- I just hacked it together in a few minutes. It would be easy to improve the text further, I guess I forgot some points, and we can steal some wording from pages of other languages. Of course I am not a native English speaker, and do not know well all Nim details. But it is so easy to make a better text, so I could not resists, of course knowing that my draft will newer make it to the Nim homepage. So I have not fixed spelling errors and I have not tuned the wording in any way. But you may get the feeling. I would maybe group the statements in boxes as it is done for Julia -- Julia in a nutshell.
Nim is a modern universal programming language suited for systems and application programming
Nim combines successful concepts from mature language like Python, Ada and Modula with a few sounding concepts of latest research. It offers high performance while keeping the source code short and readable.
Its clean Python like syntax makes programming easy and fun for beginners, without applying any restrictions to experienced systems programmers.
Nim is efficient:
Nim is Expressive
Nim is Elegant
Nim is Open and Free.
Nim has a friendly growing community
Nim has a bright future
Note, we have already a second page which I really like:
https://nim-lang.org/features.html
There we can explain all that in more details with examples.
Topmost page should not contain too much text and too much details. And no unknown terms.
And we have to be careful with too unstable/experimental stuff. Hot Code Reload and REPL is great, but is it working stable already, and do we have docs? People we asks for docs. Compile-Time FFI, yes we should mention that. Also that different, optional and tunable GCs exists. No idea what MultiSync is...
Maybe we should directly link to the Playground -- I am not sure if it currently exists.
And mention packedmanager.
Saying you "can swim fast" doesn't impress people. Saying you swim X meters in Y seconds doesn't impress people much because most don't have an immediate frame of reference. Saying that you've won 23 Olympic gold medalists - now that's a knockout blow!
What Nim needs most is to win benchmarks and other systematized programming language comparisons. I think Web Framework benchmarks are the most important point Nim can make about its performance. It's already doing great, but needs more implementations and optimization.
Topmost page should not contain too much text and too much details. And no unknown terms.
Agree with you here. In fact, I made a similar remark in the PR: https://github.com/nim-lang/website/pull/150#issuecomment-496166378
But I would say that your suggested text is also too long.
But I would say that your suggested text is also too long.
Yes, I was indeed struggling with the text length, but I was not able to make it shorter without leaving important topics out.
The text does not fit on a single page unfortunately, but it can be read very fast. For my personal task I would like to see a text in such a form on the first page, because it gives a complete overview. But I have noticed that most programming language pages have nearly no informative text on the first page, but a link called something like "What is Nim". Maybe that is indeed the better solution, and it may work better for mobile.
I actually think it's easier to optimize Nim for scientific computing like I did for the Julia challenge: https://nextjournal.com/sdanisch/the-julia-challenge
For example my matmul implementation would be as fast as Julia Native Threads in Kostya's matmul benchmark (Julia Native Threads uses the OpenBLAS library written in assembly in backend).
Kostya's benchmarks have become updated again after a long absence, featuring Nim v1.0.0, Rust stable, the current versions of the D compiler trio, etc.
Nim's BF2 results have improved compared to the past: both Nim backends now beat Rust, and Nim-Clang now beats LDC.
There's still room for improvement in other tests. There's a new maintainer. Hope the Nim community will submit improved implementations.
just my 5 cents about the theme itself. I think it would be great to understand the audience of Nim. I think the topic is not about languages. It's about people who stand behind. People are valued. Fresh blood and young programmers who are trying to make new stuff. Why?
Because It's hard to convince people that already earn money and have robust working toolsets on other langs to drop it in favor of other lang. So the audience is not about programmers that came from Python, Ada, Modula, Whatever. The audience is people who are
I want to point on Rust and Nim sites:
A language empowering everyone to build reliable and efficient software.
Obviously I find Rust description sexy, elegant and I understand the mission of the language. And I understand why game dev fellas like this description.
Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula.
The first part about typed compiled lang is ok and this is why I came here :)
But I know nothing about Ada or Modula. I even never heard of those languages. And I think I don't want to. ( Not because I think they are bad of course )
From my mentality "we take a,b,c,d from there and do better mixing stuff" is not cool. It's like "drink my custom Pepsi, it took best of Cola". Those who are fine with Cola won't look at custom Pepsi, and those who never tasted Cola can't make a decision on drinking custom Pepsi that advertises flavors they never tried.
The Nim language is cool. Period. It doesn't need to compare itself with other languages. It's not a selling point. I want a language that helps me solve real problems, not a language that solves the problems of other languages.
What problems I have as a game developer?
The first problem is that system languages are great for writing core but often too hard for scripting and writing the game itself. Many reasons from syntax to more strict rules of how to write code. Maybe core developers fill confident but your teammate might have less experience and just want to script.
That's why we have Lua and so on. That's why Unity is on the C++ side and scripting is on C# side and they're a lot of silly "optimizations" about caching variables and stuff not to make an extra call on the C++ side. That's why Unity makes "subsets of C#" to put everything in one scope. A lot of hard, dirty work I think.
The second problem is portability. Pc, Mac, Linux, Consoles, Ios, Androids. It would be super nice if you can port your game to every device without rewriting the game to another language. As Nim compiles to C/C++/JS I can at least hope that I will be able to get on every possible platform.
just few examples of what I find like selling points:
PS, I 'm 30 years old and came to programming accidentally. I developed games in C# with Unity for a decade and never identified myself as a programmer. With experience, I realized that I don't need an aircraft carrier to make 2d games. The safe options are C/C++. The other 3 options were D, Rust, and Nim. And I've started looking at Rust. Why? Everyone said that IT'S THE THING for game dev. From every corner. No one said to me to use Rust because it's like C++ but better. No. I was advertised that I can write safe code and Rust will solve my problems. It took me some time to realize that I don't like Rust language ( simple as that ). But it hooked me more than Nim at first.
Note, my initial suggestion was
"Nim combines successful concepts from mature language like Python, Ada and Modula with a few sounding features of latest research."
Unfortunately they discarded the last part, I think to fit it all to one page.
But I have copied all my advertisings to my book:
http://ssalewski.de/nimprogramming.html
Section
http://ssalewski.de/nimprogramming.html#_nim_has_a_encouraging_future
is maybe too much advertising, maybe I will remove that.
The fact that you do not know Modula and Ada is not that great, Modula was an important milestone in development of languages, it was the successor of Pascal and introduced the module concept around 1980 which current C++ is still missing. And Ada, designed by a committee it may be a bit ugly, but it has been improved and is still used in critical areas like aircraft.
All languages built on each other in a way, each new languages has learned from previous ones and tries to avoid their mistakes.
I guess even V-Lang will not claim to be something revolutionary new?
And Rust -- it is indeed a better C++, and has a large company behind it and much hype.
It's not about claiming to be something revolutionary. It's about the message. The fact that I don't know about Modula and Ada says nothing. We live in the world of internet. I can read the wiki page of those lang. It doesn't make me "knowing Ada/Modula"
Of course, all languages built on each other and if I would like to know who influenced Nim I'll read the wiki. This is not the information that can be valuable for me as a user in the first place. This is my point :) With all respect to Ada, Modula, and other great languages.