You never said how to make things better. Just that research says it's bad; handwaving. I love new programming languages and I love new ideas. What gets annoying is trite "we need to stop following 20 year old conventions". We don't follow 20 year old conventions; we take what we like and change what we like. I never talked about my shortcomings and no shortcomings of my own change the fact that you still never even gave a valid example of how to make things better. I've got no problem with talking about how to make things better. What I hate is what people here call "karma-whoring" or grandstanding. The original post was basically taking a popularist opinion with incorrect reasoning to back it up. Don't go on about how the whole world is wrong when you don't have an understanding of why things are done the way they are.
Of course it is private to func, all variables declared inside of a function in C are "private" within it. That's how scoping works. It is not private because of the static keyword. The static there is describing its storage duration/memory allocation. Now I am not entirely sure why the C devs chose static for internal linkage but I'm guessing (hoping) they had a reason that had to do with the compiler. It seems that these reasons are just glossed over anymore. Probably because modern compilers don't do it like they used to. I would love to find somebody that knows the answer to this.
Now with that said your problem with the static keyword has still been resolved. C was designed nearly half a century ago. Modern languages do not use the static keyword to define "file" level scope. They use it to define storage duration like a static variable in a C function in which it is an excellent identifier.
Global static variables do behave differently in C. I am now guessing this is where the confusion is. I was never talking about global variables; only the local definition ones because that is where the static is drawn from for OO.
Okay, if you're going to get insulting I'm going to stop being nice. You are wrong, you are dumb. You do not understand what static means. Perhaps it's a language barrier but you are wrong. Static does not mean constant-valued and I never said that. The memory is in one place and not deallocated.
Here is what Wikipedia has to say on it: Static Memory Allocation. That is what the static means in C and that is why it is static in OO. Because it behaves the same as it does in their example. Static has shit all to do with scope.
Here's some more Wikipedia: Static Variable. It shows that you have no idea what you are talking about. Notice how their C example doesn't even mention scope? But it does talk about how it is initialized into memory.
The fact that you claim with such authority what static means and with the most cursory of Google searches shows you are wrong is hilarious. What has your 30 years of experience been in? I hope it wasn't C because I only consider myself low-intermediate in C and I apparently understand the concepts better than your worldly experience.
(And I did not say "memebers"[sic] I said variables and functions)
Oh really?
The limiting of scope on C static variables is not why it was named static! It was named static because of the way it was stored in memory. It is "static" for the length of the program.
A static variable is a class variable.
I know what a static variable is and I know why it is called static. The fact that some modern compilers / interpreters use lazy loading on them does not change the fact that they are meant to be "static" in memory and access to the program. Static has a meaning in this realm now. It has a contextual definition. "Class scope" is an awkward keyword (it's actually two words by the way) and does not make it any easier to explain.
What happens if no instance is existing is the "shared variable" then gone
No, it's not. And you know why? *drumrole*... Because it's statically allocated and statically accessed. That's what static means.
Google for the studies that show languages like scheme being easier for people who have never programmed before
I don't care what language makes it easier to explain to someone how to write "Hello World" as their first program. What a useless metric. What matters to me is professional use. Building large, extendible and maintainable products for common use (and maintaining other people's code). Scheme and Erlang are not inherently easier than C++ or C# because you still need to understand the underlying concepts. There is no "indoctrination"; the fact that imperative "won" is pretty good evidence that the common programmer "gets" it more easily.
So your claim to fix deficiencies in modern languages is just Erlang? Yeah it really seems like you've thought this out well. Erlang is a great language for some things; terrible for others. More "intuitive" to humans is fairly easily debatable.
Again with this inexperienced crap (I think? You appear to have screwed up your post. Perhaps you could have some use of more experience using computers). As if you think some loose claim of inexperience somehow discredits what I have said and makes you right. My point still stands: most people who point out modern languages are bad haven't thought out their claim. They haven't considered what they lack or what they should have. Your handwave to convert this into a functional vs. imperative debate shows that.
Modern languages like Dart and C# allow you do do some pretty functional style programming. Maybe you should check them out. You might like them.
I'm only trying to figure out what you want. Programming languages are too hard and your example of something that can be done differently is Lisp? Lisp, which is even harder for a human and easier for a lexer than C, is your shining example?
The problem I have with your argument is that you don't have one. "Programming languages are too hard. They should be made easier for the human at the cost of harder for the computer". That's a fine statement but it offers no insight into what you actually think you want. I know full well that programming can be hard for people to understand and see its deficiencies. I also think things like Dart are addressing those problems.
No one proposes to replace commas because we can "probably" figure it out
There is no need for commas between arguments - it's obvious from the brackets where the second invocation starts and ends and thus obvious where all the arguments go and in what order
I can't say I like your suggestion of random brackets when needed (as explained by somebody below) in place of a simple, straight-forward, natural language inspired comma delimited list. Honestly that sounds pretty terrible to work with as a human.
What makes you think arguments/parameters are a list?
Because that's exactly what they are. I don't care if you can claim they are something else. It is a list.
I suppose you might think differently after you get some experience under your belt. I thought pretty much the same way when I was a newbie at programming too.
Trite, passive-aggressive insult aside, what do you think now? Make a fully formed thought about how to make programming "better". Your examples have been shown as nonsense (or already implemented). You want things "easier" but you have no idea how to do that; you just want someone else to do it. Now when someone tells you why things are the way they are you stamp your feet and make insults. You claim to have implemented some languages in your time but you haven't shown much understanding of the theory behind it.
C does not have static members, static members are an OO thing. In C the "static" bit had nothing to do with where they were visible but to do with how they were placed into memory.
Also in Java or C# static does not mean shared, so why do you suggest this word?
Yes it does. That one reference is shared amongst all instances of that class. Do you see now why natural language isn't a good match for programming? I don't suggest that word; I'm happy with static because it has a clear and defined meaning in the context of OO programming (I'm pretty sure at least VB uses shared for this meaning already though). You wanted a new word but no words seem to be good enough for you.
New languages should not reuse "static" again, but rather use a new keyword that makes clear for the layman what we are talking about.
You cannot make programming clear to the layman. The layman does not understand programming nor its concepts. Changing the keywords does not affect that. One way or another they need to learn it. If you call static members shared what happens when something else is "shared" but in a different way? What happens now when they work in an established language (which most of the world will still be using) and now they need to understand what "static" means anyway. Why change how we've been using it for years?
We need smarter compilers that can understand smarter languages, not more complex languages to feed to still-quite-dumb parsers.
No, we don't. People make these claims every once in a while but they are never well thought out. A compiler will never understand natural language for the simple fact that not even humans can understand natural language anywhere close to 100% of the time. Natural is not designed for that . Programming languages are and that is why they are different.
There is no need for the semi-colon - we know exactly where the expression ends.
Do you? always? In a powerful language it will never leave ambiguities? Many languages do get rid of semi-colons for probably the reason you state. JavaScript will "inject" them if it find a place you probably wanted one. Some people like that and some don't but almost all the big players use them. Perhaps get rid of periods in English because you should be able to figure out where the clause ends.
There is no need for commas between arguments
Even English uses commas to separate a list. The commas are there to be more like natural language and be easier to read for both computer and human. Or should we ditch the comma in English too because we can probably figure it out from context?
The two examples of what we should get rid of in programming languages to make it more natural for a human are examples of things from human language. Most of the top 10 list of spoken languages use periods to signify end of sentence. C derivatives use a semi-colon but it's the same concept: separate things to avoid ambiguity.
(oh, but we can't do that because then the compiler becomes difficult to write!!!).
So "static" in C means "pertaining to or characterized by a fixed or stationary condition"? No it does not.
That is actually the definition that they were probably going for. It is fixed and stationary at compile time. It does not move in and out of memory.
Because this I can explain my 6 year old child.
I don't think you should plan a programming language on what would be easy to explain to a 6 year old. Few 6 year old children would even have the conceptual understanding to get the return vs. doesn't return concept.
Your cake example doesn't make a lot of sense. Is it a program to instruct a robot to make a cake? If that is the case then it would make sense for it to not return a value. Is it supposed to return a cake and just doesn't because it was written sloppily? I don't know but I can't think that there are too many occasions that a make a cake method is written.
Erm... for what exactly was the "String[]" part for?
You know what it's for: the arguments. The devs decided it was better to always require it than to have a bunch of special cases. You think it is harder to explain to a novice "it needs to be done this way" than it is to say "it can take this set of arguments, or this set, or none... figure it out"?
They all use main for exactly the reason you state. Why change it when it makes sense and works? The main method is the main method.
So calling me an "intermediate" is a bit... hm, insulting?
I actually meant in relation to teaching new people. As in you have to teach them the basics before moving on to the intermediate. Sorry if I came across as insulting.
please google what "functional paradigm" is.
You seem to dislike keywords; functional languages tend to use less.
What dod you want to say with tis statement?
You seemed to be saying the compiler should figure things out from context (you don't like definition keywords). I would rather specifically tell it what I want instead of guess at what it thinks I mean. Either way I have to learn the idiosyncrasies of how it interprets the language into machine code and I'd rather do that with an explicit language.
Exactly, they're words. They needed to name it something and they chose static. Definitions always come down to circular logic. Why is the thing attached to my arm a hand and not a foot? Because it's a hand and a foot is something different.
Could have just as easily called them shared
Yes they could have called them anything but they chose static members because it fit and because the compiler was deciding what to allocate at compile-time and not at run time.
So void is nothing, and its not to be confused with a void* which is a pointer to absolutely anything, right?
Precisely. They needed a way to tell the lexer nothing gets returned from this and they wanted it to be concise. Asterisk represents a pointer so yes it is different
Like why are they in dart? Nothing is statically allocated in a language that compiles to javascript to run in a browser. And there are any number of ways of writing function/method declarations to communicate return values or lack thereof without invoking the 'ghost of C' void keyword.
Static members are an OO concept and Dart is an OO language. Makes sense to me it would support static members. Dart does not require the void keyword. If you omit a return type it assumes a return type of dynamic (you can return anything or nothing just like in JS). So you can write it how ever your preferred style would dictate. They used a similar syntax because why mess with something that clearly works quite well?
It is called static because it is statically allocated. It is a compiler concept which became an OO concept due to being somewhat similar. It is static; it is the same when I access it here as it is when I access it there. It is not arbitrary any more than any word is arbitrary. Why make up new words now when we have an established lexicon? Nothing maps semantically well into English because it is a natural language with all kinds of context involved. Programming languages have to be context free which is why we class them as context free languages.
Few OO languages call it a function. It is called void because it returns nothing. It is so the compiler knows where the return type ends and where the method/function name begins. It keeps things consistent and consistency is good. A few languages do leave it out now because some people think that removing redundancy is more important than consistency. These quirks are present in older languages because lexical analysis is a complicated task and it was simpler and more effective to leave the heavy lifting up to the human that found it easy.
If you think all those words are superfluous you probably don't have much knowledge of compilers or IDEs. The static keyword has very well defined meaning in every language it is used in. As do all those other keywords you seem to hate. Should we kill modern programming languages and go back to what, a stripped down functional paradigm because you deem all this stuff superfluous and hard to teach to beginners?
Programming is about precision. I should never have to guess at what the compiler is going to do with my code; programming is not a natural language. You are damn right I want a void return type. I want OO static members. I want all the information that can be put into method/function/variable definitions so I can take a quick glance and see what it does, takes and returns. So that my IDE, if I'm using one, can auto-complete most of the code for me. So that the (JIT-)?compiler or interpreter can understand all kinds of fancy syntax that lets me do more and write less.
Those five things you mention have nothing to do with C or C++. They are programming concepts and pretty basic ones at that. Obviously you have to understand the basics before you can move on to intermediate.
I know I'm tempting the flame gods here but you never explained what was a lie. Per capita are the suicide rates not very similar? Are you claiming that suicide attempts are similar and with easier access to guns they are more often successful? Because the GP seemed to be claiming that suicides (I would interpret that as successful (bad wording?) ) occur at similar rates regardless of easy access to guns. Which is in direct opposition to your claim and your statistics don't actually have anything to do with that.
Going off like a lose cannon does not help your argument.
In the animal kingdom I don't think we have seen evidence that any predator hunted its prey to extinction
That's a pretty grandiose claim and certainly false. There was still an ecosystem on this planet before we came around with thousands of species that went extinct.
3D printing is new and edgy and therefore much more effective for political grandstanding. There's probably also some special interests that want to block 3D printing based on fear for their bottom line.
Gay is not a generic pejorative. It is a slur used to disenfranchise a minority group that is commonly vilified, discriminated and targeted against. It was used as a generic pejorative when you were in grade school because discriminating against the "gays" was actively encouraged. But now we've decided that discriminating against minority groups based on hate is in pretty bad taste.
I can understand a 12 year old not fully understanding the words that they are using and needing to be brought aside and possibly punished to teach them the consequences of their words. I'm assuming (possibly incorrectly) that you are older than 12 and probably quite a bit older. Most people would expect you to know better.
Society. It's like tech skills. Keep up or go extinct.
Not exactly the same thing and I doubt a judge would think so either. I guess we won't know unless it goes to court. Copyright laws are "good" that way.
You never said how to make things better. Just that research says it's bad; handwaving. I love new programming languages and I love new ideas. What gets annoying is trite "we need to stop following 20 year old conventions". We don't follow 20 year old conventions; we take what we like and change what we like. I never talked about my shortcomings and no shortcomings of my own change the fact that you still never even gave a valid example of how to make things better. I've got no problem with talking about how to make things better. What I hate is what people here call "karma-whoring" or grandstanding. The original post was basically taking a popularist opinion with incorrect reasoning to back it up. Don't go on about how the whole world is wrong when you don't have an understanding of why things are done the way they are.
Antitrust isn't just majority market share either.
Of course it is private to func, all variables declared inside of a function in C are "private" within it. That's how scoping works. It is not private because of the static keyword. The static there is describing its storage duration/memory allocation. Now I am not entirely sure why the C devs chose static for internal linkage but I'm guessing (hoping) they had a reason that had to do with the compiler. It seems that these reasons are just glossed over anymore. Probably because modern compilers don't do it like they used to. I would love to find somebody that knows the answer to this.
Now with that said your problem with the static keyword has still been resolved. C was designed nearly half a century ago. Modern languages do not use the static keyword to define "file" level scope. They use it to define storage duration like a static variable in a C function in which it is an excellent identifier.
Global static variables do behave differently in C. I am now guessing this is where the confusion is. I was never talking about global variables; only the local definition ones because that is where the static is drawn from for OO.
Okay, if you're going to get insulting I'm going to stop being nice. You are wrong, you are dumb. You do not understand what static means. Perhaps it's a language barrier but you are wrong. Static does not mean constant-valued and I never said that. The memory is in one place and not deallocated.
Here is what Wikipedia has to say on it: Static Memory Allocation. That is what the static means in C and that is why it is static in OO. Because it behaves the same as it does in their example. Static has shit all to do with scope.
Here's some more Wikipedia: Static Variable. It shows that you have no idea what you are talking about. Notice how their C example doesn't even mention scope? But it does talk about how it is initialized into memory.
The fact that you claim with such authority what static means and with the most cursory of Google searches shows you are wrong is hilarious. What has your 30 years of experience been in? I hope it wasn't C because I only consider myself low-intermediate in C and I apparently understand the concepts better than your worldly experience.
Originally in C static "members"
(And I did not say "memebers"[sic] I said variables and functions)
Oh really?
The limiting of scope on C static variables is not why it was named static! It was named static because of the way it was stored in memory. It is "static" for the length of the program.
A static variable is a class variable.
I know what a static variable is and I know why it is called static. The fact that some modern compilers / interpreters use lazy loading on them does not change the fact that they are meant to be "static" in memory and access to the program. Static has a meaning in this realm now. It has a contextual definition. "Class scope" is an awkward keyword (it's actually two words by the way) and does not make it any easier to explain.
What happens if no instance is existing is the "shared variable" then gone
No, it's not. And you know why? *drumrole*... Because it's statically allocated and statically accessed. That's what static means.
Google for the studies that show languages like scheme being easier for people who have never programmed before
I don't care what language makes it easier to explain to someone how to write "Hello World" as their first program. What a useless metric. What matters to me is professional use. Building large, extendible and maintainable products for common use (and maintaining other people's code). Scheme and Erlang are not inherently easier than C++ or C# because you still need to understand the underlying concepts. There is no "indoctrination"; the fact that imperative "won" is pretty good evidence that the common programmer "gets" it more easily.
So your claim to fix deficiencies in modern languages is just Erlang? Yeah it really seems like you've thought this out well. Erlang is a great language for some things; terrible for others. More "intuitive" to humans is fairly easily debatable.
Again with this inexperienced crap (I think? You appear to have screwed up your post. Perhaps you could have some use of more experience using computers). As if you think some loose claim of inexperience somehow discredits what I have said and makes you right. My point still stands: most people who point out modern languages are bad haven't thought out their claim. They haven't considered what they lack or what they should have. Your handwave to convert this into a functional vs. imperative debate shows that.
Modern languages like Dart and C# allow you do do some pretty functional style programming. Maybe you should check them out. You might like them.
I'm only trying to figure out what you want. Programming languages are too hard and your example of something that can be done differently is Lisp? Lisp, which is even harder for a human and easier for a lexer than C, is your shining example?
The problem I have with your argument is that you don't have one. "Programming languages are too hard. They should be made easier for the human at the cost of harder for the computer". That's a fine statement but it offers no insight into what you actually think you want. I know full well that programming can be hard for people to understand and see its deficiencies. I also think things like Dart are addressing those problems.
No one proposes to replace commas because we can "probably" figure it out
There is no need for commas between arguments - it's obvious from the brackets where the second invocation starts and ends and thus obvious where all the arguments go and in what order
I can't say I like your suggestion of random brackets when needed (as explained by somebody below) in place of a simple, straight-forward, natural language inspired comma delimited list. Honestly that sounds pretty terrible to work with as a human.
What makes you think arguments/parameters are a list?
Because that's exactly what they are. I don't care if you can claim they are something else. It is a list.
I suppose you might think differently after you get some experience under your belt. I thought pretty much the same way when I was a newbie at programming too.
Trite, passive-aggressive insult aside, what do you think now? Make a fully formed thought about how to make programming "better". Your examples have been shown as nonsense (or already implemented). You want things "easier" but you have no idea how to do that; you just want someone else to do it. Now when someone tells you why things are the way they are you stamp your feet and make insults. You claim to have implemented some languages in your time but you haven't shown much understanding of the theory behind it.
C does not have static members, static members are an OO thing. In C the "static" bit had nothing to do with where they were visible but to do with how they were placed into memory.
Also in Java or C# static does not mean shared, so why do you suggest this word?
Yes it does. That one reference is shared amongst all instances of that class. Do you see now why natural language isn't a good match for programming? I don't suggest that word; I'm happy with static because it has a clear and defined meaning in the context of OO programming (I'm pretty sure at least VB uses shared for this meaning already though). You wanted a new word but no words seem to be good enough for you.
I'm so glad I get to use this legacy software!
Said nobody ever.
New languages should not reuse "static" again, but rather use a new keyword that makes clear for the layman what we are talking about.
You cannot make programming clear to the layman. The layman does not understand programming nor its concepts. Changing the keywords does not affect that. One way or another they need to learn it. If you call static members shared what happens when something else is "shared" but in a different way? What happens now when they work in an established language (which most of the world will still be using) and now they need to understand what "static" means anyway. Why change how we've been using it for years?
We need smarter compilers that can understand smarter languages, not more complex languages to feed to still-quite-dumb parsers.
No, we don't. People make these claims every once in a while but they are never well thought out. A compiler will never understand natural language for the simple fact that not even humans can understand natural language anywhere close to 100% of the time. Natural is not designed for that . Programming languages are and that is why they are different.
There is no need for the semi-colon - we know exactly where the expression ends.
Do you? always? In a powerful language it will never leave ambiguities? Many languages do get rid of semi-colons for probably the reason you state. JavaScript will "inject" them if it find a place you probably wanted one. Some people like that and some don't but almost all the big players use them. Perhaps get rid of periods in English because you should be able to figure out where the clause ends.
There is no need for commas between arguments
Even English uses commas to separate a list. The commas are there to be more like natural language and be easier to read for both computer and human. Or should we ditch the comma in English too because we can probably figure it out from context?
The two examples of what we should get rid of in programming languages to make it more natural for a human are examples of things from human language. Most of the top 10 list of spoken languages use periods to signify end of sentence. C derivatives use a semi-colon but it's the same concept: separate things to avoid ambiguity.
(oh, but we can't do that because then the compiler becomes difficult to write!!!).
Several languages do that very thing.
Here is the article on it: js dart interop
So "static" in C means "pertaining to or characterized by a fixed or stationary condition"? No it does not.
That is actually the definition that they were probably going for. It is fixed and stationary at compile time. It does not move in and out of memory.
Because this I can explain my 6 year old child.
I don't think you should plan a programming language on what would be easy to explain to a 6 year old. Few 6 year old children would even have the conceptual understanding to get the return vs. doesn't return concept.
Your cake example doesn't make a lot of sense. Is it a program to instruct a robot to make a cake? If that is the case then it would make sense for it to not return a value. Is it supposed to return a cake and just doesn't because it was written sloppily? I don't know but I can't think that there are too many occasions that a make a cake method is written.
Erm ... for what exactly was the "String[]" part for?
You know what it's for: the arguments. The devs decided it was better to always require it than to have a bunch of special cases. You think it is harder to explain to a novice "it needs to be done this way" than it is to say "it can take this set of arguments, or this set, or none... figure it out"?
They all use main for exactly the reason you state. Why change it when it makes sense and works? The main method is the main method.
So calling me an "intermediate" is a bit ... hm, insulting?
I actually meant in relation to teaching new people. As in you have to teach them the basics before moving on to the intermediate. Sorry if I came across as insulting.
please google what "functional paradigm" is.
You seem to dislike keywords; functional languages tend to use less.
What dod you want to say with tis statement?
You seemed to be saying the compiler should figure things out from context (you don't like definition keywords). I would rather specifically tell it what I want instead of guess at what it thinks I mean. Either way I have to learn the idiosyncrasies of how it interprets the language into machine code and I'd rather do that with an explicit language.
That's a circular argument.
Exactly, they're words. They needed to name it something and they chose static. Definitions always come down to circular logic. Why is the thing attached to my arm a hand and not a foot? Because it's a hand and a foot is something different.
Could have just as easily called them shared
Yes they could have called them anything but they chose static members because it fit and because the compiler was deciding what to allocate at compile-time and not at run time.
So void is nothing, and its not to be confused with a void* which is a pointer to absolutely anything, right?
Precisely. They needed a way to tell the lexer nothing gets returned from this and they wanted it to be concise. Asterisk represents a pointer so yes it is different
Like why are they in dart? Nothing is statically allocated in a language that compiles to javascript to run in a browser. And there are any number of ways of writing function/method declarations to communicate return values or lack thereof without invoking the 'ghost of C' void keyword.
Static members are an OO concept and Dart is an OO language. Makes sense to me it would support static members. Dart does not require the void keyword. If you omit a return type it assumes a return type of dynamic (you can return anything or nothing just like in JS). So you can write it how ever your preferred style would dictate. They used a similar syntax because why mess with something that clearly works quite well?
It is called static because it is statically allocated. It is a compiler concept which became an OO concept due to being somewhat similar. It is static; it is the same when I access it here as it is when I access it there. It is not arbitrary any more than any word is arbitrary. Why make up new words now when we have an established lexicon? Nothing maps semantically well into English because it is a natural language with all kinds of context involved. Programming languages have to be context free which is why we class them as context free languages.
Few OO languages call it a function. It is called void because it returns nothing. It is so the compiler knows where the return type ends and where the method/function name begins. It keeps things consistent and consistency is good. A few languages do leave it out now because some people think that removing redundancy is more important than consistency. These quirks are present in older languages because lexical analysis is a complicated task and it was simpler and more effective to leave the heavy lifting up to the human that found it easy.
If you think all those words are superfluous you probably don't have much knowledge of compilers or IDEs. The static keyword has very well defined meaning in every language it is used in. As do all those other keywords you seem to hate. Should we kill modern programming languages and go back to what, a stripped down functional paradigm because you deem all this stuff superfluous and hard to teach to beginners?
Programming is about precision. I should never have to guess at what the compiler is going to do with my code; programming is not a natural language. You are damn right I want a void return type. I want OO static members. I want all the information that can be put into method/function/variable definitions so I can take a quick glance and see what it does, takes and returns. So that my IDE, if I'm using one, can auto-complete most of the code for me. So that the (JIT-)?compiler or interpreter can understand all kinds of fancy syntax that lets me do more and write less.
Those five things you mention have nothing to do with C or C++. They are programming concepts and pretty basic ones at that. Obviously you have to understand the basics before you can move on to intermediate.
You're in luck. Dart can access javascript without too much trouble.
I know I'm tempting the flame gods here but you never explained what was a lie. Per capita are the suicide rates not very similar? Are you claiming that suicide attempts are similar and with easier access to guns they are more often successful? Because the GP seemed to be claiming that suicides (I would interpret that as successful (bad wording?) ) occur at similar rates regardless of easy access to guns. Which is in direct opposition to your claim and your statistics don't actually have anything to do with that.
Going off like a lose cannon does not help your argument.
It is one of the key aspects of natural selection.. If a species does not adapt to increased predation it will become extinct..
Whoosh? Please whoosh..
In the animal kingdom I don't think we have seen evidence that any predator hunted its prey to extinction
That's a pretty grandiose claim and certainly false. There was still an ecosystem on this planet before we came around with thousands of species that went extinct.
3D printing is new and edgy and therefore much more effective for political grandstanding. There's probably also some special interests that want to block 3D printing based on fear for their bottom line.
Gay is not a generic pejorative. It is a slur used to disenfranchise a minority group that is commonly vilified, discriminated and targeted against. It was used as a generic pejorative when you were in grade school because discriminating against the "gays" was actively encouraged. But now we've decided that discriminating against minority groups based on hate is in pretty bad taste.
I can understand a 12 year old not fully understanding the words that they are using and needing to be brought aside and possibly punished to teach them the consequences of their words. I'm assuming (possibly incorrectly) that you are older than 12 and probably quite a bit older. Most people would expect you to know better.
Society. It's like tech skills. Keep up or go extinct.
Probably any of us that have the need or want to do it on a regular basis. It's a track and field sport even.
Not exactly the same thing and I doubt a judge would think so either. I guess we won't know unless it goes to court. Copyright laws are "good" that way.