3 ms·
It seems to me the author should think twice about rewriting an entire code base in a new language. This almost always leads to disaster, and often doesnt give
by TeeWEE 12y ago
It seems to me the author should think twice about rewriting an entire code base in a new language. This almost always leads to disaster, and often doesnt give you a lot of value.
Also he is pointing out, that he doesnt want to use 3rd party libraries. I worked with people who said that before... This breaks the whole idea of writing software by standing on the shoulders of giants. When you write an app, you almost ALWAYS use libraries (and they are not written by you). Writing a complete app just with the core language tools seems like total nonsense to me.. Why woudnt you use a library that solves the job for you?
You should off course try to prevent entangling dependency of a lib into your code base. But thats a basic rule of software engineering.
B.t.w, with testing, you can mock away those libraries and still have nice unit tests.
- wolfwyrd 12y agoI think the point of the author wasn't that libraries are bad per sé, it's more that why should a library be needed for something that's core to the purpose of the language.
- d2p 12y agoThere are lots of details about what we're rewriting any why that aren't really relevant to this discussion. I'm (we're) not against 3rd party libraries; but we'd like to minimise our use of them because we're constantly bitten by poor libraries introducing breaking changes or being abandoned. I'm sure anyone that has worked on a huge codebase over a long period of time has been bitten in the same way. We certainly don't want to rely on 3rd party libraries for something so fundamental (and the absence of it from the Dart Team only makes us more concerned).
- andybak 12y ago> poor libraries introducing breaking changes Don't update unless you have to? > being abandoned How is abandoned 3rd party code any worse than code you wrote yourself? In one instance you won't get any updates unless you write them yourself, in the other... 3rd party code is almost always a win - at best you get free code, at the very worst you get to look at some code that you can learn something from.
- d2p 12y ago> Don't update unless you have to? We just starting hitting a bug in NHibernate where objects are GC'd that shouldn't, and it crashes. It was fixed in a newer version, so we updated. This minor update changed the way a bunch of queries work (optimisations that fail when a certain feature is used), and we've had to roll back. We either have Bug A or Bug B. > How is abandoned 3rd party code any worse than code you wrote yourself? I understand code I wrote myself and can easily fix bugs. The lsat thing I want to do when I find a bug in a 3rd party library is spend weeks debugging their code because it's been abandoned. In many cases it's a false economy. > 3rd party code is almost always a win I don't think you've worked on enough codebases you didn't write that are years old and had hundreds of dependencies pulled in without any thought; especially in something with no sound type-system like JS :O( Try upgrading jQuery when you've got 150 jQuery plugins that have been abandoned and/or don't work in the new version of IE :-/
- andybak 12y ago> We either have Bug A or Bug B Can you cherry-pick just the fix you want? I'll admit this depends how intertwingled the fixes are... > I understand code I wrote myself and can easily fix bugs. I assumed you were in a team - which would level things out a bit even if you have pretty consistent coding standards. Yes - in a one man team the cost/benefit calculation might change. > I don't think you've worked on enough codebases you didn't write that are years old and had hundreds of dependencies pulled in without any thought; especially in something with no sound type-system like JS :O( Maybe this is the key to our different perspectives. I use lots of 3rd party code but it has to pass the smell test. I'm mainly talking about the Python ecosystem and I've probably learnt how to spot trouble and run away. My heuristics are based on code location: (-5 if it's on Sourceforge or Launchpad, -3 if it's on Google code, -1 if it's on Bitbucket ;-) and then stuff like documentation, number of forks and recency of commits - plus just the vibe I get skimming the code...