BYTE Magazine's Lisp issue (1979) [pdf]
ia902603.us.archive.org
ia902603.us.archive.org
I remember the last page article - Stop Bit. One particularly memorable one described how various professionals would search for an elephant. Some I recall are.
- A C programmer would start at the southernmost point in Africa and travel east until they got to the ocean and then move north and head west to the opposite shore, repeating until they had covered all of Africa. An assembler programmer would follow the same strategy but do it on their hands and knees.
- A college professor would prove the existence of an elephant and leave it as an exercise for the students to actually find one.
- A marketing executive would paint a rabbit gray and call it a desktop elephant.
I wonder if I could find that article. I'll have to see if Archive.org is searchable. Or maybe I can find it by searching today: https://www-users.cs.york.ac.uk/susan/joke/elephant.htm :D
I even enjoyed the ads :)
Anybody have a clue?
I don't think this thing is 1979 compatible.
Unfortunately the market has bifurcated into word processors that aren't really very good layout tools for something as complicated as a book and programs like InDesign that are complex and expensive. (Haven't looked at Scribus recently but I assume the complex point stands.)
That's... dedication.
InDesign is probably the best I've used, but it is expensive.
Inkscape is actually flexible enough to do it well, and incredibly simple on the surface, though a few quirks.
Scribus can talk to Krita, and some Photoshop stuff, which can lift the burden with some image-heavy things. Complexity wise, it looks a lot like InDesign, but can't do quite a few things it can.
But, for most people, any of the above will fit the bill.
InDesign is certainly the standard.
Things got complicated because I needed to output an interim version of the book and wanted a format collaborators could work in. Plus I thought I'd save having to re-layout the book after editing. Which of course didn't happen that way.
Lesson for next time is either live within Google Docs limitations or do layout in a proper tool only when content editing is 99.9% complete.
I needed that today.
xD
As you say, the output of this along with photos and so forth had to then be assembled by hand.
Pagemaker didn't come in until the mid-eighties.
Yeah, LISP was a bit much -- but hey! it also included an article with assembly code examples for the Z-80 Spectrum; I wish I had this magazine back in the day...
A thing I noticed: so many practical examples and code excerpts; I also spotted some math, sporting a Riemann integral no less :) - today's magazines are kindergarten-level by comparison. Of course, today's magazines are not aimed to the technical hobbyist anymore, so it's understandable... Btw: who are today's magazines targeting? Second question: what magazines?!
100 pages of content and 1100 pages of ads.
:D
https://cdn-images-1.medium.com/max/597/1*9qr-I3aJLr0IrM256g...
It'd probably be better to point the article link there.
Btw, I'd love links to 1986-1996ish articles on SGML and markup technologies.
For over a decade I have been hosting scanned copies of various in-copyright, out-of-print books as PDFs on my web site. I haven't heard a peep from the rights holders. I don't know if it matters, but I have no advertising on my site. The books and everything else are just hosted for the enjoyment of people who share my interests.
Drop me a line (email in profile) and let's coordinate, so we don't both scan the same issues.
I suspect archive.org would be happy to host the scans.
One magazine I wish I could find a complete collection of (PDF or paper, I don't care) is Robotics Age. About the only thing I have found on it is a book that was published (picked up a copy of that), but nothing else as far as the magazine is concerned.
It was kinda the Byte magazine for robotics of the 1980s era. So you had a mashup of articles for both industrial and research robotics, as well as articles and such for hobbyist robotics. It's a shame that it seems to have disappeared.
I think the solution should come from school. Kids should learn basic coding like they learn basic math and physics. Then it's up to them whether they want to go further but that will give them the basics to be more than a passive user with these machines and will give them a chance to dive into it if they like it. It's often the most basic concepts that's are the biggest barrier to entry.
I totally agree with your central point. These small interventions at a very early age through school initiated a curiosity, and totally changed internalisation of future concepts in Maths and Physics.
The generation after me lost out, as the primary schools had got rid of the 'obsolete' BBC Micros, and programming lessons were replaced with 'workplace-orientated' IT tasks (spreadsheets, letter writing).
[1] https://en.wikipedia.org/wiki/BBC_Micro [2] https://en.wikipedia.org/wiki/Granny%27s_Garden [3] http://www.bombjack.org/commodore/magazines/input/input.htm
I agree with you, computer literacy doesn't start with coding. It starts with typing, understanding basic internet protocols and software (text editor, spreadsheets, slides) and then a little bit of coding. Just enough to be useful, to be able to automate basic tasks. It's important that it is very practical, first to be useful, but also to catch their interest. Like creating a website.
Today, I think equivalent magazines are Make, Adafruit's blog, internet & all the resources available online. So, I think such magazines / content still exist & they still have an audience (if not a larger audience, thanks to MOOCs & Arduino / Pi, etc.)
If you are making an argument that, in general, most magazines today publish trash, and somehow, the magazines published in the past were more content rich.. I'd challenge that with two points:
a) Content heavy magazines / websites still exist --> Economist, Ars Technica, etc. They have a strong audience.
b) The pool of people reading has gotten larger; and more magazines are catering to a more diverse population, some of which, as you imply, are drivel.
But to say that such content is no longer published, or is accessible, I would think, is incorrect. I'd argue such content is much easier to access today than ever before.
Later on, I was using a Pascal compiler on the PDP-11. I'd write bits of code, compile them, and look at the assembler. I was especially impressed with the clever way nested functions worked (the static link pointer). Nested functions in D are implemented the same way :-)
But, as you say, the whole space got generally more corporate and more specialized and BYTE's lack of a real identity showed. I recall being invited to a press event when they were trying some sort of reboot in the aughts but it obviously didn't work.
That said, even at the end, it was still a cut above most other computer magazines on UK newsracks.
It seems like a piece of history I was a little late to the party to. By the time I first picked one up, it had become a thin magazine not a whole lot better than PC Magazine.
That was the go-to magazine if you were building your own machine. It's heyday was sometime in the early 1990s, when PCs were starting to branch out and become consumer-oriented items. But in the 386-486 era - that was an insane magazine to peruse (big too!).
Really, one could say it marked the end of a particular era - that of hobbyist machines. While it was a technically oriented magazine, it did cater to those who wanted to build their own systems (maybe not from the component level). Once the PC became something you could easily pick up just about anywhere, it started to get thinner and thinner, then finally disappeared.
That was also the end of the "mom-n-pop" style PC computer parts stores. There are a scant few that linger on today (mostly they sell used machines refurbed or rebuilt - though some have gotten into building and selling retro machines, sometimes for steep prices).
Also the Ken Gordon Computer Shows.
I actually upgraded/built a system a few days ago but even I'm pretty much out of doing that sort of thing. Wouldn't have done it if it wasn't a Linux server thing and I already had a number of parts.
If I remember right, it had just enough editorial material to squeak past the line that divided the less-expensive postal rates for literature from the more-expensive rates for advertising.
"Ciarcia's Circuit Cellar" was one of my favorite columns in the early BYTE. I tried to build some of his designs (and maybe one actually worked) and really enjoyed Steve Ciarcia's self-published book. It might seem weird to have this column in a computer magazine, but this was not long after the era of homebuilt computers (in the first year of his store, my dad used to actually offer to build computers when people bought them) so knowing your way around a soldering iron wasn't unusual for 1979 computer hackers.
You were getting past the time when Heathkits and so forth were really practical, surface-mount was becoming common, etc. but obviously well before the current wave of Arduinos, Raspberry Pis, and so forth.
For hobbyists, very unlikely. But there were large package (much larger than even what we consider a "large package" device of today) SMT devices.
SMT had been a thing for probably over a decade by 1979.
A lot of the miniaturization and SMT stuff that we take for granted today was done for the Apollo Guidance Computer:
https://en.wikipedia.org/wiki/Apollo_Guidance_Computer
There's a picture in that article showing flatpack SMT ICs - note that's from 1966.
Of course, that machine was bleeding-edge state-of-the-art for the time period, and anticipated hobbyist machines of the late 1970s.
If you're interested in this kind of stuff, it is fascinating to review the history of electronics. Things were pretty much strictly vacuum tube for a long time, but even there were a lot of innovation. When transistors came on the scene, things got weird quickly.
A great way I found to explore this, from a "contemporary interested layman hobbyist" perspective - is to go on google books, and look up Popular Science magazine. They have virtually all the issues scanned and available to read. Start from about 1940, and just peruse the issues. Plenty of great articles on interesting technology of the past eras, along with electronics projects and such using the "latest tech" of the period. You'll find some interesting things in there that you likely never knew about.
For instance - toward the end of the vacuum tube era, in a "last ditch" effort to keep them relevant, vacuum tubes went "solid state" - if you saw some today, you would think they were large metal-can transistors from the 1960s or 70s, but they were actually miniature metal-can vacuum "tubes" using similar construction and materials as those transistors; they had to be assembled inside a vacuum chamber! Most of them went into a few brands of high-end transistor televisions, but needed some tube components for their power-handling capabilities. So, hybrids developed...
That's just the tip-o-the-iceberg!
The same with all the other magazines you mention, including Compute! (for some reason, your name seems familiar to me). I still have most of those magazines from then; and I still peruse them from time to time. One of my favorite issues of Creative Computing was focused on graphics, and it had an article on fractal terrain generation, along with a BASIC code implementation for the Apple IIe and IBM PC. I ended up converting it to run on my Color Computer.
As far as Byte Magazine and "Ciarcia's Circuit Cellar" is concerned, I never built any of the circuits described, but I did love to read about them. Once I became an adult, and got my old computers back from my parents (still have 'em, they all work!) - I recalled these articles, and some research led me to the books. I eventually collected all the books (and a few back issues of Byte). Reading thru them brought back memories of being a kid.
At one point - I think it was the article about how he automated his home with this custom computer system (probably based around a Z80 or something, I don't recall) controlling a heap of relays to switch circuits in his house - I decided to see if he was still around. I found his email, and sent out a message.
He eventually got back in contact with me; I had wondered about his home automation system and his lab, etc. He sent me some recent pictures of his home and workshop. Different of course, but still some of it stayed the same. IIRC, he had replaced the home automation system with something newer, but it was still something he tinkered with on occasion.
I don't know what it is - maybe nostalgia or something? - I tend to like to contact these "greats" of the past (and present) to tell them how I have appreciated their work from the past, and how it helped me to become the software engineer I am today. Sometimes, I'm too late, unfortunately. But these men were my heroes and inspiration toward my present career path. I never intended for software engineering to be my career; it was something I kinda fell into. But I have always been programming in some manner or another, ever since getting my first computer.
BYTE was a niche magazine for a niche audience. BYTE was never for the masses.
Perhaps your location in Armenia separates you from the actual popularity of BYTE magazine back in the day. I remember 1990s brick&mortar bookstores like Barnes & Noble and Borders would carry more popular magazines like "PC Magazine"[1] and "PC Computing"[2] but they didn't have BYTE on the shelves. You had to subscribe to BYTE by mail. How did someone subscribe to BYTE if they weren't on the retail racks in the first place?!? By mailing in the BYTE subscription card (advertisement) that was placed inside of PC Magazine!
Also as trivia, BYTE was the last magazine I ever paid a subscription to (circle 1998?) because I felt cheated after paying up for a full year and after 1 issue, they shut down the operation. I got a form letter saying they would substitute with something else (Dr Dobbs? can't exactly remember) but they didn't honor their word and didn't send me a pro-rated refund for the unsent issues. Looking back, BYTE stealing my money was a godsend because it saved me from spending any $$$ on magazines for the last 20 years haha.
We remember differently. Yes, the libraries had BYTE but again, I'm talking about relative popularity. As another datapoint, the 1980s grocery stores' magazine section which of course would be much smaller than Barnes & Noble would have PC Magazine and Computer Shopper but they never carried BYTE. BYTE was always more niche than PC Magazine which lowered the number of retail outlets where it could be purchased.
PC Magazine covered applications (Lotus 123, MS DOS, etc) and games which was relevant to a larger population. BYTE was never a magazine for the "masses".
I eventually subscribed anyway, but it was absolutely a staple of bookstore shelves up until it became a pale shadow if its former self (much like PC Mag and others).
Same happened to me! Renewed for 2 years after being a subscriber for many years, and then they just stopped publishing a few issues later. And they offered 'Windows Magazine' as a substitute - ugh, no thanks...
English isn't my main language and haven't seen this term before. Thanks!
Not at this stage. In 1979 is was a hobby zine for computer builders. By the mid-90's it was trying to compete against IT rags that were definitely for "mass" consumption. But early Byte was absolutely targeted at electronics experts, with a strong assumption of solid software skills.
Yes, I agree that BYTE eventually expanded (or diluted if one chose that viewpoint) their coverage into areas that overlapped with PC Magazine etc. But they still had more of a niche audience. Here's an example issue from 1994.[1] If one flips through the pages, it has stories about CISC/RISC and Object-Oriented COBOL. It also has ads for a disk hex editor and Watcom C++ compiler. The typical computer enthusiast that's playing around with WordPerfect/Lotus and games like Microsoft Flight Simulator didn't care about geekier topics like that.
My first IT director was a programmer and even he didn't subscribe to BYTE. He did subscribe to PC Magazine and ComputerWorld.
In one indues of the magazine from January 1987[1], there's a great, in depth overview of QuickBasic 2 starting on page 285. It includes lots of examples and sample code. After this article, there's one about writing a fairly complex directory and file management utility - and it includes a complete listing of the asm code needed to write the program. The code is very well documented and is a real pleasure to read.
I wonder if modern audiences would even be receptive to articles like these. I'm sure some would, but I think many people have a tl;dr attitude and would abandon ship early on.
As a side note, I find old computer magazines to be great for coming up with fun side-project ideas. This same issue of PC Mag has lots of ads for things like database and spreadsheet applications that use a natural language interface. One could probably combine ideas like these with modern speech recognition and AI to come up with some fun and interesting projects and products.
[1]https://ia601900.us.archive.org/33/items/PC-Mag-1987-01-13/P...
From word origin, a dialetheia is a combination of a truth (aletheia) and a contradictory falsehood (letheia); letheia is Greek for forgetfulness. A dialetheia is a truth the telling of which makes you forget.
Try to think of the truth as a function defined on a manifold. The definition of the function allows mostly true statements and mostly false to be very near in the distance measure of the manifold. Increased curvature comes from energy applied to some point in the manifold. The construction of the appearance of a dialetheia comes from a point with very high curvature where truths and falsehoods are very close together. If a singularity could exist in this space, it would be a dialetheia, a limit point the approach to which could be made from either truths or falsehoods.
While Godel's theorem is not a dialetheia, it appears like a dialetheia in everyday terms because we freely pass from the statement "the thing is proved" to "the thing is true," that is we assume consistency in discourse.
Dialetheias only have the appearance of true concepts, and can't exist in actuality. The concept of dialetheias is itself a dialetheia. When positing apparent dialetheias, it's important to show where the contradiction is and why it is a formal contradiction.
The point of this argument being that, "consumption" and other dialetheias are self-contradictory concepts designed to control people. Dialetheias probably also play some role in existence. In other words, a dialetheia is the appearance of something out of joint in things, a state of affairs that can't exist in the presumed exactitude of the Platonic realm. This out-of-jointness sets the world apart from the ambient Platonic realm, making it "step forward" and exist. It's like a slave leaving his caste under the rule of an absolute caste system. He says, "Certainly I am a slave, but nevertheless, I won't be a slave."
In the 70's and 80's these types of magazines were economically viable as people were willing to pay (gasp) for content like this and even so I don't think it was ever a spectacularly good business as the audience wasn't terribly large. Today, it would be at best extremely difficult to (profitably) run a web site targeting the same audience. Sure, the audience is at least 1-2 orders of magnitude larger but they are also far less willing to spend money and their attention is diluted by all the noise in the space. You could point to things like github but notice that the bulk of the 'content' on those sites are produced by the users of the sites who are not even the customers of those sites. This is why we can't have nice things...
This makes me think of https://lwn.net/
If I remember correctly, the site has struggled to keep going at times and most of its income is from subscriptions:
How does LWN make its living? LWN is primarily supported by its readers, through subscription fees. We also bring in a small amount of money through advertising, but that is typically less than 10% of our revenue stream.
However, Common Lisp (1994 ANSI standard) has interesting features that were not easily available (or standarized) on the Lisp implementations of 1979, for example the CLOS object system.
And today, with tools like Quicklisp or Alexandria, Lisp programming is really friendly. There are also some interesting recent books available, like Practical Common Lisp, and Land of Lisp.
These are all Common Lisp resources. There is also the classic "The little schemer" to learn Scheme.
I wish I could say I'm nostalgic for it, but it predates my existence. What's it called when you yearn for the style and typography shortly before you were born?
Having exactly the same languages makes macro writing really easy.
Lisp doesn't have more parentheses than other languages:
(if (validate foo)
(println foo "is the right answer"))
vs if (foo.validate()) {
console.log(foo, "is the right answer");
}
Unless you consider curly braces special and virtuous, and "(" parens bad. if foo.validate() {
println!("{} is the right answer", foo);
}
This has less parentheses (unless you count the placeholder in the format string). Putting the condition in parentheses like C and friends do is redundant if you use braces for the block anyway. (procedure foo ((integer x) (in-out integer y))
(set y (+ 3 x y))))
;; https://sites.google.com/site/sabraonthehill/postmodern-examples/postmodern-intro-to-s-sql
(query (:order-by
(:select 'countries.name
:from 'countries
:where (:= 'name '$1)))
"Vietnam")Edit? Oh hell yes. Once someone groks paredit (a weekend to get fluent), every other language is painful. It's because you're editing in terms of complete forms, rather than in units mismatched to the actual code.
Remember your first text editing experience? You probably spent a long time editing in terms of characters. Then remember what a revelation it was when you learned a programmers editor and started being able to manipulate larger portions of text such as words, lines, and even paragraphs?
Paredit is like that, but the next level, because you're working at the level of arbitrary syntactic forms.
Hogwash.
What's the difference between a list and a cons pair? That simple "." makes a HUGE world of difference when trying to parse S-expressions. That's syntax.
Why is there a difference between macros and reader macros? That's also syntax.
About as far as you can go is that "In Lisp, code and data have the same syntax." And even that is a bit dicey.
Does that make more sense to you?
What is dicey about code and data having the same representation? You use the word 'syntax' rather than representation but s-expressions is not a syntax per se.
defun function-name argument-list declarations/documentation forms
Above is syntax.An example of a function using a lot of syntax:
(defun foo (n &optional (a 10 a-p))
"This is the function FOO"
(declare (type (integer 0 *) n a))
(declare (ignore a a-p))
(loop for i from 0 below n by 10
sum i into s1
sum (expt i 2) into s2
finally (return (/ s1 s2))))
Lisp has complex argument lists with required, keyword and optional arguments.It has syntax for a bunch of declarations.
It has macros like the LOOP macro which implement a lot of syntax. Actually the syntax of LOOP is quite long.
PS: I like all your coments on Lisp, Rainer. Very informative.
Conversational Lisp, 1973, in Interlisp
(FOR OLD X<-M TO N DO (PRINT X) WHILE (PRIMEP X))
Common Lisp (LOOP FOR X FROM M TO N DO (PRINT X) WHILE (PRIMEP X))
Warren's greater idea was to have a very forgiving syntax for Lisp, with spell checker and DWIM (do what I mean) support. Write expressions in different order, with spelling errors, etc. Lisp will figure out what you mean.The function UNION in CLISP (see https://www.dreamsongs.com/Files/Hopl2.pdf ):
DEFINEQ((UNION (LAMBDA (X Y)
(IF ~X THEN Y
ELSEIF X:1 MEMBER Y THEN UNION X::1 Y
ELSE <X:1 !(UNION X::1 Y)>]
In MLISP: EXPR UNION (X,Y)
IF ¬X THEN Y ELSE
IF X[1] ε Y THEN UNION(X↓1,Y)
ELSE X[1] CONS UNION(X↓1,Y);
In CGOL (Algol syntax on top of Lisp) define x "UNION" y, 14, 13;
if not x then y
else if member(car x, y) then cdr x union y
else car x . cdr x union y <>
or CGOL with extended character sets: define x "∪" y, 14, 13;
if ¬x then y else if αx ε y then βx ∪ y else αx . βx ∪ y <>
'Conversational' syntax elements were for example often used in some AI systems as user interfaces into knowledge based systems. Rules were often written in similar expressions, example from KEE: (IF (THE SWITCH OF LIGHT IS ON)
(THE LOOK OF LAMP IS NO.LIGHT)
THEN (DELETE (THE STATUS OF LAMP IS WORKING))
(THE STATUS OF ROOM IS DARK))
Though I'd think the main purpose of LOOP is to have an example that Lisp can incorporate a wider range of embedded syntax variants and to make the language purists run away...I think we all know what you meant and that the way you said is a common way to say it, but being common doesn't make it correct. I wish people would rephrase that as "Lisp has a simple, fairly uniform syntax" or something like that. At any rate that's not the important point! What matters is the other thing you said: that programs in Lisp are represented in terms of the convenient, built-in data structures, the famous 'homoiconicity'.
Lisp has a two-level syntax. Remember: syntax decribes the structure of valid programs in a language.
First level is the syntax of s-expressions and its data types: numbers, symbols, strings, conses, lists, characters, vectors, ...
The second level is the syntax of the programming language Lisp:
* function calls
* built-in special operators: IF, LET, FUNCTION, PROGN, ... together with lambda expresssions
* macros: macros can provide arbitrarily complex syntax. Examples: DEFUN, DEFCLASS, DEFMETHOD, DEFMACRO, HANDLER-CASE, LOOP, DOTIMES, ...
Could we say that concetanative languages like forth have no syntax. It seems to me there is no AST in those languages, just a stack.
I'm not formally trained in CS, so that's my own individual opinnion.
1. Lisp is written preorder; Forth is written postorder.
2. The number of children a node in your Lisp AST has is marked explicitly, by parentheses, whereas the number of children a node in your Forth AST has is defined externally.
There is no difference between a Lisp-style
(+ (* 3 5 8) (+ 4 1))
and a Forth-style 3 5 8 * * 4 1 + +
except that the * in Forth-style can't take a variable number of arguments. But if you added parens to Forth, it could: ((3 5 8 *) (4 1 +) +) 3 5 8 3 N* 4 1 + +
The equivalent of (+ (* 3 5 8) 4 1) could be 3 5 8 3 N* 4 1 3 N+> the number of children a node in your Forth AST has is defined externally
and that's basically why.
Here's a 1000 node AST:
foo
/ \
Where are the rest of the nodes? Oh, they are defined externally.LET is an example. LET provides bindings for variables:
LET
a list of bindings
a sequence of declarations
a sequence of expressions
(LET ((a 1)
(b 2)
c)
(declare (integer a))
(declare (type (integer 0 100) b)
(setq c (+ a b))
(expt c 2))
The EBNF syntax for LET is: let ({var | (var [init-form])}*)
declaration*
form*
DECLARATION and FORM have more syntax.If Lisp sees a LET form which does not use above syntax, then it is a syntax error. A compiler or interpreter will tell you that. The compiler will detect that at compile time.
The following forms are all errors:
(let a 10 (+ a 10))
(let (a 10) (+ a 10)) ; 10 is not an identifier
(LET (((A) 10)) (+ a 10)) ; (a) is not an identifier
(let ((a 10)) (+ a 10) (declare (integer a))) ; declaration at wrong place
(let ((a = 10)) (a + 10)) ; Lisp has no infix operators...Shit, it's not working...
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))https://groups.google.com/forum/message/raw?msg=rec.humor.fu...