Live data from Hacker News

Low-Level Programming University – A roadmap to becoming a low-level programmer

github.com

81–90 of 168 posts

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#81
post #21

About career, is low level programming job market that small we see in this threads comments ? I want to be C/C++/Rust programmer. This is quite frightening.

Take a look through the monthly HN "Who's hiring?" posts. Jobs of any kind that aren't web (front-end, back-end, or full stack) or mobile apps are vanishingly scarce.

It's really quite depressing.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#82
post #68

Earlier quoted context omitted.

The No Starch book is just a print version of https://rust-lang.github.io/book/

Oh I did not pick up on that, thanks. No Starch are pretty nice nice pressings though so might be worth it. Cheers.

One of two authors here!

Here's the situation: No Starch, being as awesome as they are, are totally happy with printing an open-source book. The Rust project wanted to do a second edition of the book for various reasons, so Carol and I have been doing that, but also, working with No Starch's editors. So they've been collaborating with us on it. It also means you can get a nicely laid out eBook, the paper copy, all of that.

The proceeds are going to charity.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#84

Don't go there. There's really not a lot of work. But if you must, low level is more a calling than a learned skill. You probably shouldn't be learning assembler. First, compilers are really quite good. Yes, it's possible to beat them (I do) but generally not by much. And not by much ain't gonna put bacon on the table. You can probably get what you need from gcc inline asm() calls. Take a look at the linux sources an…

> First, compilers are really quite good. Yes, it's possible to beat them (I do) but generally not by much. Genuine question: what would you quantify “not by much” as here? In my experience, it's not uncommon to see 2x+ speedups from well-written software pipelined hand-optimised assembly in hot loops. (Especially so for in-order processors, like you might see in embedded applications or as a LITTLE core in your smar…

2x in a hotspot is not much compared with better cache management in the rest the program. But if that 2x is important, great. I know this sounds really boring but you should write it in C first and then find that hot loop in a profiler like VTune and then rewrite. 2x of something really unimportant is still unimportant.

Also while software pipelining is possible on something like Haswell ... its limited register set makes it a limited technique. Modular variable expansion is tough with not so many registers but renaming does help somewhat.

I think tools like VTune are awesome for finding hotspots and reading assembler is like reading Latin. But programming in assembler? I think it's best to disassemble and rewrite your C accordingly.

I should have mentioned this in the first post: if you're not a VTune ace, if you're not looking at the Intel PMRs and scratching your head, you probably should not be writing in assembler in 2017. Also, VTune deals with C (and Java) quite nicely (just not on OS X).

Anyways, you may get 2x+ on something but that approach won't work with a GPU. Similarly, Apple doesn't provide microarchitectural information on the a10. Nvidia doesn't on Denver. Even though assembly will still be with us, this low level approach is going away. Apple, Intel, Arm, Nvidia, ... really want you to write in C.

I say all this as a hardcore knuckle dragger.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#85

Don't go there. There's really not a lot of work. But if you must, low level is more a calling than a learned skill. You probably shouldn't be learning assembler. First, compilers are really quite good. Yes, it's possible to beat them (I do) but generally not by much. And not by much ain't gonna put bacon on the table. You can probably get what you need from gcc inline asm() calls. Take a look at the linux sources an…

I agree not to go into low level programming expecting a wealth of job opportunities to suddenly open up, but I wouldn't tell people not to go there at all. Not only is assembly really fun to play around with, I feel like I've gotten a lot out of the bits of assembly I've read/written. Even though I've never written assembly code for work, being able to read the disassembly in gdb has come in handy before. Also, a lo…

It really does give you insight into some of the lower level stuff. It won't give you the full picture but it will give you ideas about how you might be able to take better advantage of your hardware by changing how you use data.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#86
post #19

Earlier quoted context omitted.

I struggle to find good low-level devs. It is surprisingly hard to find good C / kernel / network programmers.

You're not the only one. My company is desperate for good low level hackers. We can find people who know Python and Java for days, but people with the skill set we need are very hard to find.

i am curious how much is your company willing to pay? is your budget around 150-200K or around 80-120K?

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#87

In this thread there's a lot of FUD about there being no job market. One place to look is to your undergraduate electrical engineering brethren. You'll basically always be following them around to wherever they go (though often in slightly higher demand given that board design is typically faster than the software development phase). Also worth noting that in recent years there has been an emphasis on FPGA skills for…

[deleted]

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#88

Don't go there. There's really not a lot of work. But if you must, low level is more a calling than a learned skill. You probably shouldn't be learning assembler. First, compilers are really quite good. Yes, it's possible to beat them (I do) but generally not by much. And not by much ain't gonna put bacon on the table. You can probably get what you need from gcc inline asm() calls. Take a look at the linux sources an…

As an embedded programmer, I wholeheartedly second this. I'm in an area where there are relatively few opportunities to do close to the metal work. The ones that do, don't pay any more than backend web developers make. In fact I've come to assume that they can offer less due to either the intrigue of the work, or because you often compete with computer/electrical engineers who aren't expecting outsized developer sala…

Could not have said it any better. Embedded development is dominated by hardware engineers who make decisions very often without the software development teams input, placing embedded folk square in the target of management angst as well. Choosing Broadcom chips without drivers, 3rd party experimental hardware who wont release data sheets, choosing USB chips that don't support host mode, miswired memory interfaces that mismap fpga access, FPGAs that cause spurious bugs when consuming more power than necessary in certain modes, all lay squarely on the embedded devs shoulders and can manifest at first looking like pure software problems with the schedule pressing. Not a pretty world.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#89
I can vouch for Paul E. McKenny's book.

I would recommend anyone with curious mind to read it, even if day to day work does not involve much low-level programming. It will open up a whole new set of ideas / knowledge in problem solving toolbox.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#90
post #44

Don't go there. There's really not a lot of work. But if you must, low level is more a calling than a learned skill. You probably shouldn't be learning assembler. First, compilers are really quite good. Yes, it's possible to beat them (I do) but generally not by much. And not by much ain't gonna put bacon on the table. You can probably get what you need from gcc inline asm() calls. Take a look at the linux sources an…

If one wants to learn to reverse engineer software what choice is there but to learn assembly?

Learn to read, understand and map back into C is something different than programming in it.
Post reply on HN