And I think the answer is probably 1) get useful news about recent and upcoming changes and 2) to socialize. I'm going to guess--possibly just projecting--that most C developers are older and not terribly interested in meeting new "C friends" or jumping into some hot, new "C startup".
That leaves #1. Web/AI-ML/cloud/mobile tech conferences feature speakers from the big tech companies that might reveal, in a talk or a hallway chat, info about which of your problems they are about to solve or to cause. Independent speakers serve a sort of journalist role of gathering intel from the big companies, organizing it, and revealing their findings. It's all about "tell me what I need to know so I can decide what to do".
But there isn't much news about C that most C programmers will want to know in order to make decisions. It's almost like news about algebra or, yes, hammers: mature, slow-changing technologies whose changes seldom impact more than a small percentage of users.
So without reasons 1 or 2, the answer to why aren't there C conferences is basic and boring: what important purpose would they serve?
The problem is on the receiving end.
There are plenty of algebra conferences, though. I’ve been to several. :-)
I agree with your general point, but algebra isn’t quite as slow-moving as you seem to believe.
Unfortunately that doesn't explain why there are not only aren't C conferences today, but there weren't C conferences 15, 20, 30 years ago.
We DID go to conferences or expos for things that were buzzy and newsworthy, which meant the exciting new world of microcomputers: Comdex, MacWorld, etc. But the emphasis was on exposition, not conferencing with others, because we got to see exciting, new things with our own eyes, when that was the only way to see them (couldn't "see" things online). We wanted to see them (and they wanted to show them) to inform our decisions. The makers of C tools filled plenty of booths at the "computer expos", though.
Twenty years ago, we had started having big language conferences. JavaOne was like a religious revival or political rally, but C was the old devil being vanquished, not the Hope of the Future. And Visual-J++ and C# conferences were counter-political rallies, where C was going away as both sides agreed, but to be replaced by what? The makers of C tools still filled plenty of booths at the hardware expos, but there wasn't much demand for a C conference where we could hear, in person, about how C wasn't actually dead yet.
And by 15 years ago, all the hotness that inspires a crowd to gather for a conference was based on changes relevant to the WWW. If C had reinvented itself with shiny, new async networking, web service & e-commerce building blocks, concurrency, and whatever in its standard libraries or some such approach, there definitely WOULD have been C conferences. That would have been big news (and probably a bad choice, but that's a different question.) Without something like that, there is still plenty of demand for C, but little demand for a C conference.
To spread the knowledge how to actually write C code that meets a certain quality level regarding security and safety.
And not that writing C89 without any sort of static analyzers is still acceptable practice.
There will be Hammer conferences if there are companies that make "handle grips" or "hand hammer protectors" who are willing to sponsor such events.
"Oh, you wanted mayo on your burger? We can do that, but you also have to have mustard. Don't worry, you won't have to pay for it.. but it's going to be in there."
- a "how ruby's GC works" talk
- A deep dive into how a core dev found + fixed memory usage in ruby
- The unexpected pitfalls of sublassing certain std lib classes
- A new desktop graphics library
- Using ruby to operate an automatic wafflemaker
And these are just the ones I attended. I imagine railsconf is more web focused, but rubyconf doesn't seem like that at all.
We guessed respectively 25%, 50%, 75% (my guess).
Based on some very, very, very fuzzy sampling, they estimated it was somewhere around 50%.
Any guess yourself? Are you a Rails dev?
While Rails certainly did a huge amount to make the language popular, there's lots of things Ruby is good at aside from concatenating snippets of HTML.
Actually, that being said, while maybe 90% of personal Ruby projects don't use Rails, a good half use ActiveRecord in some capacity. I wonder how much that makes it a Rails project, by some reasonable definition.
And indirectly by many more who use chef
Thankfully rubyconf explicitly says that it's not the place for rails-focused talks, which results in a lot of great discussion on other aspects + usages of the language. :)
There are conferences for most any language with wide adoption. There's also a Slack conference (not "TeamChatConf," but a "Slack Frontiers"). There's a GitHub conf (not "OpenSourceDevCon," but "GitHub Universe"). There is a Datadog conference, and so on and so on.
Maybe C just doesn't have one big company, or an ecosystem of smaller ones, that stand to benefit from gathering a bunch of C devs in one place.
I think the hammer analogy works better as conferences for building houses (business conferences) vs power tools (developer conferences) vs hand tools (no conferences), the distinction being how quickly can you get to a finished house. A power tool is something that can make houses quickly. A hand tool can be used quickly and efficiently by someone very experienced with them, but power tools can be used by almost anyone.
Languages were always a product, they either came with the OS one bought, or add to be bought as extra tooling.
It was a blast! And C actually came up in one conversation...
Maybe we should find a cool demonym like "c-lions" or "c-weeds" or whatever. Then we'll be able to ask the real questions like "is C webscale?".
Now I'm being a bit snarky but I genuinely understand why newer languages need branding nowadays, but in the case of C that ship has sailed long ago, you don't really need to introduce it, it's just C.
> "c-lions"
C-lioning - n. Derailing a discussion by "politely" demanding evidence that obviously unsafe programming practices are unsafe and should never be used. E.g., "Can you tell me, exactly, why aliased pointers are bad?"
https://upload.wikimedia.org/wikipedia/en/5/5e/The_C_Program...
By convention, C programmers know it it's unsafe to guess where the arrow points, so this has never been a problem.
There's a youtube version with singing around somewhere but I can't link from work
A language is not a hammer. It is a tool. You know what else are tools? Chainsaws, databases, lasers, and tunnel boring machines that cost tens of millions of dollars.
There are plenty of conferences about tools.
Calculus is a tool, but how we write it is just the notation. Similarly, computer programming (or perhaps a subfield like functional programming) is the tool, and a particular language is just the notation for writing it down.
The 2018 Go user survey analysis should be released soon, but I'm guessing you're right that it's only used for a few things; however, those few things are pretty significant in terms of marketshare (distributed systems, backend applications, and general purpose tooling--this hypothesis could probably be checked against the StackOverflow survey). Not much on the front-end or mobile application side nor on the embedded side, but probably making some headway on the AI/ML/data-science side.
In general, I think of Go as Python but with 15 years of hindsight but also 15 years of market catchup. Go does a lot of things better than Python (performance, concurrency, distribution, deployment, etc), but the reverse isn't true. The principle advantage to Python is that it was the lingua franca for the data science niche before the niche became a mainstream competency--this means more people were exposed to Python rapidly, but it also means that people are beginning to build high-quality data science libraries in other languages, including Go, which closes the gap between Python and other languages.
The part about pointers that makes programming hard is that you can create multiple references to the same object, and if you don't realize this, you can modify something that you didn't realize you were modifying. In Python this can happen easily enough:
a = []
b = a
a.append(1)
Question: what is the value of b? You might think that this is pretty obvious, but once you can answer this question correctly, you basically understand pointers. In fact, it's not really relevant whether you say that "a" and "b" are pointers or whether you say that they are object references, conceptually, it does not matter what you call them. The fact that Golang has different syntax for pointers and the fact that you can get the address of local variables or member fields is no big deal, since understanding how pointers work is the hard part, and Python already makes you do that.Package handling in practice I would say is a wash, more or less. Both Python and Golang have multiple different ways of managing packages, depending on your preferences.
It's flat incorrect to say that Python has generics. What Python has is dynamic typing. Golang has interface{}, which is equivalent to what Python has, except it requires casting.
func myFunc(a interface{}) {
a.(interface{ f() }).f()
}
This works for any type "a" which has a method "f" with the correct signature, and this is what I meant when I said “except it requires casting”. The fact that you can’t do this with + is merely a consequence of the fact that + is just the __add__ method in Python, and in Golang + is not a method. The fact that Golang matches method signatures whereas Python only matches method names is not really a substantial difference in my eyes.I don’t think there’s a strong case to be made here that interface{} is substantially different from Any in Python, again, except for the required cast. And I think we all agree that neither Python nor Golang support generics. (Python supports metaprogramming, and you can implement something similar to generics with metaprogramming, but I don’t consider that to mean that Python supports generics. Type checkers retrofitted onto Python also support generics, but I don’t really consider those to be core Python yet.)
FWIW, this is one of the biggest selling points of Golang for me - I love the fact that I'm able to be explicit about reference vs. value, and that it prevents me from shooting myself in the foot when I inevitably screw it up.
It's enough of a differentiator for me that I almost can't put languages with and without pointers in the same mental bucket.
I hate it when you go to one of those Makerfests, and it actually turns out to be about Makefiles.
Actually is a really good conference to learn Software Development beyond C++
Meanwhile a C conference would have a hard time coming up with interesting content year after year IMO. You'd end up having to talk about how C is used more than C itself, but then you're no longer really doing C-con, you're doing "embedded-con" or "high performance trading con" etc...
I agree with the parent when they compare C to a hammer, it's a super useful tool and I'm glad that we have it but it's not like I could talk about it for hours (or hear somebody else talk about it for that matter).
I don't think there's much of an analog for C. Most of the interesting stuff in C revolves around things you would think you can depend on but actually break in really weird and interesting ways (misc undefined behavior, sizes for integral types on different architectures, idiosyncracies of the preprocessor, the way to trivially exploit that pattern you used to avoid buffer overflow exploits). But most of that is just depressing.
It mostly falls under the rubric of "writing servers."
Anecdotally, I've heard people using Go to rewrite some of their Ruby services in which more performance is needed.
Practically, while data science / ML / etc work is a big part of Python, I'd wager a much larger part is still web development work (Django et all). And of course, just using it as a "scripting" language, or using it to create GUIs, etc.
You think? I'll admit that my view of the Python community is super narrow, but I was thinking Django, me writing a bunch of test scripts, backend stuff. I know data science is a "thing" with Python, but I just didn't imagine that it had become it's main use. I guess TIL there's a whole other world of how people use Python, and it might be most of them. :-)
My personal impression is that Python is used in more fields than almost any other language, but that every community is only peripherally aware of other communities.
For example, Python is big in Earth Sciences (or so I am told). Almost nobody outside Earth Sciences knows that.
Until maybe 5 years ago, I had no idea that people used Python for web development. It had just never occurred to me. GvR famously had to google what wsgi was.
So I think your final sentence probably applies to most users of Python.
I can't think of other niches right now, but whatever one you think, it's probably on the top 5 there.
I mean, I like JS as much as everyone else and graphql is better with Apollo than it is with graphene, but I can make a full django app and deploy it before I’m even done looking over the changes to my JS packages that have occurred since I used them last.
Hell, even if you want to use vue or react, I still find django more productive than node, Apollo and prisma. And that’s not mentioning flask.
So I’d wager that python powers a fairly large part of the web, and with good reason.
http://www.european-athletics.org/athletics-community/coache...
Aside from the non-technical talks there were talks like
* how concurrency works in modern JS engines
* a talk about the upcoming BigInt type
* how fingerprinting attacks can circumvent privacy measures
* HTTP/2 Push
* a look at upcoming language proposals
* a retrospective on the JS build tool for React Native
* a talk about versioning
* experimental time travel debugging support in Firefox
* a talk about error handling
* a talk about module systems in JS
Etc etc.
Sure, many talks are either about general web technologies or about new APIs of the web platform, but there is usually also significantly overlap with backend or native mobile and IOT.
When I worked with Python I also went to meetups and followed conferences which always had a wide range of talks from web frameworks to automation, data science and system administration.
Likewise at a Ruby conference I'd also expect talks about tools like Chef or Puppet, which are only tangentially related to web development specifically.
So I don't think your portrayal of conferences is fair at all. "Why aren't there ${language} conferences?" seems like a very sound question, even if ${language} is used in a wide range of industries for very different purposes.
I much more prefer going to a conference about let's say, web dev or machine learning. Once at the conference, I might prefer going to a talk that use python because I know this language better.
I dunno, a Ruby conference kinda makes sense because one will mostly build web sites with it, so it's really going to be a "Building $FOO with $TOOL" kind of thing. But C is so widely used, it's like having that HammerFest 2019 with everyone from people splitting wood with a sledghammer to jewelers with their teensy little tapping tools. I just don't see the diamond workers drinking with the lumberjacks at the hotel bar after hours. :-) I jest, but it's mostly about networking anyway, otherwise just watch the videos online.