3 ms·
> I bring up PL/I here on HN occasionally just as an example and lesson in programming language design. PL/I influenced B, which influenced C, which influenced
by zemo 7y ago
> I bring up PL/I here on HN occasionally just as an example and lesson in programming language design.
PL/I influenced B, which influenced C, which influenced so many things that literally every person on HN has used a language influenced by C. You're out here talking down to people like "you whippersnappers don't know what you're doing" when you're literally decades behind the curve.
and besides, check out lambda-the-ultimate.org, that's a community more specifically oriented at programming language design. And no, they don't talk about PL/I either.
> A broad point about PL/I is that its structures are nearly as useful as the .Net style classes but with much faster and simpler addressing. In programming language design, that's a little point to keep in mind.
Go has this, Rust has this, lots of languages have this. Language that give the developer the ability to control how their data structures are laid out in memory are not a revelation, we know about them. That's not a new or lost feature, you just have your head buried so far in the sand that you are incapable of viewing anyone that came after you as knowing anything.
https://syslog.ravelin.com/go-and-memory-layout-6ef30c730d51 https://syslog.ravelin.com/go-and-memory-layout-6ef30c730d51
https://doc.rust-lang.org/reference/type-layout.html https://doc.rust-lang.org/reference/type-layout.html
And besides, Go was co-designed by Ken Thompson, who invented B, which was strongly influenced by, drumrollllll please, PL/I!!! Your dedication to not listening to people has robbed you of knowing about things that you would probably like.
> just copy the contents of memory in the block of addresses
I already addressed this earlier. That's what cap'n proto and flatbuffers both do:
https://capnproto.org/ https://capnproto.org/
https://google.github.io/flatbuffers/ https://google.github.io/flatbuffers/
If you listen to people, they don't have to repeat themselves so much.
> de/serialization needs implementation by the language developers
that's literally untrue. People write serialization and deserialization libraries all the time. Lots of languages give the programmer the ability to lay out how their data will look in memory, and lots of serialization libraries are mindful of creating values that have reasonable data locality characteristics. Lots of languages and deserialization libraries don't do this because it literally doesn't matter for most programs and for most programmers most of the time. You're approaching the problem as if computers are expensive, because in your PL/I days they were. But computers are cheap now, and getting cheaper every day. For example, an ec2 instance with 4gb of memory will run you all of $20 a month. Napkin math on some nice round numbers: a programmer costs you $150k a year and they work 2000 hours a year, that works out to $75 an hour, or $600 a day. If a task takes you one day, but you could avoid the task by buying another ec2 server, you just buy the space and avoid the task. A day of programmer time is worth 30 months of server time. Unless you're talking about Windows servers, which are twice as expensive because literally nobody runs Windows servers, they are garbage.
> I wrote enough C code to see how nearly all that syntax worked. So, maybe someday I'll write some C# code to be sure I know how its version of the C idiosyncratic syntax works!
That word does not mean what you think it means. Idiosyncratic is a relative term: it specifically means someone who is outside of expectations, outside of the norm. C-style syntax is used in, yes, C#, but also JavaScript, Go, Rust, and a great many other programming languages. It is PL/I that is idiosyncratic, as it is literally only you talking about it. Idiosyncratic does not mean "unfamiliar to ME", it means "differentiating the individual from the majority". If everyone is doing something one way, and an individual is doing it a different way, it's the individual that is being idiosyncratic.
I don't know why you went off on a long tangent about your backup problem. I do not care. It should be obvious to you that I would not care. And the cherry on the top was "I call it mud wrestling". Dude. We have a name for this. It's "yak shaving". Everyone uses that name. You would know that if you ever listened to anyone. https://en.wiktionary.org/wiki/yak_shaving https://en.wiktionary.org/wiki/yak_shaving
> What do others do about such mud wrestling?
You put all of your code in a hosted source control provider like Github or Bitbucket. Database backups and archival images go on Amazon's S3 or Google Cloud storage. Usually you'd automate the backups and make them full backups and retain a certain number of snapshots. I don't think most people nowadays back up their entire computer. "Everything important is in the cloud" is the most common strategy.
Talking to you is very exhausting. You consistently demonstrate a complete lack of respect for the generations of programmers that have followed you. As a result, you struggle with problems that beginner programmers solve every single day without issue.
- graycat 7y ago> You're out here talking down to people like "you whippersnappers don't know what you're doing" when you're literally decades behind the curve. I'm doing no such thing. I've done nothing wrong. I know C and PL/I well, and I see little or no influence on C from PL/I. > Go has this, Rust has this, lots of languages have this. Language that give the developer the ability to control how their data structures are laid out in memory are not a revelation, we know about them. When I was at IBM's Watson lab, we designed the language KnowledgeTool. Then I looked at some of the literature of programming language design. I didn't find anything very new or exciting. It looked like a dead field. I haven't looked again since then. Some years ago I made a decision, to do my computing on just one of Linux or Windows. What influenced me: (1) After some trying, I didn't find any documentation that explained even simple things about Linux. E.g., just what is/is not in a Linux "distro"? Do all the distros have the same operating system APIs, the same utilities, and run the same applications? What are the differences in the distros? (2) What progress has Linux made in exploiting 64 bit addressing? (3) With Linux, for operating system updates, do I have to compile the operating system? The books I found didn't say. Dirt simple questions; no answers. (1) For Windows, I was already using 3.1 or some such. (2) I was and still am impressed by the relatively high promises of backwards compatibility. (3) I looked around and saw some large Web sites using Windows. (4) Microsoft runs some astoundingly well organized, huge server farms running Windows, e.g., just for their MSDN documentation. It appears that they have operating system installation down close to just push one button and bring up 1 million square feet of racks with servers. (5) From what I've seen, I like the Microsoft file system NTFS. (6) I want a LOT of good documentation. E.g.. for .NET I found, downloaded, read, abstracted, and indexed about 5000 MSDN Web pages. I put tree names in my code and have a single keystroke in my editor that will have Firefox display the page. Maybe this is something like what Microsoft does with intelisense -- but since I don't know anything about intelisense I can't say. Microsoft's documentation is really good in some respects -- the pages are nicely formatted; they often have references to related pages; there is some organization to the pages; they spell the words correctly; etc. I get torqued at times, e.g., when they use terminology without defining it, explaining it, or linking to such content. For several of their major efforts, I still have no idea what they are driving at -- as far as I can tell, they don't explain. E.g., I went for some months getting their news letters touting Azure. Lots of talk about Azure. How good Azure can be. How to get started with Azure. And with all this, they never explained what the heck Azure actually WAS! Eventually Azure leaked out: It's a Microsoft server farm set up so that users can send their code and the farm will run it. So it' cloud computing often running some user's code. Okay. Now I understand the basics of Azure. But I'm reluctant to bet that the Linux documentation is better. (7) At the time, Microsoft had $40 billion in cash; now they are worth about $1 T. So, Microsoft DOES have the resources to keep Windows, Windows Server, SQL Server, various utility programs, malware defenses and corrections, etc. up to date. (8) Microsoft has a LOT of users, and sometimes some of those users post good answers to some questions. (9) I found that if really get stuck and really do have a serious question, then there are people at Microsoft who will give some fast one on one tutoring. E.g., early with VB.NET, I wrote a little routine to use classic heap sort to sort an array of instances of a class. I ran the thing, and it ran for 600 seconds when it should have run for about 2 seconds. So, right, I didn't understand just what I was supposed to do with polymorphism -- I was supposed to write an interface. Gee, we did much the same back in Fortran. Okay, polymorphism has a lot of hype and, really, is much like what we were doing with old Fortran; have to write an interface; I found some examples, tweaked a little, got an interface, and running time about 3 seconds. An amazing part is that somehow VB.NET essentially dynamically discovered the data type of the class I was passing to the sort routine. So, maybe all that is available via reflection. I was impressed. For GO, Rust, Haskell, as for Ada, Prolog, APL, etc., for me for my work now mostly no thanks. I need to eat; for that, need to make money; for that, starting a business. The business makes use of computing, and I have to write some software. For that software, on Windows, I picked VB.NET. It's fine with me. I suspect that I could convert over to C# without much trouble. One way to convert would be just to run my VB.NET code through a translator that writes out equivalent C# code -- my understanding is that Microsoft has such a translator. As far as I can tell, VB.NET is a plenty good way to get to the Windows services and APIs, the .NET Framework, and the common language runtime (CLR). Maybe some programmers take pride in learning lots of languages. Okay. But that's not what I am: Instead, I'm trying to start a business. Besides, I don't see much attention to GO, Rust, Haskell, etc. on Windows. On being "behind", I don't think so: The amazing thing about computing is the low cost and high performance of processors, storage, and communications. Other than that, the significant things in computer science and practical computing have changed only very slowly. To me programming is essentially defining storage, writing expressions to manipulate storage, the control structures if-then-else, do-while, and call-return, handling various data types, e.g., strings, dates, and handling exceptional conditions. To me the key to my startup is not the computing at all -- it is just routine. The key is some applied math I derived. So, I'm an applied mathematician in business who uses computers. The computer tools I use are the ones I want for my business. Since I won't be using Go, Rust, Haskell, Java, Ada, Prolog, etc., I don't pay attention to them. Someday I may use some Python or JavaScript -- if to, then so be it. Microsoft has Iron Python that is compiled and maybe has good or full access to the .NET Framework. Okay. To me, the future of computing will be in mathematics, complete with theorems and proofs.