• 0 Posts
  • 74 Comments
Joined 11 months ago
cake
Cake day: August 8th, 2023

help-circle
  • I am very fond of the idea of “stateless” code, which may seem strange coming from a person that likes OOP. When I say “stateless”, I am really referring to the fact that no class method should ever have any side-effect. Either it is an explicit set method, or it shouldn’t affect the output from other methods of the object. Objects should be used as convenient ways of storing/manipulating data in predictable/readable ways.

    I’ve seen way too much code where a class has methods which will only work"as expected" if certain other methods have been called first.


  • Sounds reasonable to me: With what I’ve written I don’t think I’ve ever been in a situation like the one you describe, with an algorithm split over several classes. I feel like a major point of OOP is that I can package the data and the methods that operate on it, in a single encapsulated package.

    Whenever I’ve written in C, I’ve just ended up passing a bunch of structs and function pointers around, basically ending up doing “C with classes” all over again…



  • This makes sense to me, thanks! I primarily use Python, C++ and some Fortran, so my typical programs / libraries aren’t really “pure” OOP in that sense.

    What I write is mostly various mathematical models, so as a rule of thumb, I’ll write a class to represent some model, which holds the model parameters and methods to operate on them. If I write generic functions (root solver, integration algorithm, etc.) those won’t be classes, because why would they be?

    It sounds to me like the issue here arises more from an “everything is a nail” type of problem than anything else.




  • You’re definitely correct that getting sychrotron time is hard :(

    On the first part though: Yes and no. XRD will tell you about things like strain and unit cell size distribution, so in that sense, you can’t resolve a single doping site. On the other hand, if you have a reaction going on, or some dopant diffusing into your sample, synchrotron XRD is powerful/fast enough that you can “film” how the crystal structure changes in real time. That “film” will be a kind of average of many sites, but can still be focused to a relatively small region (don’t remember exactly how small off the top of my head, but I believe we’re talking nm-scale).






  • I have to be honest: I dont see the problem of including the entire signature at the top of the doc, and the listing the params below. If I know the class/function, a quick look at the signature is often all I need, so I find it convenient that it’s at the top of the doc. If it’s a class/function I’m not familiar with, I just scroll to the bullet points.

    I agree on the bit about whitespace in signatures though. Luckily Python allows me to use as many lines as I want within a parentheses.



  • Yes, typing <p> in HTML is like pressing enter in word, but that doesn’t make it a programming language, it makes it a markup language.

    A markup language is also what you can use to format comments here: You use a specific syntax to indicate how you want things formatted.

    The separation from a programming language is that a programming language can be used to implement logic, like saying: In the following paragraph, a word should be bold if it contains the letter “A”. That cannot be done with a markup language.


  • A markup language (which is what HTML is) is like an advanced text container. When you write a post or comment here, you can use specific syntax to indicate the size of the text, a hyperlink, a quote, etc. HTML is that. It doesn’t “do” anything, you’re just writing in what you want it to display, and that is displayed.

    A programming language lets you somehow “do” something. Instead of declaring explicitly “write this text in bold” a programming language can be used to process all the text in an arbitrary document, and change the word “aeroplane” to bold whenever it turns up. That is: The output from the code isn’t just a rendering of what is explicitly written there, which is what a markup language gives you.