Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Working with embedded systems

  1. Mar 30, 2017 #1

    I have a bachelor in mathematics with a minor in physics, and my plan for the future is to move on to computational science and robotics. However, before I can do that, I need to work a few years due to bad personal finance.

    In my city, the easiest route is programming. I already knew Python and I moved on to web development because I thought it would be relatively easy. I learned Javascript, jQuery, CSS and HTML. However, at this point, to make myself marketable, it seems like I am just memorizing tons of frameworks and their syntax (React, Node, Django etc.). It's a bit too much.

    I was told by a potential employer to learn C regardless of what I decide to do (because it will help me understand all the rest). I know a lot of embedded systems are written in C. How much memorization is needed to learn embedded systems? I dont really care how difficult the algorithms are; I just dont want to memorize tons of frameworks and packages. Also, embedded systems is relevant for what I want to do in the future.
  2. jcsd
  3. Mar 30, 2017 #2


    Staff: Mentor

    For embedded systems, I would think you should study algorithms and data structures in C as everything done in C will use those ideas somewhere in the code (more likely everywhere in the code).

    Start writing tool applications ala the theme of the Kernighan & Ritchie C Programming book and do it on Linux getting familiar with all the features of Linux. Many embedded systems today use Linux or Windows CE as a base although there are also many more compact single program custom systems ala Arduino applications that do one task fast and really well.

    Read this wikipedia article to get an idea of the kinds systems out there:


    Arduino might be a good first step to start playing in this environment as it would introduce you to C and how you would debug a problem in an embedded system.
    Last edited: Mar 30, 2017
  4. Apr 5, 2017 #3
    I wrote this post three times before giving up and writing it the way I want to.

    Many people who learn to program with scripting languages lack a specific set of knowledge tools that learning an "actual" (please don't kill me, scripting gurus) programming language will provide. The result is often an excellent scripting person who has difficulty troubleshooting issues with scripts, because they don't recognize what actions "under the hood" are occurring when the script runs, and they don't necessarily recognize other ways to handle the same task that aren't the "normal" way of handling that task in that scripting language.

    Please don't take this as an affront to your clearly impressive skill set - I wish I had the wherewithal to have a bachelors in Mathematics and a minor in Physics. But if someone suggested you learn C, I suspect that was after they asked you a set of follow-up questions about a scripting issue that you couldn't provide any possible routes to resolve.
  5. Apr 5, 2017 #4


    Staff: Mentor

    What is your experience in programming?

    Your view of scripting folks is due to either lack of experience with scripting or a general naivety on your part. Programmers aren't either or here. You use scripting to glue things together and to get things done quickly so you can get on with bigger issues. Often scripts are essential in setting up the programming environment for your application (esp java based applications) and for making it easier to invoke. Other times scripts are used to automate a seldom invoked process of reorganizing your environment, deleting files... and many other mundane tasks.

    If you're thinking of system admins or database admins, this may be true as many of their tasks require knowledge of arcane system commands and their work is very much one off jobs or very mundane periodic system cleanup, archival work...

    In any event, I can see why you were hesitant to post but perhaps your inner voice was telling you not to.
  6. Apr 5, 2017 #5
    I try not to memorize a language. I have coded in C then C++ and focused on creative ways to solve problems . After a while Software developed of applications and embedded systems became an art. I used my imagination to guide me with the development of test plans and the design of the system. I have always felt computer languages is learn the concepts kind of thing
  7. Apr 5, 2017 #6
    Actually, my hesitation was because the OP made it a point to list the languages he has learned and his entry into website development. But website development skills don't directly correlate to embedded system programming, and not one of the languages he mentioned is a high level programming language. His actual question was "How much memorization is needed to learn embedded systems". This implies a lack of understanding about the scope or skills required to program embedded systems. I suspect strongly that the potential employer who told him to learn C saw he did not have the skill set he required (right now) and was trying to be helpful.

    My best advice to the OP - learn C. It will help you in any programming you do in the future and will help you directly with embedded system programming regardless of what hardware you are programming for, and for your goal of getting into computational science and robotics in the future.
  8. May 16, 2017 #7
    The potential employer does not work with embedded systems. He does not work with any hardware at all. He told me I should learn C because that will give me a deeper understanding of the languages I listed above since they are all inspired by C to some extent.

    So, if I am gonna learn C anyhow, I want to practice with embedded systems and be a bit better prepared for the subject (which I know is an option in the masters program). However, I don't want to do that if I have to memorize a lot of syntax. I dont mind memorizing the syntax needed to learn C, but I dont want to use more time memorizing frameworks like I did for web development (React, JQuery, Node etc).

    I like mathematics and physics because I dont have to memorize a lot; It's mostly deduction. Web development, on the other hand, has almost entirely been about memorizing the syntax of several frameworks. I asked if learning embedded systems is going to be the same. Am I embarking on a path which will involve learning 5+ frameworks and languages just to make one product? (like how, to make a website, I probably have to know HTML, CSS, Javascript alongside frameworks like Bootstrap, JQuery, Node and others)
  9. May 16, 2017 #8
    You don't have to know everything, in a company there are different programmers for different tasks. I'd say focus on what you like the most, and learn the rest if you need.
    To learn C, which it's gonna be easier than what you've did so far, you should maybe read a book or other resource initially, and when you're more comfortable, do a project on something that interests you and learn as you go. At least, that's how it works better for me - if I don't have an exam to study for, I'm not going to do hard studying on things that don't interest me
  10. May 18, 2017 #9
    Why cant I just get an answer to the question I asked? Or, if that is not possible, no answer? Why are people making assumptions about my life? I did not ask for life advice, and none of you know me.
  11. May 18, 2017 #10
    Nobody assumed anything about your life buddy. You should try those things for yourself, it depends on what you want to do.
  12. May 18, 2017 #11
    Well, you made the assumption that I am trying to learn everything a company will need. Moreover, considering you answered a question I never asked, I guess you must've made a few implicit assumptions.

    rkolter made a few assumptions regarding the job I am applying for and more. Again, I got a whole bunch of answers I never asked for.

    The first reply is the only answer I got although it was not completely what I was looking for. Then again, if nobody here works with embedded systems, this may be the wrong forum to ask this question.

    So, essentially, I'll entirely rephrase this question later today to try to get the answer I was actually looking for.
  13. May 18, 2017 #12
    If you want to start to play with some embedded system. A good start would be Arduino uno board. open source and open hardware https://www.arduino.cc/
    a good site for parts and learning is adafruit.com
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted

Similar Discussions: Working with embedded systems
  1. Embedded systems (Replies: 1)

  2. Embedded text (Replies: 4)