Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Why?

Because it's a simpler language that contains the key ideas and skills that are trying to be taught, and doesn't contain other distracting details that can't be taught until after basic concepts are well-understood.

Same reason lots of people don't like using Java as an intro language even though it's wildly popular. Having students type "public static void main..." a hundred times a semester before knowing enough to be able to understand what "public", "static", or even "void" mean is at best distracting. At worst, it teaches students to use programming languages in highly unprincipled ways.



Aren't you making two claims that are unrelated?

1. Learning a simple assembly makes learning a second assembly easier

2. Therefore, it's more efficient to learn a simple assembly first

The 2nd statement does not directly follow from the first, because the total time to learn two languages can still be greater than the time to learn the 2nd language alone, even if there is a synergistic effect. I'm assuming here that the simple assembly is not useful, and the goal is purely to learn the 2nd language.

Like, let's say learning a simple assembly makes learning the second language 35% easier. Then learning both languages is better only if the second language would normally take 3x more time to learn.

However, if every subsequent language is also easier to learn, and you intend to learn many more languages, then maybe starting from a simple language will actually be best.

Talking about x86 in particular, it's pretty easy to define a simple, teachable subset of x86 and then expand from there.


No, the claim is that there's a strict ordering of concepts when learning an assembly (or any language).

The conjecture is that using a simpler language makes it easier to teach the basic concepts, and that more advances features get in the way of teaching those basic concepts.

I'm not saying this is true, just that it's a reasonable hypothesis.

Learning a simple assembly may making learning a second assembly easier, but that's beside the point -- you need the basic concepts before any of the advanced/more complicated features become useful. And if the more advanced language gets in the way of learning the basic concepts, that could justify using a simpler language.

This is a hotly contested topic in CS education research, and we're not going to come to a consensus here.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: