Hacker News new | comments | show | ask | jobs | submit login

Although I don't use XCode, I'm not sure how I feel about it suggesting minor fixes such as the == example. I enjoy writing a line seeing an issue and then solving it, or at least having to scan it with my eyes.

While I'm sure it's not an issue for most, I've always wondered whether that sort of thing breeds dependency. What happens when you don't have the IDE? Do you forget how to scan and fix minor issues? I've seen much worse... I've seen "professional developers" not know how to code or run projects without their all knowing IDE. Although I don't want to point any particular group out, many users of Visual Studio suffer from this issue.




I couldn't disagree more with this. I use what is IMO the gold standard for IDEs now - IntelliJ. One of its most undersold features is online static analysis. I've spent a lot of time working with Java and I actually study the language to a pretty deep level, but it still catches many, many bugs from stupid (== instead of equals) to very subtle (errors in initialisation order in the presence of overloading, synchronisation issues etc). I've actually learnt a lot about the language by using the tool.

I also can't speak highly enough about quickfixes. The ide presents me with a problem, and then makes it very easy to fix without having to think about all the crappy mechanics of doing so. If it's a common issue I can fix it all through my file, or all through my project. What is really amazing about this (as well as all the syntax-aware editing functionality) is that once you're good at it, you're no longer editing text, you're directly manipulating the AST at a very semantic level - and not just of a single file, but of your whole project. At the risk of gushing a little, this raised level of editing really contributes to my joy of programming because I'm actually directly manipulating turning my mental design into code. I would like to humbly suggest that people who say that you only need this functionality with crippled languages really don't know what they're missing out on.

Has this removed my ability to program Java in, say, Textmate or vi? No, although I'd have to re-learn so many basic, low level manipulation tasks that there's no way I could stand it. It doesn't remove my ability to develop using these editors, it removes my desire to.


Since the introduction of automatic transmissions many people haven't been learning how to shift a manual transmission. These people aren't necessarily worse drivers.


They are in the sense that they need to be picky about the cars they drive.

I've been using a manual transmission ever since I took my driver's license 10 years ago. At first I also drove a shitty car ... gears wouldn't shift unless you knew how to touch the gearstick :)

Now I can drive just about anything, with no accommodations necessary. Changing gears is also in my reflex and it doesn't bother me ... I just don't think about it. I can also eat a sandwich or talk to the phone with no hands-free while driving, although that's considered a bad practice that's also illegal :)


Well, I think the difference is even less than that.

People who never drove a stick-shift may have no idea how to operate one. Whereas someone switching from an IDE to a text editor would still be able to work - just less productive.


> Whereas someone switching from an IDE to a text editor would still be able to work - just less productive.

I have my doubts about that as I have seen many evidence to the contrary.


Apt metaphor! Sometimes driving a manual transmission can be fun (think wide open road), On the other hand, have you ever driven a manual in congested rush-hour traffic? It sucks! It requires a lot more work, concentration and sometimes it's literally painful (aching leg from working the clutch).

Technology is great. Embrace the future!


What you're talking about is a subset of technology itself.

With any (good) technology it becomes easier to do things and we gradually forget how to do the old, more complex way. I remember power going out at a big box (forgot which one) store once. None of the checkers had any idea how to figure out how much the items would cost by hand so the store was forced to simply not do business until power was restored. Was that embarrassing? Perhaps, but who cares? They can serve vastly more customers with the systems they have now than they ever could have with the old manual way.

With a big IDE you can manage vastly bigger projects quickly than you could with a text editor and a make file. You might point to the Linux kernel but most people who work on that just touch one area at a time [1]. With my big fancy IDE I can work on projects of at least that size and make big sweeping refactorings in seconds with complete confidence that nothing got missed.

[1] With the possible exception of Linus but if you're going to require that each of your devs be a Linus (or even that you have one for that matter) then you're probably not going to go far.


You'll notice that it's always bloatiest languages that have the most powerful IDEs. Look at Java/Eclipse. Now back to Ruby/TextMate. Most of the Haskell/Lisp developers I know just use Vi or Notepad.

The problem is, C is a language where = vs == is actually something you have to think about. It's natural that IDEs arise to address this.

XCode is fixing what is really a problem at the language level. So it's the wrong place to fix the problem. At the same time, trying to fix the problem at the programmer level (by forcing programmers to check = vs ==) is equally the wrong place to fix it.

It's a language issue, and that's the place it really should be addressed. But it will never be addressed there, because it would break backwards compatibility since decades.


"Most of the Haskell/Lisp developers I know just use Vi or Notepad."

Uhh, what? In Lisp's case, most people use emacs and coding Lisp in Notepad is mostly IMPOSSIBLE because trying to balance parentheses and navigate and indent s-expressions manually (and correctly) is idiotic.


In Python you can't have "if x = 3:" ... that's a syntax error. And Python also uses "==" for equality comparison.

There, problem solved.

I would solve the problem in Obj-C by introducing a directive on the file-level for the newer syntax, like how they did it in F# with the "#light" directive. And when a file is compiled with that directive, the compiler could trigger compile-time errors for those obviously dangerous constructs.


I'd like to provide a counter-example here: Ruby allows this construct, enabling me to write

x = Post.first ? do_foo(x) : do_bar # does the assignment, then evaluates the result

A nice shorthand in my opinion, so the python way isn't a cure-all :)


I think you mean this

(x = Post.first) ? do_foo(x) : do_bar




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: