I studied C programming about ten years ago, whiles in Uni,however I would like to pick it up again.
I’m looking at developing secure applications that utilize cryptography.
Would C be the right language to use?
What types of applications are developed using C?
2
C nowadays is used primarily in situations in which a fast compiled language is required that is not overly complicated (classes not required). This includes:
- Hardware drivers
- Pixel shaders (variant of C, Cg)
- In general, programs in which speed is critical
Knowing C well is paramount for knowing how programming languages work with the operating system, and it is literally impossible to know how to program C well and not have a thorough understanding of how such things work underneath. C++ is almost as fast as C, and in fact many of the same applications of C you will see C++ used for having all the benefits of C++ and very little slowup as a consequence. (pixel shader being an exception).
Often you will see programs written in other languages refer to libraries written in C for CPU-intensive operations and generally a large software company will have at least one C programmer for such work.
That said, I think you should also learn some higher-level language to counter-balance if you want to be a well-rounded programmer. You could use C for cryptography, though most languages have support for cryptography, and such support is already generally written in C or C++. In general, writing the entire applciation in C, you risk to reinvent a lot of things which already exist in existing languages, so I would encourage you to use it only to tweak otherwise slower parts of your program.
I hope that answers your question.
8
C may be selected as a development language for any number of reasons:
Ecosystem
C is the development language of choice on some operating systems – notably Unix platforms and their variants.
Low level integration
If you need to inline assembler for whatever reason, C would be a natural choice.
Cross-platform
C can be used to write platform independent code although this has largely been superseded by Java in this respect.
Raw speed
To my mind, there is still no better high level language in terms of speed so if performance is of the essence, C would be a natural choice.
If your application is sufficiently complex, you will of course need classes. C++ may seem to be the obvious choice here, but there are a growing number of C variants which provide OO functionality. Objective-C being the main one that springs to mind but there are many others (see here).