This Week in Programming: Does C++ Suck?
Late last week, Slashdot asked its Twitter followers a simple question — Is C++ a terrible language? — and got an answer from one serial entrepreneur Elon Musk, CEO of commercial space outfit SpaceX as well as CEO of electric car company Tesla. His answer about C++? Yes, it is a terrible language.
— Elon Musk (@elonmusk) July 8, 2018
Now, your first question may be, is Musk even that much of a programmer? Well, thankfully someone has already asked that one too, and done some full-on Internet sleuthing to boot. Citing Musk’s early Internet projects, a game he created and sold at the age of 12, and more, the most popular answer on Quora seems to offer that Musk is of capable programming ability to offer a valid opinion. And while UML creator Grady Booch offers that the C++ creator, Bjarne Stroustrup, might beg to differ, alas, Stroustrup has yet to join the world of wasting time debating semi-pointless things on Twitter.
I suspect that Bjarne would disagree.
— Grady Booch (@Grady_Booch) July 8, 2018
Now, at the core of this whole debate is a yet-to-be-released replacement for C++ profiled in GamesIndustry in development by indie game programmer Jonathan Blow. According to the article, Blow calls C++ a “really terrible, terrible language… where they said: ‘We’re going to be C with a bunch of stuff added’ and that was an okay idea. But they made a lot of really bad decisions in the beginning and then they had to repair a lot of those decisions later on, and it’s kind of a mess.”
And more so than Musk, Blow ought to know — he’s been programming games for a couple of decades now, including Braid and The Witness. Thus, Blow is creating Jai to be “a better language for programming games than C++” that works to “improve the quality of life for the programmer… simplify the systems; and increase expressive power by allowing programmers to build a large amount of functionality with a small amount of code.”
Chances are, much like the Musk-spectrum, you’re likely to fall somewhere on either side of the love or hate spectrum of C++. After all, even Blow remarks that “C++ is a powerful language in some ways because it’s what we make games in so obviously it’s doing something right. But it makes it a lot harder than it should be.” But if you do tend toward the “C++ sucks” end of things, keep an eye on Jai — it’s set to have a closed beta out by the end of the year, so a replacement may be on the way.
And be thankful you are not slinging code in C itself, (unless you are):
This is the best graphic I have ever managed to make pic.twitter.com/F6afkBpmCu
— Matthew Garrett (@firstname.lastname@example.org) (@mjg59) July 12, 2018
One thing is for sure, Google does not seem to be a fan of C++ as they have released an experimental programming language called Google Carbon that they wouldn’t mind seeing replace C++.
This Week in Programming
- The BDFL is (not really) Dead, Long Live the BDFL: First up this week, a story from ZDNet explaining all the little acronyms that you may not understand that encircle the stepping down of Python creator Guido van Rossum. The “benevolent dictator for life”, or BDFL, has stated that, after nearly 30 years working on the language, he doesn’t “ever want to have to fight so hard for a PEP (Python Enhancement Proposals) [PEP 572 Assignment Expressions] and find that so many people despise [his] decisions.” So, he’s giving himself “a permanent vacation from being BDFL,” he writes in his announcement, asking “So what are you all going to do? Create a democracy? Anarchy? A dictatorship? A federation?” Finally, van Rossum points to the Python CoC (Community Code of Conduct) as a guide for what may happen next, noting that “if you don’t like that document your only option might be to leave this group voluntarily. Perhaps there are issues to decide like when should someone be kicked out (this could be banning people from python-dev or python-ideas too since those are also covered by the CoC).”
I always chuckle when UX designers talk about "journeys." People are paying their phone bill, not trying to get to fucking Mordor. Take it down a notch.
— compost malone 🏴 (@c0mp0stpile) July 10, 2018
— The Internet (@compdadjokes) July 12, 2018
- Microsoft Announces Azure Dev Spaces and ML.NET 0.3: It’s also been a busy-ish week for Microsoft, which made two developer-related announcements this week. First up, the public preview of Azure Dev Spaces, “a cloud-native development experience for Azure Kubernetes Service (AKS), where you can work on your applications while always staying connected with the cloud and your team.” Basically, Azure Dev Spaces makes it easy to take advantage of container development “all without you having to install Docker or Kubernetes tooling on your local machine or having to learn about Docker or Kubernetes concepts such as Dockerfiles or Helm charts” using the code editor of your choice. Next up, Microsoft also announced ML.NET 0.3, the latest version of its cross-platform, open source machine learning framework for .NET developers. This version “supports exporting models to the ONNX format, enables creating new types of models with Factorization Machines, LightGBM, Ensembles, and LightLDA” and addresses “a variety of issues and feedback [they] received from the community.”
What kind of array indexing is this? pic.twitter.com/GY7mSQjRah
— Michael Snoyman (@snoyberg) July 11, 2018
- Back to Basics: And finally this week, a few posts that caught our attention looking at the basics of development. First, this informative blog post on “Web Architecture 101” that takes a look at “the basic architecture concepts I wish I knew when I was getting started as a web developer.” Written by Jonathan Fulton, the VP of engineering at StoryBlocks, the post dives into all the basics of what really happens when you visit a website.
- The Cheat Sheet to End All Cheat Sheets: And next, for those of you who are way past exploring what DNS is or what load balancers do, the “only cheatsheet you need.” According to the GitHub repository readme, this end-all cheat sheet offers “unified access to the best community driven cheat sheets repositories of the world” and “covers 55 programming languages, several DBMSes, and more than 1000 most important UNIX/Linux commands.”
programmers: Facebook is so shady, I don't trust them one iota. You should all delete your accounts.
also programmers: Yeah so I think we should use Yarn to install React so we can connect to this GraphQL server.
— I Am Devloper (@iamdevloper) July 6, 2018
Feature image by Matthew Garrett.