Fortran has had modularity since Fortran 90, and modern Fortran has object orientation, inheritance and polymorphism.
First, no one is using these. Second, they can't compare with what other languages offer and they make no sense, which is why no one is using these.
In terms of numerical performance the Fortran compiler will still leave the C++ compiler laying on the ground, weeping.
Where did I say otherwise? I talked about *control* of performance, not performance that is obtained with default, automatic and built-in processes.
So what exactly is the high-level programming feature that C++ has that Fortran doesn't?
FORTRAN is not really low-level, but it's not really high-level either. For example, unlike a language like MATLAB, you still write loop nests, and you rely on the compiler to detect that some loop nests can be parallelized and to parallelize them (and even if it can do a bit better than in C, the compiler still can't guess everything for you). The highest level languages or library frameworks allow you to define several components that are then combined to parallelize a given computation element in a given fashion. FORTRAN typically lacks both the high-level (generic combination) and the low-level (explicit memory and parallelization management) facilities to achieve such things. It is a simple, single-purpose, non-extensible language, where you need to keep code simple and rely on compiler optimization magic.
C++, on top of very low-level, has very high-level constructs. For example it has facilities (templates, overloading, specialization) that allow to define an domain-specific language embedded within the language itself, that can be analyzed and for which C++ code can be generated as the C++ code is compiled. Generative and generic programming techniques enable no-cost definition of high-level constructs with very rich semantics to which you can attach generic primitives to build the patterns and algorithmic skeletons which can be used to generate many applications within a specific domain, domain for which it is humanly known how optimization or parallelization should be done, allowing you to engineer it into the system.
The fact that the language itself allows the compiler to be programmed enables to enrich the language with more knowledge of a particular domain and how to best deal with it. General-purpose approaches only go so far; domain-specific libraries is where most of the value is. Obviously, this is only really useful if you have value to add on top of the generic approaches that your compiler has built-in, or if you wish to have control over how your application makes use of the hardware.
Advanced optimization takes so much time that even traditional compilers do not perform certain types of optimization. A JIT requires a fast compilation, and therefore does relatively little in the way of optimization.
Numerical computing is usually very predictable code, and languages should use that. You also want very lightweight binaries, with predictable performance and memory usage, and suitable for embedded systems.
JIT are nowhere near what traditional compilers can achieve. And that is despite the crazy JavaScript/Ruby/Python/Whatever trends we have these days where everyone wants to write their own new broken compiler.
Well, strictly speaking, you cannot patent a programming language (at least not in Europe), since it's a fully descriptive entity, but you can patent general methodologies in which to evaluate constructs in a language with certain properties, for example by the use of a just-in-time compilation techniques.
While not patenting the language per-se, it is as close as it gets.
gcj does not infringe any of Oracle's patents
They probably don't care enough about gcj to consider suing them, I'm sure they can find some relevant material in their huge patent portfolio.
They want to design a language for speed, but they already made choices in the language that hamper speed dramatically, like dynamic typing. Dynamic typing adds overhead to every function call; it's fine if your functions do a lot of work, not so much if they do relatively little and are called very often. It looks like if you want to write fairly low-level code, you'll still need to write it in C there...
It also looks like their approach to parallelization is very heavy-weight and, albeit usable in clusters, it will yield both poor scalability on large systems and poor performance on simple multi-core systems.
There is already a high-level, dynamic and accessible language for numerical computing, it's MATLAB. It wraps a lot of high-performance libraries, using them without the user even noticing it. Code in MATLAB can easily be faster than in C for some constructs because C compilers, unlike MATLAB, do not recognize some patterns and replace them by optimized library calls. For this reason, MATLAB is great when you're coding with high-level constructs, but suffers from poor performance when using low-level constructs (such as accessing data element by element) for the same reasons as pointed out above.
A new language for high-performance numerical computing should allow both the high-level programming of MATLAB and the possibilities of a low-level statically compiled language like C. The best contender for this is C++, which has tons of high-level and fast libraries for transcendental functions, linear algebra, statistics, image processing, signal processing, etc.
As for FORTRAN, it's great for writing one thing well and fast, but it doesn't have any mechanisms for more high-level programming or code re-use, which means it is annoying to maintain, extend, or to even guarantee consistencies between the different subroutines of a large application. It also relies a lot more on what the compiler will do, while with C/C++ there is more control on what happens with regards to vectorization, parallelization or data transfers, which can be critical for heterogeneous systems.
if you're using this implementation or any GPLv2 compliant derivative of it you have a license to use the language
You have a license to use the software.
The language itself isn't even subject to copyright. It can be subject to patents though, and having the license for a particular implementation doesn't mean you can use it without patent infringement.
I must have spent 10 minutes trying to get the website to give me the list of projects, preferably by theme, to which I failed. All I can see is three random projects on the main page.
Careful? So you truly believe anyone can be so careful so as not to leave any trace anywhere?
Yes, one can easily not leave any trace that would be findable using practical methods.
go on an internet which is wiretapped
You read slashdot yet still don't know there is no reliable method to actually do this? Just use encryption and it's not possible to wiretap anymore.
Maybe because I live in a city with video cameras, go on an internet which is wiretapped, and know the government is watching everything we do that I don't believe anyone in any city in the USA is going to fly under the radar.
Let me get this right, you're advocating that the government should be spying on everything everyone does, leaving no privacy or freedom to anyone, just so that some criminals detaining life-altering information could avoid torture?
This is typical male arrogance. Females are shut out of tech carees by this structural patriarcy and you blame us women? This is bull. It's the fault of the males. Females are more capable, have higher grades
This is typical feminism, and not in a good way. That kind of behaviour only stigmatises women and makes their condition even worse.
Also, I think you're clearly deluded here. In terms of statistics, men are better than women in software, even if some women are highly competent and better than a lot of men. This is mostly due to conditioning. Being good at software development takes a lot of time and dedication from an early age; the priorities in the lives of young men are more able to fulfill those requirements than that of young women.
better language skills as well as possess much stronger social abilities
Those are not very important qualities in software development. Therefore women profiles are better suited for other types of jobs when those skills and abilities do matter.
Males knows this deep down and discriminate against women to protect their own failed selves.
The rants of females not being given jobs has resulted in a lot of positive discrimination, which did nothing to help the condition of women in the workforce. Indeed, men have come to see that some women are only hired because they're women, taking jobs that would have otherwise been theirs, which definitely isn't nice, especially in those times of recession. This is why some men have come to be very careful of hiring women.
Note your wife is in management, not actual development.
Women are best used in management or user-facing jobs. As pure software engineers, i.e. people that spend their time working on their own on their computer, they'd lose one of the big advantages of being women.
People need to acknowledge that men and women are different, and that society is conditioned so that men are more amenable to women. As a result, women have strong advantages when it comes to certain types of work, and for them to choose others would be a sub-optimal use of their capabilities.
The amount of money you'll be able to get in academia depends vastly of where you are, who you work with, and what you do.
Assuming you're in the US, it will vastly depend on which university you are in. Try to get close to a team in a prominent university. Getting a good job in academia is mostly a matter of relations.
First, no one is using these.
Second, they can't compare with what other languages offer and they make no sense, which is why no one is using these.
Where did I say otherwise? I talked about *control* of performance, not performance that is obtained with default, automatic and built-in processes.
FORTRAN is not really low-level, but it's not really high-level either. For example, unlike a language like MATLAB, you still write loop nests, and you rely on the compiler to detect that some loop nests can be parallelized and to parallelize them (and even if it can do a bit better than in C, the compiler still can't guess everything for you). The highest level languages or library frameworks allow you to define several components that are then combined to parallelize a given computation element in a given fashion. FORTRAN typically lacks both the high-level (generic combination) and the low-level (explicit memory and parallelization management) facilities to achieve such things. It is a simple, single-purpose, non-extensible language, where you need to keep code simple and rely on compiler optimization magic.
C++, on top of very low-level, has very high-level constructs. For example it has facilities (templates, overloading, specialization) that allow to define an domain-specific language embedded within the language itself, that can be analyzed and for which C++ code can be generated as the C++ code is compiled.
Generative and generic programming techniques enable no-cost definition of high-level constructs with very rich semantics to which you can attach generic primitives to build the patterns and algorithmic skeletons which can be used to generate many applications within a specific domain, domain for which it is humanly known how optimization or parallelization should be done, allowing you to engineer it into the system.
The fact that the language itself allows the compiler to be programmed enables to enrich the language with more knowledge of a particular domain and how to best deal with it. General-purpose approaches only go so far; domain-specific libraries is where most of the value is.
Obviously, this is only really useful if you have value to add on top of the generic approaches that your compiler has built-in, or if you wish to have control over how your application makes use of the hardware.
Putting latex files under revision control just works. Doesn't work so well with word/openoffice.
Advanced optimization takes so much time that even traditional compilers do not perform certain types of optimization. A JIT requires a fast compilation, and therefore does relatively little in the way of optimization.
Numerical computing is usually very predictable code, and languages should use that. You also want very lightweight binaries, with predictable performance and memory usage, and suitable for embedded systems.
JIT are nowhere near what traditional compilers can achieve. And that is despite the crazy JavaScript/Ruby/Python/Whatever trends we have these days where everyone wants to write their own new broken compiler.
Well, strictly speaking, you cannot patent a programming language (at least not in Europe), since it's a fully descriptive entity, but you can patent general methodologies in which to evaluate constructs in a language with certain properties, for example by the use of a just-in-time compilation techniques.
While not patenting the language per-se, it is as close as it gets.
They probably don't care enough about gcj to consider suing them, I'm sure they can find some relevant material in their huge patent portfolio.
Copyright, patents, and trademarks all work independently of each other.
There are only 9 projects!?
They want to design a language for speed, but they already made choices in the language that hamper speed dramatically, like dynamic typing. Dynamic typing adds overhead to every function call; it's fine if your functions do a lot of work, not so much if they do relatively little and are called very often.
It looks like if you want to write fairly low-level code, you'll still need to write it in C there...
It also looks like their approach to parallelization is very heavy-weight and, albeit usable in clusters, it will yield both poor scalability on large systems and poor performance on simple multi-core systems.
There is already a high-level, dynamic and accessible language for numerical computing, it's MATLAB. It wraps a lot of high-performance libraries, using them without the user even noticing it. Code in MATLAB can easily be faster than in C for some constructs because C compilers, unlike MATLAB, do not recognize some patterns and replace them by optimized library calls. For this reason, MATLAB is great when you're coding with high-level constructs, but suffers from poor performance when using low-level constructs (such as accessing data element by element) for the same reasons as pointed out above.
A new language for high-performance numerical computing should allow both the high-level programming of MATLAB and the possibilities of a low-level statically compiled language like C. The best contender for this is C++, which has tons of high-level and fast libraries for transcendental functions, linear algebra, statistics, image processing, signal processing, etc.
As for FORTRAN, it's great for writing one thing well and fast, but it doesn't have any mechanisms for more high-level programming or code re-use, which means it is annoying to maintain, extend, or to even guarantee consistencies between the different subroutines of a large application. It also relies a lot more on what the compiler will do, while with C/C++ there is more control on what happens with regards to vectorization, parallelization or data transfers, which can be critical for heterogeneous systems.
Buy a car in a foreign country, problem solved.
You have a license to use the software.
The language itself isn't even subject to copyright. It can be subject to patents though, and having the license for a particular implementation doesn't mean you can use it without patent infringement.
Because English native speakers are not very good with Icelandic names.
Note that while a language cannot be subject to copyright, it can be subject to patents.
You're talking about some software, a given implementation of the Java programming language.
The Java programming language is not software, it's a syntax and semantics.
Why is it that the US is still stuck in the dark ages of the Internet?
In C++, textual order matters.
Doesn't work with languages such as C++....
In the US, most households earn between $30,000 and $75,000 and most people have degrees between high school diploma and phd thesis.
All the statistics given in the summary about irrelevant minorities.
Reverse engineering is illegal in several countries. Law has little to do with morals.
I must have spent 10 minutes trying to get the website to give me the list of projects, preferably by theme, to which I failed.
All I can see is three random projects on the main page.
Those guys need to learn the basics of usability.
Yes, one can easily not leave any trace that would be findable using practical methods.
You read slashdot yet still don't know there is no reliable method to actually do this? Just use encryption and it's not possible to wiretap anymore.
Let me get this right, you're advocating that the government should be spying on everything everyone does, leaving no privacy or freedom to anyone, just so that some criminals detaining life-altering information could avoid torture?
This is typical feminism, and not in a good way. That kind of behaviour only stigmatises women and makes their condition even worse.
Also, I think you're clearly deluded here. In terms of statistics, men are better than women in software, even if some women are highly competent and better than a lot of men. This is mostly due to conditioning. Being good at software development takes a lot of time and dedication from an early age; the priorities in the lives of young men are more able to fulfill those requirements than that of young women.
Those are not very important qualities in software development. Therefore women profiles are better suited for other types of jobs when those skills and abilities do matter.
The rants of females not being given jobs has resulted in a lot of positive discrimination, which did nothing to help the condition of women in the workforce. Indeed, men have come to see that some women are only hired because they're women, taking jobs that would have otherwise been theirs, which definitely isn't nice, especially in those times of recession.
This is why some men have come to be very careful of hiring women.
There was absolutely nothing in your comment that was specific to women.
Note your wife is in management, not actual development.
Women are best used in management or user-facing jobs. As pure software engineers, i.e. people that spend their time working on their own on their computer, they'd lose one of the big advantages of being women.
People need to acknowledge that men and women are different, and that society is conditioned so that men are more amenable to women. As a result, women have strong advantages when it comes to certain types of work, and for them to choose others would be a sub-optimal use of their capabilities.
Whenever wiretapping is not effective because the subject is careful and does not transfer information in unsafe manners?
The amount of money you'll be able to get in academia depends vastly of where you are, who you work with, and what you do.
Assuming you're in the US, it will vastly depend on which university you are in. Try to get close to a team in a prominent university. Getting a good job in academia is mostly a matter of relations.
It hasn't been done yet, this is merely a project idea.
It is likely it won't do half of what he'd like to do.