Comment by neonsunset
1 year ago
It speaks more about the unfortunate state of practice in the team in question. C# itself is of similar terseness when compared to Ruby, with 10x to 20x better performance so even when written in a bulkier way, it becomes less relevant as you are not going to hold, say, C or C++ against similar criticism in such context. Oh, also no method not found thing too. C# has much greater likelihood of not having defects when you do deploy it.
I'd say this speaks more to the metaprogramming capabilities of rails rather than the team itself.
Rails simply does more for you out the box with just a few macros.
Do you have a specific example in mind?
I think what parent said is referring to stuff like
https://github.com/mbleigh/acts-as-taggable-on
It's not only that RoR comes with a complete toolset -- it allows you to create your own libraries that extend the capabilities of the framework while keeping the developer experience terse enough through metaprogramming (compare the sample code in the README with the file acts-as-taggable-on/lib/acts-as-taggable-on/taggable.rb, where you can see how the library is opening the classes in runtime through the class_eval technique.
I'm sure something similar can be achieved in C# but not so sure about the elegance of the result.
6 replies →
> C# itself is of similar terseness when compared to Ruby, with 10x to 20x better performance so even when written in a bulkier way
More like 50-100x.
It is true and you have to lack technical knowledge to downvote this.
In regular "line of business" code this difference might be a bit difficult to see in between the calls waiting for DB and third-party dependencies, so I went with more conservative numbers. On the more complex code this difference will be totally observable.
No question; I can write far more performant C# code than I can Ruby.
For this set of teams, at least, their code wasn’t very performant because it took 3 months to get from Jira ticket to production. They were always getting themselves tied into knots about how to handle rollbacks across their nine microservices required to change a birthday.
Meanwhile, I’m in my corner with my nice little monolith that could read data from their database easier than they could read it.