Disagreeing With Linus Again

There’s another take on an interview with Linus Torvalds focusing on programming computers.“I actually don’t believe that everybody should necessarily try to learn to code. I think it’s reasonably specialized, and nobody really expects most people to have to do it. It’s not like knowing how to read and write and do basic math.” Where I disagree with him is that programming is like maths. Everyone who works at a desk/business/technical job should know how to use spreadsheets and databases for instance. That’s a way to programme mathematical operations. That’s a way to solve problems.

The heart and soul of science is collecting data and finding patterns in it. The heart and soul of mathematics is manipulating symbols for the purposes of analyzing data and solving problems. The revised curricula in K-12 education in mathematics, science, and technology education all emphasize the ability to solve problems using IT, including some hardware and programming. See for example, Manitoba’s Grade 9 Mathematics Curriculum. Programming is like being able to read and to write and to do basic maths. I was overjoyed when the curriculum was revised in the late 1990s. Students who used to drop out of highschool over an inability to do “traditional” maths could finally excel at solving problems because they could edit and revise spreadsheets in seconds and get the spreadsheet itself to verify solutions. There was no longer an easy way to get the wrong answer. There was an easy way to get the right answer, like brute force/trying every reasonable value until the right one was found… Even weak students could understand the concept and some of them were better at that kind of maths than the “smart” kids.

Programming and IT are tools that everyone in a modern society should know something about. It’s a good thing Linus is only managing the Linux project and not all of edcuation. 😉

About Robert Pogson

I am a retired teacher in Canada. I taught in the subject areas where I have worked for almost forty years: maths, physics, chemistry and computers. I love hunting, fishing, picking berries and mushrooms, too.

15 Responses to Disagreeing With Linus Again

Bilbophile Libeoffice include LibreLogo programming. I do agree with Linus to a point. Not everyone will make a good c or c++ or any form of coder. You have to have the mind todo it. Having basic understandings of what the key parts are does explain things.

Like photoshop for example it off loaded particular operations to GPU. So you might have 2 computer almost the same but one has a weaker GPU so photoshop runs badly. A person with no understandings of the basics cannot get themselves a computer todo the work for them. You can also have the reverse with CPU.

If you asked a person to describe a car they could list the basic parts and basically what they do. Of course when cars first appear they were magical. We need people to get to the point ask a person to explain the basic parts of a computer they can. CPU GPU Harddrive RAM. CPU Cache and cache lines might be getting a little advanced but they still should have a basic ideas of what this is. The basic idea also allows symptoms of issues to line up..

Basic understandings of the parts of a computer and basic coding skills(ie macro create and equal) is the level most people need. It the means to get by with computer mostly by self.

Bilbophile wrote, “Computers, as magical tools, are one of the best ways of doing this, but it does not have to be programming.”

Define programming. Spreadsheets use some “machine model” (rows and columns), data-structures (cells, rows, columns, formulae, ranges…) and operations (mathematical operators and functions). They definitely use a programming language. I was reading today an article about debugging an Excel spreadsheet. It was exactly like understanding the operations of some primitive machine-language operations, my first programming experiences. The issues were with SUMIF() giving unexpected results with the “wrong” data-types in Excel… ( zero result rather than a diagnostic message). Chuckle. In the Manitoba school curriculum, highschool students opting for some exposure to computer science are expected to become competent in two or three programming languages. Strangely, all maths students are expected to be able to programme calculators and spreadsheets as needed. In other jurisdictions, middle-years students are expected to programme various robotic thingies. It’s still in a state of flux but educators have finally realized much thinking/problem-solving and earning a living is done with IT these days. It took decades for them to figure that out while I knew it 40 years ago. Alas, the movers and shakers did not consult me. I’ve met principals who told me one computer for ten students was just fine when I had found funding and $free PCs for the school. When all this IT was introduced into the curriculum here, I already knew that stuff while other teachers demanded two or three years to get up to speed. It is a commentary on teachers being the products of society rather than just the products of an echo-chamber that is education.

Mats Hagglund wrote, “I even doubt is it possible to understand society and world at all without knowledge of dimensions and numbers.”

There is a famous quotation by a scientist about that. He claimed “knowledge is of an uncertain kind” if something cannot be described by numbers. This is a basic tenet of maths/science/engineering. It is for practical matters related to measurement, the process of describing something by words and numbers. It is one of my favourite lessons, I never failed to enjoy. It enabled students who were utterly failing in maths and science to see the light, to understand the role of units, dimensional analysis and all that, allowing them to figure out many formulae just by dimensional analysis and to solve simple mathematical problems involving multiplication and division. Really, a donkey can solve most maths to about grade 8 with no more than that but it’s barely touched upon in the curriculum. The difference between numeracy and lack thereof hinges on this simple concept and the operations of arithmetic. It’s like the connection between literacy and phonics, a huge barrier to some who don’t “get it”. Words or numbers which don’t make sense are just burdens used to punish people.

Bilbophile wrote, “Problem solving does require rational thinking i.e. mathematics, but for most people “basic math” (or non-computer related math) may be enough.”

To be competitive in the real world, it is a huge advantage to have more than mastery of ‘rithmetic. I remember one time seeing an old guy putting in a handrail. He positioned the vertical bars by trial and error… He positioned them at equal spacing and then looked at the remaining gap and little by little converged on an acceptable solution. He did not speak my language and I did not speak his. Also we had not paper and pencil where I could have drawn a solution on paper that would have done the job instantly with zero trial and error and no arithmetic. All he had to do was lay out N points equidistant on a line diverging from one end by some significant angle and then drawing perpendiculars to the intended line of bars. This is a simple task for anyone with a knowledge of similar triangles. Of course his method worked for N ~10 sooner or later but in the real world he could have done the job in much less time with a different approach. He could even have divided the length by N+1… but risked accumulating truncation errors. The point is everyone benefits from having more than a minimal education in maths/science/problem solving and now IT. It is a part of normal literacy. Just consider working for pay, paying taxes, saving, investing and shopping. A little maths pays for itself many times over. I remember our first BIG mortgage… By planning to pay it off a few years earlier we saved almost half the cost of the mortgage payments. That left money available for other things. I used algebra and geometric series. Folks familiar with spreadsheets could have used some trial-and-error method that would be obvious even to a student with brief exposure to spreadsheets or some simple programming language. In the old days, folks used BASIC or PASCAL. Now there are many more programming languages available in many GNU/Linux distros and even a few hours of instruction/practice is enough to solve any numerical problem a consumer/worker/retired person might meet.

My father had barely touched highschool maths when he went off to war and he never went back to school. He suffered through life desperately needing maths from time to time but he had me as a backstop. I remember one time he was trying to lay out openings in some ceiling panels in an old kitchen of irregular shape. He was always getting the positions wrong what with flipping things over etc. I showed him how lines drawn from two or three known points could nicely locate any point he wanted. So we copied a couple of points from the ceiling to the panels and drew arcs with the right radii. Where they crossed we cut the holes. Consumers, hobbyists, kids, everyone has problems like this from time to time. Having the mathematical/problem-solving skill to find a solution right away is not difficult having just a few mathematical/logical facts straight.

One can argue that consumers have N small so the power of a PC is unnecessary but even my wife has thousands of images filed in random folders by date or name. She has utterly resisted my attempts to get her to use a proper database to keep track of her universe, trusting to her memory (far superior to mine…) to locate things. I expect when she is a few years older or her memory more decrepit she will finally accept that IT is the way to go and a tiny bit of programming would do magic for her, things like rotating, cropping or resizing a batch of images which could take her hours manually or a minute with a simple script. She’s finally figured out that globbing works for her ftp-client… I am finally free from having to figure out how her BlackBerry works after every party… If she’d kicked around GNU/Linux in highschool she would never have had to marry me for IT-support.

Theories in social sciences (including history, and most of economics) including seemingly mathy bits are hardly ever falsifiable. This is why they are not exactly suited to make somebody think clearly or to accept accountability (as it is understood outside social sciences)

Communication skills, “bonding”, building consensus etc., while essential have completely different uses.

Problem solving does require rational thinking i.e. mathematics, but for most people “basic math” (or non-computer related math) may be enough.

Moreover, to act responsibly you must be involved in an activity where your mistakes or recklessness/superficiality may have significant, obvious and easily attributable consequences.

However programming (or generally IT) are not the only areas to combine rigorous logic and visible consequences. To give a very extreme and purely theoretical example, a good lawyer in a rule-of-law country must have a logical (i.e. mathematically sound) thinking, the ability to tell legal (i.e. community-defined) right from wrong, to make a case and to know when to accept liability. As a teacher, he would teach his students not only problem solving skills, but also how to explain their case to a (technically) illiterate jury and how to accept liability for their mistakes.

I’m very suspicious about history, social science etc… and put trust mostly on maths. I even doubt is it possible to understand society and world at all without knowledge of dimensions and numbers. It’s the real king of all science and human development.

I think what people need to learn for their non-work life is problem solving. How to assess a situation and define a problem, how to explore the options, how to design a solution, how to implement it and assess the end result.

Computers, as magical tools, are one o f the best ways of doing this, but it does not have to be programming. A competent use of spreadsheets (your own example), the competent use of publishing software (gimp, scribus, lyx, LibreOffice Writer etc.) could do the trick and even non-computer-related topics such as Euclidean geometry, “natural language” syntax or motorcycle maintenance.

There are many kinds of personalities and mindsets, among both the students and the teachers, and programming is not always the ideal vehicle for problem-solving abilities in skills, the one that really matter.

An important side-effect of programming/hacking is character building. Because their work is open to public scrutiny and the main reward is recognition (while the pay is usually above average), there are fewer jerks and impostors in the hacking community. However martial arts, Rugby football, mountain hiking or mere empowerment through self-management can achieve the same results when the right teacher meets the right students at the right times in their lives.

So, while you Mr. Pogson as a dedicated teacher with a computers background can use programming, hacking or basic computer literacy as effective education tools with most of your students, this may not be necessarily true for all the students and all the potential teachers, coaches, parents.

DrLoser L1, L2 and L3 cache sizes can cause some very strange things. Like a LUA or Nekovm program out running a native C or C++ binary doing exactly the same thing. Yes some games are using LUA for particular logic sections to exploit this. A programmer not understanding L1, L2 and L3 and how this is part of cache-lines can be left scratching head why 2 programs that in theory should do the same thing have massive performance differences. The insane I have had is made a program smaller and it runs slower because the code end up out of block alignment so was more complex to transfer from ram to cache-lines.

The basic theory of how cpu work is useful to a programmer its also useful to people acquiring programs to know that smaller is not always better.

Sub optimal code going into cpu can cause the cache of the cpu to be over and over again lacking the pages it requires. This is the same as ram to swapfile thrashing just faster and can cause cpu to generate more heat.

Funny enough the Sub optimal code problem can explain why an android application on one model phone runs perfectly on a different model phone runs poorly even if they have the same version android. Applications are not cpu neutral when using native code.

The larger the cpu caches are the harder it is to end up in worst cases of repeatedly of being short of the next block to run. Price high power usage. Cache ram is power eating ram.

Cpu cache to ram thrashing is very much like ram to swapfile/swapdrive thrashing. Both cause you performance to go into hell.

Really you could think of it as a set of conneted pools.

L1-L2-L3-L4-ram-swap/disc

L1 is the data the cpu processing side can directly access. The L in cache numbers says Layer. The number after L is the number of Layers between the data and the cpu processing engine. L0 is the CPU processing engine.

New broadwell have a L4 cache. 128megs in size. That L4 cache is larger than the ram my first x86 PC computer had by a long way.

DrLoser wrote, “I am not entirely clear on the implications of L1, L2 and L3 memory”.

That’s a buffering scheme between the CPU that runs at many gHz clockspeeds and the main memory which runs under 1 gHz. It’s wasteful of power to have a CPU as wide as the main memory can read/write, so the buffer slices the data-stream to/from main memory in width and time and to/between multiple CPUs. The extreme performance-seeker wants his code to fit in that buffer so only data moves between CPU and main-memory but in a multi-user/multi-tasking system with gB of code and data flying around it is impossible to please everyone. Hence the trend to have higher clockspeeds/more cores/more RAM/bigger caches whether or not they are always needed because sometimes they might. The idea of the small cheap computer is that we have just enough IT where we need it rather than too much in some places and not enough in others. People who understand programming at some level can and do understand this and it helps them make informed decisions about price/performance and making the right choices in the market. Folks who don’t understand how computers work tend to fall for the ads/salesmen and pay far too much for IT whether software or hardware.

A knowledge of how a digital computer works from the inside out is very useful to anyone using IT and that’s just about everyone these days.

A lovely ideal, Robert, but somewhat impracticable. Before we get to the Great Unwashed, replete with their small smart thingies, let’s consider the likes of you and I.

Now, I am not entirely clear on the implications of L1, L2 and L3 memory. I’m not entirely clear on the implications of cache-lines and what I believe are called “cache camel trains,” where one sub-optimal decision causes the cache buffer to collapse, either.

Given that, I wouldn’t even consider the quantum implications of nano-level silicon substrates. Nor would I put much effort into thinking about instruction pipelines on whatever architecture one might wish to choose.

Then again, I’m not a typical smart-phone user. Possibly these guys, unlike me, have read and understood the manual.

Ivan wrote, of folks learning to programme computers, “Sorry Bob, but that is what caused Heartbleed.”

True, a little knowledge can be dangerous but it is a lot more dangerous to have no knowledge, like allowing one corporation to rule the world or getting locked in to one “ISV”. A knowledge of how a digital computer works from the inside out is very useful to anyone using IT and that’s just about everyone these days. I stretched the curriculum a bit and had most of my Grade 10 students break an ATX PC down to parts and back, shop for parts, install an OS and actually read the damned EULA and the GPL. Many of them learned the basics of spreadsheets and PASCAL too. It will be useful to them one time or another whether shopping for a PC or managing one. It is definitely useful for every business or organization of any size to have someone involved who actually knows how computers do things rather than being lead around by M$’s and “partners” salesmen.

I definitely side with Robert and against Linus here. Unless a kid understands symbolic representation and recursion, then solving any “mathematical” problem today is just basically plugging numbers into a “magic machine.” You can’t even check the results if you don’t have that basic knowledge.

I would therefore expect every kid with a High School equivalency to be able to understand that

pogson not agree with linus who only high experience product developer. pogson say just like math and point to how student learn spreadsheet to do maths. spreadsheet mostly do arithmentic, though, and that not high on totem pole of maths.

wolfgang think pogson is wrong about that, but, if he right, think of irony in how gates and ballmer were so fooled into thinking programming was hard stuff and paying tens of thousands of developers big bucks and making them multi-millionaires when they just slacking off!

won’t they be mad as wet hen when they find out! will make pogson’s day for sure.

My Mission

My observations and opinions about IT are based on 40 years of use in science and technology and lately, in education. I like IT that is fast, cost-effective and reliable. I do not care whether my solution is the same as yours. I like to think for myself.

My first use of GNU/Linux in 2001 was so remarkably better than what I had been using, I feel it is important work to share GNU/Linux with the world. I have been blessed by working in schools where students and school systems have benefited by good, modular software easily installed in most systems.

I have shown GNU/Linux to thousands of students and hundreds of teachers over the years and will continue in some way doing that until I die in spite of the opposition.