The Prototype's Language
news.alvaroduran.com
news.alvaroduran.com
Even taking it at face value that the choice is between Python and Java, the article leaves so much unaddressed.
> a good plan executed now trumps a perfect plan done next week
In what universe does this apply to a payments system?
Hatred for Java is burned deep in my soul, and I've spent an unreasonable amount of time on this very web site carefully articulating reasons why I think Java is a crufty relic whose design reflects a bunch of discredited beliefs from a quarter century ago. But gosh, if I had to choose between Java and Python for a payments system, I think I might choose Java.
But it was interesting to see it evolving. It was one of the first large language ecosystems to adopt language-specific package repositories, with dependency tracking, and project-specific scopes (unlike CPAN or CTAN that installed modules globally).
It also evolved from the XML hell of EJB to the more sane Spring Framework.
Java IDE evolution was also unique. The first IDEs were just text editors, but then Eclipse and JetBrains IDEA revolutionized semantic text editing. The online type checking and linting in modern IDEs was popularized by these two IDEs!
IDEA and Eclipse were among the first IDEs that modeled the complete source code with 100% fidelity, so you could rely on their analyses of usages to do automated refactoring. And they worked by parsing plain text source files, instead of keeping the code in a special database like in VisualAge.
Got it. So why was Python chosen again? Call me crazy but I want things that touch my money to be rock solid.
I want to see good techniques, testing, and practices in any code that touches my money. I don't care what language they write it in.
That just isn't true. There are languages which force on you a minimum standard of quality and eliminate errors.
E.g. static typing makes a whole range of errors impossible, similarly to how rusts borrow checker makes certain other kinds of errors impossible. In a sense you get test cases for all of these errors for free, as the compiler verifies they aren't present.
Of course bad software can be written in any language. But some, like python, make sure it is as easy as possible.
It doesn't. You can just have it break occasionally.
The other such patterns include where you put block markers (braces, begin/end, if/fi), naming conventions for variables. You can always tell who's a Java programmer because they can only fit a couple of funcitno/variable names per line. But as I joke about Java and naming, that's another giveaway. How do people name variables, methods etc.
You're right, though. It's also not hard to write bad code in any language stylistically consistent with the language and its community. I've seen so much bad C/C++ that was perfectly organized and structured C code.
An interesting exercise many programmers don't do but should is to program purely in paradigms other than imperative OOP. The solutions you come up with are very different when you don't have objects, for loops, and if statements in your language's vocabulary.
Try writing a real program in Prolog or SQL. Not just database calls to retrieve data, but an actual full app with a UI and user interaction and network calls and all the rest. You will likely feel like a novice programmer if you haven't trained your brain to think in set operations like union, join, intersect, etc. When everything in your program is a set instead of a stateful objects, you do set operations over them instead of method calls. That's uncomfortable and disorienting at first.
As for the article, I didn't get much from it past the bit I quoted.
FWIW that PG quote is fully out of date; I do not associate Python with programmer competency. The first thing I ask when a programmer says they know Python is "What other languages do you program in?", because I've come across far too many Python programmers who can't tell a stack from a heap. YMMV
But whatever, we've still got lua 5.1ish.
The rest of the article is coherent, including the properties you want in the language, I just think python in particular has catastrophically lost its way.
But what _is_ the author talking about? It just isn't said. It merely states that the argument 'python is slow' is no longer relevant. It doesn't even state a reverse argument (why python would be better than java), and thus doesn't even begin to allow waylaying _those_.
As a trivial example, perhaps the author means: A nominally, strongly, explicitly typed languages is obsolete. In which case - how does that explain how, for example, typescript has happened, which actively _re-introduces_ these aspects to a language?
Clearly then, 'python is superior' cannot be taken as a truth universally held and requiring no logical argument.
The rest, sure, whatever - "Programming language used has a significant impact on what you can write and how one would write it" is.. kinda obvious, no? Turing machine logic says that it is _literally_ incorrect (anything you can compute in one, you can compute in the other), but that _is_ something all those with a modicum of programming experience probably take for granted. You _can_ write a compiler in brainfuck, but, that'd be insane.
The tricky argument isn't stated, the obvious arguments are.
I surely must be missing the point of this post.
Also doesn't explain the ongoing efforts to do the same to Python. People aren't trying to remove the GIL because no one cares about Python speed.
An internal error occurred during: "Payment".
java.lang.NullPointerException