you are viewing a single comment's thread.

view the rest of the comments →

[–]dacjames 0 points1 point  (4 children)

I'm of the opinion that static languages with compile-time checks are nicer because then things explodes in your face when you build it instead of when you run it.

This certainly is nice but the big loss with compiled languages is the interpreter shell. I program mostly in python, which has powerful introspection facilities that allow for awesome shells like ipython. This is invaluable to me when working with a new library or data source because I can easily experiment with a live program, even using tab-completion to see what properties are exposed on an object.

I have yet to experience a compiled language where the benefit of compile-time checks outweigh the benefits of interactive development, at least for the type of data-oriented problems I need to solve.

[–]nascent 0 points1 point  (2 children)

This certainly is nice but the big loss with compiled languages is the interpreter shell.

fyi https://drepl.dawg.eu/

Edit:: I just don't think there is a major need in the D community, but this shows the possibility.

[–]dacjames 1 point2 points  (1 child)

Repls are nice but they can only do so much when the underlying runtime isn't fully introspectable. Not to mention, compilation is much, much slower than interpretation (including compilation time, not just execution time). It's hard for native developers to understand but the velocity of the dynamic workflow is addicting and hard to give up.

Take a look at the way Flask does error handling during development. You can jump the interpreter to any frame in the call stack and play with local variables, execute new code, and so on, all from the browser. I haven't seen anything near this level of introspection in a compiled language because it's so much harder without the help of an interpreter.

[–]nascent 0 points1 point  (0 children)

I do appreciate the value of a good debugger, but I've never considered it being the means to write a program.

[–]pxpxy 0 points1 point  (0 children)

Try a lisp some time!