As a long-time developer and technologist, my news feed always lights up when tech media outlets release their annual "Top Programming Languages" lists. Examples include the annual TIOBE Index, StackOverflow Developer Survey and the IEEE Spectrum list. "SAS" always appears on these lists as a programming language, although historically it scores a middling ranking for reasons I'll describe in just a bit.
However, the 2024 IEEE Spectrum "Top Programming Languages" list recently placed SAS at the #5 position when the ranking is weighted for "job opportunities". This surprise validation has excited a lot of us SAS fans, as this confirms something that we've known all along. Organizations in all industries rely on SAS technology for mission-critical tasks, and they recruit SAS-skilled talent to maintain these and get the most from their SAS investment.
The methodology for tracking programming language popularity usually does not favor SAS. That's because these rankings track public activity such as "prevalence on GitHub or public repositories", "amount of search traffic" in public search engines, or "discussion activity on forums like StackOverflow or Reddit." As a vendor-supported technology, most internet activity for SAS is concentrated on SAS sites and communities. And since SAS customers often work in regulated industries building proprietary methods and models – they cannot and would not share this work on GitHub, at least not at the scale you might see for the top-ranked languages like Java or C. (By the way, SAS users do freely share their knowledge on our own community and in-person at SAS user events, which I am very grateful for.)
I've often said that if we could rank languages by "amount of code that is running in production systems at organizations around the world," SAS would rise to the top.
But does SAS even belong on a "programming languages" list?
I'm going to get pedantic here: SAS is not a programming language. SAS has a programming language. (Actually, SAS has several programming languages.) The SAS programming language you're thinking of (DATA step, PROCs and SAS macro) provides access to all the capabilities of SAS: data management, analytics, machine learning and AI, and more. While most SAS users leverage code to get to these capabilities, there are many other interfaces and methods that provide access as well.
Most of the programming languages that appear on these "top language" lists do not provide inherent capabilities for any specific discipline. For example, Java is a popular object-oriented language that is used to teach computer science concepts in schools. Its standard libraries provide basic access to operating system services and computation. But in industry, Java is most often used with specific frameworks to build things like mid-tier applications or embedded systems. Developers add these frameworks to the stew to provide the capabilities, and the Java syntax is their tool to unlock them. The same is true for C and C++. (By the way, C is the programming language that is used to build the core capabilities of SAS – so we love the C language here.)
Many programming languages are agnostic of discipline/industry. If you tell me that you are a Java or C programmer, then I know what syntax you use for coding but I don't know anything about your real job. Some languages provide cues about your specialty. If you tell me that you are a TypeScript programmer, then I might guess that you build web applications using the React framework…because I know that is a common use for TypeScript. (Many of our SAS application front-end experiences are built with React.)
But if you tell me that you "program with SAS", then I know immediately that you work with data and statistics. With SAS, you do not have to add additional frameworks or libraries to get work done – it's all built-in with hundreds of SAS procedures and analytics actions.
Yes (please) Code
We live in a world with much hype about "low-code" and "no-code" workflows. Companies say they don't want to require programming skills to unlock value from the systems they have invested in. While we have that covered in the SAS Viya platform, we've also doubled down on the developer who just wants to, you know, code.
Are you a SAS fan or a SAS snob?
Here's how I make the subtle distinction:
- SAS fan: "I rarely find anything in my job I cannot accomplish by using SAS."
- SAS snob: "If I can't accomplish a task with SAS, it's not worth doing!"
We celebrate both personas here, but even I admit that I'm just a SAS fan, not a SAS snob. As a developer I appreciate a specific tool for what it can do for me, but not to the exclusion of everything else.
SAS Viya Workbench will make you a fan
If you're a "get out of the way and let me code" kind of person, then you will love SAS Viya Workbench.
SAS Viya Workbench | Learn moreSAS Viya Workbench is a developer-first IDE that provides access to SAS' analytic capabilities using the SAS programming language, or Python…and soon R. SAS Viya Workbench brings the developer experience to the forefront in a way that I appreciate, using the familiar VS Code environment that I'm already so familiar with. SAS Viya Workbench launches quickly in my browser, relieving me of the task of installing SAS (something I have done hundreds of times without complaint!), and it spins down when I'm not using it. I love to use it for work and it's fun to demo for SAS users.
7 Comments
Chris,
I dare to disagree with statement: "SAS is not a programming language. SAS has a programming language." from the article.
That's because whenever one say "SAS" at least three different/separate "entities" can pop up in mind:
1) SAS = SAS company (Institute)
2) SAS = SAS computing engine and compiler (both BASE and CAS)
3) SAS = SAS programming language (including: 4GL, macrolanguage, IML, CASL, DS2, etc.)
I would say: "SAS has SAS where you do SAS" what would be "interpreted" as: "The SAS Institute has SAS computing engine and compiler in which you write in SAS programming language". :-)
All the best
Bart
I'd add one more category, the SAS geek: "You are saying that I cannot do this in SAS... hmmm... hold my beer". :-)
Chris,
Thank you for the insightful blog. I appreciate the innovative capabilities of SAS that you’ve highlighted—it’s truly a powerful tool. I’d like to add a thought to the discussion. While SAS can solve many challenges, it’s essential to remember the value of using the right tool for the right job. As the saying goes, "You don’t use a screwdriver to hammer in a nail." Too often, we see developers choosing tools they’re familiar with, even when they might not be the best fit for the task at hand.
Many years ago, I wrote about the dangers of using the "popularity" of a language (as measured by the number of Google hits) as a proxy for its importance, relevance, or value. People continue to use that metric because it is easy to obtain. On the other hand, the number of job listings is a relevant metric to use when assessing the value of a programming language. Many SAS programs that were written in the 80s or 90s continue to run and to be supported, even as the original programmers retire. Companies need SAS programmers to support legacy code in addition to writing new code, which adds to the demand for SAS skills.
Hi, Chris. Great article, thanks for sharing! I've had to think about this a lot over the years, as I always have to be prepared to answer the question "Why should we use SAS to solve this problem?"
I see SAS slightly differently than you do. I see:
1. A programming language (SAS data step and the macro language): a general-purpose language, BUT highly optimized to be used for data management and statistical requirements. For example, if anyone ever offered to pay me to use SAS to:
- develop a video game
- code an operating system
- design a real-time system to manage an automobile's functions
- run my pacemaker
I would run away as fast as I could. SAS doesn't have the features to optimize the coding of these types of systems, whereas it is superbly optimized for data management and statistics.
Not to say I couldn't do it...just for fun, I once developed a working analogue clock in Excel. And as we've seen from the Sudoku application in SAS, I'm not the only crazy person out there. But I would inform my "client" that this would cost WAY too much money, and they should go find a C / Java / Python expert (COBOL?).
2. A series of macro / subroutines / functions (I'm not quite sure which term I like) that allow you to solve a particular problem by providing parameters. I'm of course talking about the SAS procedures. I differentiate them from the programming language on the basis that the programming language features are general-purpose (ie they can be strung together to do a wide variety of things), but the procs pretty much all do one thing and one thing only. The COBOL language implemented something similar for sorting data, and for writing reports. Python has a lot of similarity with some of it's packages.
3. Everything else. Not sure what to call it. Back in the 80's, we were starting to see what were called 4GLs (fourth generation languages), which simplified a lot of functions, and provided a nice user-friendly interactive interface. This is where I'd put EG, Studio, DIS, and even Viya. The tradeoff is that a less-experienced user can get useful stuff quickly from these tools, but the range of possible solutions is much less than using a programming language. I can do everything that can be done with these tools using just Base SAS and the procs, but it'll take a LOT longer (and I'll probably make a bunch of mistakes!)
BUT, what I consider the secret sauce with SAS is that as long as my EG user can get 90% plus of what they need from EG, we're laughing. What they can't get from EG I can write using Base SAS "primitive code". The subject matter expert next door, using Excel as their 4GL, is going to have to find someone to write Visual Basic / C# code for them. And I'm going to run rings around that programmer, because Base SAS is optimized for solving this kind of problem.
I'm eager to hear what other SAS users think!
Tom
Tom, a video game in SAS?
Hold my Labatt's Blue Light: https://communities.sas.com/t5/SAS-Communities-Library/Wolfens%C3%A4s-The-FPS-game-that-was-written-in-SAS/ta-p/906798
Without a doubt, SAS is a programming language. I have programmed in several programming languages such as Fortran, Basic, APL, Pascal, and PL1. ( I guess that list of languages puts me in the "old guy" category!) None of those languages does a better job with character data than SAS. I may be biased because I often give talks on SAS functions, especially on SAS character functions.