I've tried reading the originals in French. It's full of difficult words, too. One word I couldn't find in the dictionary, even the online dictionary, When I googled it, there was only *one* hit --where it occurred in the book itself.
I'd say if the translation only has SAT words, it's simplifying things!
The books also have detailed explanations of technical matters. This tends to bog down the storyline.
Wow. This gets obscure. It all depends on just what circumvent is taken to mean. The DRM on DVDs was designed to prevent one from using a DVD from one region in another. Copying the entire DVD does not circumvent that. The copy still cannot be used in another region. To use the DVD in another region you actually have to break the encryption.
It's not clear how a court would interpret the word.
Copying it may, of course, still be a copyright violation whether a lock has been circumvented or not.
Well, there's the Gambit REPL app, which is an implementation of the programming language Scheme, which is actually easy to teach, but keeps appearing and disappearing from iOS at Apple's whim.
That's the problem with doing anything to teach programming on an iPad -- Apple's whims.
I followed the link to the petition, and it told me I had already signed it.
I most certainly have not, though I might have if I weren't a Canadian and possibly ineligible to do so. But telling me I have already signed it is just plain wrong.
Any monopolistic corporation has strong motivation to become like Stalinist Russia. Stalinist Russia was just one corporation, and used its monopoly ruthlessly. What keeps most large corporations from achieving that kind of power is government regulation.
Yes, there were allegations of billions. But when the matter ws actually subjected to a forensic audit, it turned out that one ad company had billed the government for about a million dollars without performing the contracted advertising. But the Liberal government fell on the allegations, not the reality.
Then there's Bahá’u’lláh, founder of the Bahai faith, who declared that "True science is never in conflict with true religion." That kept a lot of nonsense out of the Bahai faith.
As an individual, you can subscribe to the ACM digital library. It's under $200 a year (anyone know the exact price?) and you get access to just about everything ACM has ever published. And you can download the articles and keep them forever without DRM.
then it's possible to recover previously written data even after it's been overwritten, because erasure isn't complete, the heads weren't perfectly aligned so only most of the signal for each bit was overwritten, There's still a trace of the original magnetism slightly biasing the new, etc.m all of which will not be present in the copy. Serious forensics can tease out this stiff. There's a reason why security erasure is a bigger deal than just reusing space.
Thanks for the correction. I've in the past been unable to post in a thread where I had moderated -- no "reply" link, but maybe something else was going on.
Well, of course. Copyright violation isn't theft, no matter what the RIAA's commercials tell us. It's copyright violation. It may be breach of trust, and it may involve lots of stuff that can land the perpetrator in serious trouble, but it's not theft, and it's not piracy.
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.
As a system programming language I chose C as my favorite tool for the job. What would you say are the main advantages of choosing Modula 3 versus C as a system programming language?
The main advantages of Modula-3? It is a secure language. The places in the code where you use insecure features (like type-punning) have to be explicitly and obviously marked -- usually in the first line of the module you're writing. Instead of MODULE FOO; you write UNSAFE MODULE FOO;
By contrast, in C you can do type-punning almost by accident by various forms of union and pointer misuse.
I agree with your comments about strong typing catching more problems earlier, and thus if Modula 3 is able to express stronger typing than C, that seems to have its advantages (with some loss of versatility/flexibility perhaps?) Does this have for example drawbacks when trying to add generic programming elements? I find void * useful in that regard.
In Modula 3 there's an explicitly available UNSAFE operation that enables you to look at values of one type as if they are of another. It's almost never needed.
If you're using its object-oriented features, there's a type ANY that allows you to point to any kind of OBJECT. You need explicit type-tests to convert it to something more specific so you can do stuff with it beyond just pass it around.
Further, it's possible to parameterize entire modules with a type. This is another form of generic programming.
I have been always skeptical about garbage collection, after having first hand experience with Java.
You compare to Java? Java is an implementation mess in this respect, primarily because it wants you to use classes for everything, and class overhead is significant. For example, every object contains a semaphore in case you want to use it in two differente threads. It won't even allow the slight amount of type abstraction you can get in C by writing typedef foo bar; And once you end up using heap-allocated classes for everything you'd normally use structures for, you've accumulated a lot of overhead. I don't know how Google's new Java code generation fares -- you know, the one they use in Android. It might be different. Anybody know?
Modula 3 also has STRUCTures much like C's. They don't need to be on the garbage-collected heap, though they can be. They don't take part in object inheritance. They are safe features.
Does Modula 3 give control / options about garbage collection and its memory management strategies?
There are garbage-collected types and nongarbage-collected types. REFERENCE TO Foo is collected, whereas UNTRACED REFERENCE TO Foo is not. You are advised to use UNTRACED storage for data structures you wish to pass to C so the garbage collector won't get in C's way.
By the way, I'm talking about features I rarely need to use here, so my syntax may be rusty.
C memory management may be a pain, but at the same time it gives me more or less what I want, when the need for dynamic allocation cannot be simply avoided, but still a somewhat predictable run-time behavior is desirable.
I studied the glibc implementation of malloc and friends, which I tend to prefer compared to different implementations of mallocs available by default on SunOS 5.8 and Solaris 10 and other Unices. Could you give me/all some pointers to memory management under Modula 3?
The point of strong typing is not to tell the compiler how to make your program efficient. That's a pleasant side effect, but it's not the point at all. The point is to tell the compiler, possibly redundantly, what kind of values you intend to have in variables, so it can tell you when you get it wrong. Proper strong typing can catch almost all coding errors before your program is ever executed. It takes longer to code it and get it through the compiler, sure, but the time you lose this way is far outweighed by the reduced time you spend debugging.
In addition, the explicit type information on all function definitions makes it vastly easier to understand a program you've never seen before when it's handed to you.
Yes, there are a few situations where you can't specify types statically. They are pretty rare in a properly designed type system. A good language has mechanisms to handle the few cases that still remain.
I've tried reading the originals in French. It's full of difficult words, too. One word I couldn't find in the dictionary, even the online dictionary, When I googled it, there was only *one* hit --where it occurred in the book itself.
I'd say if the translation only has SAT words, it's simplifying things!
The books also have detailed explanations of technical matters. This tends to bog down the storyline.
-- hendrik
When LOTR starts to drag during book the fifth, skip to near the end of book the fifth, and resume there.
Wow. This gets obscure. It all depends on just what circumvent is taken to mean. The DRM on DVDs was designed to prevent one from using a DVD from one region in another. Copying the entire DVD does not circumvent that. The copy still cannot be used in another region. To use the DVD in another region you actually have to break the encryption.
It's not clear how a court would interpret the word.
Copying it may, of course, still be a copyright violation whether a lock has been circumvented or not.
You don't need to break the digital lock to copy DVDs. After copying, you will have a DRM'd copy.
-- hendrik
Well, there's the Gambit REPL app, which is an implementation of the programming language Scheme, which is actually easy to teach, but keeps appearing and disappearing from iOS at Apple's whim.
That's the problem with doing anything to teach programming on an iPad -- Apple's whims.
Android may be a little more stable.
What's OGA? I googled, but there were too many of them.
I think it was Peter Ingerman who said, "In English, any noun can be verbed".
I didn't click it at all.
I followed the link to the petition, and it told me I had already signed it.
I most certainly have not, though I might have if I weren't a Canadian and possibly ineligible to do so. But telling me I have already signed it is just plain wrong.
-- hendrik
Any monopolistic corporation has strong motivation to become like Stalinist Russia. Stalinist Russia was just one corporation, and used its monopoly ruthlessly. What keeps most large corporations from achieving that kind of power is government regulation.
-- hendrtik
Yes, there were allegations of billions. But when the matter ws actually subjected to a forensic audit, it turned out that one ad company had billed the government for about a million dollars without performing the contracted advertising. But the Liberal government fell on the allegations, not the reality.
-- hendrik
Then there's Bahá’u’lláh, founder of the Bahai faith, who declared that "True science is never in conflict with true religion." That kept a lot of nonsense out of the Bahai faith.
Now there's a second publisher I can get current scifi ebooks from that I can keep longterm.
-- hendrik
As an individual, you can subscribe to the ACM digital library. It's under $200 a year (anyone know the exact price?) and you get access to just about everything ACM has ever published. And you can download the articles and keep them forever without DRM.
And what is the "extent permitted by applicable law"? I can see this could still be a liability concern.
Sorry. Other posts make it clear that that's no longer practical on modern, state-of-the-art drives. I stand corrected.
then it's possible to recover previously written data even after it's been overwritten, because erasure isn't complete, the heads weren't perfectly aligned so only most of the signal for each bit was overwritten, There's still a trace of the original magnetism slightly biasing the new, etc.m all of which will not be present in the copy. Serious forensics can tease out this stiff. There's a reason why security erasure is a bigger deal than just reusing space.
Thanks for the correction. I've in the past been unable to post in a thread where I had moderated -- no "reply" link, but maybe something else was going on.
-- hendrik
No, that person can't point anything out. Once you've used a mod point, you cannot post in the discussion.
Well, of course. Copyright violation isn't theft, no matter what the RIAA's commercials tell us. It's copyright violation. It may be breach of trust, and it may involve lots of stuff that can land the perpetrator in serious trouble, but it's not theft, and it's not piracy.
For income tax in Canada, have a look at http://www.studiotax.com/en/main.htm. It's free as in beer, but I don't know about libre. WIndows only.
-- hendrik
Not yet. But I have briefly looked at Opa, which seems to me another clever language design.
-- hendrik
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.
As a system programming language I chose C as my favorite tool for the job.
What would you say are the main advantages of choosing Modula 3 versus C as a system programming language?
The main advantages of Modula-3? It is a secure language. The places in the code where you use insecure features (like type-punning) have to be explicitly and obviously marked -- usually in the first line of the module you're writing. Instead of MODULE FOO; you write UNSAFE MODULE FOO;
By contrast, in C you can do type-punning almost by accident by various forms of union and pointer misuse.
I agree with your comments about strong typing catching more problems earlier, and thus if Modula 3 is able to express stronger typing than C, that seems to have its advantages (with some loss of versatility/flexibility perhaps?) Does this have for example drawbacks when trying to add generic programming elements? I find void * useful in that regard.
In Modula 3 there's an explicitly available UNSAFE operation that enables you to look at values of one type as if they are of another. It's almost never needed.
If you're using its object-oriented features, there's a type ANY that allows you to point to any kind of OBJECT. You need explicit type-tests to convert it to something more specific so you can do stuff with it beyond just pass it around.
Further, it's possible to parameterize entire modules with a type. This is another form of generic programming.
I have been always skeptical about garbage collection, after having first hand experience with Java.
You compare to Java? Java is an implementation mess in this respect, primarily because it wants you to use classes for everything, and class overhead is significant. For example, every object contains a semaphore in case you want to use it in two differente threads. It won't even allow the slight amount of type abstraction you can get in C by writing typedef foo bar; And once you end up using heap-allocated classes for everything you'd normally use structures for, you've accumulated a lot of overhead. I don't know how Google's new Java code generation fares -- you know, the one they use in Android. It might be different. Anybody know?
Modula 3 also has STRUCTures much like C's. They don't need to be on the garbage-collected heap, though they can be. They don't take part in object inheritance. They are safe features.
Does Modula 3 give control / options about garbage collection and its memory management strategies?
There are garbage-collected types and nongarbage-collected types. REFERENCE TO Foo is collected, whereas UNTRACED REFERENCE TO Foo is not. You are advised to use UNTRACED storage for data structures you wish to pass to C so the garbage collector won't get in C's way.
By the way, I'm talking about features I rarely need to use here, so my syntax may be rusty.
C memory management may be a pain, but at the same time it gives me more or less what I want, when the need for dynamic allocation cannot be simply avoided, but still a somewhat predictable run-time behavior is desirable.
I studied the glibc implementation of malloc and friends, which I tend to prefer compared to different implementations of mallocs available by default on SunOS 5.8 and Solaris 10 and other Unices.
Could you give me/all some pointers to memory management under Modula 3?
That was the ghostscript model. Each version was opensourced two years after being sold. Sales were to printer manufacturers.
-- hendrik
The point of strong typing is not to tell the compiler how to make your program efficient. That's a pleasant side effect, but it's not the point at all. The point is to tell the compiler, possibly redundantly, what kind of values you intend to have in variables, so it can tell you when you get it wrong. Proper strong typing can catch almost all coding errors before your program is ever executed. It takes longer to code it and get it through the compiler, sure, but the time you lose this way is far outweighed by the reduced time you spend debugging.
In addition, the explicit type information on all function definitions makes it vastly easier to understand a program you've never seen before when it's handed to you.
Yes, there are a few situations where you can't specify types statically. They are pretty rare in a properly designed type system. A good language has mechanisms to handle the few cases that still remain.
-- hendrik