6 ms·
That is not necessary true when it comes to aerospace and defense projects They chose to use C++ for the F35, which is buggy as hell, because they thought ther
by gaius 9y ago
That is not necessary true when it comes to aerospace and defense projects
They chose to use C++ for the F35, which is buggy as hell, because they thought there were no Ada programmers available. But if you are planning a multi-decade project wouldn't you just... train some yourself?
- user5994461 9y agoIt's a fair assessment. There are almost no Ada programmers available. There will be less and less in the future. It's a difficult language, on par with C++. It's tough to learn, even if you already have a decade of C++. I think it's fair to pick Ada for that kind of project but it is also fair to avoid it. Either decision is justified.
- pjmlp 9y agoAda was relatively easy to learn by anyone in the past with Object Pascal or Modula-2/3 knowledge. Which used to be quite common before C and C++ got widespread during the mid-90's. Ada's biggest problem was the price of the compilers, and lack of adoption by OS SDKs, an issue that also pushed other languages outside of mainstream. Businesses already had to pay for the OS developer tools, unless there were legal requirements on their domain, they weren't keen in buying extra compilers.
- user5994461 9y agoAgreed on that. Ada was niche from the start because the tools were expensive and hard to procure. Then Windows and Linux became the dominant platforms and they are C only. Everything else died.
- pjmlp 9y agoMore like Windows and UNIX, not only Linux, but yeah that's the spirit.
- oneweekwonder 9y ago> UNIX What UNIX? Only one I can think of macOS? What other UNIX is a dominant platform? Linux is not a UNIX, but rather UNIX like. I'm all for UNIX, love the design, love the history, but it is not dominant. To be honest UNIX seems dead, and only live on in *nix-like OS.
- grzm 9y agoWithin this context of this discussion, what are the distinctions between Unix and Linux that are important to you?
- oneweekwonder 9y agoThat Unix is the roadster that gave us c. But Linux was the one that drove c into our core operating system infrastructure. Windows did the same favor for c++. One of the reasons why other languages failed? While c/c++ flourished in the oss environment, even with its tooling being sub-par at the time. imo.
- pjmlp 9y agoI almost agree, just not quite regarding how it went. C++ was already being adopted by all desktop systems, Mac, OS/2, Windows, even if at lower level it was a mix of Pascal (Mac) and C. On proprietary UNIX systems, C++ major stronghold was CORBA based applications, while some companies were pushing C++ bindings for Motif. Then GNU and Linux happened, with FSF suggesting that the best approach to write portable open source should be C, and then we arrived in the present situation.
- pjmlp 9y agoThere are more computers on this planet than just plain desktop. Most of them are servers, mainframes and embedded devices running some form of UNIX based OS. If you prefer I can rename it to nix, as I wasn't thinking about POSIX certification. BSD, Minix (running on your Intel chip), Aix, HP-UX, POSIX layers in IBM and Unisys mainframes, RTOS, NuttX, QNX, and many other POSIX based OSes for embedded deployment.
- touisteur 9y agoI can confirm teaching basic Ada to newbies to "go and correct logic bug X" is 2-3 weeks on-the-job training. We don't even go for Ada experience when hiring anymore, just programming experience, and low cowboy factor...
- com2kid 9y ago> It's a difficult language, on par with C++. Ada is much simpler than C++, the hard part about learning it is the lack of tutorials and general information. That has changed in the last few years, but for the longest time the Ada community would just point to the (freely available!) standards doc to answer all questions. The spec isn't that useful if one doesn't already know the concepts being explained, making learning the ideas behind Ada not that easy, but fundamentally those ideas are not hard.
- user5994461 9y agoEverything that exists in C++ also exists in Ada under a different name and syntax. The separation of cpp and header files, classes, inheritance, different kinds of inheritance, virtual, pointers, references, pointers of pointers, exceptions, meaningless errors from the compiler, etc... Personally, I find both languages to be a complete clusterfuck. The difference is that C++ will compile anything and crash for no apparent reason whereas Ada will refuse to compile anything.
- sjburt 9y agoThen your employees aren't commoditized, replaceable sources of programming work who you can hire and fire at the whim of the budget cycle.
- user5994461 9y agoDefense is all done by contractors or lifers, far away from the competitive tech hubs. I don't think they have a retention problem, unlike companies in the Valley. Also, the alternative is C++ and C++ developers are not a replaceable commodity either.
- sidlls 9y agoYes we are, mostly. There are very few programming jobs for which the laborers aren't essentially replaceable commodities, including programmers who are proficient with C++.
- greenyoda 9y agoThere are plenty of defense contractors near tech hubs. Defense was a big business in the SF Bay Area long before there were software companies there, and it's still big today: https://en.wikipedia.org/wiki/List_of_companies_based_in_the_San_Francisco_Bay_Area#Aerospace/defense https://en.wikipedia.org/wiki/List_of_companies_based_in_the... In the NY metro area, there are lots of defense contractors on Long Island.
- jaggederest 9y agoPoints to a general problem (in the US at least) of a complete failure of any sense of on the job training, or internal advancement. Companies complain when they can't find purple squirrels, even where they could find someone with great general skills in the profession and train them, in about the same amount of time it takes to onboard someone with precisely the skills you want.
- meddlepal 9y agoHow do you ensure they stick around? Training has a high cost that isn't worth it if the people jump ship 2 or 3 years later as is the norm in this industry.
- gaius 9y agoPerhaps if you invest in people, they wouldn't do that? I mean people job hop because that is the only way to advance, but what if there was another way? Job hunting, interviewing etc are a royal pain in the backside. If there was a way to have a career without all that everyone would be happier, employers included
- jaggederest 9y agoI dunno, nobody I know is actually looking to job hop. If you treat people decently, give them raises, train them, why would they have any incentive to leave? Hiring somebody new costs 15-25% of the raw salary cost for the year. Pay people 10% more instead, no incentive to leave.
- gaius 9y agoPlus however long it takes to ramp them up, could be 6 months on a reasonably complex codebase. And the time of other engineers both in the hiring process and bringing the new engineer up to speed. I’d say the cost of replacing an engineer could be as much as their entire first year’s comp.
- gordaco 9y agoWell, it's a reason as good as any other to start paying good salaries AND good raises, instead of just the former. And don't skim on the benefits. As a general rule, treat your employees fairly (which includes updating their salaries up to market value, as often as needed) and, lo and behold, they will stay. There is a lot of talk about changing jobs because of a lack of challenge, wanting to try new technologies, etc., but 99% of the time, it's about money (and benefits). Admittedly, this idea might not be very well received by most companies.
- CodeArtisan 9y ago>which is buggy as hell Is this really the fault of C++? Ada was appreciated for providing static code analysis out of the box but they found out that coupling C++ with a (modern) static analyzer gave better results.
- protomyth 9y agoWell, the F-22 had control software written in Ada and it doesn't have as many reported software problems as the F-35.
- Raphael_Amiard 9y ago> > which is buggy as hell > Is this really the fault of C++? I'm not saying it necessarily is, but it clearly can be. When you fuck-up language semantics, as pointers in C and C++, making things vague and unspecifiable regarding important properties (aliasing, memory allocation, etc), then you lose something that is extremely hard to get back via static analysis. For this reason, a language that has safe properties in a domain (like Rust or Ada) will always be safer in that domain, by construction, that a language where you graft static analysis on top of it. This can be somehow alleviated by coding rules/standards and annotations for static analyzers, but then, you're not programming in the same language anymore, which has its own set of problems.
- agumonkey 9y agoMy tiny aerospace knowledge also tells me that there's a ton of cpp tooling that is already known to shops and they rely on this rather than switching culture to ADA even if it may provides greater value in mid to long term.
- gaius 9y agoMy tiny aerospace knowledge also tells me that there's a ton of cpp tooling that is already known All that tooling isn't helping produce the software tho' is it? https://www.theregister.co.uk/2017/01/12/f35_alis_software_delayed/ https://www.theregister.co.uk/2017/01/12/f35_alis_software_d... And https://www.theregister.co.uk/2018/03/22/f_35b_block_4_upgrades_cost_uk_345m/ https://www.theregister.co.uk/2018/03/22/f_35b_block_4_upgra... For just two examples
- agumonkey 9y agoI never implied it was useful, just that people are more likely to take cpp and coat it with tools to feel getting things done by juggling masses of files.
- MisterTea 9y ago> But if you are planning a multi-decade project wouldn't you just... train some yourself? The reality is most businesses are rather short sighted and prefer to save on up-front costs. Never mind how bad it can come back to haunt them in the future...