<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jan 31, 2014 at 7:50 AM, Michael Turner <span dir="ltr"><<a href="mailto:michael.eugene.turner@gmail.com" target="_blank">michael.eugene.turner@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">One thing I've gotten out of this excellent thread: given what some<br>
people (but not Joe, I guess) want out of a programming environment,<br></blockquote><div><br></div><div><div>What I want in a programming environment would take a book to describe.</div><div><br></div><div>For starters, I would like it to be precisely documented.</div>
<div><br></div><div>It should be textual not GUI based - the reason for this is automation - I cannot</div><div>easily automate things if they are GUI based. I can automate things if they are text based.</div><div>Also It's very difficult to describe what to do in a GUI - the descriptions need pictures</div>
<div>to tell you what to do.</div><div><br></div><div>I currently think Knuth was right.</div><div><br></div><div>The version numbering of TeX (using successive digits of Pi) is brilliant</div><div><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:11.428571701049805px;line-height:16.895999908447266px;background-color:rgb(249,249,249)">TeX it at version 3.14159265 - Knuth also pays a reward (in cash) for every new bug. The reward</span></div>
</div><div><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:11.428571701049805px;line-height:16.895999908447266px;background-color:rgb(249,249,249)">doubles for each new error.</span></div><div><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:11.428571701049805px;line-height:16.895999908447266px;background-color:rgb(249,249,249)"><br>
</span></div><div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px">This scheme means that the project will be </span><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">abandoned</span><span style="font-size:11.428571701049805px;line-height:16.895999908447266px"> if there are more then 15 or so bugs - because the</span></font></span></div>
<div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px">version number would be too long, and the cost too great - and it probably should be </span></font></span><font color="#000000" face="sans-serif"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">abandoned</span></font></div>
<div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px">if it had this number of errors.</span></font></span></div>
<div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px"><br></span></font></span></div><div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px">Knuths way of working - Literate programming - with patch files - enforces an </span><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">incredibly</span><span style="font-size:11.428571701049805px;line-height:16.895999908447266px"> disciplined way</span></font></span></div>
<div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px">of working. TeX (as a literate program) is just about the only example I know of a large complex program</span></font></span></div>
<div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px">that is understandable and has no known errors.</span></font></span></div>
<div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px"><br></span></font></span></div><div><span style="background-color:rgb(249,249,249)"><font color="#000000" face="sans-serif"><span style="font-size:11.428571701049805px;line-height:16.895999908447266px">TeX was produced without fancy editors and revision control systems and IDEs and all that stuff.</span></font></span></div>
<div><br></div><div><font color="#000000" face="sans-serif"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px;background-color:rgb(249,249,249)">The only downside of Knuths way is that it takes a long time to write the program.</span></font></div>
<div><font color="#000000" face="sans-serif"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px;background-color:rgb(249,249,249)"><br></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">At a guess 80% of software costs are in maintenance of legacy code - so in the long term </span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">Knuthian development pays off. Being early to market with buggy software is however the</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">way to make money. What earns you most money in the short term costs you most in the long term.</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br></span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">TeX is interesting in a sense that (say) eclipse is not. I feel it is possible to learn how TeX works</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br></span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">(aside I have started on this journey</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"> "Hello \end"</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">is a minimal TeX program that I can understand. All I need to do is understand what</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">the primitives do, and then how the macro expansion works, ...</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">)</span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br>
</span></span></font></div><div><font color="#000000" face="sans-serif"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px;background-color:rgb(249,249,249)">There is no way I can understand something like eclipse - there is no documentation of what it does and how</span></font></div>
<div><font color="#000000" face="sans-serif"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px;background-color:rgb(249,249,249)">it works - only documentation of how to use it.</span></font></div>
<div><font color="#000000" face="sans-serif"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px;background-color:rgb(249,249,249)"><br></span></font></div><div><font color="#000000" face="sans-serif"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px;background-color:rgb(249,249,249)">I only like doing things I can understand.</span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"> </span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">emacs is in the TeX category - I can "in principle" read the code and see what it does</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br></span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">(another aside - reading code to see what it does is highly overrated - reading my own code</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">that I wrote years ago is difficult - reading other peoples code is doubly difficult - reading undocumented</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">code in a language I don't really understand to fix a bug that I didn't want to fix into order to solve a problem</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">that I do want to solve is an incredible waste of time - and that's why I like Kuthian rigour in software)</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br></span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">Nowhere have I said that this is easy - but I believe that IDEs etc make matters worse by hiding</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">what should not be hidden. If it's such a mess that it needs tool support to write then the solution is</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">to clean up the mess not provide tools to hide the mess.</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br></span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">As I said - I could write a book on this :-)</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br></span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">Cheers</span></span></font></div>
<div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px"><br></span></span></font></div><div><font color="#000000" face="sans-serif"><span style="background-color:rgb(249,249,249)"><span style="font-size:11.818181991577148px;line-height:16.895999908447266px">/Joe</span></span></font></div>
<div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
and what some people like in programming languages (Joe, for example),<br>
somebody should do an Erlide for Elixir.<br>
<br>
Regards,<br>
Michael Turner<br>
Executive Director<br>
Project Persephone<br>
K-1 bldg 3F<br>
7-2-6 Nishishinjuku<br>
Shinjuku-ku Tokyo 160-0023<br>
Tel: <a href="tel:%2B81%20%283%29%206890-1140" value="+81368901140">+81 (3) 6890-1140</a><br>
Fax: <a href="tel:%2B81%20%283%29%206890-1158" value="+81368901158">+81 (3) 6890-1158</a><br>
Mobile: <a href="tel:%2B81%20%2890%29%205203-8682" value="+819052038682">+81 (90) 5203-8682</a><br>
<a href="mailto:turner@projectpersephone.org">turner@projectpersephone.org</a><br>
<a href="http://www.projectpersephone.org/" target="_blank">http://www.projectpersephone.org/</a><br>
<br>
"Love does not consist in gazing at each other, but in looking outward<br>
together in the same direction." -- Antoine de Saint-Exupéry<br>
<div class=""><div class="h5"><br>
<br>
On Fri, Jan 31, 2014 at 3:25 PM, kraythe . <<a href="mailto:kraythe@gmail.com">kraythe@gmail.com</a>> wrote:<br>
> Well I think after seeing the arguments and the response of the community I<br>
> am trending seriously towards Erlang. I will probably make the mental<br>
> investment to learn and become good with emacs. And then move on from there.<br>
> I may still have a ton of questions. I would still, for example, love to<br>
> know who to 'reload' my application once it is started.<br>
><br>
><br>
> On Fri, Jan 31, 2014 at 12:24 AM, kraythe . <<a href="mailto:kraythe@gmail.com">kraythe@gmail.com</a>> wrote:<br>
>><br>
>> Well I think after seeing the arguments and the response of the community<br>
>> I am trending seriously towards Erlang. I will probably make the mental<br>
>> investment to learn and become good with emacs. And then move on from there.<br>
>> I may still have a ton of questions. I would still, for example, love to<br>
>> know who to 'reload' my application once it is started.<br>
>><br>
>> Robert Simmons Jr. MSc. - Lead Java Architect @ EA<br>
>> Author of: Hardcore Java (2003) and Maintainable Java (2012)<br>
>> LinkedIn: <a href="http://www.linkedin.com/pub/robert-simmons/40/852/a39" target="_blank">http://www.linkedin.com/pub/robert-simmons/40/852/a39</a><br>
>><br>
>><br>
>> On Thu, Jan 30, 2014 at 10:29 PM, Richard A. O'Keefe <<a href="mailto:ok@cs.otago.ac.nz">ok@cs.otago.ac.nz</a>><br>
>> wrote:<br>
>>><br>
>>><br>
>>> On 31/01/2014, at 7:49 AM, Steve Strong wrote:<br>
>>> > On Thursday, 30 January 2014 at 19:10, kraythe . wrote:<br>
>>> >> 1) Code completion. Sorry but I can't be bothered to type the same<br>
>>> >> flipping method name in its entirety 40 times.<br>
>>><br>
>>><br>
>>> There are three causes for "completion" in languages like<br>
>>> Prolog and Erlang:<br>
>>><br>
>>> (a) Definitions with multiple clauses.<br>
>>> Your editor should be able to turn "add a clause" into a<br>
>>> single command.<br>
>>><br>
>>> (b) Recursion.<br>
>>> Your editor should be able to turn "add a recursive call"<br>
>>> into a single command (basically the same as (a), just<br>
>>> different stuff wrapped around it).<br>
>>><br>
>>> A programming style using higher order procedures can<br>
>>> eliminate a lot of this.<br>
>>><br>
>>> (c) Repetitive patterns of code.<br>
>>><br>
>>> A programming style using higher order procedures can<br>
>>> eliminate a lot of this.<br>
>>><br>
>>> There's a thing I find myself saying more and more often:<br>
>>><br>
>>> Why can't I see the structure?<br>
>>><br>
>>> I was reviewing a page or two of Prolog code for someone the<br>
>>> other day. By the end of three hours, I'd made some progress,<br>
>>> but I was troubled. The code was clean, but it wasn't OBVIOUS.<br>
>>> What finally dawned on me would have been instantly obvious to<br>
>>> a real functional programmer: the code was an interweaving of<br>
>>> a "compute argmax of a partial function over a finite domain"<br>
>>> and "here is this partial function". Actually introducing the<br>
>>> higher order function in question let me explore several ways<br>
>>> of implementing that *without* any effect on the rest of the<br>
>>> code. Breaking the specific partial function out and naming<br>
>>> it let me see that memoising *that* function -- which hadn't<br>
>>> previously existed -- stood an excellent chance of reducing<br>
>>> the overall cost of the algorithm down *hugely*.<br>
>>><br>
>>> So I say, if you find yourself _wanting_ a method name to<br>
>>> appear 40 times in a day's work, you are doing something<br>
>>> badly wrong.<br>
>>><br>
>>> For another data point, as part of building up my Smalltalk<br>
>>> skills, I used to pick up Java code and rewrite it in Smalltalk.<br>
>>> There were two invariable results: first, the code would<br>
>>> shrink by about a factor of six, and second, it would become<br>
>>> painfully obvious that the original code was really really<br>
>>> bad design, and that in a *good* OO design, most of the<br>
>>> classes wouldn't just shrink, they'd disappear. A good part<br>
>>> of this is down to Smalltalk's support for and extensive use<br>
>>> of higher order functions from day 1.<br>
>>><br>
>>> ><br>
>>> > 3) Syntax coloring. (VIM color codes a file so that is there, emacs I<br>
>>> > don't know AT ALL.)<br>
>>> To which Steve Strong replied<br>
>>> > I don't know of any editor that doesn't do this -<br>
>>> > even github displays syntax colouring on erlang files.<br>
>>><br>
>>> My own text editor doesn't do syntax colouring.<br>
>>> Frankly, I hate syntax colouring. I could give you<br>
>>> a long rant about why. One big issue is that the<br>
>>> name is a lie. It's *lexical* colouring; the colour<br>
>>> depends on what kind of token something is. But I<br>
>>> can *see* that. If you offered me an editor where<br>
>>> calls to functions whose definitions had been edited<br>
>>> recently were brightly coloured, or where the functions<br>
>>> imported from a particular module were brightly coloured,<br>
>>> or where slicing was used to colour the places where a<br>
>>> particular variable could be *changed* and *used*, I'd<br>
>>> find that really really helpful. Why waste colour<br>
>>> telling me something that is already obvious at a glance?<br>
>>> I once came across a compiler (written in Finland) where<br>
>>> several passes had had to be woven together because of<br>
>>> the language it was written in, so they had coloured<br>
>>> each declaration and statement according to which pass<br>
>>> it was logically part of. Now _that's_ good use of colour!<br>
>>><br>
>>> ><br>
>><br>
>><br>
><br>
><br>
</div></div><div class=""><div class="h5">> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br></div></div>