[Tutor] Tungsten teaching method
ThreeBlindQuarks
threesomequarks at proton.me
Wed Jul 26 13:26:19 EDT 2023
Dave,
You have a lot to say on this and related topics and I do not have any idea on where to even start in response and perhaps not here.
You and I both have years of varied experience with programming with lots of overlap. My point is that this forum attracts several kinds of people and the ones asking questions may be the main focus as they have their own purposes in mind. Some are less interested in the philosophy or history than you and I.
I happen to be interested in a very general set of topics that include Computer SCIENCE as in understanding on multiple levels how things work and on innovations to see if they offer something worthwhile. I am currently less focused on the kind of day job or earning a degree that many others see as a primary goal. This bias is something I need to push back when trying to help some here as they mostly want to get something DONE. Sure, many are curious and may be interested in multiple ways to do things or doing serious learning, but I bet often the goal is more focused on getting it done SOON and correctly.
My son-in-law recently suggested I look into ChatGPT as they find it helpful to supply some code they can use. I see such programs as part of a continuum in terms of finding information and deciding what is of value. I go far enough back to when you consulted a librarian and then maybe got directed to a more specialist form of librarian or scholar who helped you find books or other materials that might broach the topic and then perhaps find references from there to follow. The process was not quick or easy and often ended in failure.
But in the very early days of the internet, there really was not much yet online. Heck, finding things before web crawlers required being GIVEN info like the URL for a home page. Sending email at one point required mapping out a path between a set of machines that locally knew the next one in the path. Yahoo was initially just a set of curated bookmarks and early search engines were rather primitive. We had improvements steadily, and all kinds of protocols led to just asking for something and letting some invisible entities figure it out and silently do it, so you no longer had to send email to ...!ihnp4!...!...!machine666!user but could just say user at machine666 and forget about it.
So what we have now is tons of info out there and ever smarter ways to access it, way beyond the Page Rank algorithm and deeply into machine learning methods.
And this leads to an interesting thing for me. Often a question is asked and I just open something like a browser and with a few clicks find a reasonable result. I then ask myself why the one asking the question could not as easily do something similar BEFORE asking, LOL!
I then realize there is a level of skill involved that many have not really learned yet either and that recognizing if what you are shown applies to your case, takes some learning and skill too. If you were to ask ChatGTP how to do something it may return info on how to do it using some computer language you are not even aware of and not setup to use for your purpose. You may need to tell it you want to do something using Python and using a particular module or two as a way to help zero in.
And when you get a result, be very cautious. The info it uses is sometimes wrong and often misleading. What if the program it supplies was gleaned from ages ago when someone discussed how to do something in a 2.x version of Python and perhaps using a module that is no longer used.
Let me say that natural languages are not really natural and often quite confusing so more rigorous structured computing languages have some advantages.
When I say Wolfram has access to a natural language interface, I may need to explain. At one level simply allows you to specify a sort of query in text that returns data structures the program then continues to use the normal way. In some ways this is not much different than someone using a function call (in any language) that given a URL, reads the embedded HTML and searches for things like lists or tables or images and then returns some data structure that contains something like a list or dictionary containing a sort of copy of the selected contents.
Your program may then simply loop over this data structure instead of trying the hard way to work directly with the web page.
So I note articles like this one which do some comparison and analysis of how some of these programs work differently:
https://writings.stephenwolfram.com/2023/03/chatgpt-gets-its-wolfram-superpowers/
It looks like Wolfram, given its mathematical underpinnings that you note, does quite a bit of calculation work and chatgtp is a tad more about parroting what it finds. He gives examples of times it is just plain wrong as it does not really know much and accepts what it has been given and how it could benefit from consulting HIS knowledge base that is quite different.
My personal view is that human brains partially work by having many somewhat independent units evaluate stimuli from different facets and contribute upward to areas that combine info and analyses and perhaps assign weights till at some level near consciousness, some are improved and selected as the choice you are going with. As such, I see a place for many computerized algorithms that work independently and also cooperate to produce better results than any one of them might have been able to do alone.
So if a user asks in some natural language "how far apart are China and Brazil" then one source might find some web site that mentions traveling from one to the other for some distance with a stopover in iceland to refuel. Obviously, the mileage in that case may be wrong. Another source would look up China and Brazil in a knowledge base and get the names of cities such as Beijing and Brazilia as well as their coordinates on a map. It would know how to deal with spherical geometry and plot a minimal length flight between them, perhaps at minimal altitude, or at 30,000 feet. It might report an airport to airport distance.
But an interactive source, might then query the user as to what they really want. Do they want to specific the specific cities or do they want the distance from the nearest point in Brazil to the nearest point in China. Heck, do they want the nearest distance heading from the Pacific or over the Atlantic?
This is wandering but perhaps makes the point that for a significant set of users, many interesting questions may not involve wanting to know HOW to make your own answer just to get one. If I see someone interesting on TV and wonder about some aspect of their background such as NATIONALITY, I can do a search like "John Dow bio NATIONALITY" and look at some of the answers and see if there is info. It may well say he is part NATIONALITY on his mother's side. But for many purposes, I can stop there and not demand an exhaustive family tree showing many generations. Of course, if my question is whether s/he is descended from some Kind/Queen of England, I might need a more precise genealogy tracing them back step by step.
Your points about actual use of a language like Python are illustrative. Yes, many people rarely venture into the more interesting (to me) parts of the language. The reality is that some fairly simple programs can be written in, well, ANYTHING. Many modern shell programs like BASH can actually handle some fairly simple arithmetic and algorithms. Heck, I often go to my browser and type something in the URL box like "=1024*1024" and it returns a calculator of sorts with the answer shown and I can then go on using it online.
Languages are way more interesting if you first are told something about their purpose and intent and maybe even a tad of history. BUT if someone has negligible experience then I agree trying to tell them much of that may not be helpful.
My point with Wolfram is that if the goal was to teach a NEW person from scratch, perhaps the book was doing it right. If the goal was someone more like me, then perhaps an introduction outlining things would have been very helpful. It could have said that Wolfram has a full amount of the kind of language features found in many other languages BUT the goal was to rarely use them as it had more interesting and powerful paradigms. Only when writing your own lower-level functions, might they be needed or perhaps when trying to write faster code. Then, as an experience programmer, I might sit back and enjoy.
Python has a rather loose concept we often discuss about what may be the Pythonic way. It can be both be enlightening and confusing. Is it really wrong to check values to avoid dividing by zero? I say no. But, of course, if you have a paradigm where exceptions can be triggered AND caught, and dividing by zero may be very unlikely, then sure, write your code with a "try" that does not test first but deals with the consequences when and if it happens.
More information about the Tutor
mailing list