7 ms·
Move.js
- knowtheory 15y agoFor a language that's targeted at non-programmers I don't see how Move offers any benefits over Coffeescript, or even Javascript itself particularly. Programming should change the way you think. The language is an artifact that you program through, but that's not the critical problem in conceiving of and executing good software design. A cursory examination of the Move site does not make it look more attractive than other Javascript based languages, and the explanations it offers i don't think would make it more accessible to non-programmers either. What gives? /me is confused.
- superted 15y agoA little more details from the author of Move.js: http://rsms.me/2011/07/30/an-update-on-move.html http://rsms.me/2011/07/30/an-update-on-move.html
- knowtheory 15y agoThe more i read, the less i like :( The prototypal inheritance example in that post does not read in an intuitive manner, and certainly don't improve the clarity of meaning for prototypal inheritance (especially now that it's using the word "class"). The only compelling thing i can find in here so far is that it's trying to provide common functionality from ES5. But again, i don't see what that has to do with building a language that is easy for non-programmers to grok, making the Javascript semantic model more accessible, or even making JS coding more readable.
- j-ashkenas 15y agoFor Rasmus' opinions on Move vs CoffeeScript, see: http://www.quora.com/Rasmus-Andersson-What-are-the-pertinent-differences-between-Move-and-Coffeescript-for-you http://www.quora.com/Rasmus-Andersson-What-are-the-pertinent...
- knowtheory 15y agoI should add that i'm not using a fair cognitive framing. It doesn't have to be Coffeescript vs Move or Move vs anything. I don't think that rsms achieves what his site seems to set out to do, although i agree that a common ES5 behavioral platform is a good thing. His opinion of CoffeeScript is interesting, and provides some insight into his motivation, i guess, but i think i may have introduced a red-herring into the conversation.
- beaumartinez 15y agoFor a "my first programming language", it's a bit too "programming language". It took me a few seconds to understand what hello = ^{ "Hello " + name } does. I (and my grandmother as well, for that matter) would understand that a lot better if it was a lot more explicit, like function hello(name) do "Hello " + name
- shin_lao 15y agoI agree, ^{} is fairly inadequate to delimit a function.
- masklinn 15y agoLikewise. Why the hell did they get a syntax shoehorned into C for a language which does not have such constraints? If they wanted "smaller" lambdas, why not use e.g. C#'s syntax? Or Scala's? Also, implicit scoping => yet an other broken language. Not worth looking at.
- tomp 15y agoMay I ask, why is implicit scoping bad? I think it is very good for a dynamically typed language, where variables do not need to be declared beforehand. What other solution do you propose? Demanding all variables are declared? That's a very good idea, but it goes against the spirit of javascript and other dynamic languages.
- masklinn 15y ago> May I ask, why is implicit scoping bad? I think it is very good for a dynamically typed language, where variables do not need to be declared beforehand. After extensive experience with it in Python and Ruby, I don't. It's just too prone to typos and broken scoping to be worth it. > What other solution do you propose? Demanding all variables are declared? yes. > That's a very good idea, but it goes against the spirit of javascript and other dynamic languages. No it does not. * Javascript has explicit scoping, it's mandatory in strict mode (ES5) and extensions add even more flexible scoping methods (e.g. `let` in Mozilla's JS 1.7[0]) * Likewise with Perl under `use strict` * Or even in VB and VBScript using Option Explicit * Smalltalk mandates declaring local variables * Scheme (and more generally lisps) make extensive use of `let`-type blocks Dynamic typing and implicit scoping are entirely orthogonal, and I truly find no value whatsoever in implicit scoping: it's a hindrance in every situation, and it helps in none. [0] https://developer.mozilla.org/en/New_in_javascript_1.7#Block_scope_with_let_(Merge_into_let_Statement) https://developer.mozilla.org/en/New_in_javascript_1.7#Block...
- beaumartinez 15y agoThe project's GitHub repo[1] does a much better effort of selling it: When compared to JavaScript, Move has the following key features: - Simpler. E.g. there's only one way to declare functions, no need for var declarations, only a single type of equality operators and no need for terminating statements with semicolons. - Less boiler-plate code needed. Move introduces a few carefully selected features like the "import" and "export" keywords, and @-shorthand for this access. - Move runs in any >=ES3 JavaScript runtime and thus can be used as a universal programming language for everything from running in web browsers to powering complex offline systems. Also, interestingly, it's from the guy behind Kod and Spotify's design. [1] https://github.com/rsms/move https://github.com/rsms/move
- Stuk 15y agoSo the differences between this and Javascript that I can see are: * ^ replacing function * default values for arguments, ^(x: 4){...} * print instead of console.log * array slicing x[1:3], x[:-2] * embedded HTML, div = <div/> Interesting, but this isn't convincing enough for me to use it. Edit: like beaumartinez says, the Github page explains the differences much better than the site: https://github.com/rsms/move https://github.com/rsms/move
- masklinn 15y agoAlso implicit variable scoping. And does not (as far as I can see) facilitate properties creation, nor does it implement tuple unpacking/multiple return values, and positional v keyword arguments use completely different syntaxes (not sure if you can even mix them). Overall, seems very half-assed, a few cosmetic changes (half of them making the language worse instead of better) and that's about it.
- exDM69 15y agoprint foo.makeHello capitalize name The right associativity of function application is a very peculiar feature and it turns my Haskell brain upside down.
- masklinn 15y agoIt also makes my non-haskell brain as well, for what it's worth. edit: wait, its functions are not curried, so I'm not sure it's right-associative, it just looks that way if you've read haskell code in the past: positional arguments are still tuples (comma-separated) If this code was haskell and you translated it to Move it would look like this: `print foo.makeHello, capitalize, name`
- swah 15y agoI just loved how it clearly told me its for beginners. That means I can skip this one! Yay!
- NARKOZ 15y agoLike a Ruby
- keyle 15y agoThis is a nice idea but the execution is convoluted. I think writing LOGO in the browser with something similar would be cool. http://en.wikipedia.org/wiki/Logo_(programming_language) http://en.wikipedia.org/wiki/Logo_(programming_language) FORWARD 100 LEFT 90 FORWARD 100 LEFT 90 ... is a better introduction to programming...
- joelthelion 15y agoYour wish has been fulfilled! http://www.calormen.com/logo/ http://www.calormen.com/logo/
- mykhal 15y agoone would expect that such language would have fixed js objects, e.g. arrays not allowing wild things like a = []; a[10] = undefined; a["x"] = "foo"
- seasoup 15y agoThis seems to me to take up a similar space in javascript as velocity and freemarker do for Java. They attempt to make programming simpler for designers to work with and instead end up with a language that is too complicated for a designer and a completely new syntax for an engineer. Now, it takes more time for anyone to work with it. For example, no need for var declarations. Well, wait a minute, how do I as an engineer scope a variable then? In javascript, scope is determined by functions when using a var and is global otherwise. Are all variables global? Or are they just in a namespace? Or are they all scoped as if they had var in front? Things like this will trip me up all the time and I will always have to refer to documentation. For designers, mostly they don't want to work with functions and variables anyway, how big of a benefit is it that they don't need a var and there is only one way to declare a function? Learning this language seems like it would take the same amount of overhead as learning identical features in javascript. Why not just learn a subset of javascript instead?