I think Julia is kind of simple in the sense that it has this idea that every function you write is automatically generic and the compiler infers the generic bounds by looking at the function implementation. A typed language that does something similar imperfectly is fsharps, but it does not work too well in practice
It sounds exactly the same as Python with pyright or mypy. A novel approach is taken by Elixir, which actually makes sure the compile time types match runtime types. That is , you can't call a function with an incorrect input type at runtime https://elixir-lang.org/blog/2023/09/20/strong-arrows-gradua...
> This issue is political and not so much technical as Typescript demonstrates how you can add a beautifully orthogonal and comprehensive type system to a dynamic language, thus improving the language's ergonomics and scaleability.
How does typescript demonstrate this?
I don't see how typescript is different from Python in this regard. Typescript compiles down to JavaScript, which like Python is dynamic. So at runtime nothing prevents you from calling a function written to take ints with strings. In fact, JavaScript has even worse typing than Python, so I imagine it's worse.
The principle of uv as much as I understand is to not tinker with virtual environments. With commands like uv run, uv sync etc you shouldn't have to worry about the virtual env and whether it's activated etc. if you are in a project, it will automatically pick up the right Python version . However if you want to do something not possible through those commands you can still get down to the virtual env. Plus for auto complete in IDEs you generally need to select the venv
What if you make a typo and instead of `area` you type `areas` the second time? I also don't see how one is more DRY than the other. If anything in the second example you typed `Shape` and `area` a bunch of times, so to me it's less DRY
To me it's just a new way of representing information that makes information on the web easily accessible to people. So in a way it's a breakthrough just like Google was a breakthrough. Google's pagerank represented the web as a graph and you could easily go to related pages. Gpts embed concepts in a high dimensional space and there are links between them that makes it easy to query this knowledge représentation. So I don't think it will replace humans so much as disrupt the knowledge industry just like Google
Khaki for me as an Indian is used to mean the color of police uniforms here. We call them Khakis. It's a dusky brown color. Except that and bungees, I'm not familiar with the other words
As an Indian who moved abroad and comes back occasionally this is the hardest part. As an Indian I always think in multiples of 10: 100,1000,10000, 1 lakh etc, but abroad after a certain point people think in multiples of 1000. 1000, million, then multiples of 10..The Indian system to me is more logically consistent
I've worked with some junior developers and my experience has been the same as yours. We work primarily with typed languages. With junior developers I see two ways it goes: either they write code that does not take advantage of the type system, typing everything as basic string or numeric types. On the other end of the spectrum, those who go to the extremes where they build a complicated type hierarchy with abstractions more complicated than the problem space requirements
Why are all java apps super slow like Intellij and require you to play around with heap memory with things like xmx min max etc?
I write Java code for a living and it's so dependent on frameworks to do many basic things where you can't really reason about the code. Subtle bugs can come from mutability here, nullability there, hidden state in another place and most coding styles rely on these and use them because it is so easy to do. It's possible, but not idiomatic to write immutable stateless code in Java. Coding in Java is now much more pleasant with records, optionals, sealed interfaces and streams, but it's interweaved with old coding styles so that it negates most benefits of the new patterns
I used to fiddle with F#, its tooling is good, but it's interweaved with too much dotnet c# cruft and also there's the dark shadow of Microsoft. I wish it had zero cost abstractions like Rust because most things you write in F# is also slower than C#
Actually JITs can be faster than AOT compilation because they can be optimized for the current architecture they are running in. There were claims Julia, a JIT language can beat C in some benchmarks