Live data from Hacker News

Development Environments

phaazon.net

121–130 of 145 posts

Re: Development Environments

#121
post #26

Earlier quoted context omitted.

Good IDEs precede Java, e.g. Borland products for Turbo Pascal and C++, Common Lisp and Smalltalk environments. The anti-IDE crowd seems to like to pick on Java.

> The anti-IDE crowd seems to like to pick on Java. It's largely because Java is verbose. Because of that, the java ecosystem continues to produce frameworks and libraries that make it easier for programmers to convolute their code behind functionally opaque interfaces, eg Spring, Lombok, etc. which also happen to provide "solutions" to reducing repetitive or traditionally verbose code. We have computers to automate…

Somehow it is still much better than most hispter frameworks with their interpreted languages and monkey patching galore, or this Google worshipped language thanks its author's pedigree.

Re: Development Environments

#122
post #27

Earlier quoted context omitted.

Meanwhile the author of XEmacs says he prefers modern IDEs.

[Citation needed]

> These days I live in NetBeans. It does everything I want, very cleanly simply and efficiently. It’s the nicest environment I’ve ever lived in.

https://www.dodgycoder.net/2012/09/q-with-nine-great-program...

It wasn't XEmacs, but rahter the genesis of Emacs itself (I got that wrong).

https://www.youtube.com/watch?v=IT__Nrr3PNI&t=1642s

https://en.wikipedia.org/wiki/Gosling_Emacs

Got to love all the St. Thomas requests on developer forums.

Re: Development Environments

#123
post #94

There are four things which IDEs typically provide which I find invaluable. It's probable that some or maybe even all of them could be wedged into Vim or Emacs, but then you'd have basically an IDE. 1. Quick go to _anything_. In IntelliJ IDEs, it's double-shift, and then start typing some of what you want. Usually you can find the class or module or file you want easily, if not automatically. 2. Interactive debugging…

I'm able to do all these with a simple text editor, an IDE takes up resources, implements tracking, and real programmers basically have no use for anything aside from a simple text editor.

Re: Development Environments

#124
post #122

Earlier quoted context omitted.

[Citation needed]

> These days I live in NetBeans. It does everything I want, very cleanly simply and efficiently. It’s the nicest environment I’ve ever lived in. https://www.dodgycoder.net/2012/09/q-with-nine-great-program... It wasn't XEmacs, but rahter the genesis of Emacs itself (I got that wrong). https://www.youtube.com/watch?v=IT__Nrr3PNI&t=1642s https://en.wikipedia.org/wiki/Gosling_Emacs Got to love all the St. Thomas request…

For anyone following along, that quote is from the first link.

The comparison and conversion can and will depend on many factors, the first and most likely is that the version of emacs he wrote didnt have standard lisp, not that elisp is much more standard.

When a non free ($395 in 1980 money) vs free (as in GNU/GPL) version of emacs, its not surprising that GNU emacs was the crowd favourite.

I'm not convinced that goslings move to an IDE as the gos emacs creator is a fair datapoint when comparing modern emacs though.

Re: Development Environments

#125
post #94

There are four things which IDEs typically provide which I find invaluable. It's probable that some or maybe even all of them could be wedged into Vim or Emacs, but then you'd have basically an IDE. 1. Quick go to _anything_. In IntelliJ IDEs, it's double-shift, and then start typing some of what you want. Usually you can find the class or module or file you want easily, if not automatically. 2. Interactive debugging…

I'm able to do all these with a simple text editor, an IDE takes up resources, implements tracking, and real programmers basically have no use for anything aside from a simple text editor.

Is that the classical „real men don’t need guns, we kill with our bare hands“?

Re: Development Environments

#126
post #122

Earlier quoted context omitted.

> These days I live in NetBeans. It does everything I want, very cleanly simply and efficiently. It’s the nicest environment I’ve ever lived in. https://www.dodgycoder.net/2012/09/q-with-nine-great-program... It wasn't XEmacs, but rahter the genesis of Emacs itself (I got that wrong). https://www.youtube.com/watch?v=IT__Nrr3PNI&t=1642s https://en.wikipedia.org/wiki/Gosling_Emacs Got to love all the St. Thomas request…

For anyone following along, that quote is from the first link. The comparison and conversion can and will depend on many factors, the first and most likely is that the version of emacs he wrote didnt have standard lisp, not that elisp is much more standard. When a non free ($395 in 1980 money) vs free (as in GNU/GPL) version of emacs, its not surprising that GNU emacs was the crowd favourite. I'm not convinced that g…

Yeah, that there is that detail that our community is plagued by people that won't pay for their tools while feeling entitled to get a salary.

Imagine if all professions would behave the same way.

Re: Development Environments

#127
post #94

There are four things which IDEs typically provide which I find invaluable. It's probable that some or maybe even all of them could be wedged into Vim or Emacs, but then you'd have basically an IDE. 1. Quick go to _anything_. In IntelliJ IDEs, it's double-shift, and then start typing some of what you want. Usually you can find the class or module or file you want easily, if not automatically. 2. Interactive debugging…

I'm able to do all these with a simple text editor, an IDE takes up resources, implements tracking, and real programmers basically have no use for anything aside from a simple text editor.

Bit of a stretch to describe something that has all the features of an IDE as a "simple text editor". Notepad is a simple text editor.

What you have is a text editor that you've (presumably) augmented with a ton of plugins to turn it into a full IDE.

Re: Development Environments

#128

I've been programming since well before we had IDEs... I love them. Proper modern IDEs provide a level of insight and tooling that the anti-IDE crowd just don't get. A couple of decades ago they were problematic. But today's unified toolchains and improvements made them far better. The one semi legitimate problem people have is performance. I run on an M1 Max with 64gb of RAM and gave a lot of RAM to IntelliJ (Ultima…

I would say that for embedded, your logic analyzer and you oscilloscope are actually part of the IDE.

Embedded devs have the fanciest of IDEs.

Re: Development Environments

#129

Earlier quoted context omitted.

> write a Dockerfile I was sort-of agreeing with you until this point. In my experience "write a Dockerfile" usually means "run a bunch of fragile, non-deterministic nonsense, like `apt-get update && apt-get -y install`, `yum install`, `pip install`, `npm install`, etc.; often all at the same time!" (AWS are a serial offender IMHO, e.g. their documentation recommends this sort of crap https://docs.aws.amazon.com/lamb…

Docker is a way of taking fragile, non-deterministic things like package installations, and make them less fragile, in very practically-useful ways. Compared to the old way of doing these things (which would likely be a shell script that would run those exact same apt-get/pip/yum/npm install commands), Dockerfiles give you: - a much more predictable starting state, which lets you remove a bunch of complexity from you…

> the old way of doing these things (which would likely be a shell script that would run those exact same apt-get/pip/yum/npm install commands)

Shell scripts are certainly an "old way" of doing things, dating back to the 1970s. However, since the 1990s there's been a safer, more declarative way to solve this problem: package managers!

> detect which OS it's running on, which version of Python is installed, whether you're using GCC or clang, whether libgomp or lzma or whatever is installed... isn't going to clobber your nginx configs

These are trivially solved by making a package:

- To specify the desired OS, just depend on e.g. ubuntu-minimal-1.417 (or equivalent)

- To depend on Python, libgomp, lzma, etc. we just declare those as dependencies (specifying exact, known-good versions)

- To use gcc but not clang, specify one as a dependency and the other as a conflict (or vice versa)

- Packages cannot "clobber" existing files (like an Nginx config): if multiple packages try writing to the same path, the package manager will abort and roll back the transaction

In contrast, writing `apt-get install` in a script (whether it's inside a container or not) is just flat-out wrong: it's using a package manager incorrectly.

> Dockerfiles give you... a much more predictable starting state

"Much more predictable" than what? Established tools like `debootstrap` start from an empty folder; I can't imagine anything more predictable.

> Containers have a whole pile of downsides, but making builds _more_ fragile is not really one of them.

I never said containers make builds "more fragile"; I actually think the exact opposite! Containers are great; in the above example, after debootstrap is finished we can run `tar` on the result to get a standard OCI container image.

My complaint is about Docker, and in particular Dockerfiles, which encourage fragility and non-determinism in two ways:

- For some reason, there's a strange belief that Dockerfiles are somehow related to building/packaging software (e.g. projects providing their software in container images, defined using Dockerfiles). That's a bait-and-switch: Dockerfiles are basically just scripts; we still need to choose what commands to run in order to actually build/package our software. If we believe that Docker is solving our building/packaging problem, then we're less inclined to run "proper" build/packaging tools in those containers (e.g. dpkg, rpm, nix, etc.); we're more likely to write crappy imperative shell scripts instead, since that's all that Docker itself provides.

- Container images produced by Dockerfiles are essentially a cache of their output. This avoids having to deal with the fragility and non-determinism of our scripts up-front, until we need to rebuild. As long as it "worked for me" at some point, we can keep using the resulting binary blob, even if it's completely unreproducible and bears no relation to its supposed "source code" (e.g. `apt-get update && apt-get -y install` just copies whatever files happen to be on the server that day). We can even "push" those blobs to a "registry", so others can avoid having to run our crappy scripts.

(Note that the above focuses on binary package managers, since the example was Dockerfiles running `apt-get` and `yum`. Personally I switched to using Nix about a decade ago, which is source-based and even more deterministic than those tools; e.g. apt-get and yum use version numbers and constraint solvers, whilst Nix uses hashes)

Re: Development Environments

#130
post #94

There are four things which IDEs typically provide which I find invaluable. It's probable that some or maybe even all of them could be wedged into Vim or Emacs, but then you'd have basically an IDE. 1. Quick go to _anything_. In IntelliJ IDEs, it's double-shift, and then start typing some of what you want. Usually you can find the class or module or file you want easily, if not automatically. 2. Interactive debugging…

I'm able to do all these with a simple text editor, an IDE takes up resources, implements tracking, and real programmers basically have no use for anything aside from a simple text editor.

How's refactoring support and formatting code? Navigating code as in click and go to definition? I say this because I work with someone who uses VIM and these are constant issues working with them.
Post reply on HN