Question on HVars
|
05-28-2015, 02:49 PM
Post: #9
|
|||
|
|||
RE: Question on HVars
I've not answered you because your question is actually a very good one, but doesn't have a short answer and I've been thinking how to explain it. What you are basically describing is tied in with several other important considerations.
First, there is no direct support for a "function" object in the HP parser when it comes to allowing the user to directly define them. So having the ability to do abc(a,b,c):=a+b+c does not work as input. Why is this not supported? a) because the original design of Prime started from the 39G (well, 38g - but we'll stick with the 39 for now). That is a solid design which works very well in providing some structure and consistency to the user interface (apps containing symbolic, numeric and plot views) as well as being VERY consistent with the way mathematics is taught to aid understanding - but it DID NOT allow the end user any sort of variable creation at all. This is something we wanted to change, but it will take a while to do it. Look at the progression.
The parser was implemented with the design that it would support pre-existing objects first. While we knew that at some point it would need to support arbitrary objects, it isn't just as simple as "turn a switch and make it work". Objects start running into a fundamental design question: should the user need to manually manage files and directories in order to work with the device? Must the user **COMPLETELY** understand how directory location and position impacts the calculations they do (HP48 style) or else they have difficult understand why certain behaviors are happening? Should they be completely blocked from ever seeing a file/folder structure (iOS)? Or should they normally ignore files/folders and only see them if they really want to (Android)? So now the question arises - when the user creates a variable, where does it go? Should they be forced to be manually switching locations/directories to manage where stuff is? How do they access it from elsewhere? How can you avoid creating unnecessary confusion in the target customer (which if you are reading a *calculator* discussion group you pretty much by definition ARE NOT the Prime's primary target customer)? And now we get to... b)**The CAS. This is where it starts to get problematic. The CAS makes the assumption that everything is an object in a flat directory. It was designed with the idea that you have "sessions" that are saved/loaded/discarded every time you use it. That design works well for most CAS systems and is why most desktop math/engineering packages use it. In those, everything lives within that session and once gone, doesn't exist elsewhere. Yes, you can manually save it, create modules, etc, but the normal use is a single session, single problem, single set of calculations type idea. As part of the standard operation, you have command ( restart() for example ) that will wipe everything. That concept doesn't sit well with the idea that the calculator "stuff" should stay until you decide. Since the CAS allows you to define a function and store into a variable, we had to make 1 of 2 choices at that time:
There is a 3rd option which is "Why not base the whole system on the CAS and just have them learn how to do things right?" or "Why not just give every student a copy of mathematica?" or some variant therein. That is about the worst possible thing you could do a student learning about mathematics and anyone who says otherwise has either been teaching the most amazing set of student in history, or has no real experience teaching everyone from level 6 on up. (Yes, there are schools at grade/level 6 already using prime to explore concepts and LOVING it). For a certain type of student, throwing something like mathematica at them *might* work, but for the large majority it just killed any chance they will learn anything about math. The basic problem is that it requires you to learn far too much *first* about how to interact with the software before you can even begin to use it (you've just lost anyone who wasn't already extremely motivated and interested in learning about math), or you've taught the few that are left that they don't really need to learn because the software will "do it for me". That is the background information. Well, maybe some ranting too... (05-28-2015 09:53 AM)leprechaun Wrote: Why e.g. two ways to define a function ( with := in cas or the define-template ) As from before, there is no support for "non-existant" objects yet. Nor is there yet a good solution for the "where does it go" question that we are happy with *yet*. The CAS assumes everything is an object. It makes no distinction between f(x):=x^2 and a 10000 line program function. They count as the same thing! Until there is support added to create a function object in a unified way, it is currently stuck in a midway point that is not ideal because the CAS does one way, and the rest of the system can't support that same way yet. So knowing that an object/variable is something you store into directly, does a function go in the toolbox where nothing in there can be stored into by name? Or is it a variable since it behaves just like any other variable? You could easily argue each way quite convincingly. For the moment, we felt the best decision was to keep the CAS objects together under VARS, and the "Defines" in the toolbox. That very well might change however in the future as I agree it was not a perfect solution. Quote:have any beneficial properties if the functions can be used equally in home. But as described have different behaviour if only its name is typed.... If I want to look at a function defined with the template I have to go to memory(!) where my Variable is listed as a program (but) does not show up in prog, and if I look at the function the Template is openend again.... Why not making such things unified and have a program for a function.... dunno if HP dev are discussing their platform from a retrospective and if they see positive aspects in the points I am struggling with. When you go down to the lowest level, a function is something that takes input, and returns something. In this way it is like a program and is in fact implemented as such in the HP code, in the CAS, and in basically any other system I've ever seen. So again, would it be grouped in as a program (which is really is) or as a function? What if you have a function that uses things normally used in a "program" such as IF THEN ELSE END statements and loops/control blocks? Would you count or qualify that as a program then? How can you understand the intent of the user there? I agree that there needs to be more work around clarifying the distinction between a "function" and a "program" in the interface. There are places where it is not as clear as I'd like it to be. Hopefully, when/if there are future releases we can further address this issue. Also - hopefully you haven't given up reading this long post by now! TW Although I work for HP, the views and opinions I post here are my own. |
|||
« Next Oldest | Next Newest »
|
Messages In This Thread |
Question on HVars - leprechaun - 05-24-2015, 08:12 AM
RE: Question on HVars - leprechaun - 05-26-2015, 04:33 PM
RE: Question on HVars - leprechaun - 05-27-2015, 09:38 AM
RE: Question on HVars - DrD - 05-27-2015, 10:25 AM
RE: Question on HVars - leprechaun - 05-27-2015, 08:23 PM
RE: Question on HVars - Mark Hardman - 05-27-2015, 09:28 PM
RE: Question on HVars - leprechaun - 05-28-2015, 09:53 AM
RE: Question on HVars - Tim Wessman - 05-28-2015 02:49 PM
RE: Question on HVars - DrD - 05-28-2015, 11:02 AM
RE: Question on HVars - leprechaun - 05-28-2015, 09:28 PM
|
User(s) browsing this thread: 1 Guest(s)