tag:blogger.com,1999:blog-1256203328790934312.post6058386388437156727..comments2024-03-17T06:34:31.576-07:00Comments on Plan 28 Blog: How we got to where we areUnknownnoreply@blogger.comBlogger14125tag:blogger.com,1999:blog-1256203328790934312.post-80669472541380908352016-10-19T06:56:40.661-07:002016-10-19T06:56:40.661-07:00Could it be possible to validate first the referen...Could it be possible to validate first the reference symbology on Babbage notes with onthology and entropy AI, that would tell in a sense if he was exchanging symbols for the same meaning, my guess is that this could create a foundation on the abstraction layer.<br />This sound as a doctoral thesis, validating first his way of thinking / writing his thoughs<br />Best regards<br />Angel from MexicoAnonymoushttps://www.blogger.com/profile/01741579166182783658noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-51121925106835590612016-10-09T00:30:01.054-07:002016-10-09T00:30:01.054-07:00Wow! Thank you Tim so much for sharing. Amazing fi...Wow! Thank you Tim so much for sharing. Amazing find & so clearly expressed. You say it so matter of factly, as if this is old news but has this entry been discussed/'published' anywhere before?Unknownhttps://www.blogger.com/profile/04314809897589013305noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-40032800107700753402016-10-08T19:02:30.566-07:002016-10-08T19:02:30.566-07:00Babbage certainly did invent "indirect addres...Babbage certainly did invent "indirect addressing", but not until much later and its not clear he ever worked out the details. In the Cambridge Sketchbook from 11 February 1859 there is the passage:<br /><br />[after examination of reduction of linear equations, p.265, p.267 continues on p.295] 11 Feb 1859 It appears that in the solution of n simple eq[uatio]ns the [underlined: indices] of the Variable may be so chosen that they shall follow an arithmetical law [deleted: Here] But whenever such indices follow such a law then of course the engine can easily calculate the law and thus by conveying the numbers calculated directly to the apparatus which selects the variable do away with any necessity for cards This will be the case in all calc[ulatio]ns in which the variables are symmetrical or sym[ilar]ly places [sic] Thus is the development of any function of two three or more infinite seriesTim Robinsonhttps://www.blogger.com/profile/13867416476331949029noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-70253429753257128292016-10-08T14:05:23.731-07:002016-10-08T14:05:23.731-07:00I know it is not really the done thing to quote on...I know it is not really the done thing to quote oneself, but I can't resist mentioning that my paper "The Origins of Computer Programming" (IEEE Annals of the History of Computing, 16, 4 (1994), pp.6-13.), after discussing the engineering practicalities behind the notion of stored programs, as first enunciated by Eckert & Mauchly, goes on to say that the stored program concept: <br /><br />"also has strong connotations of the computer being able to construct, manipulate and then (surpassing the notion that Babbage had arrived at over a century earlier) execute its own programs, all completely automatically. With this latter view the stored program concept becomes an engineering approximation to the theoretical universal automaton that Turing had postulated in his (now) famous 1936 paper – i.e. a machine which is general-purpose in a very fundamental mathematical sense as well as in a very practical sense. Thus, given the practical requirement of replacing the Turing Machine's infinite tape by a sufficiently large store random access store, it is crucial for the computer to be able to calculate the addresses that are used to access the store, rather than only being able to use pre-calculated (i.e. fixed) addresses. This, to my mind, is a crucial characteristic of a modern stored program computer."<br /><br />It will be fascinating if Plan 25 can reveal more about Babbage & Lovelace's thinking related to this point.<br /><br />A separate issue - how advanced were the programming concepts that were to be used at the microprogram level of Babbage's machines. I don't recall ever seeing this discussed.<br /><br />Cheers<br /><br />Brian Randell<br />Glyndwrhttps://www.blogger.com/profile/08660658883340436216noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-49896070585071997862016-10-08T08:02:33.861-07:002016-10-08T08:02:33.861-07:00Even if the archival research shows no evidence th...Even if the archival research shows no evidence that Babbage designed variable indexing sufficient for Lovelace's Bernoulli algorithm, please don't be discouraged from moving towards an historically plausible buildable Analytical Engine if that was your intention. There are many interesting and useful calculations that don't require array indexing or memory pointers.<br /><br />The idea to compute Bernoulli number was apparently Ada's: "I want to put in something about Bernoulli’s Numbers, in one of my Notes, as an example of how an implicit function may be worked out by the engine." Perhaps Babbage didn't think hard enough about whether it was an appropriate problem for the Engine.SawMillLodgehttps://www.blogger.com/profile/00151900102573264862noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-65177771951536903852016-10-07T13:05:52.995-07:002016-10-07T13:05:52.995-07:00My interpretation of what I read here, is that aro...My interpretation of what I read here, is that around 1840 the design had no looping, and thus did not need addressing. Every step in every loop had it's own card. Ada rapidly realised that adding looping was desirable, and used it without solving the other problems it raised. davidhttps://www.blogger.com/profile/11001496113102126886noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-54382982077856039902016-10-07T12:42:08.384-07:002016-10-07T12:42:08.384-07:00I guess this is unknowable(?) but I rather think t...I guess this is unknowable(?) but I rather think that if Babbage had built an AE that when attempting to construct the Bernoulli program he would have realised how inelegant it was and found a more elegant (relative addressing?) solution. He spent comparatively little time on programs, so I wonder if he just wasn't aware of what was required? Alternatively maybe he was fully aware (e.g. from Lovelace's notes) but thought it was easy to fix and never got around to it? In short, would Babbage really have considered his work done if there wasn't an elegant way to implement the Bernoulli numbers program?Unknownhttps://www.blogger.com/profile/04314809897589013305noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-33517381043668778002016-10-07T11:19:55.605-07:002016-10-07T11:19:55.605-07:00Fascinating work, and I hope you manage to resolve...Fascinating work, and I hope you manage to resolve enough unsolved questions -- to essentially build a mechanical method of executing assembly language -- via a best-possible-effort reproduction of an Analytical Engine! I remember my days of SuperMon64 on a Commodore 64, and to have a mechanical machine essentially execute opcodes, is rather damn impressive. Keep it up!Mark Rejhonhttps://www.blogger.com/profile/16575623553854645022noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-75996631913914054892016-10-07T10:35:21.067-07:002016-10-07T10:35:21.067-07:00Funny you should mention that. I wrote an email on...Funny you should mention that. I wrote an email on 12 December 2015 to the team that says:<br /><br />"One of the problems talked about at the Lovelace Symposium which I've been watching via live stream (brought up at least by Sufrin) is that the AE does not appear to have any way to use a value in a variable to 'address' another variable.<br /><br />To be clear I mean that imagine the V0 (variable column 0) contains the number 2. There's no way to refer to the number that is in V2 (you can swap 2 for any other number).<br /><br />I don't believe this is a fundamental limitation of the machine and it can easily be overcome. It requires that the machine have the ability to recognize when a variable has underflowed (or reached zero), a way to decrement a value in a variable, a way to copy one variable to another and a way to skip a fixed number of operation cards. I believe the engine is capable of all those things.<br /><br />It's not uncommon in assembly language programming to work with a small number of 'registers'. I'm going to think of columns V0 and V1 in the engine as my registers and do operations on them. So we'll do all operations (+, -, etc.) on V0 and V1 and put results in V2. That's easy to do with the engine.<br /><br />Now to work with other values in the store it's enough to move them to V0 and V1 (which the engine can do), perform the operation and move the result back to the appropriate place.<br /><br />So... how do you move an arbitrary column Vn to V0 (for example; same thing applies for V1) where the n is a value stored in some other variable. Let's for the purpose of illustration suppose that n is stored in V3 and that this particular machine has a store with ten variable (V0 to V9) and that n could be the value 4, 5, 6, 7, 8, 9 (because those variables are not being used for 'registers' or my 'index' in V3).<br /><br />How can we use the value in V3 to select one of V4, V5, ..., V9 and copy its value to V0? If we can do that we can then do operations on arbitrary 'indexed' locations.<br /><br />It's easy.<br /><br />I'm going to invent some operation cards using my own notation.<br /><br />COPY - Copies from one variable to another. e.g. COPY V3, V0 copies the value in V3 to V0.<br /><br />DECREMENT - Reduces the value of a variable by 1, e.g. DECREMENT V6 will decrement V6.<br /><br />SKIPZ - Skip forward a fixed number of cards if the previous operation hit zero. SKIPZ 4 would skip over 4 cards.<br /><br />SKIP - Unconditional skip over a fixed number of cards. SKIP 4 skips 4 cards.<br /><br />The following sequence of cards uses the value in V3 as an 'index' and select a variable and copy it to V0.<br /><br />DECREMENT V3<br />DECREMENT V3<br />DECREMENT V3<br />DECREMENT V3 ; 4<br />SKIPZ 10<br />DECREMENT V3 ; 5<br />SKIPZ 10<br />DECREMENT V3 ; 6<br />SKIPZ 10<br />DECREMENT V3 ; 7<br />SKIPZ 10<br />DECREMENT V3 ; 8<br />SKIPZ 10<br />DECREMENT V3 ; 9<br />SKIPZ 10<br />COPY V4, V0<br />SKIP 9<br />COPY V5, V0<br />SKIP 7<br />COPY V6, V0<br />SKIP 5<br />COPY V7, V0<br />SKIP 3<br />COPY V8, V0<br />SKIP 1<br />COPY V9, V0<br /><br />This is to use a modern term a sort of 'jump table'.<br /><br />There are many different ways to achieve and it's laborious, but it would work."John Graham-Cumminghttps://www.blogger.com/profile/12998100764952319513noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-38586923236934044102016-10-07T10:26:16.894-07:002016-10-07T10:26:16.894-07:00If so then Ada invented the array - which would be...If so then Ada invented the array - which would be a major point in her favor.Steve Bakerhttps://www.blogger.com/profile/18284918588766160601noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-41562513657529920222016-10-07T10:25:22.802-07:002016-10-07T10:25:22.802-07:00It's not the code that needs debugging. If th...It's not the code that needs debugging. If this report is correct, then the Analytical Engine would have been incapable (even in principle) of calculating the Bernoulli sequence. As I read it, the machine couldn't do "arrays" - which are fundamental to an enormous range of algorithms.<br />Steve Bakerhttps://www.blogger.com/profile/18284918588766160601noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-28648764643715649722016-10-07T10:21:52.721-07:002016-10-07T10:21:52.721-07:00I suppose, if the machine could skip a card (an &q...I suppose, if the machine could skip a card (an "if" statement) - then you can simulate indexed addressing (painfully):<br /><br /> // b = a[x]<br /> if ( x == 0 ) b = a0 ;<br /> if ( x == 1 ) b = a1 ;<br /> if ( x == 2 ) b = a2 ;<br /> ...<br /><br /> // a[x]=b<br /> if ( x == 0 ) a0=b ;<br /> if ( x == 1 ) a1=b ;<br /> if ( x == 2 ) a2=b ;<br /> ...<br /><br />Painful - but possible?<br />Steve Bakerhttps://www.blogger.com/profile/18284918588766160601noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-5281561698479589102016-10-07T09:24:31.496-07:002016-10-07T09:24:31.496-07:00Is it not appropriate that the first "program...Is it not appropriate that the first "program" would need debugging? Curmudgeon-at-Largehttps://www.blogger.com/profile/12711926936968653119noreply@blogger.comtag:blogger.com,1999:blog-1256203328790934312.post-57481757222102226942016-10-07T08:59:45.386-07:002016-10-07T08:59:45.386-07:00Is it not possible, even probable that this one sp...Is it not possible, even probable that this one specific "program" is hypothetical with respect to the capabilities of the Engine at that point? Could not Lovelace have been writing for an extension of the device which did not yet exist?James Newtonhttps://www.blogger.com/profile/12037091869641832295noreply@blogger.com