6 ms·
>Just show me the 3 things I can do in your lang that I can't do anywhere else You won't find such a new language. Most languages in use are already known to b
by jsprogrammer 11y ago
>Just show me the 3 things I can do in your lang that I can't do anywhere else
You won't find such a new language. Most languages in use are already known to be Turing-complete. There is no new computation that "can't [be done] anywhere else [, except in some new language]".
It would be highly useful to give examples of things that are easier to do in your new language though.
- aerovistae 11y agoIt's not about computational power; this should have been obvious and not needing of clarification. Unless of course you're trying to argue that the difference between python and javascript, for instance, is what each is capable of computing?
- jsprogrammer 11y agoPython and Javascript should be able to compute exactly the same things (assuming an appropriate compiler/runtime and infinite time & space): any computable function.
- aerovistae 11y agoExactly. And yet they are profoundly different. That's my point. Obviously the things you can do in JS that you can't do in Python, or vice versa, have nothing to do with computation, so your original comment here is kind of pointless.
- jsprogrammer 11y agoWhich non-computational things can you do in JS and Python can you not do in the other and vice versa? I believe my machine can only do computations.
- scott_s 11y agoaerovistae is talking about the abstractions provided by the language. Yes, all Turing-complete languages can all compute all computable functions. But not all languages structure those computations in the same way, or make the same things easy or hard. For example, Python has the concept of a decorator: https://docs.python.org/2/glossary.html#term-decorator https://docs.python.org/2/glossary.html#term-decorator. You can achieve the same thing in a variety of ways in JavaScript, but Python makes the concept of "a function that wraps another function" a central abstractions by providing syntax directly for it.
- aerovistae 11y agoPrecisely. Likewise, in JavaScript I can pass complex anonymous functions (not just little lambdas) as function arguments. I cannot do this in Python.
- jsprogrammer 11y agoaerovistae specifically talked about the computational ability of languages: >Unless of course you're trying to argue that the difference between python and javascript, for instance, is what each is capable of computing?
- scott_s 11y agoIn a discussion like this, it's best to assume that all parties understand the ramifications of Turing-completeness. The charitable interpretation is that aerovistae meant what I said - which is apparently the case.
- jsprogrammer 11y agoI agree, however kzhahou made a claim that there could be a language that could do something another couldn't. The discussion with aerovistae about computation came from their initial post: >Unless of course you're trying to argue that the difference between python and javascript, for instance, is what each is capable of computing? If we are talking about ideal machines, there is no argument to be made that there is a difference between what the two named languages are capable of computing.
- scott_s 11y agoA charitable interpretation of the sentence you quoted is your ending sentence.
- jerf 11y agoGo would show channels. Rust would show the prevention of a memory ownership bug. Elm would show reactivity. Haskell would show that a monad is just a monoid in the category of endofunctors. what's the problem? If you haven't got something interesting and at least unusual to show off very early in your docs, it's something to think about in your language design. Now, you may have to build up a bit, and I'd certainly say you shouldn't bend your entire language around the "one cool demo", but I do think your early docs should make a hard burn towards whatever it is that sets your language apart. It's just basic sales. (Elsewhere in this thread ori_b says this was not an intentional release, so I mean this as general advice, not targeted at this case. I don't know how to prevent too-early linking on social media sites short of not releasing anything public, which has its own problems!)
- jsprogrammer 11y agoIf you are replicating work, you are replicating work. I try to avoid replicating work.
- jsprogrammer 11y agoAnonymous downmods? Ok... If your language only has features from some other language, you are replicating work.
- otabdeveloper 11y ago> You won't find such a new language. Most languages in use are already known to be Turing-complete. I beg to differ: http://tkatchev.bitbucket.org/tab/ http://tkatchev.bitbucket.org/tab/ (Sorry for the shameless self-promotion, but you're wrong that nothing new can be invented.)
- jsprogrammer 11y agoThat (tab) looks pretty cool. I didn't say that nothing new can be invented though, only that you won't find a new language that can compute a function that no other existing language can.
- kzhahou 11y agoHi jsprogrammer. You read my comment way too literally. I did not mean that a new language should have a feature that can literally not be done anywhere else. I meant: what are the uncommon features? What sets this language apart from the (dominant) other langs? As someone else pointed out, in golang this would be goroutines or channels or golang's approach to composition vs inheritance. You can certainly implement those in another language, but they're not first-class features in most other langs. Put together, those elements give golang it's characteristic flavor. For this new lang, I'm interested in learning (as early in the docs as possible) what sets it apart from C, C++, golang, python, ruby, JS, haskell, erlang, D, etc. The hello world example teaches the reader something, but it's not the thing a person first landing on that page probably cares about. And going back to my original statement, there's lots of things that are still missing from programming langs and associated ecosystems. Just look at JS, and how even today people are still furiously trying to extend it and work around it just to build simple reactive websites.
- jsprogrammer 11y agokzhahou, sorry for reading you way to literally. I actually only have the words that you post :) I think the important thing is to find the new things, but to realize that they aren't really new, just different ways of using the old. All of the languages you listed are really just specialized, assembly, or other, programs. Yes, most of the hard work has been automated away, but it's still there. I like JS because it can be extended (though it can be very difficult to keep track of). I think there was a workaround phase when the VMs/interpreters/machines were slower, but pretty much everything can be compiled to JS these days. You don't even need to do that though, as JS embeds first class functions, so pretty much anything is within easy reach.
- dang 11y agoWe detached this subthread from https://news.ycombinator.com/item?id=10954802 https://news.ycombinator.com/item?id=10954802 and marked it off-topic.
- jsprogrammer 11y agoI guess you can't be bothered to provide your reasoning of how this is not on-topic? Might as well just delete it. Edit: How do I become a moderator here? Also, who is "we"? You and who else?
- tptacek 11y agoFWIW: Dan runs HN, all of it. https://blog.ycombinator.com/two-hn-announcements https://blog.ycombinator.com/two-hn-announcements
- jsprogrammer 11y agoAh. Royal we. Nice. Downmod bot has got me in its sights.
- tptacek 11y agoThere are multiple moderators, so no, that is not an example of the "royal we".
- jsprogrammer 11y agoWhere can I see the list of user downmods? Also, does this mean Dan does not run all of HN? Or do the sub-moderators just fluff?
- tptacek 11y agoWhat's a "user downmod"?