Need opinions on blog
HollyMinkowski
Posts: 1,398
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/
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
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Leon Heller
Amateur radio callsign: G1HSM
* 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."
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
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
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
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
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
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
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.
·
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Stephen
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
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?
·
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
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
ics.nxp.com/lpcxpresso/
mbed.org/
I've got them both.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Leon Heller
Amateur radio callsign: G1HSM
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.
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