News for hackers. Stuff that matters.
Re:Diminishing returns of static typing by Eire_Banshee on Monday October 02, 2017 @12:16PM (#15385080)
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.
Re:Diminishing returns of static typing by flavio81 on Monday October 02, 2017 @01:35PM (#15385946)
>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.

Re:Diminishing returns of static typing by amirouche on Monday October 02, 2017 @12:35PM (#15385291)
Python has jump to definition too.
Re:Diminishing returns of static typing by catnaroek on Monday October 02, 2017 @01:10PM (#15385705)
Does 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)
Re:Diminishing returns of static typing by fulafel on Monday October 02, 2017 @02:27PM (#15386442)
This 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.
Re:Diminishing returns of static typing by catnaroek on Monday October 02, 2017 @03:16PM (#15386982)
> 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.

Re:Diminishing returns of static typing by adamnemecek on Monday October 02, 2017 @12:39PM (#15385341)
You mean there’s an ide with that feature? It’s never as good as with any statically type language.
Re:Diminishing returns of static typing by markbnj on Monday October 02, 2017 @12:57PM (#15385557)
Sublime Text has this feature on hover, but I am fairly certain it is based on text search of the modules in the python path.
Re:Diminishing returns of static typing by hwayne on Monday October 02, 2017 @12:49PM (#15385455)
Have you tried it? It's usually pretty good for Python.
Re:Diminishing returns of static typing by steelbird on Monday October 02, 2017 @12:53PM (#15385503)
Which IDE?
Re:Diminishing returns of static typing by hwayne on Monday October 02, 2017 @01:13PM (#15385733)
PyCharm and VSCode are both pretty good.
Re:Diminishing returns of static typing by fulafel on Monday October 02, 2017 @01:06PM (#15385656)
There have been references to Clojure, Elixir, Smalltalk, Common Lisp in the comments here, what makes you think just Javascript & Python?
Re:Diminishing returns of static typing by yellowapple on Monday October 02, 2017 @01:54PM (#15386132)
It'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).
Re:Diminishing returns of static typing by nv-vn on Monday October 02, 2017 @05:51PM (#15388269)
Elixir and Erlang still lack the ability to typecheck any process behaviors because messages can take any type anywhere.
Re:Diminishing returns of static typing by yellowapple on Monday October 02, 2017 @09:01PM (#15389240)
You 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".
Re:Diminishing returns of static typing by hellofunk on Monday October 02, 2017 @01:56PM (#15386159)
Why would you say that? There are far more dynamically typed languages in widespread use than those 2!
Re:Diminishing returns of static typing by pvorb on Monday October 02, 2017 @12:39PM (#15385339)
IntelliJ/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.