Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-31 Thread cumulonimbus
Most programming today is incredibly bureaucratic.

Nim makes programming fun again and does away with a lot of the beaurucracy, 
the way Python and Lua do; But unlike Python, you don't have to give up static 
typing, fast runtime, ease of distribution. For now, compared to Python, you 
give up some aspects of the REPL, and the ecosystem (many packages, a lot of 
documentation) but I think both of these have improved tremendously. 


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-31 Thread mashingan
Leaving aside the discussion about fav lang,

One of great additions is this PR, [Fixed “RFC: improving JavaScript FFI” 
(#4873)](https://github.com/nim-lang/Nim/issues/4873)

Not to underestimate other stdlibs, improving JavaScript FFI should yield 
practical purpose, unrelated to whether people like JavaScript or not. `jsffi` 
module is very nice lib 

There's also 
[bitops](https://github.com/nim-lang/Nim/blob/devel/lib/pure/bitops.nim) module.


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-30 Thread nucky9
> "let's have a simple core but metaprogramming"
> 
> I like that, a lot!

Yeah, I have been programming for about a year, and messed around with a few 
languages (C# and Python mostly), then fell in love with C due to its 
simplicity. Unfortunately, that simplicity made some things a pain to do (for 
me at least). I have no idea how to sell Nim to a broader audience, but I love 
it because it lets me reason about problems as I would in C, but with tonnes of 
QoL improvements that make things much more approachable to me, as a hobbyist 
programmer. Pretty much the opposite of Rust, which seems brilliant in many 
ways, but made me want to cry every time I tried to do anything remotely 
complicated with it.

> What I would like, though, is that "people" would blog about Nim, do videos 
> about it and perhaps even tutorials - I think that's much, much better than 
> claiming to be a better other language.

It would be nice if there was more material available for learning how to work 
with Nim. Moreover, I think it is such an ideal first language for people to 
learn, that it would be fantastic to have resources geared towards teaching 
programming, using Nim. I would love to be able to contribute something myself, 
but based on where I am in my own learning, I wouldn't feel confident to do so. 
Plus I can barely find the time to do the programming I want to do, never mind 
try to blog about it . 


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-30 Thread LeuGim
Evangelism makes people grow heated, like a gamble, making all other goals 
secondary to spreading out over the world. "_What's the difference what a 
language Nim will be, let it just be the most widespread!_", "_For what target 
audience can Nim be promoted? Let's turn it into a language suited for them 
(and not current users)!_", "_Let's beat that popular language - that's so 
exciting!_", "_What's a need for a good language? Let's focus on any arbitrary 
thing and make it 1.0!_", "_And at all, nix on programming, let's sell! Don't 
make programming, make hype!_ ".


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-30 Thread jacmoe
> "let's have a simple core but metaprogramming"

I like that, a lot! 

I don't care about Ada either 

What I would like is a language that is expressive and as simple as possible - 
I hope that the C / C++ "backend" will stay - and Nim is that, to me.

I don't need any more selling points, to be honest.

What I _would_ like, though, is that "people" would blog about Nim, do videos 
about it and perhaps even tutorials - I think that's much, much better than 
claiming to be a better other language.

(( I will blog about Nim, eventually, but right now I am not much of a Nim 
programmer, to be honest. ))

Developers are not stupid - we know a good thing when we see it.


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-30 Thread bpr
> In order to turn it into a fruitful discussion: What feature should we 
> **remove** from Nim?

`method` at least, once `vtref` and the like have landed.

> Nim is a simplistic systems programming language with an AST based macro 
> system on top of that.

Why simplistic? IMO it's fairly rich, but not overly so, like C++.

Anyways, I see Nim as a wide spectrum language, suitable for a large number of 
tasks, especially ones where achieving "close-to-the-metal" performance is 
important. That appeals to me.

I'm sad to hear that the JS backend is what's getting money, but I do JS 
development too so I commiserate, which means I feel miserable about writing JS 
too.


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-30 Thread Araq
Oh so it's about Nim v1.0 again. I wanted to release that years ago but the 
community talked me out of it. _Shrug_, sometimes the community is just wrong. 

> I didn't mean that Nim has a "zillion unfocused ideas" (it's not a real 
> number and a general point about business plans), but the top example going 
> through my mind as I wrote that was karax. You can obviously work on whatever 
> you want, and I am very grateful for everything you do, but IMHO that isn't a 
> top focus for getting Nim off the ground. Nim's attempt to compile to both 
> C/C++ and JavaScript, while extremely interesting, is an example of "Chasing 
> Two Rabbits"...

It's not "extremely interesting" (is that another term for "research toy"?), 
it's important as the browser is ubiquitous as an application development 
platform (as bad as that is...) and **many** other languages do the same 
already. That's actually just part of the "playing to catch up".

Working on Karax pays my bills ... working on Nim v1 does not. You care about 
Nim version 1, as do I. The people who pay me have more concrete problems 
though. Like writing SPAs or having excellent C++ interop to leverage the game 
engines written in it. Or having stable C++ code generation in order to improve 
compiletimes to keep it competetive... And here you are telling me how to run a 
"successful" business.

> A lot of people really liked your quote that "Nim is essentially Ada + a GC 
> with a friendlier syntax". I think that would make a great initial focus and 
> selling point for Nim.

Never met anybody who cared about Ada. As a "selling point for Nim" that is a 
stillbirth, as far as I can tell.

> In a Quora answer I summed up what I see as Nim's top strengths: performance 
> to productivity ratio, safety to syntax cleanliness ratio, license simplicity 
> (very important to gaming companies, not just ethics nerds like me), and 
> portability. I think that's already too many.

So ... leave things out in your summary the next time?

> I don't know if Nim can claim the "performance to productivity ratio" crown 
> in light of the recent takeoff in Crystal's popularity.

There you go then, don't list that anymore, that title clearly belongs a 
language that is as obscure as Nim. 

> I'm sorry, I'm not very bright. To me that seems much less clear than the 
> vision of Nim's top competitors (see above). To whom does this vision appeal?

The benefits of meta programming (and its downsides) have been enumerated, I 
myself gave plenty of talks about it, I don't know why I need to repeat these 
here again. It's not that you are "not very bright", you seem to want me to 
premasticate everything for you so that you can give better answers on Quora 
and Reddit. And that's ok, so read on.

> What makes Nim more "simplistic" than "systems programming languages" like D 
> and Rust (and, if using a much looser definition: Go, Swift, Crystal)? And is 
> its AST-based macro system competing with Template Haskell for theoretical 
> papers, or is it a means to an end?

Compared to Rust/D:

  * Nim's approach to immutability is simpler.
  * Nim's approach to "memory safety" is simpler (ref = safe, ptr = unsafe).
  * Nim's approach to multi threading is simpler (do not share, copy stuff 
around).
  * Nim's approach to OO is simpler (it even lacks constructors!).
  * Nim has some cruft, but much less than D.
  * Rust has the borrow checker that people complain about plus an overly 
patronizing design ("every macro invokation shall end in an exclamation mark").



> Some "other languages" have had lots of devs and lots of paid hours (in 
> industry or academia) to polish those features and manage complexity.

Yes and Nim has meta programming instead so that you can implement the features 
yourself and the core language stays lean. That was the plan/"focus" anyway, in 
practice IMO we need to remove features (but which ones?) to get there.

> Successful new grass-roots programming languages tend to start with a 
> particular focus. D started out as a much simpler language, and added 
> features after it mastered the basics. Even Google isn't replacing everything 
> with Go, but keeping it focused mainly in network services. Nim is very 
> ambitious, and that's great, but not when it comes at the expense of the 
> fundamentals.

The truth is that D's development offers a ridiculous amount of similarities 
with Nim's development. And IMHO "we can do better than C++" is less of a 
"focus" than "let's have a simple core but metaprogramming". Go's "focus" is 
more bizarre than every other programming language ever invented. "We are a 
billion dollar company only hiring the very best developers, but we cannot 
design a parametrized type system and/or think our developers cannot handle it. 
Or a sane error handling system. Or a concurrency model that is free of data 
races and deadlocks. Or a compilation model that does away with extensive 
runtime reflection."


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-30 Thread Libman
I am not bashing Nim; I am speculating about what (IMHO) it could be doing 
better. Key word: **_focus_**.

This thread is about summing up the last 9 months, and my humble summation is 
that, as far as I can tell, things haven't moved much. Is Nim marching steadily 
towards reasonable version 1.0 goals? If so, this isn't very visible to lay 
observers. Is Nim more popular relative to its competitors compared to 9 months 
ago - if not, why? It's not because they have more sophisticated 
mataprogramming, but because they're giving large and specific classes of 
programmers what they wanted in a new programming language.

It seems that a new programming language that's "a jack of all trades, master 
of none" is not what a lot of people are actually willing to use. It is better 
to be a "jack of all trades, master of (at least) one", and that master "killer 
app" is how you pay the bills while learning more trades.

The 
[first](http://www.businessinsider.com/the-first-mcdonalds-burger-stand-2014-9) 
McDonald's only served a handful of choices that most people wanted. One needs 
to get the business off the ground first, and expand it later as you get enough 
working capital (compiler code contributors, bug reports, modules, tooling, 
tutorials, cash donations, corporate sponsorship, etc). And then eventually you 
can build [Xihulou](https://en.wikipedia.org/wiki/West_Lake_Restaurant).

> Nim has a clear vision -- it's just that I fail to communicate it:
> 
> Nim is a simplistic systems programming language with an AST based macro 
> system on top of that.

I'm sorry, I'm not very bright. To me that seems much less clear than the 
vision of Nim's top competitors (see above). To whom does this vision appeal?

What makes Nim more "simplistic" than "[systems programming 
languages](https://en.wikipedia.org/wiki/Systems_programming_language)" like D 
and Rust (and, if using a much looser definition: Go, Swift, Crystal)? And is 
its AST-based macro system competing with Template Haskell for theoretical 
papers, or is it a means to an end?

In [a Quora 
answer](https://www.quora.com/What-do-you-say-about-Nim-programmning-language/answer/Alex-Libman-2)
 I summed up what I see as Nim's top strengths: performance to productivity 
ratio, safety to syntax cleanliness ratio, license simplicity (very important 
to gaming companies, not just ethics nerds like me), and portability. I think 
that's already too many.

I don't know if Nim can claim the "performance to productivity ratio" crown in 
light of the recent takeoff in Crystal's popularity. For people coming from 
other scripting languages, Crystal-like languages that go out of their way to 
be as close to JS / PHP / Python as possible (which, [as we've previously 
established](https://forum.nim-lang.org/t/2811), isn't the direction in which 
you want to take Nim) would probably do very well also.

A lot of people really liked your [quote](https://forum.nim-lang.org/t/1961) 
that "Nim is essentially Ada + a GC with a friendlier syntax". I think that 
would make a great initial focus and selling point for Nim.

> Almost all of its features can be found in other languages too.

Some "other languages" have had lots of devs and lots of paid hours (in 
industry or academia) to polish those features and manage complexity. 
Successful new grass-roots programming languages tend to start with a 
particular focus. D started out as a much simpler language, and added features 
after it mastered the basics. Even Google isn't replacing everything with Go, 
but keeping it focused mainly in network services. Nim is very ambitious, and 
that's great, but not when it comes at the expense of the fundamentals.

> New features arrive slowly (heck, isn't that what you just complained about?) 
> and more effort is spent on bugfixing and QA than on anything else.

I complained about just the opposite: features over focus. I am encouraging 
focus on quality, stability, and documentation of Nim's core features; the 20% 
of the language that gets 80% of use. It's very sad to see Nim not growing in 
popularity while its more focused and targeted upstart competitors are gaining.

> In order to turn it into a fruitful discussion: What feature should we remove 
> from Nim?

There's no reason to remove anything, just say these things are "experimental" 
and on the back-burner until more crucial goals are met.

I didn't mean that Nim has a "zillion unfocused ideas" (it's not a real number 
and a general point about business plans), but the top example going through my 
mind as I wrote that was 
[karax](https://github.com/pragmagic/karax/commits/master). You can obviously 
work on whatever you want, and I am very grateful for everything you do, but 
IMHO that isn't a top focus for getting Nim off the ground. Nim's attempt to 
compile to both C/C++ and JavaScript, while extremely interesting, is an 
example of "[Chasing Two 
Rabbits](http://users.rider.edu/~suler/zenstory/chasrabit.html)"...


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-29 Thread Araq
@Libman

Nim has a clear vision -- it's just that I fail to communicate it:

_Nim is a simplistic systems programming language with an AST based macro 
system on top of that._

Its syntax is pleasant enough that it replaced all of my "scripting" needs too. 
But that's not a lack of "vision", that's because the split between systems and 
application and scripting programming languages is a historical accident, ymmv. 
Note that the split between (pure) FP, imperative, OO and logic programming 
makes much more sense and indeed Nim doesn't even try to be a functional or 
logic programming language! Or much of an OO language for that matter.

And about the "zillion unfocussed ideas", that's quite biased. Facts are:

  * Almost all of its features can be found in other languages too.
  * New features arrive slowly (heck, isn't that what you just complained 
about?) and more effort is spent on bugfixing and QA than on anything else.
  * Features I would remove again have little significance: For example, I know 
for a fact that the "tag tracking" is useless, it has not found a single bug in 
any Nim project out there. Ok, let's remove it already. Well, not so fast, the 
general effect system is also about exception tracking (useful) and `gcsafe`'ty 
(essential for Nim's thread local GCs!).
  * Many features are not Nim features, but stdlib features but it's hard for 
newcomers to understand that and even if they do, they complain anyway:
* "How come slices do copy? These need to be a builtin language feature!"
* "What do you mean 'an interface is just a tuple of closures'?"
* "Why are the error messages so bad?" It's because `.async` is not a 
compiler/language feature, it's a macro!



In order to turn it into a fruitful discussion: What feature should we 
**remove** from Nim?


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-29 Thread jacmoe
I disagree. 

I would like to have more Nim programming videos - those are great to make 
people discover Nim.

Personally, I don't really like too much sales pitch - I grew really tired of 
Rust and their happy slogans (Hack without fear - zero cost abstractions) those 
gets old really fast!

I also don't believe that a language exist to better another language.

If you like the performance of C, the expressiveness of Python and the 
macro-ness of Lisp, then Nim is perfect!

We need more videos on YouTube on Nim, so that people can discover it.

Other than that: it sells itself.

There is no rush, in my opinion, for Nim to achieve world domination (or need?)


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-29 Thread Libman
Pardon my satiric pessimism. Nim is my #1 favorite programming language, and I 
very much hope that it succeeds. But, in answer to this thread's question about 
the past 9 months, I think there's very little to celebrate. Growth exists, but 
it's far slower than it should be. People are experimenting with Nim and doing 
cool things, [dom's book finally hit 
paper](https://www.amazon.com/Nim-Action-Dominik-Picheta/dp/1617293431), etc - 
but something is clearly missing.

Nim has many virtues, but it also needs a lot of work to catch up to other 
languages. A new programming language is like a business: the first million is 
always the hardest. People need a clear reason to invest their efforts into Nim 
rather than something else, especially when Nim's competitors are so much 
bigger. A bigger community means more libraries and tooling, more answers when 
you $searchEngine a problem, more job / freelancing opportunities, etc.

Unless you have Rich Uncle Google (or Apple, Mozilla, etc) to boost you right 
from the start, breaking through and achieving growth is very hard - but other 
languages have done it. I think Nim's greatest competitors are Dlang and 
Crystal - two grass-roots languages that surpassed Nim in popularity. I think 
the greatest reason for this is vision, clarity of purpose - they had a 
specific audience that helped lift them off the ground.

In these past months DMD also [went 
after](http://forum.dlang.org/thread/oc8acc$1ei9$1...@digitalmars.com) Nim's 
permissive license freedom crown, and it has an estimated 872 (79%) [dub 
packages](http://code.dlang.org/api/packages/dump) that are 
[copyfree](http://copyfree.org/standard/licenses) (nimble is at 448 or 88% 
copyfree).

The question of "[What is the Nim programming language good 
for?](https://www.quora.com/unanswered/What-is-the-Nim-programming-language-good-for)"
 does not (yet) have a clear answer. D and Crystal are clear, even in their 
names: to be a better modernized C++ or a more solid Ruby. Nim is a mix of many 
cool ideas: some more practical and some more academic than others; some offer 
a better C++, some a better in-browser JS target, or Python, or Ada, etc. No 
one group can have any confidence in what direction Nim will continue to 
evolve, and how much faith they should put in it making significant progress. 
[Nim's roadmap](https://github.com/nim-lang/Nim/wiki/Roadmap) hasn't been 
updated in over a year...

With a new business, you write a [business 
plan](https://en.wikipedia.org/wiki/Business_plan) and you knock on a lot of 
doors (banks, etc) asking for investments, persuading people that in a few 
years you'll have something great. But you cannot be great at everything all at 
once: some things will clearly and decisively need to be put on the 
back-burner. A good business plan doesn't contain a zillion unfocused ideas, 
but a few ideas that are focused and complementary. I think Nim needs precisely 
that: a VISION of why, if it's not the best programming language for a specific 
target audience yet, in a few years it will be, and how it will get there. 


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-29 Thread jacmoe
v1.0 **_should_** remain elusive - that's how it works in Open Source. 

As for replacing C ...

I don't know.

I've been programming in C++ for years, and recently grew so fed up with it, 
that I took up C.

Modern C is really, really neat, and not something that needs to be replaced 
IMO. 

C++, on the other hand (and Java, Ruby and C#), yes: they could use a 
replacement.

I've tried Rust and Go, and they did not click with me, at all. Go has some 
weird limitations, that makes sense (I guess) for what use it is intended for, 
and Rust ... no, I don't think I want to subject myself to a passive aggressive 
compiler like that :p

My use case is primarily performance critical game programming, mind you. Not 
server (Go) or system (Rust) software.

My first serious programming efforts were in Delphi (Object Pascal), and I have 
had dreams of doing serious stuff in Lisp, so Nim is extremely attractive!

Not as a C replacement, but as an enhancement; a step up, so to speak.


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-29 Thread Libman
> I've been away from Nim for about 9 months. Can anyone give me a quick update 
> ...

We keep [accelerating toward 
C](https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why),
 but v1.0 [remains elusive](https://en.wikipedia.org/wiki/Time_dilation)... 


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-28 Thread jlp765
Yeah, I guess I assumed a blog was stories rather than news announcements. 
Other (younger) people probably would not have made that assumption.


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-28 Thread Araq
> You access them from the blog: 
> [https://nim-lang.org/blog.html](https://nim-lang.org/blog.html). Why isn't 
> this obvious?

Because it should be named "news" instead?


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-26 Thread jlp765
> Why isn't this obvious?

Blog didn't register with me as being what I was looking for. 


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-26 Thread dom96
> However, the new web site doesn't make that easy to do. The files sit in the 
> webnews directory of the repository, but how you access them from the web 
> site is a mystery to me.

You access them from the blog: 
[https://nim-lang.org/blog.html](https://nim-lang.org/blog.html). Why isn't 
this obvious?


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-26 Thread LeuGim
> better concept system from @zahary?

Yes, [docs](https://nim-lang.org/docs/manual.html#generics-concepts) (except 
VTRef).


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-26 Thread komerdoor
Thanks. I will have a look.


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-26 Thread mashingan
Changelog for 0.17.0 
[https://nim-lang.org/blog/2017/05/17/version-0170-released.html](https://nim-lang.org/blog/2017/05/17/version-0170-released.html)

In home page of the web, there's section for featured project like Karax (a 
Single Page Application framework), and zengine (game framework).


Re: Been away for 9 months. What changed? Need some help to get back on track.

2017-08-26 Thread jlp765
You should be able to look at the **release notes** from the past releases.

However, the new web site doesn't make that easy to do. The files sit in the 
`web\news` directory of the repository, but how you access them from the web 
site is a mystery to me.


Been away for 9 months. What changed? Need some help to get back on track.

2017-08-26 Thread komerdoor
I've been away from Nim for about 9 months. Can anyone give me a quick update 
about what happened in this time to help me get back on track?

A summary of the last things I did and my level of understanding Nim at that 
time: 
[https://news.ycombinator.com/item?id=13357533](https://news.ycombinator.com/item?id=13357533)

Anything improved, like the better concept system from @zahary? New interesting 
projects / repositories?