
Fun facts about Rust's growing popularity - JoshTriplett
http://www.jonathanturner.org/2017/10/fun-facts-about-rust-growth.html
======
harry8
You have to take all this with a mountain of salt. Boosterism is the norm in
our space, sadly. If one devotes time to learning a technology it is
personally advantageous if that technology takes off. Hence you get this kind
of "My programming language and community are already wonderfully perfect and
kick more goals than there are nets to kick into" stuff. And the worse, yet
related utter rubbish we see all the time. "C is a virus", "Perl is line
noise", "failure to use JVM style garbage collection is idiotic and unsafe".
etc etc. You can swap out those languages and swap in any others you like.
It's pervasive and that is a shame.

This is the same kind of thing even if less stomach turning than the negative
crud. It's pretty crappy and doesn't really belong here any more than Oracle
and IBM global services adverts do. It is not anything like objective and in
any sensible assessment of Rust should be roundly ignored. Just like big
consulting firm whitepaper "Are you enterprise ready!?!?!"

All the very best to Rust hackers, may you achieve your technical goals in
both your design and implementations and have loads of fun on the way!

~~~
rootlocus
It's a list of facts. You don't need a "mountain of salt" to take a list of
simple, easy to check facts.

> you get this kind of "My programming language and community are already
> wonderfully perfect and kick more goals than there are nets to kick into"

It doesn't say how wonderful Rust is, it says how many contributions it had,
how many users on gitter, etc. You can interpret that like you want, but
that's just your interpretation.

~~~
blub
It's guerilla marketing where one person's fact is another's spin: the Amazon
job requiring in-depth domain knowledge and leadership skills mentions rich
Java or C++ experience as desirable while also requiring familiarity with
Python or Rust.

The resulting fact is then "Amazon is hiring for developers with Rust
experience.". If a candidate checks the other boxes they'd probably hire them
if they knew VisualBasic... :)

Personally I don't like this forceful advertising stuff unless maaybe it's for
a really good social cause which is otherwise ignored. e.g: privacy

~~~
moron4hire
How is it forceful? It's a link on a link board site. It said it was about
Rust in the title. If you don't care about promotion of Rust, you should
probably have not read the article.

This attitude pisses me off because advertising is a necessary task in all
projects. It doesn't matter if it's commercial or completely free, volunteer-
built open source software. You need to advertise the project to ensure enough
people know about it to achieve a lasting, critical mass of users and
developers. But this attitude establishes a norm of resentment towards project
maintainers who are just trying to do well by their projects and their users.
I think young people pick up on this and it makes them reluctant to promote
their own projects.

I have no use for "know your place"isms.

------
rustacean
For me, A totally cs newbee, the Rust team has established a great community.
I have learned a lot from the e-mentor(contribute to rust or rust lib directly
with the guidelines from rust core developers). Now I’m the founder of
Rustacean group in my school.

~~~
swampthinker
Rustacean, that's the first time of heard of that name. Absolutely fantastic

~~~
yammajr
You should enjoy this then:
[http://www.rustacean.net/](http://www.rustacean.net/)

------
randomThoughts9
Well, a fun fact: there is nothing funny about that list :). It should have
been called "Some facts about Rust's growing popularity".

Now, my predicament: I love Rust's type system and tooling, but it's really
hard to justify to myself the pain of writing correct Rust code (borrowing,
lifetimes, etc.) when I know I can get almost the same effect by using a GC
language + immutable messages.

And I don't need that last drop of performance either.

So if you just want a native language with a good type system and a growing
ecosystem, where do you go? Still Rust or something else?

~~~
lordnaikon
You're overlooking that Rusts "solution"(borrowing, livetimes, etc. ) is not
only solving the same problem that garbage collection tries to solve. Garbage
collection is "only" solving the "memory resource problem". Rusts solution is
a more general solution to the "general resource problem" .. like file
handles, sockets and of course memory and besides that gives you tools to
never get bitten by data races. Nothing (besides memory) garbage collection is
helping you with. You have to mitigate those problems still in garbage
collected languages like Swift, Go, Java, Python (to name a few) and various
other solutions to help with this (try with resource, with statement,
immutable message passing etc.) Rust tries to give you one solution "to rule
them all". Is this better, worse? Idk – nobody does, the Rust people are
trying to figure this out :) Nothing is carved in stone. And if you're more
productive in another language you should use it! But you can only know by
figuring this out for yourself. Rust works well for me – that's no guarantee
that you have the same experience. Rust is still hard to learn and one needs
to question himself if the effort in learning pays out at the end – it has for
me, i guess/hope ;)

~~~
Mouse47
>Rusts solution is a more general solution to the "general resource problem"

It's true. Ever since I got familiar with the ownership concept, I've taken to
writing C# IDisposables with disposable member variables like this:

    
    
       public MyObject(){
          this.myResource = new DisposableResource();
          this.ownsMyResource = true;
       }
    
       public MyObject(DisposableResource resourceToUseThatIDontOwn){
          this.myResource = resourceToUseThatIDontOwn;
          this.ownsMyResource = false;
       }
    
       public void Dispose(){
          //not pictured:  .NET's boilerplate dispose code
    
          if(ownsMyResource) myResource.Dispose();
       }
    
    

For the client I'm contracting with right now, mismanagement of disposable
resources is the #1 issue in the codebase. 100k lines of code, and it's never
clear who should be disposing connections. There are some objects with
multiple constructors (like above) that have 'conditional' ownership. In Rust,
it's impossible to have this problem, period...although the above C# construct
simulates it, lol.

~~~
randomThoughts9
I agree and I appreciate what they are trying to do.

But just as a counter-argument, look how a simple lock looks like in Rust [1]:

    
    
      fn main() {
          let counter = Arc::new(Mutex::new(0));
          let mut handles = vec![];
    
          for _ in 0..10 {
              let counter = counter.clone();
              let handle = thread::spawn(move || {
                  let mut num = counter.lock().unwrap();
    
                  *num += 1;
              });
              handles.push(handle);
          }
    
          //...
      }
    

[1] [https://doc.rust-lang.org/book/second-
edition/ch16-03-shared...](https://doc.rust-lang.org/book/second-
edition/ch16-03-shared-state.html)

\----- edit: Just to clarify my point. The ownership model is a beautiful
solution to the resource management problem. And as the parent pointed out,
some concepts can be cleanly borrowed/reused in other languages.

But now, in Rust, in practice, you realize that this model requires a lot of
boilerplate code just to make the borrow checker happy, even for simple things
like using a lock: create Arc(Mutex(data)); clone the arc reference; move the
new Arc reference to the new thread.

~~~
GlitchMr
The issue really is lack of scoped threads forcing usage of reference counting
to figure out when to drop a value. With crossbeam scoped threads
implementation this looks much nicer.

    
    
        extern crate crossbeam;
        
        use std::sync::Mutex;
        
        fn main() {
            let counter = Mutex::new(0);
            crossbeam::scope(|scope| for _ in 0..10 {
                scope.spawn(|| *counter.lock().unwrap() += 1);
            });
            println!("{:?}", counter);
        }
    

Four lines to declare a mutex, start 10 threads that all lock that mutex,
increase value behind mutex, unlock mutex, and join all spawned threads. There
is a lot going on here (unwrap is arguably a noise here however, but the rest
is straight to the point).

Also, it's possible to use atomic ints here instead of mutex. Verbosity of
mutex actually helps a bit, because locking is fairly expensive and it's
better to avoid locking if possible.

------
soared
> Now over 20% of Rust devs use it at work.

This one jumped out at me. I'd be curious how this compares to other
languages. (I know nothing about rust besides that I see it on hn all the
time, impressive list though!)

~~~
techwizrd
I've been thinking about introducing it at work. There was a good talk at
RustConf about how to introduce Rust to your company.

~~~
shmerl
Do you have a link to it?

~~~
techwizrd
[https://www.youtube.com/watch?v=GCsxYAxw3JQ&t=4s](https://www.youtube.com/watch?v=GCsxYAxw3JQ&t=4s)

~~~
shmerl
Thanks!

~~~
alfiedotwtf
You may also be interested in:

"Supporting Rust by Using Rust"
[https://www.youtube.com/watch?v=4-H6Hn_i4PQ](https://www.youtube.com/watch?v=4-H6Hn_i4PQ)

------
DiabloD3
Best fact: Rust users are apparently called Rustaceans. I did not know this,
and have never seen this wonderful term before.

~~~
reificator
Please please please can we stop with the Rustacean/Gopher/etc crap? You don't
need a cutesy label to identify that you use a tool.

I enjoy Doctor Who (though it's been getting worse for the last 5 or so years)
but I do NOT want to be called a Whovian.

What's the first image that pops into your head when I say "Trekkie"? It's
probably not someone with good health and hygiene, is it?

~~~
ghthor
Check your hangups at the door man. I love being a gopher and a rustacean. I
like being cute and having a cute name for myself and fellow community
members. It's attitudes like this that created the massive gender divide in CS
and it needs to end.

~~~
reificator
On the (very cold) ride into work this morning I realized my mistake.

I did not mean to say that being cute needs to go away. If you want to have a
teddybear on your desk called Mr. Snuggles, that doesn't bother me in the
least.

What bothers me is cutesy labels like what we're talking about here. They're
so commonly used in a manipulative manner that I have trouble seeing them as
anything other than scary.

I don't like them for when people watch TV or listen to music or use a
programming language. And I despise them when companies try to act like
there's a strong bond between employees by breaking them out.

Very, very creepy. Please don't contribute to that. That's all I wanted to
convey.

~~~
7scan
Can you provide examples of this manipulative manner in which they are used?
I'm having a hard time understanding your justification.

------
lain-dono
However, it is still a new programming language. As well as golang. This has
its pros and cons.

However, in cases where people say that some language is bad, it means that it
simply does not fit their tasks.

(sorry, im using google translate)

~~~
Zaak
> However, in cases where people say that some language is bad, it means that
> it simply does not fit their tasks.

I disagree. It is possible for a language to simply be a bad language.
Intercal is intentionally so. I will refrain from mentioning unintentionally
bad languages in order to avoid a flame war.

~~~
junkcollector
Nobody would have accused Brainfuck of being a good language but it turns out
that its radical simplicity works well for integrating with optimization
algorithms for creating self-programming AIs. It's all about a niche, except
INTERCAL, you're right about INTERCAL.

~~~
OtterCoder
Wait, what? I really want to see some links or papers about that. Care to
share?

~~~
junkcollector
[https://arxiv.org/abs/1709.05703](https://arxiv.org/abs/1709.05703) is the
best one which is explained in these blog posts
[http://www.primaryobjects.com/2013/01/27/using-artificial-
in...](http://www.primaryobjects.com/2013/01/27/using-artificial-intelligence-
to-write-self-modifying-improving-programs/)

------
newscracker
I'm not on Twitter, and so cannot contact Jonathan Turner (whose website this
list of facts is on). On this page, some of the links to the Rust Survey
results are broken - they have a prefix of jonathanturner.org and have the
actual survey results link within parentheses. [1] They should be corrected to
link to the Rust Survey Results. [2]

[1]: [http://www.jonathanturner.org/2017/10/(https://blog.rust-
lan...](http://www.jonathanturner.org/2017/10/\(https://blog.rust-
lang.org/2017/09/05/Rust-2017-Survey-Results.html\))

[2]: [https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-
Resul...](https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html)

~~~
steveklabnik
I'll let him know, thanks!

------
dudeonthenet
Rustaceans? Would recruiting agencies go for that in job ads?

"Are you a top rustacean and looking for a challenge in AI and Big Data and
want to work in an international team with young and dynamic rustaceans? "

~~~
kartickv
Good point. The term doesn't sound good. I'd rather call myself a Rubyist or a
Pythonista. What we call something matters. Presentation matters. Some geeks
think they're hyper-rational, but do you turn up to a job interview in
pyjamas? A new programming language should use a positive and cool name.

~~~
mikeash
"Rust" is positive and cool. Job ads can just use "Rust programmer" instead of
whatever cutesy demonym. I don't look at job ads often, but I don't recall
seeing terms like "Rubyist" or "Pythonista" used in them.

------
cutler
Indeed.co.uk has 2 jobs in the UK for title:Rust and one of them is for a Ruby
Developer. When that changes I'll start taking Rust seriously.

------
Thaxll
And yet not a single project written in Rust is out. The only project is Servo
and nowhere close to production.

~~~
nickm12
There's a good chance Rust code is on your machine. If you have a recent
version of Firefox or Dropbox there's Rust inside.

