Programming Languages

This Week in Programming: Does C++ Suck?

14 Jul 2018 6:00am, by

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.

 

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.

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 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).”
  • This Week in npm: It’s been a busy week for npm, the JavaScript package manager. Earlier in the week, the project announced npm.community, which it says will “allow us to give the community a single place to report bugs that impact npm, regardless if they’re on the website, in the command line tool or in the registry itself.” Although the transition was set to go live by July 12th or 13th, with another blog post at the time, nothing has been posted as of the time of this writing. Perhaps that’s because of the operations incident of July 12, 2018, which involved access tokens for approximately 4,500 accounts, which “could have been obtained before we acted to close this vulnerability.” While no evidence was found “that any tokens were actually obtained or used to access any npmjs.com account during this window,” npm took precautionary measures and “revoked every access token that had been created prior to 2:30 pm UTC”, requiring every registered npm user to re-authenticate and generate new access tokens.
  • GitHub Now Checks Python for Security Issues: GitHub has announced that Python packages will now get the same security treatment as JavaScript and Ruby, which was first announced last year. “Python users can now access the dependency graph and receive security alerts whenever their repositories depend on packages with known security vulnerabilities,” the announcement states. “Over the coming weeks, we will be adding more historical Python vulnerabilities to our database.” Read the full announcement for details on how to enable Python security alerts for your projects.
  • 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.”
  • 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.”

Google and Microsoft are sponsors of The New Stack.

Feature image by Matthew Garrett.


A digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.