Re: Convincing my friend about Nim

2019-01-01 Thread abdulhaq
He has a different opinion to you, it doesn't matter. Jut have a little laugh 
if he complains about Nim. It's not worth losing a friendship over.


Re: Convincing my friend about Nim

2019-01-01 Thread kcvinu
The one and only advantage of C# and VB.Net is the best in class IDE visual 
studio. If Nim has an IDE like visual studio, then Nim is the king among all 
languages. Really. 


Re: Convincing my friend about Nim

2019-01-01 Thread ggibson
Oh funny, one reason I was attracted to Nim was because it _was_ immediately 
readable to me, that its focus was about readability and representation. This, 
compared to rust, for example, which makes me start clenching my teeth. If a 
language goes down that rabbit hole, then it should just be like APL and 
actually be a new language with new symbols and everything so as to remain 
concise. /rant Okay, so what does that mean about your friend? Well, sounds 
like they just haven't used many languages, so they don't have the experience 
to really judge.


Re: Convincing my friend about Nim

2019-01-01 Thread moerm
Pardon me but it seems that you should change friends rather than language.

What your friend said about Nim being incomprehensible for people who don't 
know Nim is simply ridiculous BS.

If I were in your place -[and](https://forum.nim-lang.org/postActivity.xml#and) 
\- for whatever weird reason - wanted to keep that friend I's simply tell him 
"You are right. Thanks, I've seen the light. But as I'm a weird guy I'll play a 
bit more with that language Nim although c# is so so much better". That should 
help as it would address and sooth both major factors, namely your friends 
cluelessness and his urgent desire to be "right". (But then, neither am I in 
your place nor would I hesitate a split second to tell such a moron Adios...).


Re: Convincing my friend about Nim

2019-01-01 Thread lqdev
First, I'd like to thank you for all the answers. You really gave me some good 
knowledge about how I could approach my friend. However, he's found another 
argument I really can't beat with my own knowledge. He says Nim's unreadable 
for programmers coming from other languages.

My main contr-argument was that you can always read the documentation; heck, 
the tutorial for the language is well-written and easy to understand. But he 
keeps bragging that he doesn't want to read any docs; he just wants to 
understand code in any language.

For me, that really shows his ignorance and lazyness. It's not really hard to 
deduce Nim's language features, some may be easier to deduce than others, but 
if I wouldn't know Nim and read the codebase of, for example, `nimforum`, as 
@Araq suggested, I'd at least try to understand the code using my knowledge 
from other languages. I probably wouldn't understand what `proc` means, or 
``*`, or how generics are written, but by looking at more source code I'd be 
able to deduce what at least 2 of those 3 examples do (can you guess which is 
the hardest to deduce?). But the fact is, every developer is different, some 
may be too lazy to even look at something's source code, or too lazy to try and 
deduce the functions of different operators. You cannot develop software 
without the use of documentation, and that's what he doesn't understand and 
keeps bragging about.

Again, thank you for all the answers, and happy new year!


Re: Convincing my friend about Nim

2019-01-01 Thread dom96
I had a similar gang of "friends" a couple of years ago. We used to hang out on 
an IRC network that they ran, eventually I decided to just leave it because 
having them complain about Nim every time I wanted to discuss one of my 
projects became far too tiring.

Many of the languages they were proponents of were niche too, one example was 
[ooc](https://ooc-lang.org/). They didn't stay loyal to these languages for 
long and the language's themselves were abandoned by their authors.

So yeah... you likely won't be able to get through to your friend. If possible, 
just ignore them.


Re: Convincing my friend about Nim

2019-01-01 Thread moerm
> First of all, he states that not having such an indentation-based syntax 
> allows for more freedom ...

He is right in that but only in one regard: Having explicit block markers (like 
{ and } or `begin` and `end`) allows for (visually largely unstructured) 
"streams" of code. If that were really, really needed, one could however 
introduce a "3 spaces" symbol, say '°'.

It might be noteworthy that quite some studies, typically made in the context 
of some entity seriously needing that question answered, have clearly shown 
that readability _is_ important, in fact _very_ important. While I know of no 
study addressing indentation based blocks vs marker based blocks it seems 
reasonable to assume that both are clearly on the good side (remember: The 
issue is (only) readability). The studies that were made all and consistently 
demonstrated that "curly blocks" are clearly the worst approach (~ worst 
readability) and introduce significantly more errors and are significantly 
worse to maintain.

> First of all, he really dislikes the lack of brackets, and the "misuse" of 
> them

I would (mildly) agree. It _does_ make sense to have `[]` meaning "something 
array like" always (although I personally and subjectively - and unreasonably - 
prefer [] over <>). More importantly however I reject your friends criticism 
because It's basically just based on "it's not c# like and hence it's bad!". 
That's, Pardon me, just stupid.

> Next up, an "invalid" argument. He says macros are dumb, and you could just 
> write code normally without them.

Very wrong. Obviously your friend, like so many in the curly braces camp, fails 
to understand the concept of readability which is closely linked to 
maintainability and probability of errors. Probably your friend has become a 
victim of the (utterly stupid) "fun" paradigm (Typical statements are "It's fun 
to develop in XYZ" or "I'm a developer because it's fun") - that camp has been 
found to be responsible to a very large degree for the major clusterf_ck we're 
in today (e.g. funny bug of the month in SSL).

They are, Pardon my french, braindead morons. Here is the truth and the only 
one in that regard: software development is an _engineering_ discipline - and a 
very complex one at that. If the "fun" camp guys were also in bridge building, 
railroads, air traffic etc. humanity probably would be largely extinguished by 
now (the survivors living deep in the woods, far away from killing 
"civilization" with tech).

Just like with bridges or railroads the relevant factor is absolutely _not_ 
whether those who designed and built it felt it was "fun" to do but whether the 
result was reliable, meeting the needs, etc.

Macros not only allow for comfort but more importantly they allow for 
"centralized code fragments". And that is directly linked to probability of 
error as well as to maintainability. Just have a look at crypto code; you'll 
almost invariably find (long) macros. Often the very core of an algorithm is 
implemented in one or more macros. And I think even your friend would accept 
that the people who gave us AES or Blake2 certainly aren't stupid.

Whenever some halfway responsible entity _really, really_ needed reliable and 
bug free software they turned to languages like Ada, Eiffel, Ocaml, etc. (along 
with _formal_ spec., modelling, and verification) as soon as and when such 
options were available. Hell, even Pascal was used because it might not have 
been a "nice" language but it offered many of the features high reliability 
scenarios required.

So, to summarize it somewhat rudely: why would you even care about the opinion 
of someone who doesn't have even the slightest clue what he talking about? You 
are like some engineer debating with an idiot whose arguments basically are "my 
(make shifted wannabe) crap is "cool" and "fun" while your (properly working 
and reliable) bridges and railroad systems are boring and uncool!.

Btw, I myself am not at all against .Net (any more). For one it incl. Mono 
(nowadays) offers reasonably good and wide linux support, too and isn't a pure 
Windows world thingie any more. More importantly though, Microsoft (funnily 
unknown to many) has invested tons and tons of money in safety, reliability, 
and security research and has really done a lot of work and has created much 
progress in that field. Just think of Z3 ( _the_ solver), Boogie (an "easy" 
interface language for Z3), code contracts (i.a. for c#!), Dafny (a safety 
targeting language that actually works) and more. With their async/await work 
they have tried to make .Net also useable for servers but although they seem to 
have done it well I personally and subjectively limit my .Net use for business 
applications.

Well noted this comes from someone whose first (and then beloved) language was 
C (and, I have to admit it, then I also was a "coolness" obsessed idiot) and 
who taught C. In fact I still sometimes implement certain tricky things in C 
because Nim does 

Re: Convincing my friend about Nim

2018-12-31 Thread Araq
Maybe show him `nimforum`'s source code or any other project that's DSL-heavy, 
readable and concise.


Re: Convincing my friend about Nim

2018-12-31 Thread rect0x51
I have this feeling that the particular quote of Araq will become really famous 
and be remembered. So happy I was the one asking! :D


Re: Convincing my friend about Nim

2018-12-31 Thread SolitudeSF
Tell him that triple-digit iq is required to understand nim's greatness


Re: Convincing my friend about Nim

2018-12-31 Thread ggibson
I need a work break so this is a bit long :p If your friend isn't just having 
fun with you, then I wouldn't try explaining it, but focus on accepting the 
difference to stay friends. This squabble happens a lot in the young tech 
crowd, but really any young crowd. Your friend is adopting what sounds like the 
attitude of someone who is afraid and doesn't yet know how to deal with it. 
That might sound strong, but most things we do are guided by fear or other 
primal emotions. Guessing they are in secondary school or early university, it 
may take them another 5-10 years (that's being generous) to develop the 
personal awareness and introspection to ask themselves why they are having this 
reaction. Only then could you have a reasonable conversation with them. Some 
possible reasons for that fear may be your friend is afraid to branch out from 
C#, because learning [all of] C# is such a monumental task they couldn't 
imagine doing more (it is a bloated language after all). Or perhaps they are 
afraid you will learn stuff they won't know and they like to have an upper hand 
with you. Or maybe they're afraid all their effort in learning C# is wasted 
(it's not) if there's actually other newer cooler languages they "should've" 
been focusing on. There are many possibilities, but I would bet they are afraid 
of something. Cheers.


Re: Convincing my friend about Nim

2018-12-31 Thread trtt
Tell him the truth: C# is a kitchen-sink language for microsoft fans which is 
less expressive than nim and it also has a slower and bloated runtime.


Re: Convincing my friend about Nim

2018-12-31 Thread shashlick
Opinions are a dime a dozen, no guarantee that any opinion is superior. If you 
do have strong opinions, enjoy them while they last.


Re: Convincing my friend about Nim

2018-12-31 Thread juancarlospaco
I never seen C# outside of MS Windows and related.

Just say that indentation brackets on Nim are written like `#{` and `#}` ;P


Re: Convincing my friend about Nim

2018-12-31 Thread sky_khan
Tell him he is right on all matters.

[https://tanndera.com/pin/the-secret-to-eternal-happiness](https://tanndera.com/pin/the-secret-to-eternal-happiness)/


Convincing my friend about Nim

2018-12-31 Thread lqdev
Hello,

First of all, I don't want to hate on other languages, or anything. I don't 
have anything against other languages' syntaxes, and I'm OK with people using 
them. But I have a friend who has recently "turned against me" – when I started 
using Nim, he started being really angry (no, really, he just started saying 
I'm stupid, etc) that I'm not using a normal (multiple quotes 
intentional) language. His main argument is Nim's syntax, even though he's 
never really tried to code in the language. He's pretty much a C# fanboy, he 
says the syntax is perfect and "it can run on many platforms" (I strongly 
disagree with that).

My main argument is that if he'd finally start coding in an ergonomic language 
like Python or Nim, he'd finally feel how easy it is to write and read code in 
it. What he dislikes the most, is the indentation-based syntax, and a few other 
"weirdnesses" you don't see in typical languages.

First of all, he states that not having such an indentation-based syntax allows 
for more freedom, even though he doesn't indent his code badly. I think this 
argument is just stupid, taking into account all of his programming practices.

But the main deal is about the syntax features themselves. I'm going to use 
this code sample to describe the problems he has with the syntax: 


type
  Box[T] = object
value: T

proc box*[T](value: T): Box[T] =
  result = Box(value: value)


Run

First of all, he really dislikes the lack of brackets, and the "misuse" of 
them. As I said, he's really used to C#, and thinks the generics syntax is 
stupid. His problem with it is the use of squared brackets `[T]` instead of 
angled brackets ``. I thought it was a weird decision too, but later found 
out it didn't really clash with the rest of the language and worked really 
well. Pretty much all of his jokes now rely on this argument, even though it's 
a preference and he shouldn't hate the language just because his preferences 
are different.

Next up, an "invalid" argument. He says macros are dumb, and you could just 
write code normally without them. I sort of agree with him, but no. Macros are 
really useful, especially when you have to write a ton of repetitive code when 
you want to embed a scripting language for your application, or something 
similar.

His last argument is that Nim is not very popular. I left it for last, because 
it's not an argument – you can't judge something by how popular it is.

I tried approaching him with a quote from Araq:

> Nim's target audience is the enlightened/misguided programmer who doesn't 
> understand why there should be more than one programming language.

And yet, he keeps being stubborn about his opinion.

How can I convince him to at least stop hating the language so much, or to 
change his decision and try out the language?