3 ms·
Kotlin is basically a flavor of Java that cleans up some syntax quirks, and adds some new ones. I think it's overall a cleaner language than Java, but it's not
by yogthos 8y ago
Kotlin is basically a flavor of Java that cleans up some syntax quirks, and adds some new ones. I think it's overall a cleaner language than Java, but it's not fundamentally different from it. I certainly wouldn't view it as a next generation language.
I think it's important to step back and consider the history of programming languages to understand why mainstream languages look the way they do. Hardware was very limited in the 70s. The Intel 4004 CPU that came out in 1971 clocked in at 740 kHz, and it was coupled with a few kilobytes of memory.
So the language had to be optimized to squeeze every last possible bit of performance from this limited hardware. You didn't have to worry about concurrency, there weren't any consumer grade multicore CPUs, and networking wasn't prevalent at the time.
C solved that problem very well. It was effectively portable assembly allowing you to write extremely efficient code that could be compiled across different architectures. Meanwhile, advanced languages like Lisp required super computers at the time, and only a small number of people was lucky enough to work with them. So, a whole generation of programmers grew up on C, and they went on to design languages that look like C.
The problems we face today are completely different from those we solved in the 70s. We work with much larger codebases, we often work in teams, we have multicore chips, and networking is prevalent. Things like managed runtimes, GC, and threading that were absurdly expensive in the 70s are common today, but C family of languages aren't optimized to take advantage of that.
Raw performance is no longer a priority because developer time is far more expensive than hardware. This means that we need to optimize for clean and maintainable code that's concurrency friendly. Languages like Clojure and Haskell are a new breed of languages that are designed to solve modern problems, and that's the fundamental difference between Kotlin and Clojure in my opinion.
- lispm 8y agoLISP was implemented on the PDP-1 in the early sixties - originally it was implemented for the IBM 704 in 1959. C was implemented on a larger machine, the PDP-11 in the early 70s. There were LISP implementations for the PDP-11 - Richard Stallman himself wrote one. One of the problems was that LISP was not friendly to timesharing, since a LISP program could take over the whole RAM and something like GC would walk over lots of memory, which meant lots of slow memory swapping in machines with virtual memory. It was then best to use LISP when alone on such a machine.
- yogthos 8y agoI'm well aware of the origins of LISP, but reality is that C model is much closer to hardware architecture used in commodity hardware at the time. C made a lot of sense under the constraints, and that's the reason it became popular.
- lispm 8y agoOther than what you wrote, LISP did not need 'super computers'. It ran on the same and smaller machines as the original C. A PDP-1 was never a 'super computer', neither were the other PDPs. They were 'minicomputers' or 'mainframes'. Actually super computers (CDC, Cray, ...) were not a particular popular target for LISP implementations, ...
- yogthos 8y agoFair point, you didn't actually need super computers to run LISP.