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

> If you're doing something exciting, pick a boring technology.

Not being exceedingly serious here but... you pretty much summed up why Python is so successful in AI/ML and science ;)



How does that follow?

The boring technology in AI/ML is C++.

Which is why TensorFlow etc. have a boring & hard C++ core, and a lovely & easy Python layer that transmits the computational graph to the core.

Electron is similar: a boring & hard Chromium C++ core, and a lovely & easy JS layer.

What pains me is that there is no reason to include libraries we don't use.

Each Electron embeds a large amount of memory-consuming libraries that do things that are way out of scope for most apps: screen recording, sound editing, GPU graphics libraries…


Python is a boring technology. It's a 10+ years old language, like ~20 years behind cutting edge programming language research and implementation. Also, as for the programming style it encourages, it strongly nudges you against any "cool" way of programming: even the most basic kinds of functional programming is something you end up avoiding in P and "dumbing down" your code to more procedural idioms, and OOP over-over-over-architecting is something you just don't do because of the performance penalty and the lack of serious refactoring tools for large codebases. The side effect is that all code is more readable and understandble to anyone, including self-taught devs. JS itself is a boring language at its core too, except that it evolves faster than anything else. And the ecosystem is anything but boring (and also anything but sane...).

Cooler and more advanced (in terms of language features) languages are Julia (it has real macros, advanced type inference etc.) and even R (yeah, it's a mess, but as a language it's more advanced and "cooler" than Python). On the "web backend" scene Ruby is a way more "not boring" language, but the ML and science communities avoided it almost completely (I have a few theories as to why...).

And then there's the "truly cool" and "0% boring" languages like: Scala, Rust, Elixir, Clojure, Haskell, Elm, Crystal, Pony etc.

But don't get me wrong, I like Python for being what it is: an incredibly boring scripting language, that encourages a "stone age level" style of dumbed-down programming. With slightly awkward but stable libs (on which people agree almost unanimously of which to use). Because with Python I can focus on the product instead.


Python was shown to the world in 1991, and hit 1.0 in 1994, making it roughly 27 years old, incidentally. You did say 10+, but most people don't realize just how lengthy a pedegree Python has.


C++98 mostly coded in C style, is boring & hard.

C++17 written using best practices in safety learned in the last decades, is exciting and simple.


Huh?! ever seen a c++ project not using any pre-C++17 code?! If it's there, sooner or later you're going to have to debug through it :)

Anyway, C++ is nothing but boring... even the bugs you encounter are nothing bu extremely surprising and "creative" :P


I wrote C++17, just to hint how one should aim to write proper code as of 2018. At very least, one should be making use of C++11 and whatever the compiler already supports from C++14.

Of course, it will take time to move from "C compiled with C++ compiler" to something better, specially in the embedded domain where Assembly and C still rule.

The tools are there, and an incremental update into safer code is always better than throwing everything away, and rewrite everything, including the already fixed bugs.

The only thing that C++ cannot fight against is the C mentality. That is only possible in languages that lack copy-paste compatibility with C.




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

Search: