7 ms·
C is a weird language, in the job market. It's at the core of all our electronic infrastructure, it's important to learn it if you want to be a serious develope
by sacado2 8y ago
C is a weird language, in the job market. It's at the core of all our electronic infrastructure, it's important to learn it if you want to be a serious developer, yet nowadays you can hardly find a job that is "pure C".
So, in universities, you have either students who don't see the point, because they'll do java or PHP or JS at their daily jobs, or students who get a little too excited by it, almost specialize in it, and can hardly find a job that fulfills their excitment.
- ElBarto 8y agoThere are quite a few jobs available which are pure C. But obviously the industries/domains which require C are not the same as those which require Java/PHP/JS. In embedded software no-one is going to use Java or PHP, like in mobile/web apps software no-one is going to use C. That being said, Objective C is a pure superset of C (which C++ isn't).
- pjmlp 8y ago> In embedded software no-one is going to use Java Actually they will. https://www.ptc.com/en/products/developer-tools/perc https://www.ptc.com/en/products/developer-tools/perc https://www.aicas.com/cms/en/JamaicaVM https://www.aicas.com/cms/en/JamaicaVM http://www.microej.com/ http://www.microej.com/ https://developer.android.com/things/ https://developer.android.com/things/ https://www.ricoh.com/esa/ https://www.ricoh.com/esa/ Just a small overview, as I don't feel like posting all links from everyone active in commercial Java compilers for embedded deployments.
- ElBarto 8y agoThese seem mostly application level (i.e. high level) software running on embedded systems. I wouldn't call developing on Android "embedded software". The point being that the choice of language is strongly influenced by the domain the software is developed for. I graduated 16 years ago and I have always got jobs which were pure C, on state-of-the-art products as well. That's still the way it is, plenty of jobs available.
- pjmlp 8y agoNoted that I explicitly mentioned Java compilers and not JVMs, some of those platforms do run bare metal and require just a couple of MBs. Not everyone is targeting PICs with 8KB Flash memory.
- Uberphallus 8y agoHonestly, efforts to run Java/Python/Lua/etc in embedded are more about retrofitting developers into that market than anything else, the fact that embedded devices get more and more powerful only enables that. Embedded isn't unaffected by Wirth's law.
- pjmlp 8y agoUS and French military are some of the entities using Java based embedded solutions for weapons control systems, they surely know a few things about hard embedded requirements.
- Uberphallus 8y agoIf we're talking about Aegis, they replaced UYKs with PCs and the realtime constraints are very soft (hundredths of milliseconds); that's hardly embedded, unless you mean embedded in a ship. And yeah, Java works there way better than the CMS-2 they force fed engineers with before. In any case, those systems are far from having the physical and technical constraints of the actual system on a missile, plane or satellite; simply put, a 50ms delay to know the speed of a remote object is acceptable, a 50ms delay to know the speed within said object isn't. To this day, and to the best of my knowledge, 95% of hard realtime logic is C, C++ and Ada or a combination of them, when not custom ASICs and FPGAs for low latency and high throughput tasks. If we're talking about other systems, I'd like to know about them.
- jki275 8y agoCMS-2 really is a horrid language. I'm surprised to hear they're using Java though, I figured they would go to C or C++.
- pjmlp 8y agoYes Aegis is one of the examples, among other ones reported throughout the years by Aonix, before they got bought by PTC. Apparently embedded now means PICs with 8 KB, while anything else more powerful than a late 80's Cray is not embedded anymore.
- TickleSteve 8y agoYou can only afford to run Java on an embedded system when you are making limited-run devices, i.e. where the cost of the processor & RAM etc are negligible. For most embedded devices, this is not true. When you're paying for every device the code runs on... and that code wastes 80% of your cycles in abstractions and indirections then forces you to have 200% more RAM than the equivalent C code, that changes your mind. Saving a tiny amount on a processor adds up when the multiplier is (say) 1 million units.
- pjmlp 8y agoDepends if you only consider embedded PICs with 8KB or such then yes. Otherwise anything of ARM Cortex M class does have Java compilers available. Garmin devices use Monkey, which is their own Java like language. Ricoh and Xerox copiers use Java on OS stack for third party integration. Likewise Cisco conference call systems have their own Java flavour. Blu Ray players, Gemalto intelligent electricity meters, and plenty more of other examples are available.
- TickleSteve 8y agoThe same applies regardless of the processor (size). Less overhead will allow a cheaper device. Its worth noting that the java support on Cortex-Ms (Jazelle) is deprecated. If you're using a cortex-m class device, chance are you don't want to be running java on it. Note that I'm talking in general terms, there are always exceptions to the rule (such as for the rare sandboxed application).
- pjmlp 8y agoWhy are you talking about Jazelle?! There is this little feature of all commercial Java toolchains for embedded development called AOT compilation to native code.
- TickleSteve 8y agoof course aot exists, was just pointing out that java is not much of a use case in embedded sw, to the extent that once major features are now deprecated.
- varjag 8y agoI've seen an industrial switch running Node. Whenever it was collecting stats, the switching fabric was locking up.
- seabird 8y agoCan we hear a little more about this? It seems so far off the deep end that I'm morbidly curious about the reasoning behind it.
- varjag 8y agoIt was a managed industrial switch from a 2nd tier manufacturer that am not going to name. Was found out because it was breaking the fiber ring on site. My colleague opened it, hooked to a UART, accessed the system and found it's running a Node application for Web UI. On (self-refreshing) status page it was accessing exposed to userspace PHY registers to read out the stats and not in a clever way, blocking up the switch.
- fergie 8y agoI graduated university really excited that I understood pointers, and that I could implement about 10 data structures from the ground up. However when I got my first job at a large dotcom, I got treated as an unqualified beginner because I didn't know Java. 20 years later and I have never had to write so much as a line of code in C, and that makes me kind of sad.
- simias 8y agoA lot of low level embedded programming is effectively "pure C". I think the problem is that these aren't usually entry-level jobs for people without experience. It doesn't help that schools prefer to put the emphasis on languages like PHP or JS because they're easier and almost guarantee that people will find a job immediately regardless of their background. It's just the path of least resistance. But as somebody who mostly writes C for a living and specializes in embedded programming I can assure you that there's no shortage of employment offers.
- golergka 8y ago> these aren't usually entry-level jobs for people without experience This seems true in any software engineering job - but at the same time, open source or personal projects are experience too. I would be very surprised to find a junior developer CV that didn't mention any projects like that.
- yayana 8y agoEmbedded jobs usually get listed as C/C++, and most of the C developers I know stay away from them.
- yitchelle 8y agoWhy? I could guess that these jobs are not as "sexy" as using Java, Python etc?
- tom_mellior 8y agoI think your parent was saying that people using the term "C/C++" are often muddy on the considerable differences between these two languages, and that it is a red flag in a job description if the company cannot even manage to properly name the language they use.
- gameswithgo 8y agoIf you are pedantic enough that you get irritated by "C/C++", which clearly denotes that they understand they are different languages, and only implies they may disagree with you on how much crossover knowledge there is, you probably won't be happy anywhere on earth except maybe the linux kernel team.
- ChrisRR 8y agoMy last 4 jobs have been pure C. I've never had a problem finding a job
- glucose 8y agoI'm CS since 2015 and am graduating next year. Most of our programming classes were in Java, which was deemed outdated by some. But we still had an operating systems and an embedded systems course that used C exclusively. I think it's important to use the language that best applies to the course material. For example we looked at UNIX in the OS course and it really made sense to use C there. But when we did Algorithms and data structures we used Java for that. Using C really takes away from the point and bogs you down in language specifics in this case.
- TickleSteve 8y agoDisagree, the embedded world is still firmly routed in C and this world is larger than you realise. Consider that every electronic device you have has multiple microcontrollers inside running C code. I would argue that if you want to get your code in the most peoples hands, you have to know C. Just looking around the (engineering) office I'm in at the devices using C: - My PC. - The router(s) - The printer(s) - the USB hubs. - the mobiles and tablets - the lights (yes). - the A/C. - The door entry system - the microwave - the desk phones. - the monitors on my desk. - The dishwasher - The coffee machine - The clock The C world is much larger than most web people realise. (the list goes on and on...)
- sacado2 8y agoI agree, there is more C code used in everyday life than anything else. But, regarding job offers, there's a bias, because this code tends to be very stable. The code in your microwave was written 10 years ago, and didn't change since then. OTOH, even a rather stable webapp like HN changed a lot in the meantime. Maybe the guy who worked on your microwave's code moved on to several other projects, and produced code for dozens of objects in your office, while the guy working on your company's website has been working fulltime on it since its creation. Web stuff is maintenance heavy, so even a small webapp requires a lot of human work to keep working in the long run. Add this to the fact that, although most companies, even small ones, need a website that is more than a static single webpage, and/or a way to manage their customer / provider databases, there are rather few companies producing electronic appliances, and unless you live in the right place, most programming jobs you'll find are in high-level stuff.
- rayiner 8y agoC is much bigger than just the “embedded” world/microcontrollers. iOS and Android are still C from the kernel up through the window system/graphics layer. The router software at the core of the Internet are written in C. Vulkan or whatever underlies your game console is in C, as is the GPU driver. (The game itself is probably C++.)
- pjmlp 8y ago