Hacker News new | ask | show | jobs
by nodesocket 4491 days ago
Would you consider Python and Ruby strongly typed? Because I happen to know two very large payments company using them. However if that is indeed their code, it makes me cry and cringe, even though PHP is my strongest language and I'm proud to admit it.
5 comments

>Would you consider Python and Ruby strongly typed?

Did you mean statically typed? There are two dichotomies: static vs. dynamic, and weak vs. strong. Ruby and Python have strong dynamic typing. PHP has weak(-ish) dynamic typing.

Python and Ruby are great for building an MVP, and they'll take you a long way, but they're probably unsuitable for a high-stakes codebase like a financial system. When bugs are absolutely unacceptable, you need all the help you can get from static analysis.

And (don't crucify me HN) I think dynamic typing rapidly loses its allure as your codebase grows large and "enterprise." The advantages in rapid prototyping and easy changes start to be overshadowed by the increasing burden added by unexpected side effects any time you change something. In Java, if I change an interface then I can find every client of that interface with one click and make sure each one is not broken by the change. The same is not true of JavaScript code; changing the valid inputs of a function can break things scattered around the code, and you won't notice unless you use a particular feature 3 times in a row on a waning gibbous moon.

> Because I happen to know two very large payments company using them.

For the purpose of short selling: who are they?

I bet you can guess, both bay area YC companies.
Stripe?
>Because I happen to know two very large payments company using them.

Using them for what though? I doubt they use them for their transcation money handling code.

You'd be wrong.
Pics or it didn't happen.
Anything in particular about this code that makes you cry and cringe?
Lot's, but perhaps most obvious, not using a routing engine or framework, simply spaghetti code case statement:

      public static function _Route_getStats($path) {
                switch($path) {
                        case 'version':
                          ...