|
My guess is that there are several IT departments where I work scrambling to find a replacement.
I can already hear a director asking, "Is there any way we can get a copy of the codebase to maintain our own internal version of ICQ?"
|
|
|
|
|
By the way, the phrase "can we get a copy of the codebase to maintain our own version" should be heard as "now is a good time to update your resume"
|
|
|
|
|
Last time someone tried this, it was for MS Money. With no luck, unfortunately -> How to bin dump an excellent piece of software ...
|
|
|
|
|
At least MS Money still works. Well, I've never used any of its online features, that is, so all offline functionality is still there and runs fine.
|
|
|
|
|
Sure. But I miss some modern features - like the filtersearch in comboboxes - and a few things I would have loved to implement. I actually see no point in keeping a source code sealed when it is not maintained anymore. I once started to reverse engineer, but that would be soooooo time consuming !
|
|
|
|
|
Rage wrote: I actually see no point in keeping a source code sealed when it is not maintained anymore.
Sometimes there are components that have been licensed that, themselves, are owned by third parties that are still very much under active development, and the licensing terms are such that it's an all-or-nothing type of deal.
Then there may by IP that they feel should be kept private.
Or there's a shared component that's re-used somewhere in another product that's still under support, and releasing the source would make it trivial to expose common vulnerabilities to anyone looking. Obviously security through obscurity should not be a thing, but the reality is, making the source public just lowers the bar.
I'm with you, there's plenty of abandoned closed source software I'd like to revive, even if only for my own use...but I just don't see that happening.
MS-DOS 4.x only got its source published a few weeks ago, and that was done, so they claim, "primarily for its historical importance". Don't get your hopes up for MS Money...
I've never used it myself, but HomeBank is free and has its source code available (I don't know however if it's open source according to the common terms), and claims to be able to open MS Money files. Depending on your goals, maybe you could take inspiration from that, even if only for the data import part...
|
|
|
|
|
MS Money still installs and works, even on Windows 11 v23H2.
|
|
|
|
|
Yes...I jumped into this thread to point that out.
|
|
|
|
|
At least with MS Money, Microsoft made a free non-connected version available. The only problem is there is one version of Windows 10 where it didn't work, but someone with really good binary debugging skills figured out the issue and published the solution - on a Microsoft support site.
|
|
|
|
|
Another small rant, two-for-one.
1) Debugging console applications with parameters is painful.
I need to test against all the possible combinations of arguments, can't do it properly though, need to pass through the debug options... which are persistent.
And the console does not stay open (yes the checkbox is unchecked, also ignored by VS).
And the breakpoint after the parsing moves the focus to the VS window hiding the Command prompt.
Every test is a clickity-clickity-typety-clickity-clickity-clickity-clickity-clak.
you Microsoft.
2) Structures in watch window do not stay expanded.
Add other clickity-clickity-claks to a simple test.
Basically the best way to test this behavior is inserting test code and debug prints, as we used to do when we had to chisel bits one by one onto EEPROMS with tiny hammers and a lot of patience.
Told you it was a rant.
GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
The shortest horror story: On Error Resume Next
|
|
|
|
|
Sounds like a situation where unit tests would work well.
|
|
|
|
|
I like your thread subject
|
|
|
|
|
Rename Main(...) to Main2(...)
Insert a Main() routine and make it call Main2 with your test cases.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
|
den2k88 wrote: And the breakpoint after the parsing moves the focus to the VS window hiding the Command prompt.
Well at least that one's easy to fix, get another monitor and reshuffle your windows around so they don't overlap.
It's really nice to have an unobscured view of the IDE open on one monitor, then a browser / console / Explorer windows on another, alongside a bunch of debug windows (locals / watch windows / output window / etc).
I typically RDP into my dev VM using a 4K monitor and a 1080p one, and that's my sweet spot. Although sometimes I could use a third.
[Edit]
Also - everything you pointed out in your message has to do with the editor - not language limitations and the like. So, it's a bit unfair to blame C# for any of this. I wonder if VS Code behaves better under the circumstances you describe...or third-party editors?
modified 38 mins ago.
|
|
|
|
|
|
Probably because it was modelled on languages which do allow execution to fall-through, and without an explicit break / return , early adopters might have thought the C# code was falling through.
[Proposal] Case fall through should be allowed · dotnet/csharplang · Discussion #603 · GitHub[^]
See also Eric Lippert's comments on SO:
C# enforces the no-fall-through rule in every switch section, including the last one. This is so that switch sections can be re-ordered arbitrarily, possibly by mechanical tools, without introducing semantic changes in the program.
C# enforces the no-fall-through rule by requiring that the end point of every switch section be unreachable. It is not necessary for a switch section to end in a break. It can end in a break, return, goto, continue, throw, or a detectable infinite loop:
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
For the most common scenario it just adds a line of code that has to be written which has no meaning.
It just clutters the code with additional meaningless lines. Bah, or better, !
GCS/GE d--(d) s-/+ a C+++ U+++ P-- L+@ E-- W+++ N+ o+ K- w+++ O? M-- V? PS+ PE Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
The shortest horror story: On Error Resume Next
|
|
|
|
|
Richard Deeming wrote: detectable infinite loop
Classic! You won't find any of my switch statements without one of those.
Regards,
Rob Philpott.
|
|
|
|
|
I agree with a specific "end of case" being required - as Richard quoted, it allows the compiler to spot code faults instead of letting them cause runtime problems.
It may be "unnecessary", but it does trap some errors which could be difficult to diagnose at run time.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
It does allow multiple "entry points", so
case 1:
case 2:
Some code
break;
So it can't just assume a break. Sure they can come up with rules for how it would be interpreted, but kind of glad they didn't.
|
|
|
|
|
Personally, I'd have preferred multiple entries to be a different syntax:
case 1,
2,
3:
... code
break;
case 4:
... code
break; Or even:
case 1,
2,
3:
{
... code
break;
}
case 4:
{
... code
break;
} I think it would have been clearer as well as less easy to mess up by adding a new case between them. Perhaps with brackets round the case list as well?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
OriginalGriff wrote: Or even:
case 1,
2,
3:
case 4:
The Pascal style (except for the 'break' statements). I don't like the C# 'No fallthrough except when the case alternative is empty', so I sort of agree with you, although it is not a big matter.
I do upset some people by always using braces, like in your second alternative: Indentation and braces go hand-in-hand. Call it 'two-factor level nesting'. I want to indent the case alternative, so it should be made a block. Blocks are indented. Statements are not, neither single nor multiple statements. In- and un-denting without braces makes a mess of nesting levels.
Religious freedom is the freedom to say that two plus two make five.
|
|
|
|
|
I blame Ken Thompson.
switch should never have had fall-through, break should never have affected switch . That should have been their first clue.
|
|
|
|
|
I blame Ken Thompson for the vast majority of bugs in today's software. The entire concept of null terminated strings and buffers is simply asking for trouble. DEC and IBM both had descriptor-based buffers, which gives the OS calls that manipulate buffers a way to block buffer overflows.
|
|
|
|