Question: how do you feel about the lack of exceptions? To me, that's the biggest drawback to Go as it feels like sacrificing a major improvement in reliability and boilerplate reduction (obviously with Python-style syntax, not Java).
Why does Java have so many security holes? Is it really worse than any other language, or is it just so ubiquitous that it presents itself as a good target?
Question: can we use Carmack's post to say anything about statically typed languages versus dynamically typed languages? I'm versed in both and like both, so wanted others' opinions. I love(d) Haskell because it pretty much worked if it compiled (but monads are too restrictive); I work in Python because it's what most clients are using. But I read Carmack's post and think that I should be coding in a statically typed language again... No?
[PyCharm is great, but IDEs just don't do dynamic code like they can static code and it hurts.]
Question: Formal methods found the bug, but now that we know about it, what lessons can human programmers learn? That is, in the spirit of "20/20 hindsight," can we see the false assumption that made the bug possible as an instance of a certain kind of mistake, which we can look for and avoid in the future?
Or do you think the only lesson here is "Never fully trust anything that hasn't been formally verified"?
question: what do we do about this? Is this just how it's going to be? I wonder how much total programmer time was wasted re-learning how to do the same thing in a slightly differently flavored framework / language / pattern. Supposed we would have ended up with more overall productivity and stability in software had it not been for the endless iteration on the same old stuff.
This is some very impressive stuff, I look forward to trying it out. Question: Have you run into any cases where the hints have actually caused significant roadblocks to discovering the underlying problem? I can't count the number of times a compiler error has sent me down the wrong path entirely, I wonder how much worse/better this is with more human-readable hints.
What do tests and CI have to do with the usability and usefulness of a program? I agree that the other issues could be worrying, but those first two throw me for a loop.
Question: why don't I see sites like "99 trivial, first-week-of-class problems solved in C?" If I have to stop and think about how to do the things on that page, or consult a web page to find out how to express them, then the language I'm working in is simply broken.
What problem(s) do software developers typically have that are solved by working in functional languages?
Question: Hacker News, if someone were designing a new programming language (or library system within an existing language) to mitigate supply chain attacks, what features would be most important to you?
Background: Open-source code has been an amazing boon for software productivity. However, I believe that most of the code that companies run isn't written by their own developers, it is from various packages and frameworks written by outside individuals and groups. My main focus is writing data intensive software where malicious actors, or just poorly written code, could compromise the confidentiality and/or integrity of customer data via a popular package/dependency. Better sandboxing of relatively untrusted code could be a huge boon for applications that have lots of plugins (think Chrome of VS code).
A few thoughts I have had on this front is limiting access of untrusted code to system calls that control file and network access is critical. Also, there would be a need to ensure that dependencies can't "takeover" a process by overwriting the call-stack to run their own code or spawning a new thread / process. Interested in your thoughts.
With these "Serverless" frameworks (Zappa, Chalice, Serverless, etc), do you have to redeploy to Lambda every time you want to test your changes during development?
Is there a way to develop locally and get quick feedback?
I've been working in mostly Operations roles primarily with Java over the past several years and most recently have started to become interested in development.
In the past, I've heard a few people mention that we truly don't have the hardware for Java though I never really understood that statement. I can also not
cite any official source for this or similar statements. Question is, with the advent of Cloud Infrastructure, does this apply anymore? Do we now have the hardware necessary for the JVM?
Can any veteran Java Technologists explain the statement above? I also saw a recent talk about Spark mentioning the low-level Hardware optimizations (Tungsten) which is attempting to address some of the low-level instruction sets etc. I would love to hear others thoughts. Regards
The author writes (as an example of his problems relying on classes):
Well, some tables when updating need to do more than just “update” a record, such as insert a log into a side table.
I do not understand exactly if there is a problem here, or anyway I do not understand what the Functional alternative would be.
Assuming this is a problem, I suppose we have three choices:
a) You have to provide implementation for two distinct methods:
- Update(...) and LoggedUpdate(...) (the latter calls the former and then logs the result, most probably).
b) You decide that update() implicitly logs maybe based on a global configuration or similar mechanism.
c) You provide a boolean flag as parte of the method signature update(log).
What would be the proper Functional approach here?
(Caveat - I have no experience with Functional programming)
Question: I've looked at Forth a number of times and I think it's a fascinating looking language but I've never bothered picking it up. I've also never had a chance to talk to a Forth programmer. Can you tell me what type of application you're working on, if it's legacy or new development, and your thoughts on when to choose Forth over something else?
From what I understand, Forth is mostly used as an embedded "OS" when a traditional OS wouldn't cut it. Is that accurate?
Sorry, it's just not a terribly common language, but it certainly is interesting.
Question: why half of the salt isn't hardcoded in the application code? That would make a database access completely useless without a deeper penetration, and it's really easy to implement.
Question: For someone who does not know either Rust or Zig, would you say that Zig also has tools that help the programmer protect from data race conditions (I have read that Rust is helpful in this regard)?
Question: what makes Objective-C horrible? I quite like the way it manages to remain moderately performant while also giving many of the benefits of dynamic languages. (Personally, I find Java horribly restrictive, but that's a separate discussion.)
Also: "several thousands of dollars" is incorrect. The minimum is about $1,000 for a Mac Mini (perfectly good for most development) and two testing iPod touches, but you might even have some of those to start with. (And that's all assuming you don't get anything used/refurbished/etc, which is another reasonably-sized discount.)
reply