This isn't wierd, it's perfectly normal for many languages. Back when C was new it was sort of the oddball by starting from 0. Fortran for example starts from 1. Quite a lot of languages let you choose your own starting index (ie, "array 10..20 of array 1..100 of float").
With noscript, it takes ages to figure out what to enable to allow the actual text to appear. Everything on these sites is hidden behind a maze of scripts. It's job security for webbies I suppose.
UTF8 is certainly better than wide characters. Multibyte makes a lot of sense. Easy to get number of characters, easy to get number of bytes with strlen, easy to copy with strcpy, no endianness issues to deal with. The only fault really is that it's Unicode so you get the political wrangling.
Remember some of those early languages were designed when keyboards were a lot more painful to use. Some people actually preferred "="/"==" in preference to ":="/=" as being much easier to type.
Then again you could get mistakes even if "=" is test for equality, as in a statement written "a = 1" by mistake instead of "a:= 1", but does not give a syntax error as it's legal (an expression is also a statement in C and many languages). So to be really safe you need ":="/"==", but at the point people think it's too verbose.
Strings terminated by 0 is common sense. Strings with physical size is ALSO common sense. Both ideas have their merits and flaws. There is no right answer here! Which is best depends upon which operations you do and which combinations of operations are done. Ie, knowing the length of a string extremely quickly is good, but if you're also going to be operating on every character of the string (as in string comparisons) then it doesn't save you any time. Similarly, counted strings limit the maximum length of your strings (early languages would have one character only as length which was a severe limitation).
Buffer overruns are a problem indeed but when the first goal of the language was efficiency then it's always left to the programmer to write correct code. Enforcing array lengths at run time can be big performance hit and increase the size of the code. With this attitude, I'm surprised you use assembler where the programmer is allowed to make all sorts of mistakes.
sizeof("somestring") returns 11, not 1. Whereas sizeof(char*) returns the size of the pointer, not 1.
Right, trying to be fully POSIX in a broken Windows environment is really hard. But they could have had sh compatible scripting done trivially.
The godawfulness of Powershell (hint, I don't know that much about it but get my brain into knots trying to decipher it) is that it wants to be able to script the use of libraries and APIs, whereas most command line scripting languages are all about scripting commands. That may be ok for other scripting languages which aren't intended to be used from the command line (python, ruby, etc), but for something with the word "Shell" in it, PowerShell is amazingly clumsy to use for quick off-the-cuff scripts. If it wanted to just be another scripting language not intended for interactive use, then it should not have put "shell" in the name.
Seriously, for all the problems in Cygwin at least it works and is invaluable to getting actual stuff done on Windows in a sane way.
Dumb jocks are laughed at all over the place. Arrested Development (Steve Holt!), Bill and Ted's Excellent Adventure, etc.
TBBT is funny to a lot of people. If you don't think it's funny watch something else, or do you feel the need to disagree online with fans of every television show which you don't personally find amusing? If you have a crusade against shows that aren't funny then you certainly have many more obvious targets to go after first (two and a half men comes to mind right away).
And you're probably too hung up on the negative stereotype thing. Which one don't you like? The skinny geek, the smart geek, the OCD geek, the can't-get-a-girl slashdot geek? Guess what, real geeks with these stereotypes laugh at other with these stereotypes, as well as laugh at everyone else too. Why not, OCD people are funny (except for me, I'm a sad case, so stop laughing). Guys who think they're the ladie's man but who aren't are also very funny, if they're geeks or not geeks. Strange people hanging out in comic book stores are funny, whether it's on TV or an actual comic book store.
Here's the interaction I'm seeing: - story about woman getting death threats, someone most people not following modern game devs or fandom even know - instant reponse that there's no misogyny, typical slashdottery, and BESIDES SHE SLEPT WITH REVIEWERS!
I'm sorry, but true or not, that's classic slut shaming.
And this is different from the shows that teach you to laugh at the dumb jocks, the shows that teach you to laugh at dumb guys, the shows that teach you to laugh at dumb women, the shows that teach you to laugh at plumbers, doctors, fathers, mothers, politicians, laywers, etc. What group exists that is not laughed at?
AT&T uses Yahoo for web mail, though you get an AT&T address. It would make more sense to have more generic email providers separate from ISPs, though quality ones without bad reps like Yahoo or Gmail.
That's the big issue I think. My mother does not want to switch from her dial up because (other than cost) it means a new email address.
I snagged a "free for life" address in the 90s, though it soon became a pay service. Though it's only about $40 a year to have email forwarded to my real ISP. I really should have set up my own domain a long time ago but when I was thinking about that it was relatively expensive to set up and not like today.
I'm qualified to turn off ads here, but I keep ad blocker on it anyway so I let it think it's serving me ads, just to keep the script's self esteem up.
Personally, I'm surprised if someone in IT even knows what a shell is. As an end user I'm frustrated by being told to turn it off and back on again, or being transferred through three departments until they find the one and only IT employee who actually understands computers.
Remote offices are great. It means not everyone has to crowd into the main headquarters, it also means that the IT people don't have to all crowd together too. What's good for all workers is good for IT workers, so it's a good thing to allow remote offices and allow working from home and allow going home at 5pm, etc. If too many complain about the frustration of remote users then be careful that the boss doesn't pull a Marissa Mayers and cancel the perqs.
The solution is to put an IT worker in the remote site, or get a contractor on retainer. If it's a really small site then hopefully someone is at least in the region that can drive over. If not, well, put up with it because that remote site is most likely earning revenue for the company, and IT's job is to support the company.
So what about the next job? Should the application programmer never change jobs to a systems programming job? Should programmers only be prepared for the current job and never for the next job?
Learning the minimum necessary was never the goal we had when the US was in the lead in technology and science, but maybe it's the goal today. Learning extra stuff is never a waste of time.
People who can get a specific job done are often useless once that specific job is over. The renaissance man often sticks around at the company for a longer time, gets to work on multiple projects, takes on leadership roles. The rennaissance man designs things and then the person on the specific job does the specific actions according to the design. Both are programmers though.
No, computer science is also a practical applied science. The problem is that too many people do not look past the entry level jobs to see where the theory can be applied.
Algorithms is a skill that can be used everywhere in programming, except for the modern style of programming where you are forbidden to reinvent the wheel and must use someone else's library (and presumably if that someone must use someone else's library, then it's libraries all the way down). If and only if people give a shit about performance, and on the web or PC people don't care because they just get faster computers. But on embedded systems, tiny devices or phones, the engineers actually do care because they've got to squeeze stuff into tiny spaces, make it run fast, and make it run cool.
Number theory is useful anywhere you use floating point numbers. Sure, you can skip it, but then don't complain when your accuracy is very low. I've seen people complain that "1.3" could not be represented precisely and wanted to know if we could get a better compiler to fix that.
Complexity theory is vital, the whole chip industry depends upon it. You think it's painful that it take hours for the VHDL to get synthesized, imagine how worse it could be. Travelling salesman problems sounds like a made up thing to make student's lives miserable, but it's a fundamental problem to solve in many industries who need ways to approximate good answers to it in polynomial time. I've seen people who don't understand it writing exponential programs to solve something like it, not realizing how useless it's going to be when scaled up beyond their simple test cases.
Basically all of computer science gets used in practice, and in real programs. Maybe you don't see if if your job is writing some silly JavaScript code for an ad infested web page, but it's there inside of JavaScript engine and inside of the browser and inside of the operating system, and inside of the chip. Now computer science is supposed to encompass computing all the way down to the computer itself, the logic gates and such, but because so many CS grads never did more than programming it is becoming increasingly common for EE grads to do this low level work.
So if US citizens are underqualified by getting no CS education, and even H1-B workers are underqualified by not getting CS education, this spells doom for US computing industry as a whole!
Consultants usually never get asked about degrees, as they are being hired for the current at-the-moment task. Full time hires however often need this because they're being assumed to be around for several years and need to be adaptable to both current and future work.
The fun with 20ish people shops is that they provide years and years of work for people to come along after them and clean up all the mess. Then when someone asks why the product is so weird I just say don't blame me, it was written by a 20something who's now a CTO where he can do no more harm to innocent programs.
This isn't wierd, it's perfectly normal for many languages. Back when C was new it was sort of the oddball by starting from 0. Fortran for example starts from 1. Quite a lot of languages let you choose your own starting index (ie, "array 10..20 of array 1..100 of float").
I got it to work by temporarily enabling a set of scripts. When the "ad" came it was blank with only a message saying "click here to resume" :-)
With noscript, it takes ages to figure out what to enable to allow the actual text to appear. Everything on these sites is hidden behind a maze of scripts. It's job security for webbies I suppose.
UTF8 is certainly better than wide characters. Multibyte makes a lot of sense. Easy to get number of characters, easy to get number of bytes with strlen, easy to copy with strcpy, no endianness issues to deal with. The only fault really is that it's Unicode so you get the political wrangling.
Remember some of those early languages were designed when keyboards were a lot more painful to use. Some people actually preferred "="/"==" in preference to ":="/=" as being much easier to type.
Then again you could get mistakes even if "=" is test for equality, as in a statement written "a = 1" by mistake instead of "a := 1", but does not give a syntax error as it's legal (an expression is also a statement in C and many languages). So to be really safe you need ":="/"==", but at the point people think it's too verbose.
Strings terminated by 0 is common sense. Strings with physical size is ALSO common sense. Both ideas have their merits and flaws. There is no right answer here! Which is best depends upon which operations you do and which combinations of operations are done. Ie, knowing the length of a string extremely quickly is good, but if you're also going to be operating on every character of the string (as in string comparisons) then it doesn't save you any time. Similarly, counted strings limit the maximum length of your strings (early languages would have one character only as length which was a severe limitation).
Buffer overruns are a problem indeed but when the first goal of the language was efficiency then it's always left to the programmer to write correct code. Enforcing array lengths at run time can be big performance hit and increase the size of the code. With this attitude, I'm surprised you use assembler where the programmer is allowed to make all sorts of mistakes.
sizeof("somestring") returns 11, not 1. Whereas sizeof(char*) returns the size of the pointer, not 1.
C++ is a wooden club with some nails stuck in it.
I thought 'test' in Bash is built in, whereas in older shells it relied on the Unix command 'test'.
Right, trying to be fully POSIX in a broken Windows environment is really hard. But they could have had sh compatible scripting done trivially.
The godawfulness of Powershell (hint, I don't know that much about it but get my brain into knots trying to decipher it) is that it wants to be able to script the use of libraries and APIs, whereas most command line scripting languages are all about scripting commands. That may be ok for other scripting languages which aren't intended to be used from the command line (python, ruby, etc), but for something with the word "Shell" in it, PowerShell is amazingly clumsy to use for quick off-the-cuff scripts. If it wanted to just be another scripting language not intended for interactive use, then it should not have put "shell" in the name.
Seriously, for all the problems in Cygwin at least it works and is invaluable to getting actual stuff done on Windows in a sane way.
A botched Batch of Bash.
Dumb jocks are laughed at all over the place. Arrested Development (Steve Holt!), Bill and Ted's Excellent Adventure, etc.
TBBT is funny to a lot of people. If you don't think it's funny watch something else, or do you feel the need to disagree online with fans of every television show which you don't personally find amusing? If you have a crusade against shows that aren't funny then you certainly have many more obvious targets to go after first (two and a half men comes to mind right away).
And you're probably too hung up on the negative stereotype thing. Which one don't you like? The skinny geek, the smart geek, the OCD geek, the can't-get-a-girl slashdot geek? Guess what, real geeks with these stereotypes laugh at other with these stereotypes, as well as laugh at everyone else too. Why not, OCD people are funny (except for me, I'm a sad case, so stop laughing). Guys who think they're the ladie's man but who aren't are also very funny, if they're geeks or not geeks. Strange people hanging out in comic book stores are funny, whether it's on TV or an actual comic book store.
Here's the interaction I'm seeing:
- story about woman getting death threats, someone most people not following modern game devs or fandom even know
- instant reponse that there's no misogyny, typical slashdottery, and BESIDES SHE SLEPT WITH REVIEWERS!
I'm sorry, but true or not, that's classic slut shaming.
I can find several people in real life that are like the stereotypes on that show. That makes it funny too.
And this is different from the shows that teach you to laugh at the dumb jocks, the shows that teach you to laugh at dumb guys, the shows that teach you to laugh at dumb women, the shows that teach you to laugh at plumbers, doctors, fathers, mothers, politicians, laywers, etc. What group exists that is not laughed at?
AT&T uses Yahoo for web mail, though you get an AT&T address. It would make more sense to have more generic email providers separate from ISPs, though quality ones without bad reps like Yahoo or Gmail.
That's the big issue I think. My mother does not want to switch from her dial up because (other than cost) it means a new email address.
I snagged a "free for life" address in the 90s, though it soon became a pay service. Though it's only about $40 a year to have email forwarded to my real ISP. I really should have set up my own domain a long time ago but when I was thinking about that it was relatively expensive to set up and not like today.
I'm qualified to turn off ads here, but I keep ad blocker on it anyway so I let it think it's serving me ads, just to keep the script's self esteem up.
Or the guys at Oracle will stop aking cannabis and their reliability goes up.
Personally, I'm surprised if someone in IT even knows what a shell is. As an end user I'm frustrated by being told to turn it off and back on again, or being transferred through three departments until they find the one and only IT employee who actually understands computers.
Remote offices are great. It means not everyone has to crowd into the main headquarters, it also means that the IT people don't have to all crowd together too. What's good for all workers is good for IT workers, so it's a good thing to allow remote offices and allow working from home and allow going home at 5pm, etc. If too many complain about the frustration of remote users then be careful that the boss doesn't pull a Marissa Mayers and cancel the perqs.
The solution is to put an IT worker in the remote site, or get a contractor on retainer. If it's a really small site then hopefully someone is at least in the region that can drive over. If not, well, put up with it because that remote site is most likely earning revenue for the company, and IT's job is to support the company.
So what about the next job? Should the application programmer never change jobs to a systems programming job? Should programmers only be prepared for the current job and never for the next job?
Learning the minimum necessary was never the goal we had when the US was in the lead in technology and science, but maybe it's the goal today. Learning extra stuff is never a waste of time.
People who can get a specific job done are often useless once that specific job is over. The renaissance man often sticks around at the company for a longer time, gets to work on multiple projects, takes on leadership roles. The rennaissance man designs things and then the person on the specific job does the specific actions according to the design. Both are programmers though.
Who writes what is under the API?
No, computer science is also a practical applied science. The problem is that too many people do not look past the entry level jobs to see where the theory can be applied.
Algorithms is a skill that can be used everywhere in programming, except for the modern style of programming where you are forbidden to reinvent the wheel and must use someone else's library (and presumably if that someone must use someone else's library, then it's libraries all the way down). If and only if people give a shit about performance, and on the web or PC people don't care because they just get faster computers. But on embedded systems, tiny devices or phones, the engineers actually do care because they've got to squeeze stuff into tiny spaces, make it run fast, and make it run cool.
Number theory is useful anywhere you use floating point numbers. Sure, you can skip it, but then don't complain when your accuracy is very low. I've seen people complain that "1.3" could not be represented precisely and wanted to know if we could get a better compiler to fix that.
Complexity theory is vital, the whole chip industry depends upon it. You think it's painful that it take hours for the VHDL to get synthesized, imagine how worse it could be. Travelling salesman problems sounds like a made up thing to make student's lives miserable, but it's a fundamental problem to solve in many industries who need ways to approximate good answers to it in polynomial time. I've seen people who don't understand it writing exponential programs to solve something like it, not realizing how useless it's going to be when scaled up beyond their simple test cases.
Basically all of computer science gets used in practice, and in real programs. Maybe you don't see if if your job is writing some silly JavaScript code for an ad infested web page, but it's there inside of JavaScript engine and inside of the browser and inside of the operating system, and inside of the chip. Now computer science is supposed to encompass computing all the way down to the computer itself, the logic gates and such, but because so many CS grads never did more than programming it is becoming increasingly common for EE grads to do this low level work.
So if US citizens are underqualified by getting no CS education, and even H1-B workers are underqualified by not getting CS education, this spells doom for US computing industry as a whole!
Consultants usually never get asked about degrees, as they are being hired for the current at-the-moment task. Full time hires however often need this because they're being assumed to be around for several years and need to be adaptable to both current and future work.
The fun with 20ish people shops is that they provide years and years of work for people to come along after them and clean up all the mess. Then when someone asks why the product is so weird I just say don't blame me, it was written by a 20something who's now a CTO where he can do no more harm to innocent programs.