Programming & IT Discussion

Status
Not open for further replies.
I’ve heard of Rust, but I’m not incredibly familiar with its concept or the language itself. I thought I heard though that it’s popular because it’s a multi-platform language.
Again, I’m not the most knowledgeable on the language, but I think a lot of it has to do with how Rust deals with ownership and memory management. Generally, established languages follow a few paradigms:
  • Management is the responsibility of the programmer (e.g. C, old C++, still used somewhat in modern C++)
  • Reference counting with removal when the reference counter hits zero (e.g. modern C++)
  • Monitoring and automatic garbage collection (e.g. C#, Java, Python)
The first two are, as we all known, error prone. The last one is less error prone, but the language is slower and may lose some usefulness. It also kind of encourages some really bad memory practices, which often exacerbate its slowness.

Rust, however, takes a different paradigm. It only allows one owner at a time, and you either transfer ownership (move) or allow someone else to use it (borrow). Based on this, you can make certain compile-time guarantees that let you mostly ignore explicit memory management while also not incurring the expenses of garbage collection and reference counting.

Further, Rust has a lot of compile-time memory safety rules that are even more rigid than, for instance, C#. For instance, the compiler will prevent dangling references, a mix of mutable and immutable references to the same object, and multiple mutable references to the same object. All of this effectively catches potential memory bugs at compile time. And while I don’t think dangling references are possible in C# and Java, the latter two problems are still allowed.

Effectively, Rust is a bit more advanced than other popular languages in terms of memory safety, and it managed to do that while still being marketable as a fast language that can be used for systems programming. The fact that its syntax isn’t a nightmare to learn for you average C++ or Java programmer also helps, given that people won’t use your advanced language if they struggle to learn it.

With all that said, though, one can certainly program C#, C++, or Java in a way that holds to Rust’s rules. The main difference is that Rust enforces it. It doesn’t rely on every programmer to do so without fail.
 
are they still developed till today? afaik, they’re not… what i mean, is still dvlped till now…
Well, I know plenty of legacy systems that still use them, and I’ve had a couple coworkers who’ve said that their dads always fall back to COBOL when starting a new application. In general, though, it is the Latin of programming: Mostly dead but still sticking around due to legacy reasons.

Either way, no language will be feature-complete at launch. Heck, many established languages aren’t even really “feature-complete” now, and most of have a myriad of third-party libraries they pull in. Even C#, where the mentality has often been to just trust Microsoft, there are still “must-have” libraries like Json.NET and NUnit.
 
Awesome thread, but is this really the best place to discuss these matters?

Would love to share in some chat with other Catholic programmers, especially around driving MySQL with Perl, PHP or Python to develop some algorithms for “reading” the bible. I cant make up my mind about which one to use right now, but I want to run different versions of ICEL Catholically approved bible translations in concordance with one another and various commentaries.

Some of these bibles are databased already and freely available in a db format online.

I think I should probably start with something like a browseable bible, like on USCCB. Its just their’s is just the one version, and its proprietary anyway.

Just wondering what language I should start with? And if anyone knows where I might find the Dhouey-Rheims translation in an SQL file?
 
welcome, bro (or sis?) !

for your app, i guess it depends on what platform you wanna use, e.g. android or web or stand-alone prog

but i’m assuming you wanna make android / ios app, so i guess you can use Java

cmiiw
 
Some of these bibles are databased already and freely available in a db format online.
Are any Catholic Bibles available? I remember looking into this maybe a year or so ago, and I couldn’t find any API or easily-parsable file for any Catholic Bible. I basically concluded that I’d have to web scrape Bible Gateway or some similar site. I started interview around that time, though, so my plans were put on hold.
 
40.png
Wm777:
Some of these bibles are databased already and freely available in a db format online.
Are any Catholic Bibles available? I remember looking into this maybe a year or so ago, and I couldn’t find any API or easily-parsable file for any Catholic Bible. I basically concluded that I’d have to web scrape Bible Gateway or some similar site. I started interview around that time, though, so my plans were put on hold.
Your question brings up both interpretive and technical issues. You didn’t specify much, so I don’t know exactly what you’re seeking.

If you’re looking for the NABRE, it could be a bit of a problem. It may be approved for use in public consumption, but there is a copyright issue to be addressed.

http://www.usccb.org/bible/permissions/index.cfm

But - even that said - yes, there are still other approved Catholic Bibles available online.

Here’s a link to the good old Douay-Rheims Bible in a JSON and SQL Format combination.


One hack I am trying to run is out of an old book by Paul DuBois. In the link below, when executed, the code forms a good basis for what I want to do, but he uses the KJV translation. I haven’t looked into DuBois’ table structures to see if it will map to the DRB (above)

http://www.kitebird.com/mysql-cookbook/examples-3ed.php

I’m about to pass out, so I’ll take a look at the DuBois KJV’s table structures and the compare them to the DRB version to see how compatible they are and what changes would need be made.

Any feedback or help would be much appreciated!

God’s Blessings to you!

Wm
 
Last edited:
But - even that said - yes, there are still other approved Catholic Bibles available online.

Here’s a link to the good old Douay-Rheims Bible in a JSON and SQL Format combination.
Looking at the commit dates, it seems to have just been put up around a year ago. That’s when I was already interviewing, so that might explain why I never found it. 🙂

But, yes, I did account that there are usage restrictions with NABRE and NRSV. With that said, it was mostly for personal use and as a fun project. At most, it would have been turned into a bot for Reddit, though I think it would be fun to write a Twitter bot that posts daily verses and see what kind of tracking you could do on people’s responses to the verses.
I’m about to pass out, so I’ll take a look at the DuBois KJV’s table structures and the compare them to the DRB version to see how compatible they are and what changes would need be made.
From a querying perspective, DuBois keeps things simpler by putting everything in one table. The DRB version would require, at the very least, some joining.

From an optimization perspective, DuBois avoids joining, and he properly indexes the fields that would be getting read. Granted, I wouldn’t expect significant performance improvements here, simply because the database would be really small and fast anyways. Like, the following Python script could read through the whole thing and print the relevant verse in a matter of milliseconds (please forgive two space indenting rather than four):
Code:
with open('kjv.txt', 'r') as bible:
  for line in bible:
    li = line.split('\t')
    if 'Jesus wept' in li[-1]:
      print(li)
 
Opppsss… I think you might have meant me… 🙂

Thank you for the welcome!

And - I’m a Bro, btw…
 
I haven’t read all of the posts in this discussion yet, so please bear with me…

I dont doubt your code snippet would work well, but - fmi - what are we trying to do here? Build a bot of some kind?

What I mean is, once we identify the relevant verse, what are we going to do with it?
 
Last edited:
It was more just a script for anyone to run to see that performance probably isn’t a huge concern here. I wasn’t trying to do anything with it and probably wouldn’t write a full bot in Python. Well, I guess it depends on how complex the bot is, but Python doesn’t exactly scale well from a maintainability perspective.
 
you’re welcome, bro…

ofc what I meant is you… haha…

it’s been long time haven’t post anything in this thread coz I gotta lots of things to do 😃

so, how’s your project progress?

anyway, here’s a news for gamers and cyber-sec


POC

 
Last edited:
Anyone here familiar with the STEP reader library?


No rush on this topic, btw… I am just throwing some mud on the wheel for a conversation…

What I guess I am trying to figure out about it is how it works/appears… I have eSword, which uses STEP, but I dont quite follow the implementation procedures…

I could be wrong, but it doesn’t look like the USCCB uses it… so I wonder about how it is operating in our interpretations and perceptions of scripture…
 
actually, i just heard about this… but, wasn’t it discontinued? what is actually it will become?
The guy who made it died last year after being hit by a train. No one knows if it was a suicide or accident.
what’s good things in Rust for you so you chose it?
As I mentioned earlier, Rust offers a lot of memory safety compared to C++ while still being good for systems programming. As a few examples, this is valid in C++ (though the IDE might warn you about it):
Code:
const std::string& GetHelloWorld() {
  std::string s = "Hello, World!";
  return s;
}
The problem is that s will be destroyed at the end of the function, and you’re getting a reference to that destroyed object, meaning that you have a dangling reference. Rust won’t allow that.

This is also valid C++:
Code:
std::vector<std::string> v1;
auto v2 = v1;
The problem is that now you have two mutable references to the same vector, which can lead to some unexpected behavior as the two of them are mutating it. Rust doesn’t allow that. This is also valid C++:
Code:
char* c = ("Hello, " + "World").c_str();
This is similar to the dangling reference. The concatenated string will be destroyed, leaving c pointing to an invalid place in memory. The program might work, but it isn’t guaranteed to. Rust, to my knowledge, doesn’t have this problem. Finally, this can also happen in C++:
Code:
StackObj so;
HeapObj ho = new HeapObj(so);  // ho takes ownership of so and will delete it on destruction
delete ho;
The problem is that the destructor of so will be triggered twice - first on delete ho and second on it going out of scope. Rust doesn’t have this problem.

Those are just a few examples. C++ overall has a lot of pitfalls that haven’t all been fixed by languages like Java and C#. Rust tries to fix them at compile time. Speaking of which, Rust’s compiler is also really good and helpful. While C++ compilers have gotten better over the years, they can still be needlessly verbose.

Chapter 4 in the Rust book goes over more details.

(None of this is to say C++ is a bad language. It’s just got a steep learning curve and many gotchas, some of which are carried over from C.)
coz i actually confused a lot when i saw its syntax, at glance…
Syntax is something you can learn. Structural design flaws tend to be with a language forever unless you’re willing to break backwards compatibility. Syntactically, Java is wonderful, but that doesn’t mean it doesn’t have structural problems it’ll be dealing with for the rest of its life or until Oracle decides it’s willing to break backwards compatibility.
 
Last edited:
whoaaaa… been pretty busy lately so haven’t catch up with the thread…
gonna read @ZMystiCat and reply asap…

anyway, nobody’s wanna discuss anything for now? I think there’s a lotta things can be talked about…
 
Structural design flaws tend to be with a language forever unless you’re willing to break backwards compatibility.
what do you mean by backward compatibiity? wasn’t it just to be fix in the next lang’s version?
Java is wonderful
talking about java, Linus says it’s horrible


meanwhile, do you guys think that latest prog langs is better than the previous ones?

also, does anyone working with SQL here?
 
what do you mean by backward compatibiity? wasn’t it just to be fix in the next lang’s version?
Breaking backwards compatibility basically means that old code won’t run on the new version. Sometimes, this is minor and acceptable. Other times, it can be disastrous, and the language designers will embrace or stick with a design flaw due to finding such breakages worse than the flaw itself.

One of the most famous design flaws that came from backwards compatibility is Java’s generics implementation. I already outlined some of the problems above, but those were acceptable in light of maintaining backwards compatibility.

On the flip side, a rather famous example of breaking the language came in the Python 2 → 3 migration, and it serves as an example of how breaking backwards compatibility can be disastrous, particularly for large languages. I’m pretty sure Guido van Rossum, Python’s creator, said he’s never allow such a break to occur again.

And these two examples also highlight how software engineering isn’t always about pursuing the “best” solution, and one thing they don’t tend to teach in school is that the real world requires a lot of cost/benefit analysis around legacy code, real-world systems and libraries, etc. That said, it can also introduce challenges that are a lot of fun.
talking about java, Linus says it’s horrible
I’m pretty sure Linus hates anything that doesn’t start and end with C. One of his more famous rants is against C++. Personally, I would disagree with him on both counts, even while acknowledging that both Java and C++ have their flaws (though most of C++'s flaws come from it holding on to everything from C).

That said, I think everyone can agree that PHP and JavaScript are terrible. Speaking of which, try to guess what this evaluates to in JavaScript:
Code:
var guess_my_val = toLowerCase("b" + "a" + + "a" + "a");
It’s “banana”
also, does anyone working with SQL here?
I did SQL a lot when I was at Microsoft. I’ve done less of while at Google, but I still occasionally delve into simple SQL queries.
 
Breaking backwards compatibility basically means that old code won’t run on the new version.
i don’t understand… it should be just added to the new version… even though it’s from old version…
I’m pretty sure Linus hates anything that doesn’t start and end with C. One of his more famous rants is against C++
you mean this, right?

http://harmful.cat-v.org/software/c++/linus
I did SQL a lot when I was at Microsoft. I’ve done less of while at Google, but I still occasionally delve into simple SQL queries.
you mean, you were once worked at Google?
var guess_my_val = toLowerCase(“b” + “a” + + “a” + “a”);
i know… i’ve seen it before… it should be NaN, right?
 
Status
Not open for further replies.
Back
Top