4 ms·
Programming language researchers always seem to miss the biggest selling point of manifest and (partly-)nominal typing. It's the thing that happens after a C# p
by breckinloggins 12y ago
Programming language researchers always seem to miss the biggest selling point of manifest and (partly-)nominal typing. It's the thing that happens after a C# programmer types a "." in Visual Studio. Want someone to use a single language and voluntarily turn the play-doh of a prototype into a sound concrete foundation via gradual typing? Tell them they will get full IntelliSense.
That Microsoft environments are STILL 15 years ahead of the Unix / web world on this (and modulo F# type providers, themselves 15 years behind Genera and SmallTalk) will be recorded in history as one of the tragic ironies of this age.
Give up assuming that all programming must be done on a teletype from the 60's. It's time to move on to at LEAST the Lisp Machines of the 80's. Please??
By the way, for those who didn't understand what Kythe[1] was all about: THIS is what it's all about. It's possible without types, but it's MUCH better with them.
[1] http://www.kythe.io/docs/schema/ http://www.kythe.io/docs/schema/
- beliu 12y agoThis is a great point. The quality of the tooling around a given language/ecosystem has a huge impact on the productivity of people working in that ecosystem. See also https://srclib.org/ https://srclib.org/, a library with similar goals to Kythe supporting a different set of initial languages (including JavaScript, Python, Ruby, Java, Haskell, and Go) with editor plugin support for Emacs, Sublime, and Atom. (Disclaimer: I'm one of the authors.) The dynamic languages, and JavaScript in particular, are hard to support well. Libraries like tern.js make it doable, but life would be much easier with stronger static guarantees from the language itself. For now, it's a very hard problem, but there is so much to gain from Intellisense-level tooling around JS.
- breckinloggins 12y agoThat's awesome! What I'm hoping for is a "decoupling layer" that allows every text editor, IDE, and other code tool on the planet to hook into one end, and every language, compiler, interpreter, etc. to hook into the other. If I'm writing a new language (which, of course, I am) I know how important tooling is. But I don't use vim or Emacs so I personally don't care about vim or Emacs. Sublime Text maybe. It would be nice if I could upload a thing somewhere for my language and suddenly GitHub gets syntax highlighting for it and every editor and IDE in the world suddenly supports all the IntelliSense-like things for it. But we don't do it that way. Each of us has to re-invent 18 wheels. Needless to say, I hope approaches like yours and Kythe succeed. Then we can focus on the obvious utility of adding more metadata to our programs.
- murbard2 12y agoI agree with you on the sentiment, but note that Jetbrains products run great on Linux and do a lot more magic than IntelliSense. PyCharm even does a great job for dynamically typed Python, relying on type annotations, run time logs, etc.
- sanderjd 12y agoI like IntelliSense and its just-as-good brethren mostly in Java-focused IDEs, but my perspective is that it's a valuable but small bonus, rather than anything like a 15-year leap of progress. It's nice, but it just isn't that important, and it's very annoying when people act like if you don't see it as some sort of Best. Feature. Ever. you're living in the past. IntelliSense isn't even close to the coolest thing about good type systems. What's cool about them is catching dumb errors and contract violations statically and reducing the number of unit tests that it takes to feel confident in a piece of software. Kythe is a really great project, though.
- XorNot 12y agoIntellisense is an amazing friction reducer for good APIs though. Having something pop up, give you the exact spelling, what's available, and the parameter names, massively reduces the learning curve. I don't see how wanting it is "living in the past" - because we certainly don't have it - not on Linux - in the present.
- sanderjd 12y agoYou misunderstood me. People who use editors that don't have IntelliSense are the ones accused of living in the past by my parent comment. I think liking and wanting IntelliSense is incredibly reasonable, but I think that the perspective that it is indispensable and that people who don't use it are products of the 80s (or the 60s!) is ridiculous.
- seanmcdirmid 12y agoPeople still drive around without live GPS, many find it distracting and prefer old fashioned maps or to remember all their routes in their heads. Having code completion allows you to work with bigger APIs in an ad hoc manner (discover Inge as you go). You don't need that, but it is nice. There are other factors that can improve the experience, which you have to look at holistically.