function triangle(a,b){
if(a > 0 && b > 0 ){
function sqroot(x){
if( x > 0 ){
return Math.pow(x,.5);
}
else {
return 0;
}
}
return sqroot( a*a + b*b );
}
else {
return 0;
}
}
Can be made much cleaner:
function triangle(a,b){
if (a <= 0 || b <= 0 ) return 0
function sqroot(x){ return ( x > 0 ? Math.pow(x,.5) : 0 ) }
return sqroot( a*a + b*b )
}
I don't know about a whitespace-sensitive language in the browser. Much JS is written by non-coders, later quickly edited on live servers (yeah, I know. But that's reality) etc.. It all comes down to taste, of course, but personally I find Ruby at least as readable as Python, so I'm not sure whitespaces are where the elegance is found.
Nothing against python, but pyscript is terrible idea to go in the browser? Why? Because you can't remove the spaces, you can't compress your source code so that it uses less bandwidth.
Also really, honestly, I hate to post python script somewhere in forum, and because of the identation someone else cannot test it.
Hey there is clojurehub@appspot.com - right - you type something in google.wav - send it to the address above, and the clojure appspot program gives you back the result - nice REPL :)
Now how would that work with python, or this pyscript? Just thing about it?
This is reminiscent of those occasional attempts to "fix" Lisp's parentheses. In practise, I've never found JavaScript's braces and semicolons distracting. I just don't notice them that much.
Awesome, thanks. Going to see if I can use this for my crypto class (the project is to build an encryption system on top of Twitter, using GreaseMonkey).
The stark modern minimalism of the language causes the meaning of code to float on the syntax like a feather on water.
I think Python is dandy. I will be starting a new project on it, actually. But "stark" and "modern" are relative. While there's a lot of very pretty Python that reads like pseudocode, there's also a bit of Python that goes down the same sinful path as C header files or Perl in the use of arcane symbols. There's no reason why things like meta-programming have to look like anything different from plain old programming.
That said, I think Python hits a very attractive middle ground. There is just enough syntax to fit the most basic cultural expectations of technical people as well as a large number of programmers. That, if you think about it, is a stunning achievement in human-interface design. (Read that straight-up!)
(And to be fair: Smalltalk - even more minimal, but ignores lots of important cultural expectations. Lisp - even more minimal and just about everything, no matter how meta, looks like normal Lisp. But on the downside, everything looks like normal Lisp.)
Yuck. I appreciate Python as much as the next guy, but explicit curlies give you way more flexibility in the appearance of your code. Yes, that can be good or bad but so is anything that gives you more power.
Not to mention that in his samples half the curlies were unnecessary.
I'm not sure if it's better to write in real Python or just know that you're using JS with different syntax ala pyscript. Emulating all the bizarre Python attribute access behaviour in JS (e.g. __get__) is quite complex.
It can be educating to look at the history of Reia (Python/Ruby-like language for Erlang VM). At first its author tried to hard to make Reia indentation sensitive (like Python). Finally he reconsidered after discovering several limitiations: http://www.unlimitednovelty.com/2009/03/indentation-sensitiv...
Hmm, a language interpreted by a parser implemented in a scripting language. Won't that be rather slow? I'd be more comfortable with using it as a compiler that outputs js I can then include, rather than letting clients' browsers interpret it on the fly.
They've been talking for years about written more and lower layers with Javascript. I'm not sure how far along they've got, it would be interesting to know.
Obviously parts are C++ but isn't interfacing with such code one of the defining characteristics of a "scripting language" and javascript in particular?
Vimperator and Conkeror do some pretty complicated manipulation in pure JavaScript. (Sure, the rendering core is in C++, but that's because C++ was all they had when it was first developed.)