Ada advocacy ­— Ada promoting missions — any proposals?

I often joke that the answer to “Tell me you don’t know about Ada without telling me you don’t know about Ada” is “I find Rust exciting”.

Now without taking that too far, what I really mean by this is that the issue of Ada popularity is a lot less about its features or age, and a lot more about just general awareness.

I have done a lot of truly grass-roots Ada advocacy including from within organizations, and with CS undergrads. From my anecdotal experience, people who are properly introduced to Ada tend to really love it.

I don’t agree with this push to “fix” Ada as a solution to greater adoption. I think we need to find a way to make more people aware of it. And in that process we need to be careful and critical when we listen to detractors, because trying to satisfy them is impossible, and might dilute Ada.

3 Likes

2019 Denmark. Some students were using Overleaf on their own initiative apparently not to favor LaTeX but rather because of the collaboration capability of Overleaf. Google docs seemed to be preferred & whenever groups didn’t agree gdocs was the default winner as students couldn’t pressure others to do something more complex. Profs and mentors did not encourage LaTeX & many even discouraged it.

~2006 US, science profs at two different universities I was aware of forced students to submit MS Word docs.

Suppose you see a listing for an SWE to work on a project that’s either safety-critical or large amounts of money are on the line (the kinds of jobs for which Ada would be most appropriate). The job req. is language-agnostic. You apply and get the interview. And because the interview is language agnostic they don’t tell you what language or tools you would be using. If you don’t ask, you could find yourself in a contract reporting to a C, C# or java gig using only MS Windows platforms. Or if you do ask and they say “C#, javascript, …Windows”, you’ve already invested time in the application and interview. Are you okay with that?

The employer shouldn’t care too much about what languages a new hire has used, but the evaluation is both ways. The employer evaluates the candidate while the candidate evaluates the employer. I see a lot of a projects that make poor choices on tools and languages. Vague job requirements are more of a risk to the candidate than to the employer. Ada experience would be misfocused as a /requirement/, but Ada should be mentioned so candidates know what they’re signing up for.

The other factor here is that companies like Amazon don’t likely recruit the kind of staff who would care much about the competency of the organization. These are largely people just showing up for a paycheck at a company with an avg annual turnover rate of 100%. Caveat: I only hear from those working in Amazon’s the slave labor dept.… not sure if the tech sector at Amazon is managed differently.

1 Like

I think you make a lot of great points. I agree that Ada should be mentioned, but not as a requirement. Any competent engineer can learn Ada in no time.

1 Like

Thanks for the link @onox, it is very interesting!

Fortran is the oldest high-level programming language that remains in use today and
is one of the dominant languages used for compute-intensive scientific and engineering
applications. However, Fortran has not kept up with the modern software development
practices and tooling in the internet era. As a consequence, the Fortran developer experience
has diminished. Specifically, lack of a rich general-purpose library ecosystem, modern tools
for building and packaging Fortran libraries and applications, and online learning resources,
has made it difficult for Fortran to attract and retain new users.

There is a lot in common with the conclusion we reached years ago that lead to learn.adacore.com, programming competitions, promotion/contribution/support of Alire, advocacy blog posts, new licensing policy, etc.

5 Likes

I once asked a project manager “why are we using MS Word instead of LaTeX for our tech docs?” His answer: “because no one knows LaTeX”. Then I asked the prof of a college of science at a university: “why aren’t the students learning & using LaTeX?” His answer: “because LaTeX is not used in industry”.

You’re going to have to clarify “in industry”.

I wouldn’t use LaTeX to do technical docs compared to any of the available hosted or free wiki solutions, Google docs, docusaurus, mdbook, or just general support for Markdown doc preview, with associated version control inside a (git) repository, or something like Hugo. A lot of these also support MathJax or other LaTeX-like mathematical notations.

What the Ada community needs is a focused organized list of projects that are not only useful but also maximize promotion of the language.

There’s already a library wish list.

I’m not against trying to get people to collaborate. But which authority is there to speak for the community that “these are the things which should be done?” Who is going to do this work on a focused organized list of projects?

The Ada open source community is absolutely tiny – I’ve only talked to less than a hundred people total – with developers split between embedded and desktop work. They’re using the language to solve their problems, that’s what it’s there for, and a problem they understand means they’re more likely to succeed.

Most profs are utilitarian & favor languages they see job vacancies calling for.

I don’t fault universities for trying to teach more broadly useful skills. There’s often coordination between universities and business professionals to discuss what skills are needed, and what they’d like to see taught.

The biggest impact on learning (learning that leads to utilization) is made in the university, which leads to “Ada” appearing on CVs under formal training

AdaCore is already doing this by working with universities. They’re also doing a bunch of internships.

After 50 years there should no longer be a need for grassroots efforts. It should be far beyond that. And the fact that it’s not— that we still need a grassroots effort really says a lot about the struggling state of Ada.

Well, that’s where the language is right now. Ada was focused on closed source and when the schools stopped teaching it and the DoD stopped requiring it, there wasn’t a funnel to get people to try it or to use it anymore.

Simply being useful is a low bar.

It’s not a low bar. This is exactly how Rust is rising to dominance.

People building using things and sharing them on crates.io, and then other people picking them up and running with them. There’s a few projects, like ripgrep which are used as “cool, I use that and it’s written in Rust, I should try Rust” pieces.

Identifying the problem is the 1st port of call, only after which the need for advocacy campaigns is evident.

How are you going to advocate for Ada without improving the ecosystem first?

“Use a niche language which you’re likely going to have to write most (or all) of your own library bindings and dig through often abandoned sites looking for information?” Barnes’ book is fantastic, but a lot of people don’t want to make that much of an investment up front, since that book is pricey.

Part of the reason I’ve written up so many things about Ada online is because so many resources I came across where out of date, or I had to assemble how things worked by using multiple sites and wanted to spare other people the trouble.

It’s only the “random ad-hoc” things which have happened over the last couple years which have significantly improved the Ada developer experience in open source (Alire, Ada language server, etc.). People identifying a problem and then solving it.

No one is claiming to “fix Ada,” we’re just trying to improve our ability to work with it.

IIUC, you seem to be talking about the aesthetics of web design. Do you really think the look and feel of a web-based tutorial influences whether a project selects a language?

Then to suggest that a company is “out of their mind” if they select Ada despite these aesthetics being “90s looking”.

Yes, that’s exactly what I’m saying.

Being able to browse and search documentation is absolutely critical for most projects. Even more so when the community is tiny compared to other languages, and you’re more dependent on documentation. From a technical point of view, as a tech lead on a project, it’s your job to ensure that your people have the available resources to succeed.

From a business point of view, you need to be able to defend your technical choices to managers or investors. It’s easy to compare Ada resources to those of other languages, and even with learn.adacore.com and ada-lang.io, it’d be really hard to defend just based on the quality of references. What we have isn’t perfect, but it’s come a long way. Getting to an acceptable “modern” point is actually pretty easy with a static site generator.

They don’t need to be flashy, but they do need to be close to modern standards and up to date. Consider Donald A. Norman’s “Design of Everyday Things”, in that “Attractive things work better.”

Compare what Ada has to these:

My main point is people need to stop trying to just push advocacy and prove that the language can be used successfully to solve real visible problems. The easiest problems to understand and fix are your own, in hopes that it’s also a problem someone else has.

No one buys into a programming language, they buy into an ecosystem. The docs, the tools, the libraries, and the community. It all has to work together to provide business and programmer value in the creation of things. That’s what folks have been doing.

6 Likes

I wish my current work involved strings more as I want to build up examples of using the standard lib functions. Mimicking Gos. Gos strings lib is not better at all. Quite likely Adas is better and encourages being more efficient with memory but it takes less time to work out how to use Gos string functions.

It took me longer than it should have to realise returning fixed strings was the key. Dmitry seems to disagree with learn.adacore.com and finds fixed strings useful.

I worry some might start with Strings but not have my patience.

Perhaps I should just try to find some time to offer an edit on learn.adacore.com about returning being helpful to reduce the fixed strings limitations.

VSS, might be the other answer but I guess not for embedded or high integrity use cases?

I actually have some nice fixed string based logging on a cortex-m, which I wouldn’t have dared do with C :slight_smile:

I considered porting Bounded strings returning errors instead of exceptions. The problem on a light runtime is that exceptions can’t be propagated and some uses aren’t critical enough to warrant a reset.

All of this complexity is great but needs articulating.

I agree with the tooling and documentation angle primarily. However I have seen some say.

“You wouldn’t want to create an office suite in Ada.”

Yet Gnat studio works well.

“You can’t handle dynamic memory allocation with Ada, a necessary evil”.

To which the correct answer 99% of the time is that it is an unnecessary evil.

However, it seems to me that considering:

There are containers and Dewar has said Ada has more flexible pointer arithmetic than C.

'Address use on records could be celebrated.

Rust hides it’s unsafety in plain sight and relies on the pretence that it is used less than it is.

Borrowing is potentially a thing with Ada/SPARK now.

Then

Perhaps it could backfire e.g.
Ada isn’t safe after all neigh sayers.

However demonstration projects/write-ups of these limitation false hoods might be an idea. Considering you can always use safe Ada with great ease for a low level language, most of the time even in these cases? Ada will always be safer than and even nicer to use than C.

I do not need dynamic memory to do my job, though.

This is unrelated to the thesis supported by the example, but I have to say there are issues with these ways of managing docs.

wikis→ ½ a dozen different unstable languages not well standardized, very limiting (can’t control column widths in a table, can’t put text next to an image, figures don’t get numbered [thus no way to reference a figure number in text]), different bizarre rendering side-effects depending on browser (thus unsuitable as a deliverable when you don’t control the customer’s browser, or it requires the customer to install a wiki server just to read the doc [unless you happen to choose a format that pandoc handles - yet still unpredicable results]), no integration with Clearcase and Clearcase controlled objects wouldn’t be accessed by the wiki engine (thus code reviews that present diffs for a particular branch miss documentation, and clearcase version history searches would miss wiki changes), auto-generated docs would require scraping the wiki engine.

Google docs → gives a surveillance capitalist access to potentially sensitive company info & trade secrets; fragile (down network → employees shoot the shit around the coffee machine b/c they can’t do doc maintenance); code review of clearcase diffs miss related doc changes, finances a relatively unethical corporation.

docusaurus → Access restricted walled garden. Perhaps okay for internal use within a corporation as care would be taken to ensure all users have access, but inappropriate for any documentation that must be shared with the outside world. Distributing docs from Cloudflare is like distributing from Facebook.

mdbook → ½ a dozen different unstable markdown languages not well standardized, whichever MD flavor mdbook uses it would have most of the same problems as wikis AFAICT.

Hugo → not sure what this is, but it looks like a web server, not a document format.

Not sure what the point would be to try to avoid LaTeX to the point of bringing on some quite serious limitations & compromizes.

There’s already a library wish list.

That’d be good raw input from which to start an advocacy campaign. Needs analysis, impact review, vetting, ranking, etc.

I’m not against trying to get people to collaborate. But which authority is there to speak for the community that “these are the things which should be done?” Who is going to do this work on a focused organized list of projects?

The authority and will to work the projects would be no different than that of FSF’s high-priority list. Voluntary, but the volunteers have some confidence that the needs went through some analysis & review, thus a bit more confidence than if they arbitrarily work on something someone else says they personally would like to see.

I don’t fault universities for trying to teach more broadly useful skills. There’s often coordination between universities and business professionals to discuss what skills are needed, and what they’d like to see taught.

Universities should be leaders not followers. Academia should be at the bleeding edge and they should be ahead of industry. Following industry is backwards. Industry is risk averse because money is on the line. That risk aversion reduces potential for innovation and potential for taking the best approach.

I went to a university where some classes used fake languages. Every real assembly language was bound to a particular CPU and missed some concepts & constructs. Since no real assembly language was complete, they taught a virtual assembly language that served as an integrated balance of multiple languages to cover the mainstream concepts and constructs.

The idea was that students who learned that virtual language would have a minimal learning curve with whatever real assembly they encounter in industry, as opposed to a student who would be dependant on implementation specifics and helpless & alienated when they encounter something different.

The industry changes rapidly enough that when a 4-year university focuses on a snapshot of the industry at a given time and teaches with a fixation on implementation specifics, by the time the student graduates much of what they learned is already outdated.

Some projects are wiser than others, and realize that students carry some knowledge that their most experienced workers don’t have. Instead of treating entry-level devs as a vessel to indoctrinate, the more competent orgs see recent graduates as an opportunity to update the tribal knowledge of the company. And rightfully so.

Ada is a great teaching language. Much of the syntax resembles Pascal, which was purely a teaching language — designed to help students learn to program. A proper university should be focused on teaching the theory & concepts in an implementation independent way so the students can quickly adapt to whatever implementations they encounter. Profs that simply target whatever they see in industry should probably not be teaching at a 4-year university, but rather a vocational school or boot camp type of apprenticeship.

Profs who put education in the position of following industry should be faulted for keeping education behind.

Simply being useful is a low bar.

It’s not a low bar. This is exactly how Rust is rising to dominance.

People building using things and sharing them on crates.io, and then other people picking them up and running with them. There’s a few projects, like ripgrep 1 which are used as “cool, I use that and it’s written in Rust, I should try Rust” pieces.

It’s a low bar because it’s squandered potential. Why would “simply useful” be a wiser move than being “both useful and impactful”? It’s a low bar because we can do better. What you say about Rust doing better than Ada without organization is a statement of how lacking Ada advocacy is.

How are you going to advocate for Ada without improving the ecosystem first?

How are you going to improve the ecosystem without first identifying the problems with the ecosystem? If you solve a problem without first identifying it, you’ve merely benefitted from dumb luck. It’s better to identify problems, then solve them.

My main point is people need to stop trying to just push advocacy and prove that the language can be used successfully to solve real visible problems.

Proving Ada can be used successfully to solve real visible problems is part of advocacy. Advocacy is not at odds with solving problems; it’s the opposite. You seem to have this idea that advocacy is limited to marketing or something. An Ada advocacy mission potentially includes any and all activities that promote the use of Ada – everything that goes into the ecosystem as you describe it. It seems our only difference is that you think it should be disorganized.

The idea of using a modern website to document the language probably has more merit that I realized at the start of the thread, but something like that should just be one element to a whole Ada advocacy campaign.

Completely agree here. I would say that the “success” (by success I mean general public popularity = number of (new) learners) of many programming languages are not based on their merits but on the software popularity that was built upon. For example c was based on Unix, C/C++ on windows, rust came from the firefox team etc…
Talking about Ada advocacy, I remember a very very old post about Ada promotion where someone suggested to promote Ada via “contamination”. I give an example here. For example I am an old user of BeOS and logically followed the progression of the Haiku operating system (BeOS clone) for decades now. Just recently gcc 11 with ada managed to be compiled natively. The project and user base is very small too, therefore providing some important software pieces to the project will “force” people to learn ada (or at least have a look). For instance, I would like to use a wireguard client which does not exist yet and the linux/windows clients are written in go (needed version not successfully ported yet), which means to port it, a rudimentary knowledge of the go language may be necessary.
There is no “general public” software written in Ada that is not already available in another language whereas the opposite is not true. Good or bad, Ada is still mostly used by “professionals” for “professionals”.

Remark: I am using quotes for many words because the meaning I want to express is rather loose and to be honest I don’t know how to define them without writing many descriptive and exhaustive lines.

1 Like

Bit of trivia if anyone is interested:

  • PYPL (mentioned by pyj) — Ada rank: 18; based on learning doc volume/availability
  • TIOBE — Ada rank: 31; “based on the number of skilled engineers world-wide, courses and third party vendors.”
  • RedMonk (with history) — Ada not ranked; based on MS Github repos
1 Like
2 Likes

Ada ranks #4 on energy efficiency:

http://scribe.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion/codex/what-are-the-greenest-programming-languages-e738774b1957

Unfortunately the Ada-Java spread in that study is too tight to make a case for Ada smartphone apps saving on battery power.

Lets face it; Ada is just about 40 years old now. She is not as attractive as she used to be for the newer generations… For year she has worked relentlessly on hard and complicated tasks; but oh so complex with all her focus on getting things done in the right order all correc before the deadline, very strict with all her safety and integrity. And always looking back decades forever gone…

time for non realtime non system ada? a spinoff language anyone…? look forward, envision…

Note for TIOBE that the “based on the number of skilled engineers world-wide, courses and third party vendors” statement is a pure guess-work from the index’s author. The index works by searching “X programming” for language X on various search engines. This is a good idea per se, but the induction that it is for instance related to the number of skilled engineers is pure bluff.
For those interested, I have made an automated version of the TIOBE index - in Ada of course:

1 Like

And another thing to realize: for a similar sized user base, a search of “X programming” will find many more hits if there are lots of problems using the X language, related to how good/consistent/well-defined that language is. So a higher TIOBE score for X might also indicate there are more problems with X…

1 Like

That energy efficiency study is wildly misleading. A case for energy saving on phones couldn’t be made anyway because often the screen is on without processing. The Signal and whatsapp ratchet algorithm is woefully inefficient due to the expense of frequent ecdh but no-one cared. Certainly a security case could be made but it looks like Google are adopting Rust. I don’t know how to tackle that which I do not understand. Documentation has improved and should help but why do people prefer using * and & for pointers, never mind the pointers themselves. It really isn’t “concise”.

For some reason the IEC 61131 languages do not seem quite to make it… I do not know how many lines or how many engineers or if it is trending or not but I dare to say the language(s) has influenced our society…

What do you mean “non realtime non system” a general computer language must deal with these problems. Yes I can think of some improvements but perhaps it’s time to actually reach out to people and bring them into Ada rather than pretend that they will just arrive of their own accord. Make sure that the tools work with the reliability that Ada claims to support see my topic “Starting Ada - It has to work” rather than throw all the good stuff away. Ada should support the integrity that Rust seems to offer as standard. I will support a new branch of Ada but with more integrity and for sure indexing strings from 0 not 1, I hate it!

Tom

What’s wrong with ‘1’ based indexing ?
The ‘0’ based indexing à la C is a major source of bugs.