The shop I work at depends on Solidworks for most things, and licensing cost is crazy, dependent upon the end business financial specifics. For our tiny little shop with one full-time engineer, I think it is $5k per seat per year. We would like everyone to have access to it because all sorts of issues come up where a part design needs to be slightly modified to work, a part quickly designed up in the moment, jigs made, etc. But the licensing cost is too damn for that. Then on the CAM end for our plasma table, the software is very primitive, equivalent to microsoft paint of the drawing software world. Super basic, gets the job done in a kludgy way, but something better that doesn’t cost an arm and a leg would be nice there.
No experience or advice, just a quick point. It would be nice if open source alternatives were viewed more as cheaper alternatives rather than free since when the alternative is $5k per seat per year then paying $5k per year for 5 people, for example, is still saving a lot. I wonder how many companies do this. Open source software with corporate budgets would be unstoppable.
And imagine corporate budgets + smaller business budgets + government budgets all funding open source instead of putting so much money into proprietary software.
It’s partially Linux’s fault. The driver issue in Linux is mostly because drivers need to be baked into the kernel, whereas in Windows you can just provide one. That was a bad decision for desktop.
Also this love affair with C. Linus’s famous rant against C++ turned a generation against a better language. In the same way, C++'s development is hindered because people on the C++ committee have customers running some ancient version of Red Hat or whatever and breaking ABI compatibility would apparently affect them.
I’d like to see Linux II come out without these flaws.
I don’t know about such things. How is Linux drivers via dynamic modules different than Windows drivers?
There seems to be a general dislike of object-oriented programming by a subset of developers. I wonder if that is Linus’s issue with C++. See for example:
What little I have learned of oo (exposed to it first in Java), I haven’t been a big fan either. But I don’t know what I don’t know yet, if you know what I mean. I’m sure it has it’s good uses and over-uses like many people say. I very much enjoyed my little ride with C, and I very much disliked my little ride in Java, which felt like driving a semi-truck to get groceries (always thinking about the language, rather than solving the problem). I think I have said it here before, if there were a clear path for using C to do the things I want to end up doing, I would forget about C++. But it seems that most things I’m interested in point away from C and to C++. Who knows what my opinion might be after knowing C and C++ well (which I obviously don’t). I also enjoyed my little ride in JSFX, which seemed like C in a lot of ways. Small language to learn, getting right to the point of thinking about solving problems, rather than thinking too much about features and syntax. But this is all from a programming n00b perspective.
Linux has to be built to allow support for modules and I don’t know how easy that is. I was looking into writing a Linux driver and found that stock Manjaro wasn’t suitable so just forgot about it. It would be better having distros built for end users like us and alternative GUI-less builds for server stuff.
Concrete example is that a couple of months ago I was revamping the Reaper Alphatrack controller plugin. So I was building it for Linux too, but since the Alphatrack doesn’t expose itself to the OS as a class compliant MIDI device it needs driver support. There’s a driver for Windows, Microsoft might not even know an Alphatrack doodah exists. As it should be, it’s nothing to do with the OS what gadgets exist.
There used to be an Alphatrack driver for Linux but it was dropped from the kernel, so now there isn’t. There’s something online but again the old “Linux is the IDE” crap comes into play and devs generally don’t realise that a single command can and should build something without configuring stuff or manually installing any deps… system wide. In Windows-ville the old driver would still be kicking around to install.
As for OOP, it’s just another paradigm and C++ is a multi-paradigm language. We can’t even put a method in a struct in C although OOPy stuff is possible and is used in C. Anything’s possible in asm too, but why would you?
Java is all-in on OOP with no free functions and one class per file and other limitations so it’s a bad example since pick and mix is the way forward from what I can see. A good example for people who want to trash languages that support OOP. Functional in places, OOP in others, imperative or data driven where it’s sensible. Forcing OOP or functional or C or C++ on everything seems silly.
Now Torvalds has made nice noises about Rust, which has more minus points than C++ if we refer back to his rant against C++!
Also, Linus seems like an asshole. That isn’t relative to the discussion really. Just an extra bit.
And C++ seems plenty capable of covering C, taking and leaving what you don’t want from C++ features. So yea, I don’t know why anyone would hate on it over C.
Apparently Smalltalk was a language that did OOP amazingly, greybeards wax lyrical about it anyhoo. But then people went bananas for it in the 90s and Java was spawned by Oracle, who are essentially Larry Ellison, a man who’s philanthropic work is funding research into prolonging the life of Larry Ellison. There’s a lot to hate about the situation.
Smalltalk is pure OOP, you want something like Haskell for almost pure functional (they had to compromise to account for I/O and other things, from the presentations I’ve watched).
John Backus, the man behind the first compiler ever actually completed, spend a great deal of his life on functional programming. I remember one of his last interview him saying that the problem they couldn’t solve was time, processing time I took that to mean. I think processing power and I/O speed has caught up though, although he’s not around to see it.
The main drive of it is side effect free programming. Pure functions, no state. Important philosophies to think about in any language, same with focus on lifetime management and const correctness.
Oops. I’m mixing names up apparently. It’s been a long day. Days like this don’t leave much energy to do the fun stuff, like tinkering with programming.
I see that the next merge window for Linux might include Rust which is weird because it doesn’t run on all of the platforms Linux does, whereas C++ almost does. It’s going to be optional but just watch the tsunami of Rust-based PRs coming in. Trouble is that Rust/Mozilla has been quite political from the start so it seems like some kind of power grab.
Not following programming things, I have probably seen hundreds of mentions of Rust. Reminds me of when Java became a big thing and then Python. With so many C and C++ libraries out there, I can see the attraction to Python at least.
I don’t know enough to know why people seem to want to get away from C and C++.
Basically memory safety which are a source of security bugs. Like assigning a buffer of 10 chars in C and allowing a user to input whatever they like into that buffer. You can change things in memory using these kinds of things that you aren’t supposed to be able to.
There’s always the Hot New Shit out there, it was Haskell a few years back. Rust has been on a hard corporate sell on the security front and “rewrite it in Rust” is a bit of a meme these days. It’s a PITA of a language re restrictions and hieroglyphics imo. I wrote the scaffolding for a Reaper extension in it a couple of years back, had to use a Mutex library for single threaded code!
What little I have seen over the years, it seems that there is always a hot new shit language springing up and mostly fading out over time. But C and C++ have been around a long time, and it seems like they will be around for a long time more.
Yeah, there’s room for more languages too, especially ones that do new/different/better things. But as much as I like something like Lua, for example (there’s also a new, typed version made by Roblox) it’s a language for embedding in other apps. That’s its niche and that’s cool.
Eventually everything finds equilibrium.
Seems like it will be hard to replace C and C++ with one of these new languages though. What major os isn’t written in C/C++ (and assembly)? And look at how many desktop applications are written in C++. And utilities in C. And C and C++ are so closely related. And very popular scripting languages are spawned from and depend on C/C++.