Live data from Hacker News

Because It's Not Fun Enough: why languages fail

bytecode.news

101–110 of 146 posts

Re: Because It's Not Fun Enough: why languages fail

#101
post #94
post #79

Earlier quoted context omitted.

Unit testing doesn't provide the level of interactivity a REPL does. A REPL lets you see the output of parts of an unfinished function based on the running program's state. If you've already thought out the whole program before you start writing it, that may not be as valuable. In my experience, software often isn't that way and the ease of exploration a REPL and long-running process provide are unmatched.

yes and no. You are correct the REPL provides more interactivity. However the downside is you can break something that used to work while make something else work. There is no reason you can have a REPL and unit tests in the same. Every change results in running all the tests. (of course most changes are syntax error - just "if foo()" is 7 syntax errors. ) I've seen various attempts of this over the years, but quickl…

>I've seen various attempts of this over the years, but quickly your code becomes more complex than the computer can run while you type and you fall back to running most of the tests after in some way.

That does not match my experience with lisp.

Re: Because It's Not Fun Enough: why languages fail

#102
post #85

Earlier quoted context omitted.

"Lisp" refers to several different languages in the same family, which contributes to the confusion. Perhaps the default choice is Common Lisp which itself is specified in an ANSI standard and has several competing implementations. Some are compiled, some are interpreted. Arguably the best is SBCL, which has a mature compiler and garbage collection. If you lean on implementation-specific features you can produce extr…

The best is kind of debatable as it lacks the IDE tooling from LispWorks and Allegro.

>The best is kind of debatable

I used the word "arguably" in the very first word of that sentence:

>Arguably the best is SBCL

The word arguable is a synonym for the word debatable.

Re: Because It's Not Fun Enough: why languages fail

#103

I'm calling bull on this. Learning languages, at certain points, is always tedious. Whether that language is a computer language, or something like Greek, there comes a moment where "trudging" begins. The reason a person "trudges" is that they have a goal in mind that makes the trudging something to endure until that goal is achieved. Fun comes from not having to solve the same problem sixty times, or having to sort…

Maybe not "fun", but people have preferences, not necessarily rational, in the choices they make. Programming languages, technologies, and even fonts.

Some languages are more enjoyable to use than others. I'm sure there are features/syntax/constructs in languages that you irrationally don't like.

Re: Because It's Not Fun Enough: why languages fail

#104
All languages are fun, but the most fun programming languages are ACPUL, Lisp and fun esoteric languages like Brainfuck. Enterprise made programming less fun while the most popular languages are popular mainly because huge budgets are allocated not only to promote them across every platform, but also to pay salaries.

Re: Because It's Not Fun Enough: why languages fail

#105
post #30
post #17

Yes to all that but still, my pet theory is that languages rise on one or two "killer features" that move the entire industry forward, and not the overall cuteness or lovability. I can suggest a list of one killer feature per each popular language, i.e. things that these languages were the first to introduce and influence many successors: C: extreme conciseness C++: implicit destructors / RAII Python: removed curly b…

C++ succeeded because it was Object Oriented, people didn't start talking about RAII as C++ killer feature until years later python succeeded because it wasn't Perl's TMTOWTDI, everyone expected ruby to overtake python, but .. for some reason that never happened swift succeeded because apple pushed it to replace objective c, that if you consider swift succeeded anyway, i agree with your premise, languages need one ke…

C++ succeeded twice.

Initially, it provided a thin object-oriented abstraction over C. This solved many problems scaling large C projects. It set baseline expectations for languages that came later. Being a "thin object-oriented abstraction over C" has significant limits. By the 2000s, it was clear that C++ couldn't scale complexity in the way we needed it to. It was slowly dying.

C++ reinvented itself as a functional metaprogramming language starting with C++11, providing an even higher level of abstraction. Many deficiencies in the older language and systems languages generally were addressed. This was a huge success, creating a large resurgence in adoption and setting new expectations for what a systems language should be capable of. C++20 looks like a completely different (and much better) language than C++98.

I view C -> legacy C++ -> modern C++ as the evolution of a single language. Each was wildly successful on its own up to some level of complexity. Every time it runs into a practical limitations on scaling complexity, it adds a new layer of abstraction. As much as people complain about it, this strategy has clearly been successful.

Re: Because It's Not Fun Enough: why languages fail

#106
post #94
post #79

Earlier quoted context omitted.

Unit testing doesn't provide the level of interactivity a REPL does. A REPL lets you see the output of parts of an unfinished function based on the running program's state. If you've already thought out the whole program before you start writing it, that may not be as valuable. In my experience, software often isn't that way and the ease of exploration a REPL and long-running process provide are unmatched.

yes and no. You are correct the REPL provides more interactivity. However the downside is you can break something that used to work while make something else work. There is no reason you can have a REPL and unit tests in the same. Every change results in running all the tests. (of course most changes are syntax error - just "if foo()" is 7 syntax errors. ) I've seen various attempts of this over the years, but quickl…

I think we're largely in agreement here. Unit tests and REPLs serve different purposes and are poor substitutes for each other; red_admiral was arguing that unit tests obviate the need for REPLs.

Re: Because It's Not Fun Enough: why languages fail

#107

There's more to a language than the syntax. The libraries, tools, and the ecosystem of developers, documentation, support, etc. are much more important. There are quite a few academic languages that are interesting to people that never really gain much traction because the people behind them just never commit to proper ecosystem building. Switching languages is a big time commitment. Or at least it used to be. I find…

Even if you only consider the language itself, semantics, especially the type system, are more important than syntax.

Many people don't really understand the languages they learn until well after they are done mastering them. And some never really pick the deep detail there is to semantics and type theory.

If it is done right, the language might feel nice to use or elegant but users might not articulate why that is. That can be a key selling point. And of course there are a lot of languages where the type system was a bit of an afterthought that got popular anyway. Javascript and other dynamically typed languages comes to mind. Rust kind of sits on the other end of the spectrum. And it has a deserved reputation for being a bit hard to learn because of it.

Re: Because It's Not Fun Enough: why languages fail

#108
post #82

Earlier quoted context omitted.

Javascript didn't need a plugin, unlike Java, and could directly alter the page contents. One of the first heavy uses was Google Maps, interactive JS-based applications took off at that point. Then with an army of web developers (meaning in browser), Node took off when it handed them a way to work on the backend in the same language. The iPhone came out after JS heavy pages came into existence, and might have acceler…

Gmail was the original AJAX woah! JavaScript application.

Somewhat ironic, since AJAX was originally created by Microsoft to implement the Outlook web client.

Re: Because It's Not Fun Enough: why languages fail

#109
post #17

Yes to all that but still, my pet theory is that languages rise on one or two "killer features" that move the entire industry forward, and not the overall cuteness or lovability. I can suggest a list of one killer feature per each popular language, i.e. things that these languages were the first to introduce and influence many successors: C: extreme conciseness C++: implicit destructors / RAII Python: removed curly b…

To have a theory of success, you have to also be able to explain failure. Why did object-oriented C (aka C++) take off but object-oriented Pascal (aka Delphi) not, despite the fact that Pascal was as prevalent as C in those days? Why was Python able to overturn Perl's dominance in the scripting space, but Ruby was unable to do so? Why did Ada and Smalltalk never achieve significant dominance?

A lot of success does come down to being in the right place at the right time. JS was successful because it was the only available scripting language for the web (although MS pushed VBScript for a bit) when there was a concerted effort to kill off the Java and Flash plugins. C was successful because it was tied to the Unix OS, which happened to overtake other OSes for a variety of reasons.

Re: Because It's Not Fun Enough: why languages fail

#110
post #13
post #9

> Different diseases, one pathology.

> Sort the corpses that way and they separate cleanly Just like when you get a bit of meat on the bone in a stew, and it all comes out as one piece - but it's just on the brink, and the slightest of touches with the fork is enough to make it separate cleanly, and it just slides off perfectly. I love it when that happens. I really feel like the author does too. That's part of why I like reading things written by peopl…

Here's another one of my favorites: pulling a huge weed out of soft, loose soil and hearing the crackle of the roots as they come up out of the earth.
Post reply on HN