-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add a more detailed list of features #237
base: master
Are you sure you want to change the base?
Conversation
I could see why you might think I was abc619 from his writing style, but that was not me. I have never used Reddit. Maybe there is a way to PM the author. |
I did post a HackerNews comment praised (I think.."reflects what I think" is kinda vague..) about Go comparisons/start-ups/marketing in the same forum thread, though, which may be the origin of the confusion. |
It was more because your nick on HN is |
Co-authored-by: Hugo Locurcio <[email protected]>
I suppose we could add a "See more features" button (or similar) on the front page below the current list? |
If you move "Top tier meta-programming" (which mentions the VM) above "Iterating" then in the iterating section you could mention the even faster than TinyCC/tcc turnaround time of |
Any progress about this? |
Hi, @narimiran I contacted with abc619 who approved it. My question
abc619's answer
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Now that we have a long list on the front page, I think this should be used on the front page.
<li>Multi-line lambdas</li> | ||
<li>It combines successful concepts from Ada and Modula.</li> | ||
<li>Productivity: human-readable and expressive like Python</li> | ||
<li>Type system: strong static typing, nice generics, concepts, and type classes</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<li>Type system: strong static typing, nice generics, concepts, and type classes</li> | |
<li>Type system: strong inferred static typing with generics, concepts, distinct types and type classes</li> |
strong inferred static typing
or strong static typing with inference
Inference is cool, mention inference.
generics, concepts, distinct types and type classes
IMHO
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would say: "static typing with inference and generics"
<li>Productivity: human-readable and expressive like Python</li> | ||
<li>Type system: strong static typing, nice generics, concepts, and type classes</li> | ||
<li>Performance: matches C and C++, always gives control to the programmer</li> | ||
<li>Portability: compiles to C, C++, and Javascript |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mention something like (LLVM also available)
?. 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<li>Portability: compiles to C, C++, and Javascript | |
<li>Portability: compiles to C, C++, and Javascript/NodeJS (LLVM also available) |
If someone can not compile to Node, open bug here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But NodeJS is JavaScript, no? We're talking about languages, not runtimes here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, and we also shouldn't be exhaustive. We should focus on what we support officially. LLVM and NodeJS isn't it.
<li>Portability: compiles to C, C++, and Javascript | ||
<ul> | ||
<li>Native use of all libraries in target languages (no ABI issues) + really nice FFI</li> | ||
<li>Single (tiny) executable with no dependencies</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<li>Single (tiny) executable with no dependencies</li> | |
<li>Single tiny executable with no dependencies</li> |
The parenthesis do not add a big value there.
<li>Native use of all libraries in target languages (no ABI issues) + really nice FFI</li> | ||
<li>Single (tiny) executable with no dependencies</li> | ||
<li>Write server/client in the same language and share code between front/back end</li> | ||
<li>Linux, Windows, and macOS</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<li>Linux, Windows, and macOS</li> | |
<li>Linux, Windows, Mac OS X, BSD, Android, iOS</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It may be worth mentioning android and even IOS.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@juancarlospaco it's macOS and iOS (proper naming and casing)
<li>Performance: matches C and C++, always gives control to the programmer</li> | ||
<li>Portability: compiles to C, C++, and Javascript | ||
<ul> | ||
<li>Native use of all libraries in target languages (no ABI issues) + really nice FFI</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<li>Native use of all libraries in target languages (no ABI issues) + really nice FFI</li> | |
<li>Native use of all C, C++ and JavaScript libraries (no ABI issues) with a friendly and direct FFI</li> |
<h2>Good for everything, from shell scripting to web front and backend, | ||
to machine learning, high-performance computing (HPC), and embedded.</h2> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<h2>Good for everything, from shell scripting to web front and backend, | |
to machine learning, high-performance computing (HPC), and embedded.</h2> | |
<h2>Multipurpose, web backend and frontend, machine learning, | |
high-performance computing, embedded, IoT, WebAssembly, scripting.</h2> |
"Good for everything" sounds like "jack of all trades master of none"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"general purpose" ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the slogan is just like "life is short, use python". It is easy to be remembered, expressive and smooth.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So if you want a long life you should NOT use Python, interestin' 🤔
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
<li>Iterating: Very fast compile speeds</li> | ||
<li>Top-tier metaprogramming | ||
<ul> | ||
<li>Hygienic AST Macros a core part of the language, very flexible syntax</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<li>Hygienic AST Macros a core part of the language, very flexible syntax</li> | |
<li>Hygienic AST Macros with ordinary Nim syntax are a core part of the language</li> |
"very flexible syntax" do not add too much value.
When you say "macro metaprogramming" some people think if the mess of C++ template programming language thats different from C++ programming language itself.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would say "ordinary Nim syntax" which I think short-circuits @juancarlospaco's critique of "two syntaxes".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"ordinary Nim syntax" 👍
<li>Top-tier metaprogramming | ||
<ul> | ||
<li>Hygienic AST Macros a core part of the language, very flexible syntax</li> | ||
<li>Runs a VM of Nim at compile time giving you most of the language (bar pointers) to generate code or run procedures and store them as const</li> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<li>Runs a VM of Nim at compile time giving you most of the language (bar pointers) to generate code or run procedures and store them as const</li> | |
<li>Macros are expanded at compile time on a Nim VM integrated in the compiler with most of the language available (except pointers) to generate optimizations (loop unrolling, etc) or precompute procedures (static internationalization, etc) and store them as constants</li> |
"Nim runs on a VM" definitely not good description for new people.
"bar pointer" not good way to say "except pointers".
"code to generate code" --> optimize code.
"run procedures" --> precompute procedures.
Is nice to mention that macros is expanded at compile time,
some langs have metaprogramming but is expanded at run-time-only slowing down your code.
"Loop unrolling" because is hard to do for other langs, eg Rust can not do loop unrollings.
"static internationalization" because is hard to do for other langs, eg C/C++ use run-time internationalization.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would simplify this to simply: "Compile-time execution of ordinary Nim code via a purpose-built VM"
This is based on this Reddit comment by @c-blake, which was praised both on Reddit and our forum.
First of all: @c-blake, do we have your permission to use this?
Second: I'm not sure how to incorporate this to the existing
index.html
, so I've put it infeatures.html
. Now there's more text than before, so now we can use a longer code example (and not repeat one fromindex.html
) on the right. Any ideas?