Inheritance of purity

James Miller james at
Thu Feb 23 21:05:20 PST 2012

On 24 February 2012 13:15, F i L <witte2008 at> wrote:
> H. S. Teoh wrote:
>>> In all seriousness, I think you're decoupling inherently ingrained
>>> pieces: the language and it's tools. The same way you *need* syntax
>>> highlighting to distinguish structure,
>> I don't.
> wait... you don't even use Syntax Highlighting? Are you insane, you'll go
> blind!

I think my colleague was blind before he start programming, but he
doesn't use syntax higlighting

>>> And MS has pulled some really stupid shit in its day, but it's
>>> developer tools and support do not fall under that category.
>> True, they have their value. I don't argue with that.
>> But why should anyone be *forced* to use them? They're just tools. A
>> language is a language (a set of syntax and grammar rules with the
>> associated semantics). It's not inherently tied to any tools.
> The only reason Visual Studio being so closely tied to C#/VB/etc is a bad
> thing is because it's closed source and ultimately designed as [yet another]
> developer lock-in (just good business right?). Beyond that it's really silly
> not to use VS cause of all the productive features it provides. MonoDevelop
> is catching up, but still quite a ways behind in some areas. No one is
> stopping anyone from writing code in Notepad.. but then, no one is stopping
> 3D artists from manually editing .obj files in Notepad either.

As Teoh said, Notepad is not a workable text editor, for a start, it
doesn't support a massive range of modern features (like unicode, or
non CRLF line terminators), doesn't do any useful code-related stuff
like indentation or bracket-matching.

You seem to think that there is "Notepad" or Visual Studio/eclipse,
when in reality there is a sliding scale, from using cat to output to
a file to using, well Eclipse or VS. But there are points along the
way, like Jonathon, I'm a (g)vim user, I tend to develop in gvim and
do quick edits in vim (tiling window manager, I don't like the switch
from full-screen to half-a-screen then back again), I have tried all
sorts of other systems and eventually just worked my way back to the
terminal. My ongoing quest for productivity has led me to believe
that, unless you want to be tied to a technology, back to basics is
the best way.

I personally believe that any set of tools should be made thinking
about the use case: "What if this person was developing using a
Tektronix 4014?", I'm not saying that we should still be coding to 30
year old terminals, but the idea is that somebody might not having a
gui should not immediately be a blocker. This has been Windows'
Achilles' heel for a while, many products don't work without a gui,
and therefore are difficult - or impossible - to script. If you can
provide a programmatic interface to your system, then you have just
allowed a ton more products to be made, at no extra cost to you. Clang
has built-in support for auto-completion and syntax analysis and the
front-end is even nicely packaged into a library, so I now have
C/C++/Objective-C, context-aware, accurate completion in vim, through
the vim plugin clang-complete, this was not made by the people at
Clang, they just exposed the functionality (by the way, XCode uses the
same system, and Code::Blocks is moving their code-model to it too).

Programming a craft as much as it is a process. I tend to liken it to
carpentry, you have set steps, you design and plan and build etc, but
there's creativity there. As such, programmers (I've found) tend to
pick an environment that suits them best. I use a minimal system that
I can configure and hack to my heart's content. My colleague uses a
Macbook pro that he never shuts down. The designer here uses a Macbook
Air. And we all work fine, there is no "One True Way" to make a chair,
why should there be one for writing a program?

My point is that the tools that programmers use, like compilers and
linkers and parser-generators and build systems and deployment tools
and source control and x and y and z and .... are going to be used by
a wide range of people, in a wide range of environments, for a wide
range of purposes, so they should keep in mind that maybe you /don't/
have a certain tool or feature available. So you make sure that the
experience at the lowest common denominator, a vt100 terminal, is
acceptable, maybe not perfect, but good enough, then you build from
there. If that means that D is geared towards less typing, then good,
especially if  you can do the extra typing and not break things. It
/is/ possible to make everybody mostly happy, and that is by aiming at
the people using `cat`* to program and hitting the people using VS
along the way.

* Programming using `cat` is not recommended.**
** Even though /real/ programmers use `cat`

James Miller

More information about the Digitalmars-d mailing list