There is an assumption you learn business technical support skills with that degree.
That's a bad assumption and one that should be changed. There should be and needs to be a clear distinction between forward going degrees and terminal degrees.
Computer science should include these kinds of courses and certifications for it if employers demand them.
Academic degrees are not driven by what employers want they are driven primarily by what professional / graduate schools want. That's one of the distinctions between academic and technical degrees. Academic degrees are not meant to be terminal.
Even electives like Biology these days teach powerpoint skills as it helps students who are non medical majors a real world use in the business world.
First off PowerPoint is rather easy. So if you mean that biology classes use PowerPoint, then that's fine. But how does biology teach PowerPoint? But in general I agree that colleges are polluting academic programs by teaching trades. They shouldn't be doing that, trade skills for an academic program belong in a professional or graduate school.
Network System Administration is a trade. Computer Science is an academic discipline. Those aren't related degrees or at least shouldn't be. A computer science undergrad degree I'd expect the person to be familiar with ideas from history / philosophy of science about the limits of positivism. I'd expect them to have taken theoretical math courses. I'd expect many of their programming courses to be in languages which teach them about computer languages not in practical computer languages. Languages like Oz are good for Computer Science while Network System Administration I'd want C, Java... In short I'd expect them to be prepped to go to grad school. On the other hand I'd have no expectations that they have any particular skills to a meaningful extent. Network System Administration I'd expect skills but not necessarily an education suited for academic work. Narrowly focused and more practical.
Now. Don't get me wrong 95% of employers want the Network System Administration degree not the computer science degree. But in the abstract they aren't equivalent at all.
Interesting so your belief is jquery can be avoided. Well that would speed things up hugely.
In terms of the older browsers IMHO Google, Microsoft, Apple and Mozilla Foundation can make that happen. Microsoft was the biggest problem but now they are trying to decrease the amount of time people use older browsers. Bundling newer browsers with service packs and their regular policy of requiring service packs for support should do a pretty good job of driving people to newer browsers. Apple, Mozilla are already pretty aggressive and successful IMHO. Of course they would be more successful if more websites error on old browsers.
The other place to worry about forward going is older versions of Android. Gingerbread is still 16% of the market ( http://www.droid-life.com/tag/... ), as measured by the PlayStore which I suspect is worse than all users of browsers. And I'd expect this problem of lag to get worse not better with time as handsets get more reliable.
You have your order a bit wrong. The articles in the 1950s were written about how Fortran in practice wasn't much slower than Assembler. After Fortran the move was to try and do for general programming including systems programming what Fortran does did for numerical computation, ALGOL-60 came out of that movement. C through many more steps evolved from ALGOL-60. Fortran isn't as fast as C, C is as fast as Fortran.
As for the rest of your post... Of course languages designed not to compromise performance for convenience are faster than those that do compromise performance for convenience. As Graham put it, "since the 1950s the goal of computer language theory has been to make LISP as fast as Fortran and Fortran as powerful as LISP". JavaScript is on the LISP side of the fence.
I don't know much. I do know that the latest WebKit however includes Mozilla's asm.js-optimized Javascript hints and if you turn this on you get huge boosts on hinted Javascript. So it appears there is room for boosts.
That being said the easiest solution would be to standardize more so that JQuery could drop out. There really is no reason that Apple, Google, Mozilla and Microsoft couldn't agree on very aggressive retirement timelines for browsers now that Microsoft is not trying to hold back the web.
You are absolutely right. The only place I see this coming is a payment system being an adjunct form of credit card run by the credit card system enhancing their current duopoly.
I think the problem is the USA has a fairly cheap and good credit card system. In the USA merchants, with a few exceptions pay 1.4-4% with most in the 1.8-2.5% range. The customer generally gets about 1% of that or more in incentives. Which means there is only about 1% to play with for the merchant to cut costs or raise services. That probably isn't enough of a margin. There are areas where credit card fees are very high (adult services, gambling) but the reason fees are high is that these are impulse purchases which people often regret buying after the fact. There are also areas where untraceability is desired (i.e. in place of cash), but most merchants just take cash for those customers.
I'm not sure how you make a wildly used system with margins so thin on credit cards. Something about the USA system has to get worse. I suspect if there is ever going to be a mobile pay system it is going to be brought out by AMEX, VISA, MasterCard, Discover... as a adjunct form of card and nothing more. Just a fast or secure way to use your card. Other than that I just don't see a niche that justifies it.
I think Python is a good example of a the power of scripting and dynamic languages. Perl (up to 5), Python and Ruby (excluding things like Rails) represents the improvements in the 1990s and the advantages of dynamic languages with powerful libraries. Ruby is a bit more advanced since it was able to learn from Perl and Ruby. Perl6 IMHO is way more advanced but I don't know if it will ever get off the ground. But Haskell is incomparably more powerful. To use your example list comprehensions are finite in Python. You lose so much of the power of streams by having to work with finite data structures.
Anyway if you already know Haskell then J is Haskell where you just limit yourself to using point-free programming always + better array operations. Example for map-reduce: standard: mf criteria operator list = filter criteria (map operator list) J-style: mf = (. map) . (.) . filter
If you just play around with your Haskell code to eliminate any variables you are 80% of the way there. The rest is getting a really cool collection of array manipulation routines in Haskell. Haskell lists aren't really a good fit because they have too little structure so things like APL's "shape" (return dimension of multi-dimensional array) wouldn't work. But honestly unless you are doing a ton of array manipulation I wouldn't worry.
That's interesting. I didn't think of that, but I suspect that's true now that I think about it. My news results on political topics do cater to my preferences more than a random selection would. I hadn't really noticed but now that you mention it...:)
Honestly if you don't know APL / J I think you'd be better off other functional languages particularly Haskell. J teaches you functional code and a rode not taken for in terms of tradeoffs. Haskell IMHO teaches you what compilers are going to look like in 2030 and gives you exposure to the ideas that will be common in future languages.
Programming is a set of thought processes that are being applied regardless of the language or environment being used.
I disagree with you here. I think the thought process is highly dependent on the language. For example in a low level language I spend a great deal of time thinking about how I want the machine to perform various computations. In a high level language I spend my time thinking very abstractly about the process. In your typical structured programming language I spend a lot of time conceiving of the problem as a list of steps: do A then do B then do C... In an object oriented language I spend time thinking about the who: A does J and K, B can do L,M,N... and then very little in weaving that together as steps.
I'm a fan of diversity. I like the of DSLs. I'm also middle aged. There is nothing fun about roughly the same kinds of languages but the more different the language the more fun it is. I'd love to have time getting to play with some radically different paradigms from the newer languages or obscure languages. I've been wanting to do SNOBOL / Icon / Unicorn but haven't had the chance. I'd love to do Factor and get a chance to play with a stack based language (I know Postscript, RPL, Forth). ETC...
OSX may be Unix certified in the sense that Darwin is fairly standard. But OSX itself is highly non standard as I mentioned above. Because of HFS things like cp don't work the way they normally do. User management isn't tied to/etc/passwd....
IBM has lots of smart people who try and do this. What they've found across their client base is that
IT spending = minor adjustment * vertical percentage * revenue minor adjustment is company specific level of enthusiasm: usually.5-2.0 vertical percentage is a percentage of revenue spent across the vertical revenue is the company's revenue.
Exactly. At this point Linux is many times larger than other Unixes combined. In the server space the only meaningfully large commercial Unix left is AIX and that one is certainly not standard. IMHO 2014 is the standard Unix, regardless of what the Open Group says.
But yes. Darwin + XQuartz (the way to make OSX more standard) is a lot like FreeBSD in fact they pull software and ideas back and forth and are cousins. OSX is a bit less standard than FreeBSD because
a) NeXT was really different b) FreeBSD aims to be standard c) FreeBSD due to being part of the free software community gets dragged towards Linux while Apple doesn't
So software in Darwin has the same problems it would have with FreeBSD x3.
Microsoft prior to XP supported a wide range of hardware and end users were on tight OS upgrade schedules. It is only with XP that their userbase got used to not being on top of things. The Windows 8.1 preview came out in June 2013. That's plenty of time for OEMs, Microsoft and companies to have noticed and resolved issues. But that sort of aggressive testing didn't happen, unlike in the OSX world. The problem isn't the range of hardware, the problem is a customer base whose desktop groups aren't constantly prepping for the next round of upgrades.
It sacrifices one of Windows greatest advantages: compatibility with older software and hardware. Without that, there is increasingly little reason to use Windows.
They have to move their customer base off both. On the hardware side they need to move them towards new interfaces. And thus on the software side they are going to need to move them towards applications that use the new interfaces. I for one thought that Windows 8 should have been touch mandatory with Windows 7 being the last OS for non touch devices. Instead, like Vista, they ended up with a 1/2 way solution where people can use the old hardware but are often dissatisfied.
And I'm not even sure what you meant with the printer drivers...
What Raven means is that because Word is WYSIWYG the printing subsystem determines document layout. Change the properties of the printer driver and you change the document. For example most home / office printers can't print to the edge of the paper. If you are using a document formatted with no margin and then configure the document for another printer the entire document will reformat automatically as Word tries to avoid bleed. Try it. If that person then saves the original the reformatting will stick.
This is part of the difference between Word Processing and typographical systems which handle proof print and final output very distinctly and the properties of the document even in intermediate stages are aligned for the final output device.
I agree the unified updates are wonderful with Linux, an area where Linux is clearly ahead of Windows and OSX. That being said, when something goes wrong with Linux updates the level of technical complexity assumed is quite high. Higher than making the few registry changes that is all that is needed to get 8.1 to update for these people.
Ray. I've been an OSX user regularly since 10.1. The advantage of Linux over OSX for open source is pretty large.
OSX is very nonstandard. Basic Unix features like passwords don't work consistently. Things like cp can require modification and overwrites can be tricky because the HFS+ filesystem has some different properties than typical Unix filesystems like ext4. The result is you hit way way more bugs with many open source applications via. Darwinports or Fink than you do with Linux distributions. Not shockingly Linux is far and away the best way to run Linux software.
I feel like with OSX I get a good Unix combined with good productivity software. Also quite excellent design even for applications. Windows has better productivity software and Linux is a better Unix.
That's a bad assumption and one that should be changed. There should be and needs to be a clear distinction between forward going degrees and terminal degrees.
Academic degrees are not driven by what employers want they are driven primarily by what professional / graduate schools want. That's one of the distinctions between academic and technical degrees. Academic degrees are not meant to be terminal.
First off PowerPoint is rather easy. So if you mean that biology classes use PowerPoint, then that's fine. But how does biology teach PowerPoint? But in general I agree that colleges are polluting academic programs by teaching trades. They shouldn't be doing that, trade skills for an academic program belong in a professional or graduate school.
Network System Administration is a trade. Computer Science is an academic discipline. Those aren't related degrees or at least shouldn't be. A computer science undergrad degree I'd expect the person to be familiar with ideas from history / philosophy of science about the limits of positivism. I'd expect them to have taken theoretical math courses. I'd expect many of their programming courses to be in languages which teach them about computer languages not in practical computer languages. Languages like Oz are good for Computer Science while Network System Administration I'd want C, Java... In short I'd expect them to be prepped to go to grad school. On the other hand I'd have no expectations that they have any particular skills to a meaningful extent. Network System Administration I'd expect skills but not necessarily an education suited for academic work. Narrowly focused and more practical.
Now. Don't get me wrong 95% of employers want the Network System Administration degree not the computer science degree. But in the abstract they aren't equivalent at all.
Interesting so your belief is jquery can be avoided. Well that would speed things up hugely.
In terms of the older browsers IMHO Google, Microsoft, Apple and Mozilla Foundation can make that happen. Microsoft was the biggest problem but now they are trying to decrease the amount of time people use older browsers. Bundling newer browsers with service packs and their regular policy of requiring service packs for support should do a pretty good job of driving people to newer browsers. Apple, Mozilla are already pretty aggressive and successful IMHO. Of course they would be more successful if more websites error on old browsers.
The other place to worry about forward going is older versions of Android. Gingerbread is still 16% of the market ( http://www.droid-life.com/tag/... ), as measured by the PlayStore which I suspect is worse than all users of browsers. And I'd expect this problem of lag to get worse not better with time as handsets get more reliable.
You have your order a bit wrong. The articles in the 1950s were written about how Fortran in practice wasn't much slower than Assembler. After Fortran the move was to try and do for general programming including systems programming what Fortran does did for numerical computation, ALGOL-60 came out of that movement. C through many more steps evolved from ALGOL-60. Fortran isn't as fast as C, C is as fast as Fortran.
As for the rest of your post... Of course languages designed not to compromise performance for convenience are faster than those that do compromise performance for convenience. As Graham put it, "since the 1950s the goal of computer language theory has been to make LISP as fast as Fortran and Fortran as powerful as LISP". JavaScript is on the LISP side of the fence.
I don't know much. I do know that the latest WebKit however includes Mozilla's asm.js-optimized Javascript hints and if you turn this on you get huge boosts on hinted Javascript. So it appears there is room for boosts.
That being said the easiest solution would be to standardize more so that JQuery could drop out. There really is no reason that Apple, Google, Mozilla and Microsoft couldn't agree on very aggressive retirement timelines for browsers now that Microsoft is not trying to hold back the web.
You got a good answer from Raven that Chrome is now using a fork. Webkit is used in a bunch of other projects, the best known being Safari.
Well Chris Okasaki's book is the first place. His thesis is still online: http://www.cs.cmu.edu/~rwh/the... . The book which expands the thesis: http://www.amazon.com/Purely-F... . It has been 15 years since his book his blog has some new stuff: http://okasaki.blogspot.com/
Here is a terrific blog post of what came next:
http://cstheory.stackexchange....
You are absolutely right. The only place I see this coming is a payment system being an adjunct form of credit card run by the credit card system enhancing their current duopoly.
I think the problem is the USA has a fairly cheap and good credit card system. In the USA merchants, with a few exceptions pay 1.4-4% with most in the 1.8-2.5% range. The customer generally gets about 1% of that or more in incentives. Which means there is only about 1% to play with for the merchant to cut costs or raise services. That probably isn't enough of a margin. There are areas where credit card fees are very high (adult services, gambling) but the reason fees are high is that these are impulse purchases which people often regret buying after the fact. There are also areas where untraceability is desired (i.e. in place of cash), but most merchants just take cash for those customers.
I'm not sure how you make a wildly used system with margins so thin on credit cards. Something about the USA system has to get worse. I suspect if there is ever going to be a mobile pay system it is going to be brought out by AMEX, VISA, MasterCard, Discover... as a adjunct form of card and nothing more. Just a fast or secure way to use your card. Other than that I just don't see a niche that justifies it.
I think Python is a good example of a the power of scripting and dynamic languages. Perl (up to 5), Python and Ruby (excluding things like Rails) represents the improvements in the 1990s and the advantages of dynamic languages with powerful libraries. Ruby is a bit more advanced since it was able to learn from Perl and Ruby. Perl6 IMHO is way more advanced but I don't know if it will ever get off the ground. But Haskell is incomparably more powerful. To use your example list comprehensions are finite in Python. You lose so much of the power of streams by having to work with finite data structures.
Anyway if you already know Haskell then J is Haskell where you just limit yourself to using point-free programming always + better array operations.
Example for map-reduce:
standard: mf criteria operator list = filter criteria (map operator list)
J-style: mf = (. map) . (.) . filter
If you just play around with your Haskell code to eliminate any variables you are 80% of the way there. The rest is getting a really cool collection of array manipulation routines in Haskell. Haskell lists aren't really a good fit because they have too little structure so things like APL's "shape" (return dimension of multi-dimensional array) wouldn't work. But honestly unless you are doing a ton of array manipulation I wouldn't worry.
That's interesting. I didn't think of that, but I suspect that's true now that I think about it. My news results on political topics do cater to my preferences more than a random selection would. I hadn't really noticed but now that you mention it... :)
Honestly if you don't know APL / J I think you'd be better off other functional languages particularly Haskell. J teaches you functional code and a rode not taken for in terms of tradeoffs. Haskell IMHO teaches you what compilers are going to look like in 2030 and gives you exposure to the ideas that will be common in future languages.
I disagree with you here. I think the thought process is highly dependent on the language. For example in a low level language I spend a great deal of time thinking about how I want the machine to perform various computations. In a high level language I spend my time thinking very abstractly about the process. In your typical structured programming language I spend a lot of time conceiving of the problem as a list of steps: do A then do B then do C... In an object oriented language I spend time thinking about the who: A does J and K, B can do L,M,N... and then very little in weaving that together as steps.
APL is way cool. There is a modern APL btw: http://en.wikipedia.org/wiki/J...
I'm a fan of diversity. I like the of DSLs. I'm also middle aged. There is nothing fun about roughly the same kinds of languages but the more different the language the more fun it is. I'd love to have time getting to play with some radically different paradigms from the newer languages or obscure languages. I've been wanting to do SNOBOL / Icon / Unicorn but haven't had the chance. I'd love to do Factor and get a chance to play with a stack based language (I know Postscript, RPL, Forth). ETC...
OSX may be Unix certified in the sense that Darwin is fairly standard. But OSX itself is highly non standard as I mentioned above. Because of HFS things like cp don't work the way they normally do. User management isn't tied to /etc/passwd....
IBM has lots of smart people who try and do this. What they've found across their client base is that
IT spending = minor adjustment * vertical percentage * revenue .5-2.0
minor adjustment is company specific level of enthusiasm: usually
vertical percentage is a percentage of revenue spent across the vertical
revenue is the company's revenue.
I'd go for the classic medium and I want to get better SICP.
Online course: http://ocw.mit.edu/courses/ele...
Online book + problems +... http://mitpress.mit.edu/sicp/
This book more than any other will take your programming to a new level.
Exactly. At this point Linux is many times larger than other Unixes combined. In the server space the only meaningfully large commercial Unix left is AIX and that one is certainly not standard. IMHO 2014 is the standard Unix, regardless of what the Open Group says.
But yes. Darwin + XQuartz (the way to make OSX more standard) is a lot like FreeBSD in fact they pull software and ideas back and forth and are cousins. OSX is a bit less standard than FreeBSD because
a) NeXT was really different
b) FreeBSD aims to be standard
c) FreeBSD due to being part of the free software community gets dragged towards Linux while Apple doesn't
So software in Darwin has the same problems it would have with FreeBSD x3.
I started on NeXT then AIX then SunOS then Solaris... But times change at this point Linux is the standard.
Microsoft prior to XP supported a wide range of hardware and end users were on tight OS upgrade schedules. It is only with XP that their userbase got used to not being on top of things. The Windows 8.1 preview came out in June 2013. That's plenty of time for OEMs, Microsoft and companies to have noticed and resolved issues. But that sort of aggressive testing didn't happen, unlike in the OSX world. The problem isn't the range of hardware, the problem is a customer base whose desktop groups aren't constantly prepping for the next round of upgrades.
They have to move their customer base off both. On the hardware side they need to move them towards new interfaces. And thus on the software side they are going to need to move them towards applications that use the new interfaces. I for one thought that Windows 8 should have been touch mandatory with Windows 7 being the last OS for non touch devices. Instead, like Vista, they ended up with a 1/2 way solution where people can use the old hardware but are often dissatisfied.
They aren't bricking the computers they will continue to run fine. And if they want updates they just make a registry change.
What Raven means is that because Word is WYSIWYG the printing subsystem determines document layout. Change the properties of the printer driver and you change the document. For example most home / office printers can't print to the edge of the paper. If you are using a document formatted with no margin and then configure the document for another printer the entire document will reformat automatically as Word tries to avoid bleed. Try it. If that person then saves the original the reformatting will stick.
This is part of the difference between Word Processing and typographical systems which handle proof print and final output very distinctly and the properties of the document even in intermediate stages are aligned for the final output device.
I agree the unified updates are wonderful with Linux, an area where Linux is clearly ahead of Windows and OSX. That being said, when something goes wrong with Linux updates the level of technical complexity assumed is quite high. Higher than making the few registry changes that is all that is needed to get 8.1 to update for these people.
Ray. I've been an OSX user regularly since 10.1. The advantage of Linux over OSX for open source is pretty large.
OSX is very nonstandard. Basic Unix features like passwords don't work consistently. Things like cp can require modification and overwrites can be tricky because the HFS+ filesystem has some different properties than typical Unix filesystems like ext4. The result is you hit way way more bugs with many open source applications via. Darwinports or Fink than you do with Linux distributions. Not shockingly Linux is far and away the best way to run Linux software.
I feel like with OSX I get a good Unix combined with good productivity software. Also quite excellent design even for applications. Windows has better productivity software and Linux is a better Unix.