Tools Do A Language Make
Written by Mike James   
Thursday, 13 December 2018
Article Index
Tools Do A Language Make
Importance of an IDE

Importance of an IDE

The IDE is seen as something separate from the language and not part of the language design and implementation problem.

This is about as wrong an attitude as it could possibly be. 

It is like a motor car designer working away on an new engine and then expecting the end user to figure out how to make use of it within some bodywork and other extra bits. 

A language design is just a start. What matters is how effectively programs in the language can be created and executed. The effective creation of programs is aided by an IDE and other tools. The effective execution is a matter for the compiler or runtime and this is what language implementers focus on. 

There are many language features that are much better to implement in the IDE rather than the language. If there is a language feature that is causing programmers to make mistakes then you can either change the language or add a feature to the IDE that picks up the mistake and highlights it for the programmer. A static or dynamic code analysis in the IDE and trap potential problems and draw the programmers attention to best practice. 

A poor language becomes a great language when it is coupled with the right IDE. 

For example, if it is undesirable to use the Eval function in JavaScript then we can either remove it from the language, remove it from strict or some other mode or create an IDE that flags it as a dangerous option.

On a bigger issue, type inference can do away with the need for static typing. If you think that this is an exaggeration try out JavaScript as provided by Visual Studio - it is not quite good enough, but it could be. If you still don't think that type inference can replace static strong typing find an example that can be detected by strong typing and not by a sufficiently clever IDE with type inference. 

Yes, an IDE can provide you with a lot of small things that make your work easier and more accurate. Perhaps the best example is code completion which speeds the entry of code and makes sure you don't make stupid errors. I am not so sure about syntax highlighting, but all manner of auto formatting can make an error stand out immediately. The list goes on and what is more the list can be extended even further. The innovative sort of live coding environment suggested by Bret Victor and Microsoft Research is just the next step, not the end point.

 

tree

 

You can argue about individual features and facilities and yes you can still argue that a simple text editor is all you need but the point is bigger.

It is even possible to think up a safety-fying of C using a suitable IDE. NetBeans for example will point out when you are using an unsafe function and even suggest that you might like to use a safer function. We could take this much, much further with default bounds checking that could only be defeated by a conscious act on the part of the programmer. 

The point is that the development environment should be considered part of a language. A different IDE coupled with a language should be considered a different but compatible dialect of the language. We should talk of NetBeans Java and Eclipse Java and so on. Ruby shouldn't be Ruby on Rails but Ruby on RubyMine or Ruby on Aptana. After all, if you switch from, say, Visual Studio C# to NotePad C# you are as disadvantaged as if you had swapped to a completely different language or dialect. 

But we need to go yet one step further Language designers and implementers should take the view that an IDE should be a standard part of their design and their work should be judged on the whole package provided. Python 4 shouldn't be a new language but just Python 3 plus a new and standard PythonIDE that extends the language and defines it as a complete development environment. 

A language is not enough and the job isn't done until its a language with a fully programmer supportive environment. To augment a well known motto:

 

language  =  syntax  +  semantics  +  IDE 

 

Related Articles

A Better Way To Program

RubyMine The Right Way To Do Ruby

Data Typing Is A Relic

Beginning PHP with Eclipse 

NetBeans IDE 7.3 Released 

What Makes a Programmer

Programming - A Life Long Challenge

The Real Reason To Learn To Program - The Power

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

Banner


TypeScript Improves Never-Initialized Variables Checks
21/10/2024

Microsoft has announced TypeScript 5.7 in beta, with improvements including stronger checks for variables that have never been initialized before use, and path rewriting for relative paths.



Be Counted In the Python Developer Survey
09/10/2024

Conducted annually by the Python Software Foundation in conjunction with JetBrains, this survey is the major source of knowledge about the current state of the Python community. The eighth iterat [ ... ]


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Banner

 



Last Updated ( Sunday, 21 April 2024 )