Let me see if I got that right. You see the need to transform:
float Q_rsqrt( float number )
into:
DECLARE FUNCTION q_rsqrt (float number) THAT RETURNS float AS
but you see no need to do anything to:
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y;
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) );
return y;
I intentionally didn't refer to your later, more "concise" attempt, because the topic of discussion is the "English -Likeness" and, unlike "DECLARE FUNCTION q_rsqrt (float number) THAT RETURNS float AS", your "float function sqrt(float number)" doesn't add English likeness to the syntax.
Now, your assertion was that "what English-likeness does is it speeds up learning". Since we're all just flinging around theories unsupported by research and data, I'd like to posit that the main motivation behind attempts to do away with programming languages and replace them with natural languages is the misconception that you can learn to program without learning to think like a programmer. It doesn't really have much to do with syntax itself, it has to do with inherent complexity of programming.
To take your example, Lisp uses an unusual syntax which makes it disorienting at first. This "disorientation" is something people will deal with in a matter of days, whereas their struggle to plumb the depths of macros and functional programming will take much, much longer.
All in all, I believe that small degrees[1] of "English-Likeness" might help English speakers learn the syntax of the language a bit faster, but that benefit would prove insignificant when compared to the rest of the effort necessary to learn to program.
[1]: Small enough to avoid "polluting" the language with the problems @raganwald writes about.
I've tried not to bring up "English-Likeness" aspect because that's a whole other can of worms. But since it's out there now...
I don't believe this is einhverfr's intent in the least, but the promotion of English is often an ethnocentric activity. Why not a dialect of Chinese (so many native speakers, high information density per character)? Why not a dialect of Spanish (multi-continental reach of native speakers, high incidence of cognates to Romance languages, highly predictable orthography and phonetics)? Why not any language spoken in the Middle East or India or former Soviet states?
If human accessibility were truly the issue, why should we focus our efforts on English speakers -- the people already the most aided by existing language-like tokens! -- instead of promoting efforts to "translate" programming keywords and constructs to other languages? I'll grant that one does not necessarily preclude the other, but I would argue that the former is chasing after diminishing returns at this point in time, whereas the latter represents a significant opportunity to increase ease of access to programming globally.
I did mention features of English which make it more condusive to being such an archetype (i.e. that computer languages immitate English). I don't think it is the only choice. I think in general that creole languages and their descendants (that includes English btw) have significant syntactic advantages in this regard. The issue is morphological simplicity.
This doesn't mean I am a fan of such languages from a natural language perspective, btw... I am just saying if I was choosing a language to build a computer language based on, I would not choose a language where imperative tenses of verbs might vary depending on number of addressees, for example....
As I think of it, it might be very interesting to look at computer language design based on other natural languages and see what other problems or opportunities come up. For example, I wonder about slot-based polysynthetic languages (like Algonquin). A computer language based on that would have to be fundamentally different from what we have now.
Let me see if I got that right. You see the need to transform:
into: but you see no need to do anything to: I intentionally didn't refer to your later, more "concise" attempt, because the topic of discussion is the "English -Likeness" and, unlike "DECLARE FUNCTION q_rsqrt (float number) THAT RETURNS float AS", your "float function sqrt(float number)" doesn't add English likeness to the syntax.Now, your assertion was that "what English-likeness does is it speeds up learning". Since we're all just flinging around theories unsupported by research and data, I'd like to posit that the main motivation behind attempts to do away with programming languages and replace them with natural languages is the misconception that you can learn to program without learning to think like a programmer. It doesn't really have much to do with syntax itself, it has to do with inherent complexity of programming.
To take your example, Lisp uses an unusual syntax which makes it disorienting at first. This "disorientation" is something people will deal with in a matter of days, whereas their struggle to plumb the depths of macros and functional programming will take much, much longer.
All in all, I believe that small degrees[1] of "English-Likeness" might help English speakers learn the syntax of the language a bit faster, but that benefit would prove insignificant when compared to the rest of the effort necessary to learn to program.
[1]: Small enough to avoid "polluting" the language with the problems @raganwald writes about.