5 ms·
Lets be real, when we say dynamic languages, we aren't talking about niche languages like Lisp. We are talking about JS and Python almost exclusively.
by Eire_Banshee 9y ago
Lets be real, when we say dynamic languages, we aren't talking about niche languages like Lisp. We are talking about JS and Python almost exclusively.
- amirouche 9y agoPython has jump to definition too.
- adamnemecek 9y agoYou mean there’s an ide with that feature? It’s never as good as with any statically type language.
- catnaroek 9y agoDoes it work in the presence and (ab)use of dynamic features? (e.g., when you have lots of decorated functions) Or is it just a best effort thing? (i.e., only works when your code would actually be expressible in a static way)
- fulafel 9y agoThis is a continuum... in many statically typed languages there are regularly used paths that lead outside the realm of the language-defined type system as well. Consider dynamic class loading in Java, dlopen / reinterpret_cast in C++ etc.
- catnaroek 9y ago> This is a continuum. It is not. A language feature is either amenable to static analysis (not necessarily type checking) or it is not. > Consider dynamic class loading in Java, dlopen / reinterpret_cast in C++ etc. This actually emphasizes my point. Features that are not amenable to static analysis are problematic for tooling.
- pvorb 9y agoIntelliJ/WebStorm is also pretty good at this (with JavaScript at least) by indexing a whole project and its dependencies. Refactoring doesn't work that well, though.
- fulafel 9y agoThere have been references to Clojure, Elixir, Smalltalk, Common Lisp in the comments here, what makes you think just Javascript & Python?
- yellowapple 9y agoIt's worth noting that Elixir (by descent from Erlang) can emulate at least a basic static typing system pretty easily through pattern matching. You miss out on some features common in more traditionally-object-oriented languages (namely: subtypes), but tagged tuples and structs do provide a lot of the same safety benefits in runtime (and tools like Dialyzer can - last I check - use such pattern matching as a basis for static verification).
- nv-vn 9y agoElixir and Erlang still lack the ability to typecheck any process behaviors because messages can take any type anywhere.
- yellowapple 9y agoYou can still pattern match when receiving, though (in fact, 'receive' in both Erlang and Elixir does pattern matching already in the same vein as 'case'); just match messages based on a tagged tuple or a record (Erlang) / struct (Elixir) signature or however else you want to define your "types".
- flavio81 9y ago>Lets be real, when we say dynamic languages, we aren't talking about niche languages like Lisp. How can it be a niche language, if it's an ANSI standard, has more than 8 or 10 fully feature, standard-conformant implementations, runs on most CPU types, and has been proven to work in production systems for spaceship guiding, worldwide airfare reservation and credit card transaction verification? You use Js and Python because you choose to use it, but it's not the only choice. Not only Common Lisp, you could also be working in Clojure with many benefits.
- hellofunk 9y agoWhy would you say that? There are far more dynamically typed languages in widespread use than those 2!