MATLAB is a desktop computing environment, that's designed to make it easy to do math in batches. And if you were to have access to the MATLAB source code, you'd find that as you dig down into it, the actual computational bits are written in C++, C, or (very likely) Fortran.
However, its interface to the underlying mathematical packages is big and slow, and isn't something that can easily run in real time*
The general process for a signal-processing related development effort is more or less as follows:
First, someone does the basic research, to see if what's being proposed is even possible. This would involve doing a mix of basic mathematics and experimental mathematics. The basic math part is - math. The output is a series of research papers or white papers. The experimental math part could well include MATLAB, but might involve using Python and numerical packages again (in my opinion MATLAB is best for programs that don't exceed 500 lines total; beyond that the clunkiness of the language exceeds the fact that Python and its available packages are less thoroughly integrated for math).
Then, someone does an initial system design, using the output of the above step (sometimes these two steps might happen at the same time; sometimes, as in the case of a straightforward SDR, the basic research has been established for decades). If you're being systematic about your design approach, you'd also use MATLAB or Python here, but you would also be aware of what processing will be available on a processor (with code written in C/C++) and/or any digital logic (FPGA or ASIC).
The output of this initial system design is a fully-detailed algorithmic description that goes all the way down to the established functions that are available in C/C++ (so, arithmetic if there's not an available math package, or the package's operations if there is). This initial design will include an estimate of processor loading, and will have an analysis of what processors need to be used, and if digital logic is used, how the work is divided between the processor(s) and the digital logic.
(Note that an alternative path here is that you're given a prescription for the hardware you can use, and your job is to determine how much functionality can be squeezed into it. It uses the same knowledge base, but it generally involves a lot of cut-and-try technical work, and a lot of meetings with non-technical stakeholders to explain things and to negotiate a solution that everyone can live with).
Finally, end-point hardware is obtained or designed, and the actual design is realized. This part is done in C or C++ in the processors, and in VHDL or Verilog in the digital logic bits (possibly with some SystemC thrown in there for fun). It is this final step that is the most labor-intensive. It requires not just an understanding of signal processing math, but a deep understanding of numerical methods (because you generally can't just do everything in 64-bit floating point: you'll often be squeezing your design into smaller floating point words, or into fixed-radix arithmetic), and general embedded programming good practices.
In the working world, you either start out at the bottom step, implementing designs and then (maybe) learn enough on the job that you can be trusted to do detailed systems design and you move into that step. Alternatively, you get a PhD with an absolutely dynamite thesis that essentially does that first basic research part for some problem that someone with money wants to solve, and then you do research for the rest of your career, because the only way to know how to do the initial system design is to know how to do the detailed design.
If you're a MATLAB-slinging top-level DSP practitioner and you want to actually write code, then these are skills that you need to make sure you have when all is said and done:
- Know what all those MATLAB library calls actually do. I've seen a lot of posts from people who think that DSP begins and ends at knowing what MATLAB functions to call -- it doesn't. If all you know is what MATLAB functions to call, start by figuring out what they do, both arithmetically and to a signal.
- Learn how to implement math in C/C++. First learn how to do it so it works at all, and then learn how to do it with reduced data widths and with fixed point. Then learn how to do it so that it runs fast. If you don't have a numerical methods text, get at least one; if you're still in school take a numerical methods class.
- Learn how to do embedded programming, or at least get a start on it. This means learning how to write your code so that it does not depend on any higher-level operating system functions, and learning how to be mindful of how much memory you are using, and at least the basics of inter-thread communications on a processor that doesn't have an MMU.
* If you don't know what "real time" means in the context of embedded systems programming -- learn.