• 3 Posts
  • 5 Comments
Joined 1 year ago
cake
Cake day: July 24th, 2023

help-circle
  • There are techniques like abstract interpretation that can deduce lower and upper bounds that a value can take. I know there is an analysis in LLVM called ValueAnalysis that does that too - the compiler can use it to help dead code elimination (deducing that a given branch will never be taken because the value will never satisfy the condition so you can get rid of the branch).

    But I think these techniques do not work in all use cases. Although you could theoretically invent some syntax to say “I would like this value to be in that range”, the compiler would not be able to tell in all cases whether it’s satisfied.

    If you are interested in a language that has subrange checks at runtime, Ada language can do that. But it does come at a performance cost - if your program is compute bound it can be a problem


  • Why would you have to choose between tests and compiler checks? You can have both. The more you have the less chance of finding bugs.

    I would also add that tests cannot possibly be exhaustive. I am thinking in particular of concurrency problems - even with fuzzing you can still come across special cases where it goes wrong because you forgot a mutex somewhere. Extra static checks are complementary to tests.

    I think you can write “unsafe” code in Rust that bypass most of the extra checks so you do have the flexibility if you really need it.



  • Yes, getting into a new project is hard. Even when you do know the languages and frameworks it’s still hard because you have to get into the mini ecosystem that the developers of that project built. In companies there is usually an expected amount of time (days? weeks? Months? Varies on the project) where a new developer is not really expected to do anything major, just getting used to the project.

    I do not know if you are professional or hobbyist. But coding takes a lot of time, a lot of it is spent on just figuring out how you will code this or that feature ; then another bunch of time is spent debugging ; and finally, yet another bunch of time is spent integrating your new feature. That’s why it’s a whole job, and that’s also why you need a ton of free time to do this as a hobbyist.

    But the good news is that once you spent that upfront time to get into the project, you can code more efficiently (that is, get right to the features you want to make) and you will also spend a little bit less time getting into other projects because although projects are different, there is always some level of organization that remains similar. The more advanced you become, the quicker you can get into a “production” state where you can code right away thanks to spending less time figuring out how things work.



  • In StackOverflow, when a user asks a similar question to one that was already asked, most of the time the question gets closed with a link to the “original” question without being told why the question is similar or how the answers to the “original” question can help the author.

    That might be OKish for us experienced developers. But for a total beginner, I find this approach to be unsuitable. Most programming beginners don’t even know how to phrase their question because they are not sure what they are struggling with themselves. Most of their posts will be like “There is something wrong with my code but I can’t figure out what it is”. That would not have a place on StackOverflow ; the post would get downvoted to infinity and the beginner - who is just looking to learn - will most probably say “Ok, StackOverflow no more” and move to other media for help.

    One time I asked a question about Perl semantics ; I could not figure out the behavior of a program I wrote. My answer got closed and redirected to another question that did feature a similar program to mine, with a similar behavior. But the answer to that question was not it. It was not explaining the wrong behavior on my program ; although it was similar. At the end of the day I did manage to figure out what was happening ; it turns out it was an effect different from the post that was linked. I tried to make an Edit and asked for reopening my question in order to provide the real answer to that question but I think that did not get accepted.

    Actually, now I cannot even find the question in my profile anymore. It probably got removed altogether.

    I agree that the multitude of programming help communities is a problem and my proposition would exacerbate that. But StackOverflow is clearly not the answer for me.