On Thursday, 21 July 2016 10:43:06 UTC+3, Ralf Schülke wrote:
>
> Hi,
>
> Programming language is secondary level.
> first must be clear as works as a Computer (machine) production.
>
> In my early time, which was very clear but hard 8bit machines could one 
> still imagine today the machine are a thousand times faster and their 
> possibilities as well.
>
> Alone GPU, I / O, the kernel and userland programming there is also so 
> much you need to know.
>
> In my time, BASIC was the only and my imagination and my own motivation, 
> books and friends.
>
> Today, we have the Internet, www and 100 of possibilities. Many new want 
> to make games whose examples same (3d games etc). Only this day expenses 
> with very large and it takes a long time and can not be done by a single 
> person.
>
> Conclusion:
> -  Learn how works a Machine
>  (Neumann architecture) or DCPU16 Emu. Number systems, bits & bytes, asm
> - Programming paradigms, Unix philosophy, data structures
> - Then golang as first language
>
> Personally, I also think that one aspect, about the attitude as a 
> programmer:
> - Open source vs closed source
> - Hacking (white vs black)
> - Judge of techniques
> - Behave in a network (jargon file)
>

Note, I do not agree that this is the best way for most beginners to start 
programming, however I think it's important for professional programmer to 
understand how computers work internally.

People can get a lot of value by just wiring libraries together... even if 
the code doesn't look great and/or breaks sometimes.

In a similar sense, I would not recommend learning piano by first seeing 
how the piano works. However, if you are a professional, you probably 
should know how to tune the piano, understand piano voicing and basic 
maintenance.

This sort of teaching has a high frustration level and low reward... 
however people who manage to get through it, would definitely be good 
programmers. And if you have intrinsic motivations, it makes it so much 
easier. There are of course ways to make reward higher, e.g. TIS-100 comes 
to mind. The younger the people, the higher you want the reward and lower 
the frustration.

It helps to keep in mind that there are different audiences for programming 
- children, teenagers, adults, personal programming, computer scientists, 
software developers, computer technology, robotics ... Of course people are 
different, so no single strategy for teaching can work, there should be 
multiple of them.

*Sidenote: the best course for computer internals I've seen is 
http://www.nand2tetris.org/.*

For computer technology and robotics people, it would be an excellent 
approach. For teaching children methodical thinking and problem solving to 
children, not so much.

*But, I also do not consider "no-frustration" the best approach either. In 
a similar sense, to learn running you must eventually get tired and there's 
no way around it.*

w.r.t paradigms, unix philosophy and data-structures... although important 
for professional developers, it's hard to convey the importance of them, 
without having real-world problems backing them. I.e. you can give a 
mathematical definition of functional programming, but people will just 
forget or don't pay attention to it -- basically they don't get the point 
and hence won't understand. *Alternatively, it becomes a cult thing -- i.e. 
FP is good hence I will use it, without seeing it being used in real-world. 
(Just an example, I don't have anything against FP... I could say the same 
about SP, OOP, LP, AOP etc.)*

There's one major additional concern with this sort of teaching -- it 
ignores the human aspects of software development. If you focus on learning 
technology instead of focusing on people, you get software that serves 
engineers rather than people using it. There must be a good balance between 
those two sides.

There's a ton of things I would consider worth learning for developers -- 
but there's just too much information... effective teaching means teaching 
the bits that are either hard to learn or things that empowers learning 
everything else.

+ Egon

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to