Explaining high-level programming

65 views
Skip to first unread message

Ian Joyner

unread,
Dec 8, 2015, 6:08:46 AM12/8/15
to Eiffel Users, me...@inf.ethz.ch
On 4 Dec 2015, at 00:24, Bertrand Meyer <Bertran...@inf.ethz.ch> wrote:


3.      
The community should help spread Eiffel.
 
The last point is particularly important. The user community needs to grow; if it moves up to the next level then we at Eiffel Software will be able to perform many more developments with or without community involvement. But the community involvement is essential to change the scale of Eiffel usage. Ian Joyner regularly posts information about Eiffel on diverse forums, and many other people should be doing the same. If you are using Eiffel, it is in your interest that the community should grow; in other language communities user involvement has played a key role.
 

Well, I hope my posts have been helping. There is a lot of nonsense posted on many forums and most of it comes from people who really don’t understand the difference between computation and computers. When I read this I was already working on a new article that I could post to forums explaining the difference between languages oriented towards computers and those oriented towards problems. What I’m trying to do in this article is to try to correct the notion that types are restrictions that have been invented by disciplinarians and that really types are positive and fundamental in helping us build models which is the basis of programming.

I hope you find this of use and can pass it around.


Ian

lrix

unread,
Dec 8, 2015, 7:57:40 AM12/8/15
to Eiffel Users, me...@inf.ethz.ch
A very interesting article Ian. I learned more by reading it.

However, the title leads me to ask: Who (precisely) is the target audience to whom the plea is being made? From my point of view, I cannot see this audience, so I am asking for your view to help me identify the audience.

Thanks,

Larry

Ian Joyner

unread,
Dec 9, 2015, 3:49:03 AM12/9/15
to Eiffel Users, lrix, me...@inf.ethz.ch
I see it as a very broad article. I’m trying to ease beginners into it before they get indoctrinated to the computer languages (like C) culture. I don’t expect them to understand everything there, but as they learn more, they will get more out of it.

On the other hand, there is some quite advanced stuff, so I’m trying to be complete as well. Then there is the audience who are trying to get the point of HLLs vs computer languages across to others - it can be a resource to them.

It’s a bit like the Simpsons’ audience - kids love it because it’s cartoons, adults love it, and mathematicians and quantum physicists love it as well (I must watch the Simpsons more!)

So, hopefully, it has a bit of appeal to everyone at all levels. We need to take the next step to more sophisticated computing - the level that is above electronic computer programming and gets back to the purity of Church and Turing - that is what we are really trying to achieve in computing anyway.

Ian

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

Ian Joyner

unread,
Dec 9, 2015, 6:49:54 PM12/9/15
to Eiffel Users
I should add that I certainly agree with Bertrand that there should be many more of us actively engaged with forums. We are not really getting out there the fundamentals of computing and programming and how they apply to the real-world programmer. Too many academics live in the rarified world of paper publishing - papers that are read by other academics, not necessarily by industry practitioners who far outnumber the academics. That is the audience we need to speak to (perhaps that is a better answer Larry’s question).

Online forums are where the action is happening, yes it gets messy and you get criticised, mostly unfairly. But we do need to raise the awareness of the profession as a whole.

Ian

David Jenkins

unread,
Dec 10, 2015, 7:23:19 AM12/10/15
to Eiffel Users
I once had a boss (actually my boss's boss) who insisted that everything could be and should be written in C. Of course he was right about the "could be" part, and fortunately he was not so crazy as to insist on rewriting everything to match his preference. (This, by the way, was when I was working for the company that at the time was the largest software provider to the airline industry, not exactly some backwater operation.)

As I see it there are two problems. You have to train enough foot-soldier developers so that they're proficient in the sort of "programming languages" that will make them productive and help them produce better software--and they have to be trained in universities, colleges, trade schools, and self-help forums (those YouTube videos really help) because these days companies aren't investing in employee training like they once did and expect instead that their employees either train themselves on the job or come fully prepared. And you have to convince their managers, the people who decide what language and tool set to use, that there's a better way to do things than write everything in C.

There's a chicken-and-egg relationship between these two problems. The developers I worked with over a 25-year career wanted to put in their 8 hours and go home. They'd learn something new only when it meant keeping their job (and too often not even then). The managers would only pick development environments (language, tools) with a proven track record, industry buzz, and (critically) sufficiently large pool of developers at a reasonable cost for the next project. Hence, barring a compelling reason to do otherwise, you get applications written in VisualBasic, Java, Python.

It's that compelling reason that plays into Eiffel's hand. Nobody cares what language Candy Crush is written in (although it's got to be one of the most tested pieces of software on the planet right now). More people care about how reliable WeChat is (I really need that message to get to my son living in Shanghai, it's our most accessible means of communication). But when it comes to the software that manages my retirement account, or steers the self-driving car I'm going to trust my life with in a decade or so--now you've got my attention. That software better work likes it's supposed to, or I'm not going to be happy.

Ian Joyner

unread,
Dec 10, 2015, 9:15:52 PM12/10/15
to Eiffel Users
Hi David,

My thinking is that since technical criticisms of C and C++ on language details have not worked - people actually say they like the quirks, that we should enlighten people as to the basics of computing. C and C++ contravene those basics. I do plan another article to criticise C and C++ at this level - that is to cut it off at the legs.

For example, most people think Turing machines are a mathematical curiosity. But no, they are the fundamental model of computation with just three elements - processor, state machine (program) and memory. That’s all that is needed for computation. Everything in electronic computers is just implementation. Memory in particular. The ultimate memory is just lots of fast flat memory. Turing machines in effect have an infinite amount of registers. These ‘tape cells’ are the only addressable elements.

The memory hierarchy is just implementation between registers, cache, RAM, disk, tape, etc. At application level programs should only have one level of memory with one kind of addressing. There should not even be files. It is strange that Google has put programmer accessible registers into the Dalvik JVM - a big step backwards. That’s why I like the Burroughs stack architectures - Bob Barton seemed to understand the one memory level principle - no programmer addressable registers (but they were in the processor) - associative memory was invisible, like today’s cache, the first commercial implementation of virtual memory to seamlessly extend the memory space. They understood this from University of Manchester (where Turing worked). All other machines have worked to make all this visible at most levels. Even files are a bad idea - ultimately where computers store information, but really a low-level implementation. Students are much to drilled in memory levels and files as the way computers work - we should dispel those notions.

I think that since most computer people believe that such things as registers, memory levels, files, etc are the basics of computing, we have an uphill battle. They are not the basics - the fundamentals of computing are much simpler. The simpler mechanisms are in fact much better building blocks for far more sophisticated applications and even system software.

Then the four pillars of design - abstraction, manipulation, axioms, and lastly representation.

In all the courses I teach, memory levels as implementation of a single level and the four pillars are taught in the first lecture. Axioms and DbC are mentioned frequently throughout. We need to get all teaching institutions to teach these things and to constantly remind students that even though we teach a lot of detail, that does not undermine these fundamentals. It is very difficult to build correct and efficient systems when we get away from the fundamentals.

We can’t wave a magic wand and change this situation over night, it will take slow education of the industry.

It's that compelling reason that plays into Eiffel's hand.

I’m not quite sure I understand your point here - is it that programmers only want to work 8 hour days? I quite agree with them.

Ian

David Jenkins

unread,
Dec 10, 2015, 9:32:56 PM12/10/15
to Eiffel Users
Hi David,

My thinking is that since technical criticisms of C and C++ on language details have not worked - people actually say they like the quirks, that we should enlighten people as to the basics of computing. C and C++ contravene those basics. I do plan another article to criticise C and C++ at this level - that is to cut it off at the legs.

For a few years I received a subscription to "C++ Report" (I think that's what it was called). Every issue, on the last page, was a column titled "Obfuscated C++", containing some innocuous-looking code that actually produced an unexpected, often bizarre result. You were supposed to figure out what was wrong; the answer was at the bottom of the page. That was enough to convince to avoid C++.


It's that compelling reason that plays into Eiffel's hand.

I’m not quite sure I understand your point here - is it that programmers only want to work 8 hour days? I quite agree with them.

I can't blame them either. At the same time...

Recently I watched a video of the spectacular Chinese pianist Yuja Wang visiting her teacher Gary Graffman for a lesson. She confessed that sometimes she didn't practice enough, leading to a wrong note, and when this happened, Graffman wouldn't say anything, just give her this look. Then, she said, she knew it was time to practice an extra 6 hours just on that passage. Listen to her play some day; she's not exaggerating. You want to get good at something, you have to put in the effort.

Ian Joyner

unread,
Dec 11, 2015, 4:46:19 AM12/11/15
to Eiffel Users
Yes, we need to get away from this obfuscation nonsense - many computer people pride themselves on this being a subject that is impenetrable to the masses. It needn’t and shouldn’t be.

Have not heard of Yuja Wang. Must give her a listen. But that’s the problem - if you are working at computing for more than 8 hours a day, where do you get the six hours to practice that passage?

Well, I’m back to doing more Debussy - I’m sure this passage is taking more than 6 hours to get!

Ian
Reply all
Reply to author
Forward
0 new messages