Re: I think we can really do better...
@other_mods: Guys, didn't you notice that @brianwil2727 has put one link to some Bitcoin stuff to his post? It is a well-masked spam.
Re: I think we can really do better...
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.
Re: I think we can really do better...
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](http://ssalewski.de/nimprogramming.html) Section [http://ssalewski.de/nimprogramming.html#_nim_has_a_encouraging_future](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.
Re: I think we can really do better...
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 1. new to programming 2. have money/will to shift to new tech ( a much smaller group ) 3. hobbyist and who program for fun in a spare time I want to point on Rust and Nim sites: * Rust 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 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: * Write code once, deploy everywhere - selling point * You will do more typing less - selling point * The language is expressive and versatile, you can write efficiently core stuff and game scripts in the same language and scope ( I don't need to mention here C++/Lua, it's obvious ) - my personal game dev selling point. 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.
Re: I think we can really do better...
Nim is a state of the art programming language well suited for systems and application programming Its clean Python like syntax makes programming easy and fun for beginners, without applying any restrictions to experienced systems programmers. Nim combines successful concepts from mature language like Python, Ada and Modula with a few sounding features of latest research. It offers high performance with type- and memory safety while keeping the source code short and readable. The Compiler itself and the generated executables support all mayor platforms including Windows, Linux, BSD and Mac OS X. The custom package manager makes use and redistribution of programs and libraries easy and secure. Nim supports various backends -- the C and LLVM based backends allow easy OS library calls without additional glue code, while the Javascript backends generates high quality code for web applications. The integrated "Read–eval–print loop" (REPL), "Hot code reloading", and support of various development environments including debugging and language server protocol makes working with Nim productive and enjoyable. Nim is Efficient: The statically typed language compiles to highly optimized dependency free executables. Modern concepts like zero-overhead iterators, compile time evaluation of user-defined functions and cross-module inlining in combination with the preference of value-based, stack located datatypes leads to extremely efficient code. Multithreading, async IO, parallel processing including GPU execution are supported. Various memory management strategies exists: Selectable and tunable high performance Garbage Collectors are supported by manually and semi manually memory management. This makes Nim a good choice for Application development and close to the hardware system programming at the same time. The unrestricted hardware access, small executables and optional GC will make Nim a perfect solution for embedded systems, hardware driver and Operating Systems development Nim is Expressive and Elegant Nim offers a modern type system with templates, generics and type inference. Built in advanced data types like dynamic containers, sets and strings with full UTF support are completed by a large collection of library types like hash tables and regular expressions. The Powerful AST-based hygienic macro system offers nearly unlimited possibilities for the advanced programmer. While the traditional Object-Oriented Programming style with inheritance is supported, Nim does not enforce this programming paradigm and offers modern concepts like procedural and functional programming. Nim is Open and Free The Nim compiler and all of the standard library are implemented in Nim. All source codes are available under less restricted MIT license. Nim has a friendly and helpful growing community Forum (coded in Nim), Gitter, IRC Nim has a encouraging future Started 10 years ago as a small community project of some bright CS students leaded by Mr A. Rumpf, it is now considered as one of the most promising programming languages supported by uncounted individuals and companies of leading computer industry, ie. from the area of game-, web- and cryptocurrency development. -- More details: [https://www.delta.exchange/futures-guide-bitcoin](https://www.delta.exchange/futures-guide-bitcoin)/ Try it: [https://play.nim-lang.org/index.html](https://play.nim-lang.org/index.html)
Re: I think we can really do better...
[Kostya's benchmarks](https://github.com/kostya/benchmarks) have become updated again [after a long absence](https://github.com/kostya/benchmarks/issues/179), 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](https://archive.fo/8WJUb#selection-2157.0-2160.0): 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.
Re: I think we can really do better...
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](https://nextjournal.com/sdanisch/the-julia-challenge) For example my [matmul implementation](https://github.com/numforge/laser/blob/bf751f4bbec3d178cd3a80da73e446658d0f8dff/benchmarks/gemm/gemm_bench_float32.nim#L418-L465) would be as fast as Julia Native Threads in [Kostya's matmul benchmark](https://github.com/kostya/benchmarks#matmul) (Julia Native Threads uses the OpenBLAS library written in assembly in backend).
Re: I think we can really do better...
> 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.
Re: I think we can really do better...
I think both are true, but is good opportunity for ``.
Re: I think we can really do better...
> 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](https://github.com/nim-lang/website/pull/150#issuecomment-496166378) But I would say that your suggested text is also too long.
Re: I think we can really do better...
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](https://en.wikipedia.org/wiki/List_of_multiple_Olympic_medalists) 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](https://forum.nim-lang.org/t/1152) are the most important point Nim can make about its performance. It's already doing great, but needs more implementations and optimization.
Re: I think we can really do better...
Nim is a state of the art programming language well suited for systems and application programming Its clean Python like syntax makes programming easy and fun for beginners, without applying any restrictions to experienced systems programmers. Nim combines successful concepts from mature language like Python, Ada and Modula with a few sounding features of latest research. It offers high performance with type- and memory safety while keeping the source code short and readable. The Compiler itself and the generated executables support all mayor platforms including Windows, Linux, BSD and Mac OS X. The custom package manager makes use and redistribution of programs and libraries easy and secure. Nim supports various backends -- the C and LLVM based backends allow easy OS library calls without additional glue code, while the Javascript backends generates high quality code for web applications. The integrated "Read–eval–print loop" (REPL), "Hot code reloading", and support of various development environments including debugging and language server protocol makes working with Nim productive and enjoyable. Nim is Efficient: * The statically typed language compiles to highly optimized dependency free executables. * Modern concepts like zero-overhead iterators, compile time evaluation of user-defined functions and cross-module inlining in combination with the preference of value-based, stack located datatypes leads to extremely efficient code. * Multithreading, async IO, parallel processing including GPU execution are supported. * Various memory management strategies exists: Selectable and tunable high performance Garbage Collectors are supported by manually and semi manually memory management. This makes Nim a good choice for Application development and close to the hardware system programming at the same time. The unrestricted hardware access, small executables and optional GC will make Nim a perfect solution for embedded systems, hardware driver and Operating Systems development Nim is Expressive and Elegant * Nim offers a modern type system with templates, generics and type inference. * Built in advanced data types like dynamic containers, sets and strings with full UTF support are completed by a large collection of library types like hash tables and regular expressions. * The Powerful AST-based hygienic macro system offers nearly unlimited possibilities for the advanced programmer. * While the traditional Object-Oriented Programming style with inheritance is supported, Nim does not enforce this programming paradigm and offers modern concepts like procedural and functional programming. Nim is Open and Free * The Nim compiler and all of the standard library are implemented in Nim. All source codes are available under less restricted MIT license. Nim has a friendly and helpful growing community * Forum (coded in Nim), Gitter, IRC Nim has a encouraging future * Started 10 years ago as a small community project of some bright CS students leaded by Mr A. Rumpf, it is now considered as one of the most promising programming languages supported by uncounted individuals and companies of leading computer industry, ie. from the area of game-, web- and cryptocurrency development. \-- More details: [https://nim-lang.org/features.html](https://nim-lang.org/features.html) Try it: [https://play.nim-lang.org/index.html](https://play.nim-lang.org/index.html)
Re: I think we can really do better...
Note, we have already a second page which I really like: [https://nim-lang.org/features.html](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.
Re: I think we can really do better...
I would mention Compile-Time FFI, Hot Code Reload, the GC options, REPL and MultiSync, you can not do that on other languages...
I think we can really do better...
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: * The generated native, dependency free executables are small and allow easy redistribution. * Nim supports various backends -- the C and LLVM based backends allow easy OS library calls without additional glue code, while the Javascript backends generates high quality code for web applications. More backends already exists or can be easily added. * The Compiler itself and the generated executables support all mayor plattforms like Windows, Linux, BSD and Mac OS X. Porting to other platforms is easy. * Modern concepts like Zero-overhead iterators, compile time evaluation of user-defined functions and Cross-module inlining in combination with the preference of value-based, stack located datatypes leads to extremly performant code. * Various memory management strategies exists: Selectable and tunable high performance Garbage Collectors are supported by manually and semi manually memory managent. This makes Nim a good choice for Application development and close to the hardware system programming at the same time. * The unrestricted hardware access, small executables and optional GC will make Nim a perfect solution for embedded systems, hardware driver and Operating Systems development Nim is Expressive * Nim supports the well know concepts like operator and function overloading and ... * While the traditional Object-Oriented Programming styles is supported, Nim does not enforce this programming paradigma and offers modern concepts like ... * The Powerful AST-based hygienic macro system offers nearly unlimited ... for the advanced programmer. Nim is Elegant * Modern type system with local type inference, tuples, variants, generics, etc. Nim is Open and Free. * The Nim compiler and all of the standard library are implemented in Nim. All source codes are available under the unrestricted MIT license. Nim has a friendly growing community * IRC * Forum (coded in Nim) * ... Nim has a bright future * Started 10 years ago as a small project of some bright CS students leaded by Mr A. Rumpf, it is now considered as one of the most promising programming languages supported by uncounted individuals and companies of leading computer industry, ie. from the area of game development, cryptology and bitcoin stuff.