If PHP is an "all in one" solution for you then that's great. However, most people doing large scale Java development need a lot more than PHP can offer. Can you write generalised code in PHP that I can use in a standalone application as easily as I can use it in a web application? Can you unit test your PHP code on a truly modular basis, and outside of the full blown web environment?
Does PHP have a clear and consistent API with little or no redundancy? Does PHP offer decent support for writing threaded code? Is there interfaces for a generic database API that has been implemented for a large selection of database engines? The answer to all these questions is "no".
Yup, GNOME IPC is based on CORBA, using an implementation of the C language mapping. I understand this is going to be replaced with a dbus based system as the CORBA stuff is a bit to generalised and heavyweight for a desktop system. CORBA is more like DCOM, while COM is more like the old System V IPC facilities.
Presumably, java solutions are expensive, that's why Fortune 500 companies need to have java-backed websites.
Java development is cheap. The open source tools compare very favourably to their commercial / pay to use equivalents. Examples are Eclsipse and NetBeans for development IDEs, Tomcat or Jetty for Application Containers and JBoss for Enterprise Containers. There are excellent libraries from the Apache projects, as well as things like JUnit, JMeter and Log4J. The Java runtimes from Sun and IBM are obviously free of license costs as well.
Staff costs are pretty good as well. If you look at the cost of a decent Java team versus say a C++ one, then while the cost of a senior developer may be similar, the less senior team members are likely to be cheaper to employ. This comes down to fact that many garduates are now learning Java at college, often to the exclusion of languages like C and C++. This increases the number of Java programmers on the market, making overall team costs lower as you can hire less experienced programmers with reasonable confidence they'll be able to do the job.
Finally, there is a much greater emphasise in the Java literature on best practices and "programming in the large" than I generally see in books on other programming languages. Dependency injection, consistent application of the MVC architecture, decent modularity, unit testable code - in my experience programmers are far more aware of the benefits of these ideas in the Java world, and are consciously applying them.
As for choosing between C#/Mono and Java, I'd go for the latter. While the core Java is far from perfect, it has far more mature support from application containers, third party libraries, and so forth. It also has an API that tries to be cross platform, whereas the.Net (and as a result Mono) APIs contain a number of design trade offs that reflect its target platform is restricted to Windows. The Forms API springs to mind (have they finally done away with absolute positioning in the current version?).
According to the Wikipedia entry for the Zaurus, Sharp discontinued the Linux based machines in February. I still managed to buy a new one a few weeks ago, but I guess the remaining stock will be gone pretty soon. The next series is slated to include a mobile phone, and will run a version of Windows. I find the Zaurus screen to be the ideal size and resolution for a hendheld - the keyboard's not as good as the last couple of Psion handhelds though, but you can use the stylus or attach a small USB keyboard.
I use a Fortran 95 compiler, but I believe it will also compile with the g77 compiler that came with GCC prior to version 4.0. Of course, the g77 compiler adds extensions to the ANSI standard for FORTRAN 77 so you're right to say that it's not "pure" FORTRAN 77 even if my program does compile with it.
Mmm, I was being a little bit glib. The extension to POSIX tar that unzips a file before untarring it is really just a shorthand that does the same as gzip -cd | tar xf -. On the BSDs, the j flag isn't needed as tar (or pax as tar) is intelligent enough to determine the format of the file before attempting to decompress it.
Most of the Java API was created by the JCP, not Sun
Nope, it was mostly written by Sun programmer. The Collections classes were heavily influenced by OpenStep and written by a team that included Scott Meyers (he of "Effective Java" fame). The "Rose" library that became Swing needed heavy reworking by Sun as the Netscape code was little more than a proof of concept.
Java is sorely lacking in both good documentation and any form of specification.
The Sun hosted webpages, along with the Netscape ones before they were gutted by AOL, provided a great resource on top of the API documentation. As for not having a specification, am I imagining that I have the "Java Language Specification" book by Gosling and friends on my desk? No, it looks and feels real enough, plus it's is very clear and concise (wish I could say the same about certain "authoritative" C++ books).
I think Java primarily succeeded because it was so poorly designed
Compared to what? The popular alternative when it appeared was Perl, a language that's such a mess it's being rewritten from scratch (but failing to learn any of the lessons). Given the "write only" nature of Perl with its potential for obfuscation and myriad ways of doing anything, Javas consistent API and more stringent rules were a breath of fresh air.
Err, no. Objective-C and the NeXTstep Foundation classes were inspired by the SmallTalk language and environment, then came Java which was directly inspired by NeXTstep. Gosling himself admits as much, and it makes sense as Sun considered using OpenStep to replace their OpenLook and CDE desktop environments in the mid 1990s. C++ is the language that was inspired by Simula and Modula, as they were the object oriented languages that Stroustrup was familiar with. Java is really SmallTalk with a more C like syntax, but thanks to that superficial similarity to C people wrongly assume that C++ was the big influence on its OO features.
I don't know much about Linux, but I get annoyed by some of the commands. tar xzvf does not work on bzip2 compressed tar files. As for bash, it supports POSIX incompatible extensions by default and adds nothing of significance over ksh. Only someone with limited experience would have to compile GNU stuff themselves, as knowledgable users go to the Blastwave or the Sun freeware websites. Again, only a numpty would statically link against zlib, meaning they have to recompile all their software that depends on it rather than updating a single shared library.
I agree that an "apology" is too strong - FORTRAN was pretty damned good for the first high-level language. If you look at some of the alternatives that evolved shortly after FORTRAN, such as BCPL, they were much more limited. It's got to be remembered that it was the first language that established the notion of making programs portable, even if the first couple of versions were fairly closely tied to specific IBM machines.
You suggest books are a waste of time, and to just dive in and start hacking. This attitude is a major reason why there is so much bad code out there. As I point out in reply to another post that recommends a book on Lisp to someone wanting to learn C#, if you don't know the common idioms of the actual language you are using then you will produce terrible code. A good book wont just teach you the nuts and bolts of a language such as the raw syntax, it will also encourage good practices - what I think James Coplien or Tom Cargill described as teaching "programming in the large".
Sorry to go against the orthodoxy, but the only reason why you've mentioned SICP is as a way of saying "look at me, I know Lisp, I'm a true hacker". How many times have you really used Lisp in for commercial development, or applied its idioms clearly in another language? Lisp programming techniques do not translate well to the popular languages for commercial development such as C, C++, Java or C#, you end up with obscure hacks and sub-optimal code because you don't use the common idioms of those languages. I speak from experience as someone who has had to rewrite large chunks of C++ code written by Lisp hackers too arrogant to learn C or C++ properly. Lisp and Scheme have their place, but that's as academic curiosities which is why projects like Guile are languishing.
I wouldn't put much faith in the ability of HSBC to manage anything IT related. I work for a company selling trading software to top tier banks, many of them based in the UK. Overall, their IT staff are useless. Their seems to be two type of bank IT staffer - the permanent staff hired straight out of college, with no real world experience and no chance of acquiring any because the second kind of staffer, the contractors, do as little as possible but ensure their own job security by keeping the permies as ill-informed as possible.
This may sound cynical, but it is all too true. As an example, we had an IT person from one bank try to apply an update to their system by first untarring it on Windows and FTP'ing each file in turn to the Unix box. In the process they managed to change the case of all the files. This was despite the release notes (complete with cut 'n' paste, step by step instructions) telling them to apply the patch by untarring it on the Unix box.
Another example is a client who has switched from HP-UX to Solaris and now to Linux within the space of a year. With that kind of regular platform jumping it's no wonder this clients Windows TCO is lower than the one for Unix.
Thanks for the enlightening description of the eighteenth century usage of the word "commerce". I'll just add this earlier example of usage from the diaries of Samuel Pepys:
Friday 12th: Attended to affairs in the heart of the city, thence to commerce with the free and easy Miss MacTavish, a charming wench I may add.
A remote kernel panic is a reliability issue - you can't exploit a paniced system! The OpenBSD team couldn't see a way to exploit the issue, Core subsequently proved that a panic could be avoided and exploit code executed, at which time it was upgraded to a security issue by the OpenBSD team. No conspiracy necessary.
the Turkish invasion had been cleared by the British before it was executed.
Have you got a credible source for that information? It certainly sounds possible. The independence treaty drawn up by Britain attempted to create equal rights for both the Greek and Turkish ethnic groups, a far cry from what happened in Ireland (not sure how that got into my original post). As for the Turkish invasion, to be fair the Greek military dictatorship handed Turkey a golden opportunity to further their own agenda.
So three people label an entire nation as "mugging, racist assholes" and you take it at face value? I certainly hope not. You also might want to have a word with your cousin as most "middle eastern" looking people in Barcelona are from Morocco or Algeria (they are responsible for a lot of petty crime though, but does that make all Moroccans or Algerians muggers?). As for the Greek girl, it sounds like she either doesn't know or doesn't want to know the facts about the partition of Cyprus. It's simply not a case of nice Greeks and nasty Turks, more a case of a dodgy military dictatorship in mainland Greece trying to absorb Cyprus. And as for Turks "emigrating everywhere" and the implication it's to do terrible things, what if I was to label you "a drug smuggling Latin American coming to London"?
Read the background to the partition of Cyprus. It came about after a coup was launched by the military junta running mainland Greece. The goal of the coup was to assassinate the Cypriot president and replace him with a puppet leader who would declare Cyprus part of Greece. This ran contrary to the agreements signed when Cyprus gained independence and was opposed by most Greek Cypriots as well the Turkish minority. Following the coup, Turkey invaded the Northern part of the Ireland to protect the large ethnic Turkish minority (who had often been treated as second class citizens by the ethnic Greeks since independence). Since then reunification attempts under the auspices of the EU and UN have failed, the Turkish Cypriots are mostly in favour, but the Greek Cypriots elected an strongly anti-reunification president to derail the process.
a country that is about one generation away from rule by Sharia
Have you been to Turkey? Do you know any Turks? I guess not. Last time I went to Turkey, I drank beer in cafes, saw attractive Turkish women walking around unaccompanied and never once felt uncomfortable as a "Westerner". Yup, there are problems in Turkey - the mistreatment of the large Kurdish minority as well as the nationalist posturing of some politicians and newspapers spring to mind - but to say it's almost a Sharia state is a joke.
Half of the 80s CDs I know you have in your dresser drawer were recorded with the D50. It sounded utterly amazing for its time.
Maybe it's a matter of taste, but I think the LA synths sound awful. The D50 itself was similar to the other famous digital synths of the 80's in that it was a sod to program without the optional programmer, so almost everyone ended up using the presets rather than making their own patches. For a nostalgia trip, try playing the presets on a Yamaha DX7 or Korg M1 and you'll realise how over used those sounds were. Then compare those sounds to the old analogue synths they replaced, and you'll see what I mean by thin sounding. For instance, my Korg Mono/Poly is far more easily programmed than any digital synth of the 80s, and it sounds fantastic.
Hmm, I had the CM32L module that's mentioned under the LAPC-1 section. It was a repackaged version of Rolands MT32 sound module, a digital synth that also included drum sounds. All the CM32L had on the front panel was a power switch and volume control, and needed to be accessed from a computer to do anything useful. It sounded terrible when it was new (very thin sounds with little character), and after a few days trying to decide what it was useful for I sold it. I can't imagine a soundcard version would be any better for serious music making, so I guess it was mostly used for games.
You'd already been reprimanded for a security violation of the SSD facility after your contract there had expired. You were using resources (on a machine you had been told not to use) to crack the passwords of not only an Intel facility you no longer worked at, but also another company. You installed a backdoor that while you may argue it was secure, allowed external access to the Intel network without having approval to do so. Every employer I have worked at would look on these unauthorised actions as gross misconduct, and I would be surprised if they didn't pursue legal action against the violator. The only reason anyone defends your actions are ignorance of the details of what you did and a blinkered willingness to support anyone that is seen as part of the "geek herd".
If PHP is an "all in one" solution for you then that's great. However, most people doing large scale Java development need a lot more than PHP can offer. Can you write generalised code in PHP that I can use in a standalone application as easily as I can use it in a web application? Can you unit test your PHP code on a truly modular basis, and outside of the full blown web environment? Does PHP have a clear and consistent API with little or no redundancy? Does PHP offer decent support for writing threaded code? Is there interfaces for a generic database API that has been implemented for a large selection of database engines? The answer to all these questions is "no".
Yup, GNOME IPC is based on CORBA, using an implementation of the C language mapping. I understand this is going to be replaced with a dbus based system as the CORBA stuff is a bit to generalised and heavyweight for a desktop system. CORBA is more like DCOM, while COM is more like the old System V IPC facilities.
Presumably, java solutions are expensive, that's why Fortune 500 companies need to have java-backed websites.
Java development is cheap. The open source tools compare very favourably to their commercial / pay to use equivalents. Examples are Eclsipse and NetBeans for development IDEs, Tomcat or Jetty for Application Containers and JBoss for Enterprise Containers. There are excellent libraries from the Apache projects, as well as things like JUnit, JMeter and Log4J. The Java runtimes from Sun and IBM are obviously free of license costs as well.
Staff costs are pretty good as well. If you look at the cost of a decent Java team versus say a C++ one, then while the cost of a senior developer may be similar, the less senior team members are likely to be cheaper to employ. This comes down to fact that many garduates are now learning Java at college, often to the exclusion of languages like C and C++. This increases the number of Java programmers on the market, making overall team costs lower as you can hire less experienced programmers with reasonable confidence they'll be able to do the job.
Finally, there is a much greater emphasise in the Java literature on best practices and "programming in the large" than I generally see in books on other programming languages. Dependency injection, consistent application of the MVC architecture, decent modularity, unit testable code - in my experience programmers are far more aware of the benefits of these ideas in the Java world, and are consciously applying them.
As for choosing between C#/Mono and Java, I'd go for the latter. While the core Java is far from perfect, it has far more mature support from application containers, third party libraries, and so forth. It also has an API that tries to be cross platform, whereas the .Net (and as a result Mono) APIs contain a number of design trade offs that reflect its target platform is restricted to Windows. The Forms API springs to mind (have they finally done away with absolute positioning in the current version?).
According to the Wikipedia entry for the Zaurus, Sharp discontinued the Linux based machines in February. I still managed to buy a new one a few weeks ago, but I guess the remaining stock will be gone pretty soon. The next series is slated to include a mobile phone, and will run a version of Windows. I find the Zaurus screen to be the ideal size and resolution for a hendheld - the keyboard's not as good as the last couple of Psion handhelds though, but you can use the stylus or attach a small USB keyboard.
I use a Fortran 95 compiler, but I believe it will also compile with the g77 compiler that came with GCC prior to version 4.0. Of course, the g77 compiler adds extensions to the ANSI standard for FORTRAN 77 so you're right to say that it's not "pure" FORTRAN 77 even if my program does compile with it.
Mmm, I was being a little bit glib. The extension to POSIX tar that unzips a file before untarring it is really just a shorthand that does the same as gzip -cd | tar xf -. On the BSDs, the j flag isn't needed as tar (or pax as tar) is intelligent enough to determine the format of the file before attempting to decompress it.
Doh! I meant Joshua Bloch, not Scott Meyers - he of course wrote the "Effective C++" books that inspired "Effective Java".
Most of the Java API was created by the JCP, not Sun
Nope, it was mostly written by Sun programmer. The Collections classes were heavily influenced by OpenStep and written by a team that included Scott Meyers (he of "Effective Java" fame). The "Rose" library that became Swing needed heavy reworking by Sun as the Netscape code was little more than a proof of concept.
Java is sorely lacking in both good documentation and any form of specification.
The Sun hosted webpages, along with the Netscape ones before they were gutted by AOL, provided a great resource on top of the API documentation. As for not having a specification, am I imagining that I have the "Java Language Specification" book by Gosling and friends on my desk? No, it looks and feels real enough, plus it's is very clear and concise (wish I could say the same about certain "authoritative" C++ books).
I think Java primarily succeeded because it was so poorly designed
Compared to what? The popular alternative when it appeared was Perl, a language that's such a mess it's being rewritten from scratch (but failing to learn any of the lessons). Given the "write only" nature of Perl with its potential for obfuscation and myriad ways of doing anything, Javas consistent API and more stringent rules were a breath of fresh air.
Err, no. Objective-C and the NeXTstep Foundation classes were inspired by the SmallTalk language and environment, then came Java which was directly inspired by NeXTstep. Gosling himself admits as much, and it makes sense as Sun considered using OpenStep to replace their OpenLook and CDE desktop environments in the mid 1990s. C++ is the language that was inspired by Simula and Modula, as they were the object oriented languages that Stroustrup was familiar with. Java is really SmallTalk with a more C like syntax, but thanks to that superficial similarity to C people wrongly assume that C++ was the big influence on its OO features.
I don't know much about Linux, but I get annoyed by some of the commands. tar xzvf does not work on bzip2 compressed tar files. As for bash, it supports POSIX incompatible extensions by default and adds nothing of significance over ksh. Only someone with limited experience would have to compile GNU stuff themselves, as knowledgable users go to the Blastwave or the Sun freeware websites. Again, only a numpty would statically link against zlib, meaning they have to recompile all their software that depends on it rather than updating a single shared library.
I agree that an "apology" is too strong - FORTRAN was pretty damned good for the first high-level language. If you look at some of the alternatives that evolved shortly after FORTRAN, such as BCPL, they were much more limited. It's got to be remembered that it was the first language that established the notion of making programs portable, even if the first couple of versions were fairly closely tied to specific IBM machines.
PROGRAM FAREWELL_JOHN
...
IMPLICIT NONE
PRINT *, 'Farewell John W. Backus'
STOP
END
*
* End indeed
*
You suggest books are a waste of time, and to just dive in and start hacking. This attitude is a major reason why there is so much bad code out there. As I point out in reply to another post that recommends a book on Lisp to someone wanting to learn C#, if you don't know the common idioms of the actual language you are using then you will produce terrible code. A good book wont just teach you the nuts and bolts of a language such as the raw syntax, it will also encourage good practices - what I think James Coplien or Tom Cargill described as teaching "programming in the large".
Sorry to go against the orthodoxy, but the only reason why you've mentioned SICP is as a way of saying "look at me, I know Lisp, I'm a true hacker". How many times have you really used Lisp in for commercial development, or applied its idioms clearly in another language? Lisp programming techniques do not translate well to the popular languages for commercial development such as C, C++, Java or C#, you end up with obscure hacks and sub-optimal code because you don't use the common idioms of those languages. I speak from experience as someone who has had to rewrite large chunks of C++ code written by Lisp hackers too arrogant to learn C or C++ properly. Lisp and Scheme have their place, but that's as academic curiosities which is why projects like Guile are languishing.
I wouldn't put much faith in the ability of HSBC to manage anything IT related. I work for a company selling trading software to top tier banks, many of them based in the UK. Overall, their IT staff are useless. Their seems to be two type of bank IT staffer - the permanent staff hired straight out of college, with no real world experience and no chance of acquiring any because the second kind of staffer, the contractors, do as little as possible but ensure their own job security by keeping the permies as ill-informed as possible.
This may sound cynical, but it is all too true. As an example, we had an IT person from one bank try to apply an update to their system by first untarring it on Windows and FTP'ing each file in turn to the Unix box. In the process they managed to change the case of all the files. This was despite the release notes (complete with cut 'n' paste, step by step instructions) telling them to apply the patch by untarring it on the Unix box.
Another example is a client who has switched from HP-UX to Solaris and now to Linux within the space of a year. With that kind of regular platform jumping it's no wonder this clients Windows TCO is lower than the one for Unix.
Thanks for the enlightening description of the eighteenth century usage of the word "commerce". I'll just add this earlier example of usage from the diaries of Samuel Pepys:
Friday 12th: Attended to affairs in the heart of the city, thence to commerce with the free and easy Miss MacTavish, a charming wench I may add.
this moron thinks that he can legislate morality.
this mormon thinks that he can legislate morality.
There, corrected that for you.
A remote kernel panic is a reliability issue - you can't exploit a paniced system! The OpenBSD team couldn't see a way to exploit the issue, Core subsequently proved that a panic could be avoided and exploit code executed, at which time it was upgraded to a security issue by the OpenBSD team. No conspiracy necessary.
the Turkish invasion had been cleared by the British before it was executed.
Have you got a credible source for that information? It certainly sounds possible. The independence treaty drawn up by Britain attempted to create equal rights for both the Greek and Turkish ethnic groups, a far cry from what happened in Ireland (not sure how that got into my original post). As for the Turkish invasion, to be fair the Greek military dictatorship handed Turkey a golden opportunity to further their own agenda.
So three people label an entire nation as "mugging, racist assholes" and you take it at face value? I certainly hope not. You also might want to have a word with your cousin as most "middle eastern" looking people in Barcelona are from Morocco or Algeria (they are responsible for a lot of petty crime though, but does that make all Moroccans or Algerians muggers?). As for the Greek girl, it sounds like she either doesn't know or doesn't want to know the facts about the partition of Cyprus. It's simply not a case of nice Greeks and nasty Turks, more a case of a dodgy military dictatorship in mainland Greece trying to absorb Cyprus. And as for Turks "emigrating everywhere" and the implication it's to do terrible things, what if I was to label you "a drug smuggling Latin American coming to London"?
Read the background to the partition of Cyprus. It came about after a coup was launched by the military junta running mainland Greece. The goal of the coup was to assassinate the Cypriot president and replace him with a puppet leader who would declare Cyprus part of Greece. This ran contrary to the agreements signed when Cyprus gained independence and was opposed by most Greek Cypriots as well the Turkish minority. Following the coup, Turkey invaded the Northern part of the Ireland to protect the large ethnic Turkish minority (who had often been treated as second class citizens by the ethnic Greeks since independence). Since then reunification attempts under the auspices of the EU and UN have failed, the Turkish Cypriots are mostly in favour, but the Greek Cypriots elected an strongly anti-reunification president to derail the process.
a country that is about one generation away from rule by Sharia
Have you been to Turkey? Do you know any Turks? I guess not. Last time I went to Turkey, I drank beer in cafes, saw attractive Turkish women walking around unaccompanied and never once felt uncomfortable as a "Westerner". Yup, there are problems in Turkey - the mistreatment of the large Kurdish minority as well as the nationalist posturing of some politicians and newspapers spring to mind - but to say it's almost a Sharia state is a joke.
Half of the 80s CDs I know you have in your dresser drawer were recorded with the D50. It sounded utterly amazing for its time.
Maybe it's a matter of taste, but I think the LA synths sound awful. The D50 itself was similar to the other famous digital synths of the 80's in that it was a sod to program without the optional programmer, so almost everyone ended up using the presets rather than making their own patches. For a nostalgia trip, try playing the presets on a Yamaha DX7 or Korg M1 and you'll realise how over used those sounds were. Then compare those sounds to the old analogue synths they replaced, and you'll see what I mean by thin sounding. For instance, my Korg Mono/Poly is far more easily programmed than any digital synth of the 80s, and it sounds fantastic.
Hmm, I had the CM32L module that's mentioned under the LAPC-1 section. It was a repackaged version of Rolands MT32 sound module, a digital synth that also included drum sounds. All the CM32L had on the front panel was a power switch and volume control, and needed to be accessed from a computer to do anything useful. It sounded terrible when it was new (very thin sounds with little character), and after a few days trying to decide what it was useful for I sold it. I can't imagine a soundcard version would be any better for serious music making, so I guess it was mostly used for games.
You'd already been reprimanded for a security violation of the SSD facility after your contract there had expired. You were using resources (on a machine you had been told not to use) to crack the passwords of not only an Intel facility you no longer worked at, but also another company. You installed a backdoor that while you may argue it was secure, allowed external access to the Intel network without having approval to do so. Every employer I have worked at would look on these unauthorised actions as gross misconduct, and I would be surprised if they didn't pursue legal action against the violator. The only reason anyone defends your actions are ignorance of the details of what you did and a blinkered willingness to support anyone that is seen as part of the "geek herd".