Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

When working with dynamic code, it’s an incredible boon to productivity to be able to quickly locate the definition of functions so you can build a complete mental context about what’s going on.

Imagine the 'incredible boon to productivity' you could get from tools (text editors, IDEs) that can deterministically show you all references or definitions of any method, variable, or class throughout your codebase whenever you want. (Hint: this isn't a dream--this is a huge plus of working with statically typed languages.)

For all of the pop-trendy love that dynamic languages seem to get for 'being fast for development,' (read: hacking) it's tragic how much they slow you down when you need to start hunting down where the hell something was magically (or meta-) declared or changed, especially when you're working with someone else's code (read: real life.)

The grep test seems like a great approach if you're stuck with a dynamic language. Of course, we don't always have the luxury to choose the technologies or platforms that we work with, but you've got the choice, a statically typed language solves this problem out of the box.



Sorry, my Common Lisp system does this quite well. Other dynlangs should be able to do it too....


Doesn't CL also fail the grep test? You can generate function names on-the-fly, can't you?


Separate compile-time from run-time....

(DESCRIBE #'functionname) from the REPL will give you information about the function; you can also pick up source if you configure it right.

The key idea is that software as written only loosely defines software images as they are live. 'Static' languages attempt to ensure that there is a tight correspondence, but dynamic linking defeats that in part.

Image based software ideas take this idea and run with it: that's why you download Smalltalk images, not smalltalk source.

Anyway, food for thought. :-)




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: