Skip to content
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 overview of features to readme #5256

Closed
wants to merge 3 commits into from
Closed

Conversation

timeyyy
Copy link
Contributor

@timeyyy timeyyy commented Jan 20, 2017

This pr aims to open up dialogue about how best to market nim, the Why.

Ideally the overview and features presented should be chosen to match that story, The How

  • Concise overview of the nim compiler
  • Point to more information
  • Show the vision for nim
  • Show features targeting that vision
  • Move out information on nim development to wiki

@timeyyy
Copy link
Contributor Author

timeyyy commented Jan 20, 2017

I have pieced together some initial ideas based on the website and the wiki. If nim is indeed targeting the game industry compile speeds could be something worth talking about. Are compiler speeds being benchmarked and checked for regressions?

@Araq
Copy link
Member

Araq commented Jan 20, 2017

Are compiler speeds being benchmarked and checked for regressions?

The bootstrapping process reports timings and memory usage for this reason and I keep track of these numbers. So the answer is "yes" but it could be automated more.

@stisa
Copy link
Contributor

stisa commented Jan 20, 2017

Nice work!
Some suggestions:

  • add a link to the stdlib near awesome-nim.
  • I'd say the overview should only list high level features, maybe with a couple specific examples, btw of you keep it, I think 'high performance game' would sound better than 'high resource game'
  • use h3 headers ( ### ) instead of bold in the features section.
  • mention ide support (maybe in tooling?)

@timeyyy
Copy link
Contributor Author

timeyyy commented Jan 21, 2017

Whats the main target area of nim? If we have that defined we can filter features to present.

@Araq
Copy link
Member

Araq commented Jan 22, 2017

Whats the main target area of nim? If we have that defined we can filter features to present.

What is the main target area of C++? It's only been used for high performance computing, OSes, browers, game engines, Google's core algorithms, web crawlers, business applications ...

"It's good for everything" is bad for marketing though, so let's say it tries to excel/excels at async IO and C++ interop.

@timeyyy
Copy link
Contributor Author

timeyyy commented Jan 22, 2017

I've never written c++, will this c example also work for c++?

@Araq
Copy link
Member

Araq commented Jan 22, 2017

I've never written c++, will this c example also work for c++?

Yes pretty much, but you have to use importcpp.

@timeyyy
Copy link
Contributor Author

timeyyy commented Jan 23, 2017

"It's good for everything" is bad for marketing though

Targetting a single area will also alow tooling and libraries to grow in one area meaning instead of doing 30% of what everyone wants we can do 110% of what 5% of people wants. This polish in one area means industry is more liable to start using nim.

Gamedev is a nice target specially if we can utilize all those c++ libraries. @Araq mentioned another ui library a few days ago. Could be a viable market as there are alot of apps being made with webkit and electron(web technologies) producing binaries of 80mb. Kivy for python is the only alternative I found for developing apps quickly but it is implemented in python (sdl2) so it is not usable by other languages. A kivy clone in nim would be cool...

@Araq
Copy link
Member

Araq commented Jan 23, 2017

Targetting a single area will also alow tooling and libraries to grow in one area meaning instead of doing 30% of what everyone wants we can do 110% of what 5% of people wants. This polish in one area means industry is more liable to start using nim.

Agreed.

- [Hygenic Macros](http://nim-lang.org/docs/macros.html)
- [Low level memory allocation](https://rosettacode.org/wiki/Memory_allocation#Nim)
- [Type inference](https://nim-by-example.github.io/variables/type_casting_inference/) - Strongly typed
- Link to more features with examples such as https://haxe.org/documentation/introduction/language-features.html
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haxe? :-?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's a todo item. :)

@@ -1,9 +1,63 @@
# <img src="https://raw.githubusercontent.com/nim-lang/assets/master/Art/logo-crown.png" width="36"> Nim [![Build Status](https://travis-ci.org/nim-lang/Nim.svg?branch=devel)](https://travis-ci.org/nim-lang/Nim)
Efficient like C, expressive like Python and flexible like Lisp.

```python
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/python/nim

@@ -1,9 +1,63 @@
# <img src="https://raw.githubusercontent.com/nim-lang/assets/master/Art/logo-crown.png" width="36"> Nim [![Build Status](https://travis-ci.org/nim-lang/Nim.svg?branch=devel)](https://travis-ci.org/nim-lang/Nim)
Efficient like C, expressive like Python and flexible like Lisp.

```python
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think code examples belong in the Github readme.


## Overview

Nim is a modern general purpose programming language excelling in Async IO and C++ interop. These features make nim very suitable for:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Async IO and C++ interop.

I know @Araq said this but I find this lame.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So say something better.

Copy link
Contributor

@dom96 dom96 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for taking the time and initiative to do this but overall I don't think it belongs in the readme. Best thing is to move this discussion into the website repo.

- [Technical Roadmap](https://github.com/nim-lang/Nim/wiki/Roadmap)

## Limitations
- Tail call optimization
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO this is not worth mentioning. Even though Nim itself doesn't do tail call optimization, it still can be done by underlying C compiler.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants