3 ms·
>> 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 ma
by nxn 15y ago
>> 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 15y agoThe 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-language-for-rest.html?showComment=1308074712429#c5674906976509442222 http://www.leavesofcode.com/2011/06/we-need-programming-lang... 'On the foolishness of "natural language programming"' http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD667.html http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EW...
- nxn 15y agoYeah, 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.