GitHub Commits Reveal The Top 'Weekend Programming' Languages (medium.com)
An anonymous reader writes:
Google "developer advocate" Felipe Hoffa has determined the top "weekend programming languages," those which see the biggest spike in commit activity on the weekends. "Clearly 2016 was a year dedicated to play with functional languages, up and coming paradigms, and scripting 3d worlds," he writes, revealing that the top weekend programming languages are:
Rust, Glsl, D, Haskell, Common Lisp, Kicad, Emacs Lisp, Lua, Scheme, Julia, Elm, Eagle, Racket, Dart, Nsis, Clojure, Kotlin, Elixir, F#, Ocaml
Earlier this week another data scientist calculated ended up with an entirely different list by counting the frequency of each language's tag in StackOverflow questions. But Hoffa's analysis was performed using Google's BigQuery web service, and he's also compiled a list of 2016's least popular weekend languages -- the ones people seem to prefer using at the office rather than in their own free time.
Nginx, Matlab, Processing, Vue, Fortran, Visual Basic, Objective-C++, Plsql, Plpgsql, Web Ontology Language, Smarty, Groovy, Batchfile, Objective-C, Powershell, Xslt, Cucumber, Hcl, Puppet, Gcc Machine Description
What's most interesting is the changes over time. In the last year Perl has become more popular than Java, PHP, and ASP as a weekend programming language. And Rust "used to be a weekday language," Hoffa writes, but it soon also grew more popular for Saturdays and Sunday. Meanwhile, "The more popular Go grows, the more it settles as a weekday language," while Puppet "is the champion of weekday coders." Ruby on the other hand, is "slowly leaving the week and embracing the weekend."
Hoffa is also a long-time Slashdot reader who analyzed one billion files on GitHub last summer to determine whether they'd been indented with spaces or tabs. But does this new list resonate with anybody? What languages are you using for your weekend coding projects?
Rust, Glsl, D, Haskell, Common Lisp, Kicad, Emacs Lisp, Lua, Scheme, Julia, Elm, Eagle, Racket, Dart, Nsis, Clojure, Kotlin, Elixir, F#, Ocaml
Earlier this week another data scientist calculated ended up with an entirely different list by counting the frequency of each language's tag in StackOverflow questions. But Hoffa's analysis was performed using Google's BigQuery web service, and he's also compiled a list of 2016's least popular weekend languages -- the ones people seem to prefer using at the office rather than in their own free time.
Nginx, Matlab, Processing, Vue, Fortran, Visual Basic, Objective-C++, Plsql, Plpgsql, Web Ontology Language, Smarty, Groovy, Batchfile, Objective-C, Powershell, Xslt, Cucumber, Hcl, Puppet, Gcc Machine Description
What's most interesting is the changes over time. In the last year Perl has become more popular than Java, PHP, and ASP as a weekend programming language. And Rust "used to be a weekday language," Hoffa writes, but it soon also grew more popular for Saturdays and Sunday. Meanwhile, "The more popular Go grows, the more it settles as a weekday language," while Puppet "is the champion of weekday coders." Ruby on the other hand, is "slowly leaving the week and embracing the weekend."
Hoffa is also a long-time Slashdot reader who analyzed one billion files on GitHub last summer to determine whether they'd been indented with spaces or tabs. But does this new list resonate with anybody? What languages are you using for your weekend coding projects?
Java is the classic weekday language, taking COBOL's place.
Not that it's poorly designed, but... getting the right things to happen is work that people need to get paid for.
Subject says everything.
You've hit the nail on the head, boy.
What brand of hammer do you use for your weekend carpentry projects?
Seriously.
Programming languages do not matter. Any program can be written in any language. Programming languages are as interchangeable as hammers.
That program in Java? I know wer're not sobhuman.
Pretty neat week-end language IMO... Not for a living though!
My repositories that contain QuickBASIC language code for compilation with QB64 are tagged Visual Basic by GitHub.
As long as the tool fits the job, use what you are most proficient using.
Learned Java on my own a couple years ago, but have never used it in a professional environment. Do a lot of Python on my own. Do C/perl/bash/some C++ at work.
// I wanted Python, most others wanted Perl
/// Boss said "3,000 engineers here know Perl, you know Python. Wanna support 3,000 engineers?"
//// bummer, but he had a damned valid point
Love Python, Java is OK.
Then again, I've never used github neither personally nor professionally, I'm gonna guess these results are biased heavily towards github users, the rest of us (Perforce for me) are completely left out.
/ several years ago we were writing a new test suite
So during the week, I get my normal work done, but on Friday afternoons, if I've been frustrated with some part of the build system I've written or I want to make something about my process better, I work on tinkering with emacs. Few people need elisp as their main language, but if they're using emacs, they're working in elisp on the weekends to make the rest of their week more liveable.
Is that like when the CEO creates an unrealistic deadline out of thin air and I spend the weekend coding a hack to make it look like a feature kinda sorta works? Surely this study isn't suggesting that people are spending their weekends writing programs in obscure languages just for fun?!?!?
And nowadays licenses are typically managed from a server so it ain't easy to run at home. Otherwise I'd not expect to see it so weekend unpopular. Most people don't want to bother with Octave.
Yes, sounds like awesome job security. You're a goddamn fool for saying no, now there's at least 3000 engineers that can do your job better than you.
Perl is more popular than Java? Not on any day of the week in 2017. This is garbage.
I write FORTRAN in every language!
When I apply for coding jobs, my applications are ignored, every time I apply.
When I contribute to open source projects, my contributions are ignored, every single time.
When I write my own open source software, no one uses it, not ever.
I don't know why I bothered going to university, and I don't know why I bothered earning a computer science degree, because it was a complete waste of money, and I didn't need to earn any degree to be unemployable and ignored.
Fuck coding. Fuck GitHub. Fuck you.
OK bye Bob. I do needful. Thank for country. I take job.
Programming languages are as interchangeable as hammers.
You sound like someone who has never visited the majesty of the Hammer Museum.
The comparison of programming languages to hammers in inadvertently apt; you conclusion not at all.
Some programs are simply much better at some tasks than others. That is why it's good to be familiar with several, instead of just choosing one and claiming " Programming languages are as interchangeable as hammers.".
"There is more worth loving than we have strength to love." - Brian Jay Stanley
.. it is no longer a serious contender for real work. Take it off your resume and don't look for any jobs with it because they will be going away.
+1
Come on. All the cool kids use Erlang Outlaw Techno Psychobitch
http://saveie6.com/
top weekend programming languages are: Rust, Glsl... Kicad...
I use KiCad to create schematics and PCB designs. When, and how, did it become a programming language?
'The Economy' is a giant Ponzi scheme whose most pitiable suckers are the youngest among us and the yet-unborn.
Github is especially popular with the Linux crowd. It was, after all, invented to improve development coordination of Linux.
This population skews the results in three significant ways: .NET languages (favored by programmers who want to make money with their code) will be underrepresented in the statistics.
1. Towards obscure and fad languages. This is linked to the extreme fracturing of Linux programmers, each group of which fiercely promotes its own favorite language and tools.
2. Away from Windows. GitHub is especially popular with the open source crowd. This means that C# and
3. Away from projects developed by less-than-genius developers. GitHub still has a steep learning curve for a lot of developers to master, especially those who have been raised on TFS and SubVersion. The obsession with cloning and branching is foreign to these programmers, and they often don't see the point. These types of programmers are typically creating relatively straightforward Web applications, and tend to write their code in C#.
I suspect that the real numbers for weekend coding would feature Microsoft .NET languages much more prominently, if all types of repositories could be counted.
Counting the most commits is only a step above counting kloc's. Or is it just the new kloc? If a language is at the point where it finally has it together (good std library support, intuitive syntax, etc.) one might expect projects in that language to get to stable condition much faster with fewer commits. The more messy and error-inducing a language is, the more the projects in it need to be fixed. So it would see more commits (assuming enough people are conned into using it).
Any guest worker system is indistinguishable from indentured servitude.
There is no way that there is still 3000 people who wouldn't switch from Perl to Python in the entire world. Are you working with aliens.?
Any guest worker system is indistinguishable from indentured servitude.
Comment removed based on user account deletion
C++ always strict me as a great weekend language: obscure, featureful, fun to play with, but damned if I'd want to use it on a "professional" project.
So Nginx is a programming language now ? I always thought it was an HTTP and proxy server, not a programming language.
Count me as one of them. If it weren't for Tensor Flow, I wouldn't touch python with a 10 foot pole.
what is surprising about perl? Perl 6 was finally released after like 15 years so obviously people wanted to play around with it.
Short answer to this one, Java during the week because it pays the bills.
Weekends are usually Raspberry Pi or Arduino projects, and Python seems to dominate the Pi libraries.
When you have a large code base in language X and 3000 (competent) developers working on it: why the hell would you want to switch to a different language?
Doing new stuff in a different language would be ok, but ditching the old code and rewriting it?
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
Very funny! I also liked the one about NoSQL being web-scale referred in a comment some weeks ago.
Custom Solvers 2.0 = Alvaro Carballo Garcia = varocarbas.
That's interesting. The only practical use for Objective-C++ is to write wrappers for C++ classes to be used from Objective-C code or vice versa. So people are writing wrappers for either their C++ code or their Objective-C code on the weekends?
I've used Livecode for all my "I need a program to do X immediately" needs for years. It has since become open source and free for most usesâ"including all of mine. The paid additional features, like compiling for iOS, are always available if needed. One if the best parts if using Livecode is its integrated IDE. It is exceedingly simple to fire it up, create a New project, and drag a few text fields and buttons on to its window. I've been using the language, or one of its ancestors, since 1988 when I first started using HyperCard on Macs. But Livecode today runs equally well on all platforms. Being able to compile from any of those platforms to make a stand-alone executable for any other has also been invaluable. I always recommend Livecode to anyone that wants to learn a little bit of programming. It's quick and easy to learn and use.
AutoHotkey... which is basically C with optional curly braces... Did you hear that Python? optional curly braces... imagine that.
Wtf language is nginx. Sounds more like a web server.
Python is very heavily used both in commercial day jobs and by neophyte/weekend coders. The fact Python appears on none of these lists and that the likes of Nginx - a web server - is suggested to be a programming language, clearly indicates that this "analysis" is utterly worthless.
GIGO. This whole story is garbage.
Who you calling a boy, women.
PHP Hammer
I know you were going for a funny mod, but I'm one of those 3000 people. I consider Perl my primary programming language. It just jibes well with me.
I've looked at Python a few times but just don't get what's so good about it or why it's so popular. It seems like a 'standard' OO language, nothing special, method names contain strange underscores once in a while.
I know Ruby (not Rails) though, and someone once said that Ruby and Python are mutually exclusive: once you know one, you can't learn the other, because they're so similar that you don't see the point of learning the other.
Since when did NGINX become a language? WTF are you trying to pull /.
Doing new stuff in a different language would be ok, but ditching the old code and rewriting it?
Well, rewriting old Perl code... Yeah, I guess. Of course, if it were old Python code, it wouldn't be an issue. Perl, as the saying goes, is a write-only language.
Any guest worker system is indistinguishable from indentured servitude.
Learn more about what 'yield' keyword does in it. And then learn what the 'with' keyword does in it (deterministic RAII within a gc-based language). Then read and fully understand what is a 'namedtuple'. And then you'll realize that it is pretty far from a standard OO language. Just as a function is a generalization of the concept of a stack, yield-based generators (closures) are a generalization of the concept of a queue. 'namedtuple' makes visitor pattern obsolete. So a lot of the hoops which people are forced to jump through in OO languages are naturally swept away by Python's native constructs. And because the white spaces are used for scope delineation, it is imminently readable.
Any guest worker system is indistinguishable from indentured servitude.
Oh, and I guess I forgot to mention that it has all the constructs one would expect in a mature functional language (map, filter, lambda, reduce). But I forgot about it because they were so obviously there from the beginning.
Any guest worker system is indistinguishable from indentured servitude.
Have you ever seen any forth code?
Go and some python on weekends.
Should I try Rust next?
During the week it is mostly C, some C# and for scripting, Python.
Ah, would that there were only 3000 mindless trolls left on the internet.
Lame piss.
Seriously? It really gets you going that someone you don't even know would suggest that Perl is much easier to write than to read? I have never heard in my life anyone say that they saw a project which was written in Perl and the code was beautiful. I've heard it about C and Python... and, yes, about Java. I've even heard it about Bash scripting framework. But never about Perl. I guess your experience may be different, but if it is, I assure you that it is fairly unique.
Any guest worker system is indistinguishable from indentured servitude.
I'm probably showing my ignorance here, but ...
Learn more about what 'yield' keyword does in it.
Callback function with a closure, I think? Ruby has the same keyword, and the Perl equivalent (not a keyword) was used plenty in the book Higher Order Perl.
And then learn what the 'with' keyword does in it (deterministic RAII within a gc-based language).
Lexical file handles close themselves when they go out of scope in Perl too. Other objects have the DESTROY method.
Then read and fully understand what is a 'namedtuple'.
An immutable array with custom index names? Kind of like a hash?
And then you'll realize that it is pretty far from a standard OO language. Just as a function is a generalization of the concept of a stack, yield-based generators (closures) are a generalization of the concept of a queue.
Cool, I've been using these generalisations for quite a long time already.
'namedtuple' makes visitor pattern obsolete.
I'm afraid I'm not big on OO patterns (they're always explained in UML or some other difficult-to-grasp way), but it sounds like it's describing a callback?
So a lot of the hoops which people are forced to jump through in OO languages are naturally swept away by Python's native constructs. And because the white spaces are used for scope delineation, it is imminently readable.
Uh-huh. Never cared about the whitespace, but never held it against the language either.
Oh, and I guess I forgot to mention that it has all the constructs one would expect in a mature functional language (map, filter, lambda, reduce). But I forgot about it because they were so obviously there from the beginning.
map, grep, sub, List::Util::reduce (the module is in core)
Ruby has Enumerable#collect, Enumerable#select, lambda, and Enumerable#inject
Not the same AC, but we're kind of tired of the same cheap shot always being used against Perl.
People using it never seem to bother with any other, more concrete criticism. So yes, 'lame piss' as the GP said.
Python mixed with a touch of Powershell for the weekdays. Learning Lua and a little Go on the weekend.
Actually, that's the nail on his thumb that he hit. You don't have nails on your head.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
Sounds like you don't know any good Perl programmers.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
Callback function with a closure, I think?
As long as you understand what closures are, you get it. But you mentioned that you thought it was run-of-the-mill OO language. Closures are not OO concepts. They allow function-like constructs to keep state in a reentrant function without binding it to any one object. It's not a conceptual step above or below OO development. It's a lateral addition to the (let's call it) concept pool. The fact that it is a 1st class citizen in Python (with its own keyword rather than hacked together from other language constructs) makes queue's effectively unnecessary. You just write generators which pump out data as you need it. In OO languages, you'd have to create an object and methods to have this behavior. In Python, you it's succinct and easy-to-read callables. Syntactically, it doesn't make the code set things up as callbacks (which are hard to debug), but as functions calling other functions (so it's much more intuitive and easier to debug).
Lexical file handles close themselves when they go out of scope in Perl too. Other objects have the DESTROY method.
Not quite. Destroy gets called when the object garbage collected. Context manager's __exit__ is called when the "with" scope is exited. So it's deterministic. Like a dtor of a C++'s object created on stack. You can use it to manage connections, locks and there is a well-known idiom combining closures (yielding functions) and context managers to produce cascading contexts. Mind you, this is still readable at a glance.
An immutable array with custom index names? Kind of like a hash?
No, it has dictionaries. Those are like hashes. Or, if hashes keep the order in which elements were added, then ordereddict. namedtuple is like an array which can be called by either positional attribute (attribute 3) or named attribute (attribute .something). This trivializes db bindings. At the same time, it allows to have the function run on all elements of a tuple (iterating by positional attribute). Mind you that you can do it without any extra hoops to jump. 'namedtuple' itself creates a factory method which can be used to create instances of a tuple, rather than creating instances of a tuple itself. So instead of doing $inst['something'], you can do inst[3] or inst.something (depending on how you are using it).
visitors are the main reason the book of 4 was so widely read. They allow for double dispatch (demarshalling based on arguments) in languages which only support single dispatch (polymorphism). And, as I mentioned, because of namedtuple, it's largely unnecessary in Python. Even though people coming to Python from Java do overuse it out of ignorance.
map, grep, sub, List::Util::reduce (the module is in core)
Well, map, filter, lambda, reduce are functional-language concepts. I didn't say that Perl didn't have them. I just said that they are 1st class citizens in Python. So to call it just an OO language is to ignore some of its best and most widely-used features.
In fact, writing Python code in a completely object-oriented fashion is something which almost immediately gives you away as a Java programmer. C++ programmers learn about 'with' fairly quickly because they want RAII guarantees which cannot be provided by loop-detecting garbage collector. Context managers, by the way, need not be objects. They are more often closures (so the closure ends when the context in which the context manager exists ends). Although this explanation sounds more complicated than the much clearer code which implements it.
Any guest worker system is indistinguishable from indentured servitude.
Well, now you can't say that anymore. I have seen beautiful Perl with my own two eyes. It was awesome.
/ I had been writing Perl regularly for a decade at that point. I did feel like I had found an unicorn.