4 ms·
I don't think this is a fair assessment of "most ML people" Some of the biggest distributed systems built today are used for statistical inference or scientifi
by gonab 5y ago
I don't think this is a fair assessment of "most ML people"
Some of the biggest distributed systems built today are used for statistical inference or scientific computation
Most "ML people" I know are highly versatile in software, networks and deep hardware knowledge, i.e., essentially they have a very good understanding of what a computer is and what is capable from
Its very naive to think that you can assemble machine learning systems without having a solid understanding of computers and statistics
You know who also likes python a lot? Hackers. I wonder why
- gonab 5y agoPython is used to make fast and dirty experiences. You haven't figured out the answer yet, so no point on building dedicated optimized code which might be useless in end Almost always, ML production models end up being a binary files of matricial weights. This file can be loaded in wtv language or device you decide to use
- dustintrex 5y agoPerhaps we're talking about different sets of people? You seem to be describing the people who build ML systems, while the previous poster was talking about the people who use them. Your average data scientist most definitely does not have (or, really, even need to have) deep hardware knowledge or any understanding of networking.
- gonab 5y agoI personally consider the term "data scientist" a very successful creation by a clever marketer It's sexy and most of the times ...
- perth 5y agoThe most insane thing about Python is how you can override single methods in classes and use the class like normal. One time I was working on getting FIFO working on Windows, and none of the Python built-ins were set up to handle any random process writing to a named pipe that wasn't within the same Python instance. So what I did was I took the closest implementation Python offered, which was in the multiprocessing module [1], and overrode a single one of the methods to do what I wanted it to do. The module still handled all of the cleanup so I was confident there weren't any memory leak issues, and I was able to make a simple change to the flags it was passing Windows to allow for the functionality I wanted. A language that has a hackable standard library itself is insane and I don't think I've seen it on any other language. In addition, I've found the C/C++ bindings for Python wonderful and intuitive to work with. The setup takes no effort at all and it "just works", batteries included, via ctypes. https://github.com/python/cpython/blob/main/Lib/multiprocessing/connection.py https://github.com/python/cpython/blob/main/Lib/multiprocess...
- dragonwriter 5y ago> The most insane thing about Python is how you can override single methods in classes and use the class like normal. Isn't that true of basically every language supporting class-based OOP and inheritance?
- danwills 5y agoIt's called 'monkey patching' and python does make it particularly easy, simply: class.methodName = newMethod .. kinda thing, future callers now get your method instead of the original. This does seem a fair bit easier than other languages make it to do?
- perth 5y agoYou see exactly what I mean!
- alanfranz 5y agoclass.methodName = newMethod > .. kinda thing, future callers now get your method instead of the original. Which is as powerful as it is a problem, since doing such kind of monkeypatching will change the behaviour all other instances, including already-created ones, that know nothing about your trick. Any part of the program can modify any other part of the program in a significant way, making local reasoning and debugging very hard. So, great for quick-and-dirty single-file scripts/ipython notebooks. Terrible for large systems. That's the very issue with Python. The way it doesn't enforce sane, clean programming behaviour makes it easy for a beginner/non-programmer to work with it. But a large system with a lot of external libraries is very hard to maintain. Source: Python user since ~2004
- dragonwriter 5y ago> It's called 'monkey patching' and python does make it particularly easy Inheritance and overriding method in the descendant class is cleaner, and more broadly supported. When you need monkey patching, sure, its nice that most modern dynamic OO languages support it quite naturally. (Ruby even supports scoped monkey patching via refinements, as well as classic monkey patching and per-object overrides.) But this is not at all unique to Python.
- deleted 5y ago[deleted]
- exdsq 5y agoEthical hackers have written some of the worst code I’ve ever seen. They have to know a ton about the security of frameworks, networking, etc… it’s a very complex role for sure, but they are not shining beacons of software engineering quality
- gonab 5y agoI agree. Their objective is not to build beautiful code but to provide a working prototype I'm sure every single one of them is capable of writing world class code if they feel like it Their exploits are world class and their focus is to exploit I have seen stuff in JavaScript exploitation that I can't even scratch the surface. I feel like I have been playing piano for 15 years and I can't even understand if that a music that is playing
- Agingcoder 5y agoMost ml people (aka data scientists) I've met have little understanding of what a computer is, and it's fine. They understand stats. The tiny subset of people who build ml systems (say tensorflow core devs, write actual distributed systems, etc) are actually hpc specialists, and have all the qualities you describe. Of course, you may work somewhere where you're lucky enough to have everyone be good at everything!