I really like strongly typed, garbage-collected, secure languages that compile down to machine code. I've used the excellent and fast Algol 68 compiler long long ago on a CDC Cyber computers, and now I use Modula 3 on Linux, when I have a choice. They compile down to machine code for efficiency, and give access to the fine-grained control of data -- you can talk about bytes and integers and such just as in C, but they still manage to take care of safe memory allocation and freeing.
Modula 3 is a more modern language design, though I have a subjective preference for the more compact and freer-style ALgol 68 syntax. Modula 3 has a clean modular structure which is completely separate from its object-oriented features. You're not required to force everything into object types. You can if it's fits your problem, but you can still use traditional procedural style if that's what you need.
And Modula 3 functions well as a systems programming language. It has explicit mechanism to break language security in specific identified parts of a program if that's what's necessary. It almost never is.
And, by the way, to avoid potential confusion, Modula 3 was *not* designed by Niklaus Wirth. Modula and Modula 2 were, but Modula 3 is a different language from either.
No, I'm not Mel. I did try programming it in machine code, though, instead of the high-level (all numerical, though) interpreted language it provided, and got nowhere. Perhaps I needed an oscilloscope as a debugging tool, and didn't have one. What I managed to learn of the machine language I figured out by reading the circuit diagrams. But I wasn't Mel, and I really appreciate decent languages and programming tools. Pity there are so few of them, even now. The best seem never to have been popular.
They were smart. At least the one I had documentation for was. And the programmer could override it if he thought he was smarter. But the assembler needed a newer model of computer than the one I had -- one that could actually read and write letters on its typewriter instead of just digits. (though u, v, w, x, y, z counted as hexadecimal digits)
The machine, in case anyone is interested, was a Bendix G-15d.
That was in 1962, if I remember correctly. I think the machine was about 5 years old. The next year the university got an IBM 1620, with alphanumeric I/O and 20,000 digits of actual core memory. Change was relentlessly fast in those days, too. THe big difference is that every few years we got qualitative, not just quantitative change.
Processors have come an even longer way wince the days when main memory was on a magnetic drum, and the machine had to wait for the drum to revolve before it could fetch the next instruction. That was the first machine I used.
You surveyed your customers. If they're customers of yours now, and your software doesn't run on Linux, they must be using OS's other than Linux. Small wonder that they aren't looking for a Linux version. Your sample is biased.
I believe MIT had redefinable keyboards a lot earlier than that in some research lab . And I seem to have heard of translucent keyboards with slide projectors under them long ago.
Modula 3 was not developed by Wirth, which may expalin why it escaped the "teaching-only" trap. It is not dead, even though DEC SRC is. There are links to its current support team and cross-platform implementations on its wikipedia page
I prefer it to the other languages I have available and am familiar with, though I do find it very wordy. It seems to nudge me toward clean program structure and efficiency together. And like Algol 68, it makes debugging extremely easy. Modula 3 and Algol 68 are the only languages in which I've ever written large amounts of code and had them run correctly on their first execution In Algol 68, a program of over a thousand lines ran correctly the first time the ocmpiler allowed it ti get to execution. In Modula 3, it was hundreds of lines, but that isn't a language limitation. I just write code in smaller runnable chunks these days.
Python does type checking at run-time. It prevents you from destroying the run-time infrastructure, and alerts you when you try that. That's what's missing in C ans C++, and a rather involved debugger ends up being needed to assess the damage after the fact.
Haskell originated as free and open-source, and was developed because its predecessor, Mirands, wsa proprietary.
Haskell was a success in academia because it was so difficult to implement and use, though its conceptual basis was extremely simple. Academics like conceptual simplicity, and they like writing papers about how to go about finding ways to do amazing things with absurdly simple conceptual basis, and inventing the optimizations that are necessary to be able to get anything at all done in practical time and space. There were a lot of very useful techniques developed in the Haskell community, and the world is better for them.
But as for usability of Haskell itself? I'm really not impressed.
It's wonderful not to be forced to use side-effects to express just about everything you write, as in Pascal, C, and the like. But it's crippling not to be able to use them when they're the point of your whole algorithm.
Languages like Lisp and Scheme and Caml and ML and OCAML, on the other hand. are called 'functional' even though they are quite free in allowing side effects. They even have variables whose values can change in time! But they are still considered functional because they don't force you to use side effects as frequently as breathing. YOu can code in a functional style if you wish. Most users end up doing that most of the time because it's clear and easy. But when you do, they're thre as part of the toolkit.
And as for web design? Isn't the OCAML website is programmed in OCAML?
Even if you *are* a rock-star programmer, if you happen to be able to write, working on documentation is probably going to be a more important contribution to usability that messing with the code. Bad or missing documentation is the number one reason why most free software is unusable. And it you can both program and write, your docs are going to be a lot better than if you can only write.
Cryptozoic, by Brian Aldis. Unfortunately, I can't tell you what it's about, because that would be too much of a spoiler. The only book that comes close to it in (can't tell you this word) is The City and the City, by China Miéville
In respect of the Foundation series, it's also worth reading the unauthorized sequel by Donald Kingsbury, the Psychohistorical Crisis. I think it's better than the official sequels. It carefully avoids using proper names like Hari Seldon, presumably to avoid copyright issues.
I'm not old enough to remember those.
You could still largely use the same code, right? That would make it a quantitative difference.
But there is a saying that an order of magnitude is by itself a qualitative difference.
I really like strongly typed, garbage-collected, secure languages that compile down to machine code. I've used the excellent and fast Algol 68 compiler long long ago on a CDC Cyber computers, and now I use Modula 3 on Linux, when I have a choice. They compile down to machine code for efficiency, and give access to the fine-grained control of data -- you can talk about bytes and integers and such just as in C, but they still manage to take care of safe memory allocation and freeing.
Modula 3 is a more modern language design, though I have a subjective preference for the more compact and freer-style ALgol 68 syntax. Modula 3 has a clean modular structure which is completely separate from its object-oriented features. You're not required to force everything into object types. You can if it's fits your problem, but you can still use traditional procedural style if that's what you need.
And Modula 3 functions well as a systems programming language. It has explicit mechanism to break language security in specific identified parts of a program if that's what's necessary. It almost never is.
And, by the way, to avoid potential confusion, Modula 3 was *not* designed by Niklaus Wirth. Modula and Modula 2 were, but Modula 3 is a different language from either.
-- hendrik
How I did that will have to be my little secret.
-- hendrik
No, I'm not Mel. I did try programming it in machine code, though, instead of the high-level (all numerical, though) interpreted language it provided, and got nowhere. Perhaps I needed an oscilloscope as a debugging tool, and didn't have one. What I managed to learn of the machine language I figured out by reading the circuit diagrams. But I wasn't Mel, and I really appreciate decent languages and programming tools. Pity there are so few of them, even now. The best seem never to have been popular.
-- hendrik
They were smart. At least the one I had documentation for was. And the programmer could override it if he thought he was smarter. But the assembler needed a newer model of computer than the one I had -- one that could actually read and write letters on its typewriter instead of just digits. (though u, v, w, x, y, z counted as hexadecimal digits)
The machine, in case anyone is interested, was a Bendix G-15d.
That was in 1962, if I remember correctly. I think the machine was about 5 years old. The next year the university got an IBM 1620, with alphanumeric I/O and 20,000 digits of actual core memory. Change was relentlessly fast in those days, too. THe big difference is that every few years we got qualitative, not just quantitative change.
-- hendrik
Processors have come an even longer way wince the days when main memory was on a magnetic drum, and the machine had to wait for the drum to revolve before it could fetch the next instruction. That was the first machine I used.
It seems you went to a lot of trouble to delay writing your assignments down. WHy would you have been doing that?
You surveyed your customers. If they're customers of yours now, and your software doesn't run on Linux, they must be using OS's other than Linux. Small wonder that they aren't looking for a Linux version. Your sample is biased.
I did once encounter a colour printer that also contained a web browser. You could send it a URL and it would fetch the page and print it.
Java's relation to Javascript is just the first four letters of the name.
I believe MIT had redefinable keyboards a lot earlier than that in some research lab . And I seem to have heard of translucent keyboards with slide projectors under them long ago.
Well, an Android tablet can be had for much less. And mightn't there be a similar app in progress there?
Modula 3 was not developed by Wirth, which may expalin why it escaped the "teaching-only" trap. It is not dead, even though DEC SRC is. There are links to its current support team and cross-platform implementations on its wikipedia page
I prefer it to the other languages I have available and am familiar with, though I do find it very wordy. It seems to nudge me toward clean program structure and efficiency together. And like Algol 68, it makes debugging extremely easy. Modula 3 and Algol 68 are the only languages in which I've ever written large amounts of code and had them run correctly on their first execution In Algol 68, a program of over a thousand lines ran correctly the first time the ocmpiler allowed it ti get to execution. In Modula 3, it was hundreds of lines, but that isn't a language limitation. I just write code in smaller runnable chunks these days.
I heard once that Java's first market was set-top boxes for cable-TV networks.
Python does type checking at run-time. It prevents you from destroying the run-time infrastructure, and alerts you when you try that. That's what's missing in C ans C++, and a rather involved debugger ends up being needed to assess the damage after the fact.
Haskell originated as free and open-source, and was developed because its predecessor, Mirands, wsa proprietary.
Haskell was a success in academia because it was so difficult to implement and use, though its conceptual basis was extremely simple. Academics like conceptual simplicity, and they like writing papers about how to go about finding ways to do amazing things with absurdly simple conceptual basis, and inventing the optimizations that are necessary to be able to get anything at all done in practical time and space. There were a lot of very useful techniques developed in the Haskell community, and the world is better for them.
But as for usability of Haskell itself? I'm really not impressed.
It's wonderful not to be forced to use side-effects to express just about everything you write, as in Pascal, C, and the like. But it's crippling not to be able to use them when they're the point of your whole algorithm.
Languages like Lisp and Scheme and Caml and ML and OCAML, on the other hand. are called 'functional' even though they are quite free in allowing side effects. They even have variables whose values can change in time! But they are still considered functional because they don't force you to use side effects as frequently as breathing. YOu can code in a functional style if you wish. Most users end up doing that most of the time because it's clear and easy. But when you do, they're thre as part of the toolkit.
And as for web design? Isn't the OCAML website is programmed in OCAML?
-- hendrik
Even if you *are* a rock-star programmer, if you happen to be able to write, working on documentation is probably going to be a more important contribution to usability that messing with the code. Bad or missing documentation is the number one reason why most free software is unusable. And it you can both program and write, your docs are going to be a lot better than if you can only write.
-- hendrik
Cryptozoic, by Brian Aldis. Unfortunately, I can't tell you what it's about, because that would be too much of a spoiler. The only book that comes close to it in (can't tell you this word) is The City and the City, by China Miéville
I thought the Amber series had grown to ten volumes, with a new protagonist.
In respect of the Foundation series, it's also worth reading the unauthorized sequel by Donald Kingsbury, the Psychohistorical Crisis. I think it's better than the official sequels. It carefully avoids using proper names like Hari Seldon, presumably to avoid copyright issues.
Riddley Walker is written in its own dialect of English. The way the language has changed is actually a clue to the plot!
-- hendrik
Nope. It's a Unix, but not a Linux, which the OP requested.
puppet is a Debian package.
Thanks. Good memoir. Now I wonder how the *other* commentators here found the link before you clued us in.