<div dir="ltr">Just from my experience in the C job market. It's usually firmware related jobs which means you also need knowledge of MCUs like Microchop/Atmel/ARM, etc. If I was in your shoes I would pick up Go or Rust. (A LOT of projects/companies are going in this direction) Go is basically C and Python. I've been a long time PHP programmer and after using Go I haven't looked back at PHP since. I know PHP introduced Composer and some other things, but I feel like it's going the way of Zend making shit more bloated then it needs to be, but that's my two cents.<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 10, 2021 at 5:35 PM Joseph Sinclair via PLUG-discuss <<a href="mailto:plug-discuss@lists.phxlinux.org">plug-discuss@lists.phxlinux.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">C and C++ are mostly used for shrink-wrap applications and libraries. The Linux Kernel is still C and the Windows Kernel is mostly C++.<br>
About 90% of business applications are Java. It's the most widely used language and platform for web-based applications and microservices. The Spring platform is very popular, but I'd actually recommend looking at Eclipse microprofile (<a href="http://microprofile.io" rel="noreferrer" target="_blank">microprofile.io</a>, <a href="http://quarkus.io" rel="noreferrer" target="_blank">quarkus.io</a> for a good implementation) for microservices, it's much lighter and faster.<br>
Node.js is popular with "full stack" shops. It's very quick to pick up, but extremely difficult to build non-trivial systems and maintain them. The single-thread nature of the system and dealing with javascript async constructs can be particularly difficult.<br>
For desktop applications in JavaScript (not ideal, but some entities want this) there is the Electron framework. Microsoft likes this a lot, and some major Microsoft applications, like MS Teams or VSCode, are written in Electron.<br>
If you're looking to develop systems for Windows only (unlikely, but possible), then .Net and C# are widely used.<br>
Mac is kind of a grab bag, but Objective-C is still pretty popular.<br>
<br>
A lot depends on what one wants to learn and why.<br>
Just learn something? Perhaps Java as it's very widely applicable.<br>
Learn something as a challenge? C++, it's probably the hardest to learn to do well, and can build extremely complex systems.<br>
Learn something quickly useful? Go, Python, or Node.js. These are popular, quick to get started, but you have to be aware you can design yourself into a corner very quickly, and maintenance can get difficult.<br>
Transition from PHP to more general-purpose systems? Go is a good place to start; it's designed from the ground up as a language for new or transitioning programmers. It requires you follow very strict rules, including an enforced style guide, but it's also easier to write "correct" code than most alternatives.<br>
Other goals might point to other alternatives, it all depends on the purpose.<br>
<br>
<br>
On 2021-01-10 04:46 PM, Matt Graham via PLUG-discuss wrote:<br>
> On 2021-01-10 15:52, Keith Smith via PLUG-discuss wrote:<br>
>> I'm a PHP dev. I am wondering about the value of learning C on Linux.<br>
> <br>
> C is not generally used for new projects (other than libraries, C libraries can work with any other language) these days. Managing your own memory is potentially faster than having things be garbage-collected, but it provides an excellent way to shoot yourself in the foot because people are bad at managing memory. It'd teach you how much patience you have, and potentially how slow PHP is by comparison, but I don't think it'd provide much value in 2021.<br>
> <br>
>> What would you recommend learning C on Linux or all of Java?<br>
> <br>
> Neither. No one's using Java for anything but Android applications now, and Google are trying to push Kotlin for those. Java is also a total PITA as it pretends to be high-level while requiring almost as much boilerplate as C does.[0] wordpress is everywhere, so that'll guarantee employment for PHP people despite the language being unfashionable. node.js is everywhere now for reasons which make no sense to me. If you end up having to maintain something half-assedly written in node.js, you will need some familiarity with its weirdnesses.[1] If you don't know node.js already, learn that.<br>
> <br>
> IMHO, if you want to learn something old-school, go for C++ not C. Classes are sort of useful for real-world problems, and you now have the option to use auto_ptr to ease memory management woes.<br>
> <br>
> [0] Java is ~= COBOL translated to the 2000s.<br>
> [1] node.js is ~= Perl translated to the 2010s.<br>
> <br>
---------------------------------------------------<br>
PLUG-discuss mailing list - <a href="mailto:PLUG-discuss@lists.phxlinux.org" target="_blank">PLUG-discuss@lists.phxlinux.org</a><br>
To subscribe, unsubscribe, or to change your mail settings:<br>
<a href="https://lists.phxlinux.org/mailman/listinfo/plug-discuss" rel="noreferrer" target="_blank">https://lists.phxlinux.org/mailman/listinfo/plug-discuss</a></blockquote></div>