

Pythonic syntax to declutter Javascript - mcantelon
http://www.azarask.in/blog/post/making-javascript-syntax-not-suck/

======
nir
Javascript example in the article:

    
    
      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.

~~~
TNO
With JavaScript 1.8.1:

    
    
        function triangle(a,b)
            a <= 0 || b <= 0 ? 0 : (a = a*a + b*b) > 0 ? Math.pow(a,.5) : 0;

~~~
jrockway
Is ?: really not right-associative in JavaScript? I thought PHP was the only
language that messed that one up...

~~~
TNO
I wrapped it with parentheses out of habit. _updated_

~~~
jrockway
That's a relief :)

------
malkia
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?

~~~
sshumaker
I would imagine you pre-process the pyscript before sending it to the browser
as part of your deploy step. So you don't have the compression issues.

~~~
harto
Actually, it looks like a separate script translates all script blocks with
type="text/pyscript"

------
harto
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.

~~~
mahmud
JavaScript has been fixed, and its new name is jQuery.

~~~
ubernostrum
jQuery only attempts to deal with the DOM. Confusing a browser API and a
programming language is a mistake to be avoided.

------
endtime
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).

Also - reminds me of CoffeeScript (which has similarly clean (if less
Pythonic) syntax, but has to be compiled to Javascript, I believe).
<http://jashkenas.github.com/coffee-script/#overview>

------
stcredzero
_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.)

------
andybak
Whatever anyone can say about Python you can't deny how nice it looks on the
page.

------
Semiapies
Very alpha (the lack of anonymous functions is a killer even for experimental
use), but it is clean-looking. A project to watch or jump into.

------
__david__
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.

------
JeffJenkins
Seems like you might be better off using the python->JS converted in pyjamas
and writing things in straight python:

<http://pyjs.org/>

~~~
s3graham
I wrote a browser one too <http://skulpt.org/>

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.

------
ash
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...](http://www.unlimitednovelty.com/2009/03/indentation-sensitivity-
post-mortem.html)

------
donaq
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.

~~~
jrockway
_A parser implemented in a scripting language_

What's a "scripting language"?

 _Won't that be rather slow?_

Firefox is implemented in JavaScript. It's pretty fast, and a little more
complicated than a parser.

~~~
pgbovine
_Firefox is implemented in JavaScript_

i'm pretty sure that much of the performance-critical core is in C++;
javascript is th UI/extensions layer, to the best of my knowledge

~~~
ZeroGravitas
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?

