Earlier quoted context omitted.
Thanks for your interesting perspective :) I always think of people who use C professionally as people who have been doing it for a _very_ long time and know a lot about it. In that situation it would be exceptionally hard to find any employment working with C. I've always been hesitant at many Project Euler problems since some of the math is off putting to me. That's why I consider building something (like a side pr…
I work on a team of 25-35 year old devs doing firmware/performance work for a BigCo - there are definitely plenty of people hiring in the space, but in general you only use C if you have custom hardware, and you only have custom hardware if you have a huge amount of capital, so it's tougher to find that work outside of established players.
Beej's Guide to C Programming (2007)
61–70 of 81 posts
Re: Beej's Guide to C Programming (2007)
#62Earlier quoted context omitted.
> Are there any good tutorials for cross platform development with C++ on windows. Install QtCreator with MinGW. Here you can just compile your code and have it work. > You have to configure multiple files in multiple folders and multiple configuration entries. not on sane systems where you just do `apt-get install libsdl1.2-dev` or `pacman -S gtk` or `brew install qt boost`
I hear QtCreator mentioned on Hacker News quite frequently. A couple of questions, if you don't mind. 1) How well does it work if you are trying to stick to C and not go the C++ route? 2) They are GPL licensed, so not very permissive, or quite expensive for a commercial license. Is there a significant difference in feature set between the open source & commercial versions for someone that just wants to take it for a…
https://stackoverflow.com/questions/11994053/can-i-use-qt-lg...
Re: Beej's Guide to C Programming (2007)
#63Earlier quoted context omitted.
I work on a team of 25-35 year old devs doing firmware/performance work for a BigCo - there are definitely plenty of people hiring in the space, but in general you only use C if you have custom hardware, and you only have custom hardware if you have a huge amount of capital, so it's tougher to find that work outside of established players.
That's awesome - if you don't mind me asking how did you get into that area of work/expertise?
Other embedded programmers are just that, programmers who found a programming job that happens to be in this sector and learned the peculiriaties on-job.
Also bear in mind that there are different levels of "embedded" which ranges from writing code for some obscure MCU directly in hexeditor (as it is so obscure so nobody bothered to write assembler for it) to writing applications in Java for something that is essentially android tablet bolted onto some larger system (be it car, airplane or some industrial machinery)
Edit: also habing custom hardware is not that capital intensive unless you plan to mass manufacture said custom hardware. And almost any piece of custom hardware has some MCU programmed in C and/or device driver which is also written in C.
Over last 10 years I've participated on development of about 5 different pieces of custom hardware for various niche applications. This includes industrial sensors, IoT-ish stuff and somewhat peculiar reliability and security enhanced PC platform.
Re: Beej's Guide to C Programming (2007)
#64Earlier quoted context omitted.
It's definitely worth reading, but be aware that it's quite old-fashioned in that it focuses entirely on blocking I/O and select(). Also this page fails to explain why you would call shutdown(): http://beej.us/guide/bgnet/output/html/multipage/shutdownman...
What has replaced select()?
The alternatives are mostly necessary when you're dealing with large numbers of connections (thousands), which most people aren't.
Of course there's also the slight problem that select()'s interface with the file descriptor packing macros and the unusual requirement to figure out which file descriptor is the largest numerically that might push people to the alternatives. That is also a valid reason IMHO.
Re: Beej's Guide to C Programming (2007)
#65As someone who currently works with C# - is there much of a point to learning C? I've always found it interesting, but never had a reason to jump into it.
Also it still remains the most practical language for fundamental system components like an OS kernel, drivers, etc.
Most people don't work on compilers or kernels, so I'd say most people don't actually need to learn C. But, unless C is ever unseated from its position, we'll always need some people out there that know it. :)
To unseat C, we'd need a language with similar low-level expressive power, minimal overhead, and a compiler written in that new language that can compile itself.
Re: Beej's Guide to C Programming (2007)
#66Re: Beej's Guide to C Programming (2007)
#67As someone who currently works with C# - is there much of a point to learning C? I've always found it interesting, but never had a reason to jump into it.
C is still pretty special in that it's generally used to write the compilers for all the other languages. Even today, if you were to create a brand new language, you'd likely write the compiler in C (or maybe C++). Also it still remains the most practical language for fundamental system components like an OS kernel, drivers, etc. Most people don't work on compilers or kernels, so I'd say most people don't actually ne…
You might write the bootstrapping compiler in C for portability reasons, but you'd probably write the real compiler in the new language itself. Not to mention that if you don't mind the extra dependency on POSIX platforms you don't even need to write the bootstrapping one in C. For example, the Rust compiler frontend was originally written in OCaml, and is now written in Rust with a fairly complicated bootstrapping process. The backend is still C because it uses LLVM, but it hardly has to be
Re: Beej's Guide to C Programming (2007)
#68Earlier quoted context omitted.
C is still pretty special in that it's generally used to write the compilers for all the other languages. Even today, if you were to create a brand new language, you'd likely write the compiler in C (or maybe C++). Also it still remains the most practical language for fundamental system components like an OS kernel, drivers, etc. Most people don't work on compilers or kernels, so I'd say most people don't actually ne…
> Even today, if you were to create a brand new language, you'd likely write the compiler in C (or maybe C++). You might write the bootstrapping compiler in C for portability reasons, but you'd probably write the real compiler in the new language itself. Not to mention that if you don't mind the extra dependency on POSIX platforms you don't even need to write the bootstrapping one in C. For example, the Rust compiler…
Re: Beej's Guide to C Programming (2007)
#69Earlier quoted context omitted.
What kind of apps have you used since learning C#? Was it difficult finding work with C#?
Do you mean what sort of things have I built thus far using C#? Most have been console based applications with a GUI front end to manage settings. I've worked a little with WCF and a little more with WebAPI/REST and also Windows Services. C# more often than not makes things fairly simple and fun, but repetitive at times.
Re: Beej's Guide to C Programming (2007)
#70As someone who currently works with C# - is there much of a point to learning C? I've always found it interesting, but never had a reason to jump into it.
While C remains the single most important programming languages of all time, its share of popularity is shrinking, giving way to C++, C#, Java, and Swift (from Objective-C). Nevertheless, I don't think anyone should call themselves a (true) programmer unless they know C. C is easy to learn, because it's a small language. If you are not new to programming, pretty much all there is to know is in the second edition of t…
C was probably the first language I learned, but I wouldn't say I "know" it. I still have no idea which calls are safe or preferred or how to structure a larger program.
It depends what you want to get out of it. If you want to learn for its historical value, to learn more about the language that a majority of other languages adopted ideas from, K&R is probably good enough. If you want to grok a bit of random C code, that might be good enough, too, but you'll probably need a bit more. If you want to contribute to the Linux Kernel or similar project, or even put C on your resume, that's definitely not enough.