yekim
For those of you who enjoy a heaping meal of architectural commentary sprinkled with a generous portion of sarcasm, check out the author's blog [1]. Literally LOL every time I get a chance to read it.
vi / vim / emacs can be useful in certain situations (Unix / Cygwin command lines, low level embedded systems that don't have a desktop, etc), but for most code, the modern IDE GUIs blow them away. Code navigation / inspection / contextual browsing is much, much better, easier, and far more productive using Eclipse, CLion, Visual Studio, etc.
The goto has gotten a bad rap over the years because of Dijkstra's paper. And that paper has unduly influenced a lot of incorrect thinking. There are valid use cases for goto, and this is certainly one of them.
I use it all the time like the example above. Particularly because it makes my life so much easier when developing and debugging embedded C code across various tool chains, some of which have less functionality than others.
[edit - correct typo on Ed's name]
Unfortunately, C does get a lot of hate on HN. I suspect it has to do with this site's demographics. Many (not all) of the HN clan seem to be oriented towards / mostly familiar with web based technologies. I suspect that for many who have tried, going from a web dev environment to a C oriented dev environment feels like a robust shock to the system.
I'd also be willing to bet that there's an age bias at play here; C has been around, like, forever. It is certainly not the new hotness. Most (not all) people that I know who enjoy it and are proficient at it, are 40 or older. Much of the web based dev crowd that hang around HN seem to be in their 20s, and as it is a time honored tradition to poo-poo the ideas / methods / tech of the older generation(s), it's not surprising that C doesn't get a lot of love.
Yes, I realize I'm painting with broad strokes here. It'd be interesting to see a survey or three that correlates age ranges and tech used on a day-to-day basis to see if these assumptions or legit. (Anyone got any survey data up their sleeve they'd be willing to share?)
Me personally - I love it all. C, C++, Java, Python, Javascript, Rust, Haskell, Scheme, etc. Making computers do things for you, and for other people, by writing detailed instructions is quite possibly one of the funnest things in the world. Double bonus for getting paid to do it!
Anyone else seeing this?
From the big G's standpoint, it makes good biz sense to exit this market. I sure hope the subtext in the article comes to fruition ie that Google / Alphabet has figured out a better way to get high speed internet to homes in the US sans fiber.
In an ideal world, this fast fiber internet ought to be a municipally managed utility, with my tax dollars paying for the fiber in the ground. Then, my take home dollars paying for whatever competing service(s) I choose to light up said fiber to bring me access to the net.
I can imagine certain limited scenarios where this kind of problem solving approach might be useful, but on a day-to-day basis? Nope. No way.
For me, if I'm ever working in assembly, which is pretty rare these days, it's usually on an overall "smaller" system. Ie an embedded system where all the SW, HW, and tools can be grokked by a single person with out multiple cascading levels of increasing complexity and abstraction.
Good times for sure, though to be real, the good part usually comes after many moments of banging-head-against-brick-wall.
Desktop apps w/ C/C++ -- IDE based debugger (Visual Studio, GDB w/ a front end, ADB) print / logging statements
Embedded C -- IDE Debugger (Green Hills, ARM DS-5, IAR, Eclipse w/ remote GDB, etc) GPIO ports, logic analyzers, oscilloscopes, etc)
Apps -- ADT / ADB, print / logging statements
Python, bash, sh, .bat scripts -- print / logging statements
As many others have mentioned, having a consistent bug reproduction methodology is vital, a strong mental model of the SW and its various components is important, and a willingness to dive deep and question assumptions is critical. Ie don't always expect your compilers or various OSes to be infallible.
Contrast this with say, Python, where readability is highly valued and they have a one-way-to-do-certain things mentality, like sorts for example, means code is generally easier to grok, debug, and extend.
Thus, readability becomes especially important when you have to deal with someone else's big ball o' mud and you need to fix a high stress, high visibility, lines down issue at one in the morning because the original programmer is long gone, didn't leave any comments in their code, and decided to play "look at me, I'm so clever with how I use this operator", but forgot to account for a certain scenario that manufacturing decided to roll out the other day without telling anyone. Can I get an amen?
I'm assuming you are referring to the Arduino family when you say "8-bit AVR controllers"? If yes, they do in fact do a great job at making things somewhat easy for the dabbler, and have many resources available online to peruse for help.
Taking the next step to full-on embedded development (STM32 in this case), as you are finding out, is quite a big leap. Not that it can't be done, but that it really is challenging.
Guess it depends on your background and your familiarity with software development and/or hardware in general.
Personally, an article like this, with its main diagram and high level descriptions, would have been enormously useful back when I was just starting to learn the dark arts of computer programming.
If your Point of Sale systems are running some embedded form of Linux, and all HW access is abstracted away from you, then you're probably right.
On the other hand, if you are writing code that deals with external HW signals, performant memory access, ISRs, an RTOS and their many features, etc, then this article serves as a good basic foundation for the "software" side of things. Ie what actually happens when you hit the "build" button in your IDE.
From, a long time embedded software engineer
http://www.arrl.org/shop/ARRL-Handbook-2016-Hardcover-Editio...
Just wanted to say thanks for the laugh! It's not often than a comment on HN makes me laugh out loud. As in laughing with you, not at you...
"Because I’m overeducated and insecure, I package my banal observations in semantic finery, so I feel a kinship with lines like ‘‘Earthling inserts to chalice the green cutchie/Groundation soul finds trust upon smoking hose,’’ which is a fancy way of saying ‘‘a guy smokes some weed.’’ The thesis of ‘‘Dopesmoker’’ may boil down to ‘‘smoke dope,’’ but first-time listeners should be forgiven for wondering if it’s actually an anthropological study of Qedarite tribes in the pre-Christian Sinai Peninsula."
Totes hilare. Any song with lyrics that complex and earth shattering, deserves a listen. Plus - metal. Ya. Rocking out to the epic tune now!
Me personally - I climb, bike, run, and lift. I like variety, and I usually only do one of those activities a day. I find yoga to be too slow, with little mental engagement, and thus boring. My wife, however, loves yoga. And we run and climb together when we can.
It's all about finding some form(s) of exercise / physically-intense-activity that works for you. I found that I'm attracted to things that engage both my mind and body. Rock climbing is incredibly hard physically and mentally engaging; each boulder problem is like solving a puzzle. And for the progression minded, each route or climb is graded so one can measure progress and overall fitness improvement. Mountain biking is fast, furious, and mentally demanding because you have to pick the right line to stay rubber side down. I tend to ride as fast and as hard as I can, both up and down trails to keep it demanding and fun.
Cross-training is important as it forces you to work different muscle groups, which promotes overall better body awareness and health. I also find that when I take breaks in the middle of the day to do these kinds of activities, I find I'm able to focus better and get more done. I've also found that when I'm stuck on a particularly thorny challenge, be it a defect or algorithm / design problem, taking a break and getting some exercise usually opens up new avenues of thought and ideas I hadn't considered previously.
For some of us, the constant deluge of info, along with work and family life, makes it tough to stay on top of all the latest developments. Glad this service was "re-announced".
I'm getting this error message:
Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.
If you are the application owner, check your logs for details.
I switched to DDG a couple years ago after becoming concerned about privacy. Unfortunately, DDG has never quite cut it for me in terms of search results. I do a TON of technology related searches, particularly wrt very obscure programming related technologies, especially related to embedded target dev. DDG always comes up short, and I typically end up doing "!g" searches. So startpage.com appears to the best blend of privacy + good search results. For me anyway...