

We need a programming language for the rest of us  - Impossible
http://www.leavesofcode.com/2011/06/we-need-programming-language-for-rest.html

======
nxn
>> In short, we need a language for those of us who are skilled in fields
other than mathematics.

The only language I ever used where I felt my knowledge of mathematics was
inadequate was Haskell* . Other than that I don't see the reason why the
author feels like programming languages require advanced mathematical
concepts. In my opinion it's not the language itself, it's what you're using
it for that may require math. And when that is the case, there's absolutely no
way you can try and avoid it -- you have to understand how you're solving the
problem in order to actually solve it, and this will have to be true
regardless of what language you express your solution in.

Anyway, he mentions C a lot, and to me that language was more of an
abstraction over how computers work as a machine rather than an abstraction
over some mathematical concept of computation. Mind you, my only experience
with C is reading K&R and fiddling around with pointers and memory allocation
a few times, so by no means can I claim I actually know what I'm talking
about. It's just to me it felt like I was concerned with getting some metal to
do what I wanted instead of expressing something mathematical, and therefore,
I can't follow this person's critique of the language.

* And even in the case of Haskell, a lack of knowing anything about Category Theory did not stop me from getting a basic idea of how and why Monads are so fundamental to the language. It does not stop me from being able to write something in Haskell, etc.

~~~
nandemo
The article is almost painfully clueless, but one thing that he gets right is
that "current" programming languages require skills in math. That is true as
long as we make the following (non-controversial, I hope) assumptions:
programming in Objective C or Javascript is making use of formal logic, and
formal logic is math. One of the commenters claim that math is a sort of
formal logic instead of the other way round, but that's neither here nor
there.

What he doesn't understand is that this is not an accidental feature of the
existing programming languages; it's an inherent property of programming
languages with enough power, i.e., Turing-complete languages.

Let's leave aside his claim that too many library functions is a bad thing. He
also seems to think that such and such a language is difficult because the
syntax is difficult, but we know that you can have a very simple language in
terms of syntax -- a Turing machine, a bare-bones Lisp, or a C-like language
with just assignment, increment, if and goto, for instance -- that will still
give rise to very complex programs.

Of course, just because 2 programming languages are Turing-equivalent doesn't
mean they're equally good or equally easy to learn or expressive. Most people
would agree that for most purposes C is a better tool than Assembly, and that
$FAVOURITE_LANGUAGE is better than C. Still, if you can _really_ code
Javascript then you should be able to code in Objective C. The only way that
he can possibly use Javascript but not Objective C is if the limits his usage
of Javascript so much that it is not really being used as full programming
language.

What he wants (but doesn't know) are non-Turing-complete DSLs. Just as he can
do stuff in HTML/CSS, he might be able to use another DSL to do whatever it is
that he wants.

PS: also see this comment and the linked short essay by Dijkstra:

[http://www.leavesofcode.com/2011/06/we-need-programming-
lang...](http://www.leavesofcode.com/2011/06/we-need-programming-language-for-
rest.html?showComment=1308074712429#c5674906976509442222)

'On the foolishness of "natural language programming"'

[http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD667.html)

~~~
nxn
Yeah, I read that Dijkstra paper a while back, I was even considering
mentioning it somewhere in my comment, but lost the energy to do so due to the
time.

As for formal logic being used in programming languages, while that is true, I
am not sure that is what the author was referring to when mentioning "advanced
mathematics". Maybe it was because he mentioned calculus early on and that
somehow threw me off course, or maybe because I myself wouldn't look at it as
something "advanced". Don't know, truthfully, I have no idea what he meant by
"advanced mathematics", so I wont deny that it could have been formal logic.

Anyway, I see the point about DSLs and how they could be helpful to the common
individual who doesn't want to devote so much of his or her life to mastering
an all purpose language. I suppose that's great if you can actually accomplish
everything you want that way, but in practice I feel like it would only get a
person so far before they were out of options while still needing more. I
always looked at DSLs as conveniences and extras to simplify the parts of the
problem you don't care to fully concern yourself with. Beyond that scope
though, it seems that an all purpose language is still going to be required
for the non trivial aspects of coming to a solution, and to also glue all the
trivial DSL components together. But hey, we should take any help we can get.

------
egiva
It's funny that if you agree that many programming languages suffer from a
paradoxical "shield of complexity" like the author describes, than the obvious
solution is better technology like natural language parsers, etc. (Ways to
translate more common human expression into machine-specific coding). However,
the technology to do that would be an order of magnitude more complex than
what exists today, so the framework/base/foundation of technology needed to
make day-to-day programming more accessible to everyone would also suffer from
it's own perpetual "shield of complexity".

Whether you see the irony in that or not, is besides the point. Basically,
arguments about programming being too complex are null and void if the
technology needed to solve it would always be increasingly more complex.

Unfortunately, I think that's how history advances in general. At the time the
printing press was invented, most people were unable to read and write.
Reading and writing was a TECHNOLOGY accessible only to elites. Over time,
that technology and associated skills become accessible to almost everyone,
but based on even more advanced technology that enabled the masses to learn.
The same might come to pass in regards to programming skills, where everyone
in the future will be able to program, but a smaller crowd will be working on
even more advanced stuff to allow us to all learn those skills, ad infinitum.

------
nhangen
A bunch of nasty comments on that link that I believe are unfair and
unwarranted. I agree that learning Objective-C is one of the most difficult
tasks for a new programmer, but since it's the only way to create good iOS
apps, there's no substitute, so suggesting Ruby or Python is unhelpful.

