Shop OBEX P1 Docs P2 Docs Learn Events
Need opinions on blog — Parallax Forums

Need opinions on blog

HollyMinkowskiHollyMinkowski Posts: 1,398
edited 2010-08-06 07:44 in General Discussion
Someone who's opinion I hold in high regard was looking over my new assembly page
and told me that in his opinion it was a mistake to focus on asm instead of C. He thought
that I should teach C for the AVR, ARM and MSP430 uC's and introduce asm at the point
where the code for some interrupt routines need it to function quickly enough. He urged
me to dump the Propeller altogether (I'm not going to do that) and replace with ARM
instruction. He explained that he knew I loved coding asm but that the majority of code
for uC's is written in C and so the newbies need to learn C was far more important than learning
asm...that asm would be learned when they discovered it was important for when C was not
fast enough. So I am thinking about restarting the blog with a focus on C, with asm taking
up a smaller position and introduced at the point where fast interrupt code demands it.


So, do you guys think he was right and that my focus should be mainly on C with asm
making up a smaller portion? Limited time means that there is no way I can do both a
C blog and one focused entirely on asm.

I like C a lot but asm is especially fun to code, but I'd hate to waste the beginning coders
time and energy on asm if C would serve them far better.

One possible problem is that the free gcc port for MSP430 is not as well developed as the
ports for AVR and ARM. The two commercial C compilers for MSP430 have code size
limitations for their free versions. I am loathe to teach C using a compiler that will have
to be upgraded at great expense if the user moves up to larger memory MSP430 parts.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
justasm.blogspot.com/

Comments

  • LeonLeon Posts: 7,620
    edited 2010-08-04 18:28
    I think that it's best to start with assembler. It gives a much better appreciation of the device architecture than C, and people later using C will write much better programs. I actually started with machine code when I taught microprocessor courses many years ago, and then went on to assembly language, followed by C.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Leon Heller
    Amateur radio callsign: G1HSM
  • Martin HodgeMartin Hodge Posts: 1,246
    edited 2010-08-04 18:38
    What Leon said.
  • PJAllenPJAllen Banned Posts: 5,065
    edited 2010-08-04 18:50
    It's whose (who's = who is.)
  • K2K2 Posts: 693
    edited 2010-08-04 19:01
    You asked for opinions. Here's mine:

    * Anyone forced to use the ARM ought to start with C and stay with C.
    * Anyone using the Propeller, AVR, PIC, or my beloved SX ought to start with ASM and stay with ASM.
    * My MSP430 is still in transit. Couldn't offer even a slightly informed opinion.
    * PJ Allen needs to add Metamucil to his shopping list - and his diet.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    "Let's not bicker and argue about who killed who."
  • davejamesdavejames Posts: 4,047
    edited 2010-08-04 19:03
    Ma'am,

    Opinions are like belly buttons; everybody has one.

    So then a question: What was the overriding passion or drive that caused you to start a blog in the first place?

    Follow that.


    DJ

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
  • edited 2010-08-04 20:08
    Holly,

    I wouldn't change what you are doing.· Your heart has to be into what you are doing and if you change for someone then you won't always be doing what you want to do.· You know the costs of writing your blog and you have to pay the bills because you are going to be putting the effort in and not your friends.

    The idea that people can't learn unless they learn C or unless they buy an Arduino is really a weakness.· It reminds me of people who can't watch the news because it is all bad.·· A teacher should be able to program in any language he or she wants to.· It is when you learn a second language that you really understand how to program something.

    It is understandable that Engineering students learn C but computer programming wasn't allways that way.

    Question: What do the noobies do when C isn't available?· The trend went from Basic to Pascal to C.· What is next and if the world changes, can the noobies handle the change?

    It should be about learning and not about which language though I think assembler should teach the architecture better than C.

    Chuck
  • edited 2010-08-04 23:08
    Holly, my other advice would be to follow the money. It depends on what areas of the microcontroller world pays as to which products you use. Commercial devices would probably use ARM but that isn't to say you couldn't use other devices.

    I also think your blog could get to the point where you have practiced and practiced teaching to where you could start charging. You could write articles for profit, write books, hold seminars, teach kids in school, give lessons, etc. You could pretty much do whatever you would like to do.
    -Chuck
  • Cluso99Cluso99 Posts: 18,069
    edited 2010-08-05 01:55
    Holly: It depends more on where your interest lies. If you want the blog for the Prop then asm will be received by a lot of people because there is little information about how to use it. From a professional stand, a base in asm is excellent, but in reality a lot of code is done in C. That said, I personally believe that asm coders will make better programmers and often can do things that C only programmers cannot, usually because they do not understand the hardware so well. Follow your heart... you will be happier and make a better programmer, no matter what language you use.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Links to other interesting threads:

    · Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
    · Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
    · Prop Tools under Development or Completed (Index)
    · Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)·
    · Prop OS: SphinxOS·, PropDos , PropCmd··· Search the Propeller forums·(uses advanced Google search)
    My cruising website is: ·www.bluemagic.biz·· MultiBlade Props: www.cluso.bluemagic.biz
  • $WMc%$WMc% Posts: 1,884
    edited 2010-08-05 03:01
    Holley

    If your into teaching, Why not both?

    Some people just have way to much time on their hands, Must be nice!

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    The Truth is out there············___$WMc%___···························· BoogerWoods, FL. USA


    want speed?·want·to use the Propeller?·want to stay with BASIC___www.propbasic.com___


    You can feel stupid by asking a stupid question or You can be really·stupid by not asking at all.

    ·
  • FranklinFranklin Posts: 4,747
    edited 2010-08-05 05:04
    I see many sites teaching / discussing c and cderivatives, not many addressing assembly. As others have said go with what you love, it's (it is(pj)) your blog and you get to decide.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    - Stephen
  • edited 2010-08-05 12:50
    Holly,

    If you think of a teacher as also being a coach, a coach gets their players to do things that they don't want to do.· In order to be great, you can teach people to do what they don't want to do.· Teach them to learn Assembly even though it is harder by making it easy for them.

    Chuck
  • bill190bill190 Posts: 769
    edited 2010-08-05 16:36
    When it comes to business and jobs, the word is "niche" or "niche market".

    If you have a product or knowledge no one else has, the world will beat a path to your door.

    If you have what everyone else has, you may have trouble finding business.

    Everybody and their brother knows C. There is TONS of information out there about C.

    Few people·know assembly.·Few people·know the hardware.

    In some cases when programming in C, you need to use inline assembly. And then there can be problems with C. If you can look at a disassembly listing of·a compiled C program (and you understand assembly), then you can quickly see what the trouble is.

    It is very rare to find someone who knows the software *and* the hardware. And if you do know software/hardware, you can do amazing things and solve problems no one else can fix.

    I read a post by someone a while back who was trying to hire someone to program microcontrollers. He said none of the college graduates knew assembly, as the schools were telling the students to not learn assembly, rather to learn C. So he was having great difficulty finding anyone...

    A niche market?
    ·
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2010-08-05 16:39
    From what little I've learned about C, it is and was a very nice cross-platform tool for big computers.

    The AVRs in some ways are big computers (128K of ram available). But in other ways, the are not (no support for mass storage). I suspect the same of MCP430s and ARMs. So they seem to be neither fish nor foul.

    I really like the ZBasic OS system on AVRs. It is just the right size for it. In Taiwan, everybody seems to be programing in M$ Visual Basic for general stuff. C, C++, and C## are too geeky and not often useful.

    What I found is that Assembler useful for is the 'deterministic' stuff.

    When you really have to have your timing down to counting the beats of the clock, that is where the power and glory of Assembler shines. Parallax has a very strong slant toward 'deterministic' computing. A lot of people aren't even aware that it might be important. But I suspect that there are times with a big bad AVR that the timing starts to jitter and slip and nobody can do anything about it. It doesn't matter much if your are using C or Basic as it is all too easy to blame that particular compilier.

    ZBasic provides a full OOP and multitasking environment in AVRs -- both in tokens and native code. I like the presentation and I really like the guy that is behind it.. It is a modified sub-set of Visual Basic. And it is both handy and educational.

    What can I say about ARMs and MCP430? There isn't much choice. It is either C or Assembler. I suppose that C with allow you to eventually port something like a tenny-tiny Linux into these, or even a tiny Basic. Doing all that from Assembler is rather ambitious. But we are back to systems that are NOT really deterministic. It is no longer about the control in micro-controller. It is just about generalized computing.

    And why might deterministic be so important? You don't have to buy chips with a lot of hardware features, you just create the features you want in software. Things thata need to be done fast, get done much faster. No one really needs an OS (The Propeller doesn't have one!) for these things.

    So that software knowledge seems to me to be of great value. Why so? Soon or later you run into a chip that has everything you want - except one feature. With the knowledge learned by creating such in software it is no problem to develop. Meanwhile others are waiting for someone to make the chip they want or to write the software for them.

    I guess Chip Gracey might say it this way, "Smaller is more powerful, bigger is sluggish. And Assembler is more powerful, higher languages just make deployment faster (in some cases)."

    Guenther's book and the SXes make one of the most wonderful ways to learn Assembler. Bigger micro-controller just allow students to loose focus on what the CPU is doing.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Ain't gadetry a wonderful thing?

    aka G. Herzog [noparse][[/noparse] 黃鶴 ] in Taiwan

    Post Edited (Loopy Byteloose) : 8/5/2010 4:44:40 PM GMT
  • HollyMinkowskiHollyMinkowski Posts: 1,398
    edited 2010-08-05 17:08
    Thanks so much for all the well reasoned opinions guys smile.gif

    I think I will continue with the asm blog just as it is and add
    a second blog teaching C for just one uC, either AVR, ARM or MSP430.
    Probably I will not do the 430 due to the weakness of the gcc port.

    I think asm is most needed for the Propeller... I just can't see how
    someone could do really good work not knowing PASM.

    I have been thinking that it might be a good idea to create a PDF
    which combines the blog posts into an ebook and just keep adding
    to it. That way a person could just download the PDF instead of combing
    through all the blog posts. A separate PDF for each uC of course.

    I may end up with more free time in the near future. This would allow
    me to devote much more time to the blog.


    EDIT:
    I have decided the C blog will focus only on AVR using WinAVR.
    I decided against the MSP430 because of the C compiler problems
    and against ARM because it is not really hobbyist friendly, at least
    AVR has dip parts. I will use the ATtiny88, ATtiny85 and ATmega1284p
    almost exclusively on the blog since they are my favorite AVRs. If
    someone wants to build all the simple projects on the blog they
    will only need to spend about 12.00 to get the chips. There are a
    few pretty good books for AVR C but they are pricey. I'd like
    to create something that is as good or better that is totally free. I
    bet there is some company that will print a soft cover book from
    a PDF at a reasonable fee for those that might want hard copy. I
    have no interest in making a profit from any of this.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    justasm.blogspot.com/

    Post Edited (HollyMinkowski) : 8/5/2010 5:34:08 PM GMT
  • LeonLeon Posts: 7,620
    edited 2010-08-05 17:53
    There are ARM chips on little DIL boards, such as the LPCXpresso and mbed:

    ics.nxp.com/lpcxpresso/

    mbed.org/

    I've got them both.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Leon Heller
    Amateur radio callsign: G1HSM
  • localrogerlocalroger Posts: 3,452
    edited 2010-08-05 20:19
    My feeling is that if you do not know how to program in Assembler, you do not know how to program.

    Even if you never actually use .asm just knowing what the processor has to do in order to implement the commands you give it in higher level languages will make you a much better programmer in those languages.

    Djikstra may have thought Basic ruins your mind, but if you want to really create a programmer who can't code his way out of a wet paper bag start them out with Javascript.
  • ke4pjwke4pjw Posts: 1,173
    edited 2010-08-06 07:44
    Holly,
    First off, I really like your ASM blog. Posted it to my Facebook when I first noticed it. There is some good info there.

    I do have somewhat of a different take than some of the previous posters. If you already know how to "program", a new higher level language is very easy to pick up. Last year I picked up Spin without issue, the year before that I learned C#. I cut my teeth on Basic as a kid, from there I had learned Shell Scripting, C, Basic09, Perl, C++, PHP and a few others. There wasn't much to "learn", it was more of a matter of "doing".

    Assembly on the other hand requires you to learn things that are specific to the processor. The MC6809 has a different set of registers, operations, and flags than the Propeller. The general concepts of registers, operations, and flags do translate. I imagine once I build by skills with assembly on the prop, many of those will easily translate to programing assembly on other micros and even larger processors.

    To put a finer point on it, your not just teaching asm on the propeller, your most likely going to be teaching the general concepts of assembly and then tacking on the propeller specific stuff in your implementation. Most of this information will be good for most processors. People like myself often learn about a specific implementation by looking at similar and simpler implementations in the same "class" of implementations.

    So fear not that you are "only teaching about the Propeller". The reality is you are not.

    Regards,
    Terry
Sign In or Register to comment.