Rhetorical technique side discussion


#1

And do you really think that this type of arguments will make much sense to the hordes of new users that Julia is expecting to attract from other languages and will want to have a simple answer to question: does my variable contains something or not?


Shouldn't isempty(nothing) return true?
#2

That is just depressing. One of the best things about Julia so far has been that it seems to have the philosophy “do the right thing, everything else be damned” and I sincerely hope it continues this way. If Julia fails as a language as a result of that, then come what may. At that point it’ll be time for me to give up on society and become an island-dwelling hermit.

Lots of other languages in the past have followed the philosophy “attract users, advertise to ‘non-programmers’, the right thing be damned” and they are horrible. In particular I’m thinking of COBOL, PHP and JavaScript. The first of these was unsuccessful, and the second is probably on its way out, the third will be the doom of us all. So 2/3’s of these examples perhaps give us a glimmer of hope.

On a less grandiose note, I also fail to see in what sense nothingisempty”. I’m not even convinced that most people would expect the result to be false, even the aforementioned Mongol hordes.


#3

I have moved these posts to a separate thread so that we can keep the original thread focused on the technical question of the behavior of isempty(nothing).


#4

Please try to avoid “extortion” arguments along these lines:

If you don’t change this thing that I want changed, then I and the many other programmers like me will go away and not use your language and your project will fail.

If you have a reason why something is more intuitive, easier to use, or better in whatever way, then just make that argument and leave out the implied existential threat part.


#5

Actually this is good a thing IMHO! :slight_smile:

You could easily define isempty(x::Void) = true if you want, but I would only use such helper functions if I had to port some Python for example and I feel a bit lazy (although a complete Julian refactor, would be better).


#6

I find arguments that rely on hypothetical hordes to be unconvincing.


#7

Rethorical technique (like above) is acceptable. It could also gain likes from people.

@joa-quim you could say that language is horrible but you have to choose proper language! :slight_smile:


#8

To be fair, I think there are very few people who think that COBOL or PHP are “good” languages. The former is the butt of a lot of jokes. Ironically it also seems to me like there are very few people who “love” JavaScript (although perhaps that is only representative of people I have interacted with), the reason it is taking over the world seems to have far more to do with legacy than anything about the language itself.

I deliberately chose languages that I thought (perhaps incorrectly) were uncontroversially bad. That was the point I was trying to make: languages that start out by trying to appeal to newcomers with gimmickry wind up annoying those very same people after they have some experience actually using it. (There are at least some aspects of Python which are like this, but I did not include it because Python was far more successful at this sort of thing, indeed I think that Python is an excellent scripting language.)

I know I should probably try harder to avoid making derisive commentary about languages, as these sorts of things get started often and are seldom productive, but it’s really hard to say much of anything about how a programming language should be designed without referring to some precedent.


#9

The problem with appealing to the “hordes of new users” and assuming anything about their preconceived notions is that, aside from being a weak rhetorical argument, you’re almost definitely wrong anyway!

By definition, if you are using Julia and reading messages on this board today, Feb. 25, 2018, you are an early adopter. Your motivations will be different than the “hordes”. Your past experiences, expectations, and therefore assumptions will be colored by the fact that you are an early adopter. So, to paraphrase an engineering manager at a former job: let’s try, whenever possible, to write correct code.

I’m reminded of a common refrain I first heard in reference to Git, but have also heard in reference to Haskell, Erlang, functional programming in general, and a bunch of other “out there” technologies: it’s easier to learn if you don’t know anything else first. I don’t know about the rest, but for Git I’ve certainly found that to be true. I’ve trained first-time programmers who had no problem with Git, and I know grey-beard hackers that still insist on using Subversion.

Let’s leave the existential angst for arguments over issetthatdoesntcontainself(nothing). :wink:


#10

It’s really all relative: compared to the alternatives in 1959 (assembly language or some simpler mostly machine specific languages, such as FLOW-MATIC, which COBOL was based on), COBOL was a great advance, and 30 years ago, according to certain reports, was the most used language in the world. (It is estimated that 80% of the world’s daily business transactions still rely on COBOL) (see http://destinationz.org/Mainframe-Solution/Business-Case/Enterprising-Skills)

I would say that my Miata is uncontroversially better than a Model-T Ford, however, at the time it came out, the Model-T was considered a great car.

:+1: :grinning:


Make a webapp framework/ecosystem as awesome as R's Shiny: a challenge to Julia's community