Hacker News new | ask | show | jobs
by vfclists 4571 days ago
Oh! You just noticed that IDEs suck? Where have you been living, under a rock?

Computer programmers are one of the most dismal professionals on that planet. How many so called programmers/coders can even write a simple parser or a compiler? Less than one percent I suspect. I should know because I am one of them. After dabbling away with Aho and Ullman somewhere in the 80s or 90s I haven't approached the subject since.

Ever since Smalltalk came out it has been downhill all the way, and it is only now a lot of the current IDEs have caught up with it and in the last few years have begun to extend the concept.

I believe that:

1. Learning to understand and write parsers and interpreters should be one of the first things taught in computer science even before the whole gamut of data structures and algorithms have been studied.

2. Being able to develop IDEs should part of every computer science course. They may even be developed to help illustrate the data structures and algorithms mentioned above. Unlike most professions computer scientists are the ones most capable of building the tools for creating, analyzing and illustrating their work, so why are they the ones that as far as we can tell use the shittiest tools available to most professions? Honestly I blame Sun and IBM for this. The moment Java came out everything went down hill. Then the web came, then 'scripting' , then everybody decided that they could and should 'build' everything using Notepad, VIM or Textmate.

3. The tools are there, Smalltalk guys have been using and developing their own tools for ages, only the targetted graphical environments have been split up and the OS owners, Microsoft in particular keeps blowing hot and cold as to which one system developers should target. IDE and graphical tools development is so interactive that the idea of using traditional compiled languages to develop them is simply absurd unless you use very fast compilers and computers. It is time they went 3D as well may be using some Blender, Unity3D or some other gaming toolkit to bring them up to date. 2D text and graphics are boring.

4. The bottom line is IDEs should be something developers ought to create or collaborate to create themselves. The big corporations should stay out of that, ie the decisions shouldn't be commercial decisions. It seems that a sad immaturity of computer programming as a profession has led to development tools being dictated by clueless profit seeking corporate bosses. They should be the decisions of developers guilds which should not be linked with corporate interests of any kind. You know what you want, just do it yourselves.

5. What else? Yeah, get your parsing skills together, and don't develop it in Javascript unless you plan to develop your own version of Typescript or Dart later on when subtle bugs begin to creep into your cherished IDE.

PS. Sorry for the trolling at the top. I just couldn't help myself.

1 comments

I sort of agree with you, but I'd tweak it a little. I think we need to move to a situation where we refuse to use languages unless they offer "compiler as a service." Ideally, this would be open source for each programming language.

As a result, every developer wouldn't need to know how to write a parser/compiler, but rather would need to master the usage of the API the compiler-as-a-service offers. (For example, imagine JetBrains Idea for Java or Resharper for C# as a suite of open source, api-driven libraries).

Then, we could have IDE's with all kinds of features. In addition, we could write programs that transformed or modified our code bases.

This lets the "hard work" of compiler/parser building be centralized to a few developers, but spreads the benefits around to most everyone.

Since this is already happening in some languages (JetBrains, what Google is doing with clang for C/C++, and apparently Rosyln from Microsoft), it seems like only a matter of time before its power becomes apparent and it becomes a requirement for a language to be taken seriously.

I see no reason why Python and Ruby couldn't expose the compiler's AST as a service as well (obviously it would be limited by metaprogramming and dynamic typing ... perhaps in those cases we'd need "interpreter as a service" ... hmmm).

>As a result, every developer wouldn't need to know how to write a parser/compiler, but rather would need to master the usage of the API the compiler-as-a-service offers. (For example, imagine JetBrains Idea for Java or Resharper for C# as a suite of open source, api-driven libraries). >Then, we could have IDE's with all kinds of features. In addition, we could write programs that transformed or modified our code bases. >This lets the "hard work" of compiler/parser building be centralized to a few developers, but spreads the benefits around to most everyone.

Oh no you are not wriggling out of that one. Every developer should know how to write a parser and a compiler, not full fledged ones, just enough to implement a small language. That is in essence what computing is about, composing and instantiating formulae, with a full grasp of its semantics. To call your self a computing professional without knowing about parsing is like calling yourself a medical professional without knowing anatomy. This can only happen in the world of computer programming. It is the very essence of what we do, and how such a situation exists is an indictment of the computing profession, its educationists and educators.

It is the very soul of computing.

We might get away with it in the eyes of the public who don't know better because we produce the results they want, internally we shouldn't kid ourselves.

Ok, ok. If you want to define that as your minimum requirement, that's fine. I don't agree, but I'm sure many do. I know how to write a parser and a compiler anyway, so it doesn't step on my toes directly.

What I really meant to say was, everyone would not need to actually write a compiler/parser (regardless of whether they know how to or not). To achieve the goal of having a bunch of nice new IDE features, we don't need everyone writing parsers and compilers. We can achieve that goal by having a few developers write really good compiler-as-a-service offerings.