6 ms·
Pythonic syntax to declutter Javascript
- andybak 17y agoWhatever anyone can say about Python you can't deny how nice it looks on the page.
- __david__ 17y agoYuck. 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.
- endtime 17y agoAwesome, 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 http://jashkenas.github.com/coffee-script/#overview
- Semiapies 17y agoVery 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.
- donaq 17y agoHmm, 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.
- tumult 17y agoI imagine it does the parse up-front rather than a separate interpretation step during execution.
- donaq 17y agoGranted, but that's still an extra step that I wouldn't want clients to have to take.
- jrockway 17y agoA 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 17y agoFirefox 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
- jrockway 17y agoVimperator 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.)
- ZeroGravitas 17y agoThey'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?
- donaq 17y agoWhat's a "scripting language"? Or interpreted language, if the nomenclature is that important.
- malkia 17y agoNothing 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 17y agoI 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 17y agoActually, it looks like a separate script translates all script blocks with type="text/pyscript"
- Semiapies 17y agoYou can't minify, but you can still gzip.
- harto 17y agoThis 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 17y agoJavaScript has been fixed, and its new name is jQuery.
- ubernostrum 17y agojQuery only attempts to deal with the DOM. Confusing a browser API and a programming language is a mistake to be avoided.
- clemesha 17y agoBroadly speaking, I honestly agree with this.
- nir 17y agoJavascript 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 17y agoWith 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 17y agoIs ?: really not right-associative in JavaScript? I thought PHP was the only language that messed that one up...
- WalkingDead 17y agoDoesn't work on V8, at least not on the version I am using. Which JS engine is 1.8.1 complaint?
- JeffJenkins 17y agoSeems like you might be better off using the python->JS converted in pyjamas and writing things in straight python: http://pyjs.org/ http://pyjs.org/
- s3graham 17y agoI wrote a browser one too http://skulpt.org/ 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 17y agoIt 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-sensitivity-post-mortem.html http://www.unlimitednovelty.com/2009/03/indentation-sensitiv...
- stcredzero 17y agoThe 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.)