News for hackers. Stuff that matters.
Re:How an Engineering Company Chose to Migrate to D by Xophmeister on Wednesday June 20, 2018 @11:33AM (#17356320)
While the article states that other languages were evaluated, it seems as though the project was motivated entirely by the author and the evaluation was just paying lip service to what was basically a foregone conclusion. Don't get me wrong, I like D from the small amount of playing I've done with it -- and maybe it is the best tool for their purposes -- but this doesn't strike me as an impartial evaluation.

The need for nested functions bugged me as well. That seems like an odd deal-breaker and hints at code smell, rather than a genuine technical need. If it's just for the sake of one-to-one transpilation, then I can see the point, but a refactoring exercise seems like a better effort to make than language migration. (Also, don't Rust and Go have closures? Surely that would satisfy this requirement.)

Re:How an Engineering Company Chose to Migrate to D by Volt on Wednesday June 20, 2018 @12:22PM (#17356812)
>While the article states that other languages were evaluated, it seems as though the project was motivated entirely by the author and the evaluation was just paying lip service to what was basically a foregone conclusion.

Now you understand how all of these "How we chose this language" writeups work.

Re:How an Engineering Company Chose to Migrate to D by ssdd on Wednesday June 20, 2018 @12:38PM (#17356958)
Yeah, almost all the time its the inclination of an individual towards a new language that becomes the driving factor of migration rather than the actual shortcoming of current language.
Re:How an Engineering Company Chose to Migrate to D by acehreli on Wednesday June 20, 2018 @12:51PM (#17357062)
Except that "the inclination of an individual towards a new language" is because of "the actual shortcoming of current language."
Re:How an Engineering Company Chose to Migrate to D by majormajor on Wednesday June 20, 2018 @02:31PM (#17358236)
It's much easier for the inclination of an [a single] individual to be due to the perception of [just a single] individual, than if the impetus is a team-level inclination.

I've worked on projects where people had gripes about the codebase and/or language, but they often couldn't agree on which language to move to. So a single person taking over based on their own preference is either a bug or a feature: as a bug, it's ignoring everyone else's preferences and disagreements, and possibly moving to something the team is even less happy with. As a feature, it's making a decision instead of endlessly trying to find a perfect decision, and at least ending up somewhere better off than before.

In this case, it sounds like it could be the positive sort of change if only because they were starting from a basically-dead language. It sounds like without that single person's initial effort, they may have not started any effort to migrate to anything.

But this gives me major pause: "My colleagues will continue to develop in Extended Pascal as usual, and once my transpiler is able to translate all or almost all of it, we will make the switch to D overnight." I'd love to fast-forward to see what happens the days after that... and how long that takes to get to, for that matter!

Re:How an Engineering Company Chose to Migrate to D by coldtea on Wednesday June 20, 2018 @01:22PM (#17357435)
Actual or imaginary would be a better wording...
Re:How an Engineering Company Chose to Migrate to D by protocode on Wednesday June 20, 2018 @02:27PM (#17358190)
I see mostly imaginary. As a back end systems guy for over 20 years, I deal with guys all the time wanting to introduce new tools into the mix that add zero value. There is a reason why *nix tools are still around. There is nothing that Python can do better than awk for grabbing data columns and piping them into some other tool.

There is a reason why COBOL still exists, for example, what with its ability to ensure accuracy out to 38 digits. Nothing else comes close w/o tons of extra crap libraries, questionable code mangling, and TRUST. Banks trust COBOL because it has an almost 60-year history of trust.

When kids get all shiny-eyed over golang or Rust or any other "new" language or tool and think it would be a good fit in the financial arena, I start to get a little nervous.

Re:How an Engineering Company Chose to Migrate to D by acehreli on Wednesday June 20, 2018 @04:26PM (#17359428)
You never said "C" but perhaps you think there is "a reason" why C still exists too. The only reason ineffective tools like C exist is because there are people at the other extreme from those kids: Not take any risk but stick with tried and wrong tools.
Re:How an Engineering Company Chose to Migrate to D by coldtea on Thursday June 21, 2018 @04:14AM (#17363083)
Nope, there are tons of other reasons.

Huge pool of programmers. Huge pool of libraries. Tons of existing code that should continue to run. Excellent documentation. Very fast compilers. Debuggers and profilers a plenty. Top notch vendor support. Choices of IDEs. Works great in embedded. Predictable.

The alternatives being what, e.g. Rust, a 5 year old language with a single implementation that still tries to find its place, and brings extra baggage to the table?

>Not take any risk but stick with tried and wrong tools.

Engineers don't take risks. You wouldn't want risks in the people building your bridges and planes, why would you want in your OSes and network infrastructure?

Re:How an Engineering Company Chose to Migrate to D by blub on Thursday June 21, 2018 @10:21AM (#17365351)
Rust, D or Go could be alternatives, but they have limitations in certain domains and types of projects.

C++ doesn't though, and that's why traditional C projects switch. At least in automotive it seems to be the language of choice.

Re:How an Engineering Company Chose to Migrate to D by protocode on Wednesday June 20, 2018 @05:13PM (#17359832)
C still has it's place. It's not glamorous, but it works. COBOL has no decent replacements. Yet. Some have tried. Almost all have failed. Old does not mean useless. If it works, then it's not wrong.
Re:How an Engineering Company Chose to Migrate to D by pjmlp on Thursday June 21, 2018 @01:54AM (#17362473)
On UNIX clones and embedded developers that won't take anything else even at point gun.

.NET, Java are good COBOL replacements.

http://www.fujitsu.com/global/products/software/developer-to...

https://www.microfocus.com/products/visual-cobol/

Re:How an Engineering Company Chose to Migrate to D by coldtea on Thursday June 21, 2018 @04:16AM (#17363097)
>.NET, Java are good COBOL replacements.

Not even close.

As for the links, those are still about COBOL the language.

Re:How an Engineering Company Chose to Migrate to D by pjmlp on Thursday June 21, 2018 @04:32AM (#17363176)
I guess you need to inform yourself about migration projects that use those products to bring COBOL codebases to modern platforms, where new features are then written in Java/.NET languages, while the old working code is left as is.
Re:How an Engineering Company Chose to Migrate to D by coldtea on Thursday June 21, 2018 @08:11AM (#17364351)
Nobody argued that new features could be "written in Java/.NET languages".

Not even that COBOL codebases could be bridged and work "left as is" alongside those.

The main objection was with the word "good".

Re:How an Engineering Company Chose to Migrate to D by pjmlp on Thursday June 21, 2018 @08:26AM (#17364442)
Except you have your definition of "good" and I have mine.

This statement is meaningless without additional information.

> COBOL has no decent replacements.

Re:How an Engineering Company Chose to Migrate to D by batbomb on Wednesday June 20, 2018 @01:04PM (#17357212)
“I wanted to move to this language and here’s the blog post I’m using to tell a story to my boss”
Re:How an Engineering Company Chose to Migrate to D by lambda on Wednesday June 20, 2018 @01:30PM (#17357526)
Yeah, it looks like the author started playing around with D and writing a Pascal to D compiler for the migration, then did the evaluation with a "requirements" list that seems fairly heavily weighted towards D and their approach to translation by doing a simple recursive walk of the Pascal parse tree and outputting equivalent D, then decided to go with what they had already started working on.

Rust does support nested functions that don't close over their environment, and has a separate syntax for closures which do, and closures can either move or borrow their captured variables. This makes it a bit harder to write a translator that produces good, idiomatic results; you could always use a closure that borrows the closed over variables, which I think matches the Pascal semantics, but that would mean the code would look a little odd for cases in which you had a nested function just to factor out some functionality and didn't need the closure.

  fn main() {
      let a = 10;
  
      fn function() {
          println!("Hi!");
          // println!("a is {}", a)
          // fails with:
          //   can't capture dynamic environment in a fn item
          //   use the `|| { ... }` closure form instead
      }
    
      let borrow_closure = || println!("a is: {}", a);
      let move_closure = move || println!("a is still: {}", a);
    
      function();
      borrow_closure();
      move_closure();
  }
Re:How an Engineering Company Chose to Migrate to D by WalterBright on Wednesday June 20, 2018 @03:20PM (#17358789)
D nested functions are defined exactly like regular functions, including all attributes, parameter types, etc. There's nothing new to learn.

My experience as a language designer is that syntax matters, and leveraging the users' existing knowledge is worthwhile.

Re:How an Engineering Company Chose to Migrate to D by philjohn on Wednesday June 20, 2018 @12:07PM (#17356658)
The biggest problem is they have engineers who have turned their hands to programming, one would expect, without the formal training and so have latched onto various antipatterns without knowing any better because Pascal allowed them to get away with it - painting themselves into a corner.

He mentioned an awful lot of code that would have to be refactored, and it could be that they are just too far down the rabbit hole to get themselves out.

Re:How an Engineering Company Chose to Migrate to D by scj on Wednesday June 20, 2018 @12:57PM (#17357126)
In this case, I'd look into compiling the existing code into .dll/.so files, and just linking between Extended Pascal and ${NEW_LANGUAGE}. Then, convert the code to ${NEW_LANGUAGE} as needed, if needed.

That solution is probably the lowest cost / safest course... Assuming the Extended Pascal compiler they have supports it.

But I suspect choosing D was a fait accompli.

Re:How an Engineering Company Chose to Migrate to D by _veelo on Wednesday June 20, 2018 @02:07PM (#17357968)
This is the approach I took to modernise Fairway (which is just one component of our suite). It doesn't free us from the limitations of the Extended Pascal compiler. It still works, but we want a way out.
Re:How an Engineering Company Chose to Migrate to D by scj on Wednesday June 20, 2018 @03:21PM (#17358795)
Hello, I assume by your username that you're the author!

Transpiling is normally a little risky. Transpiling with a custom transpiler over ~500KLOC is downright terrifying.

I'd be concerned that the cure is worse than the disease.

I understand the allure of this solution. Bringing 30ish years of code into the modern era with a single piece of code sounds like a huge win. But you owe it to your employer (who seems really gracious and trusting) to ask:

1. Are there edge cases? Programmers are a clever bunch, and you can never be too sure about what features/bugs they've used/abused!

2. How will success of the transpile be determined? I'd use unit tests, but that'd take a lot of unit tests!

3. What % of that code path is critical? Can you get away with ensuring the functionality of a subset of the codebase? If so, could you just manually port that?

4. "Blaming the compiler" will be a reasonable excuse for any problem over the next year or two after deployment. I guarantee you'll be spending time proving that other peoples' mistakes are not your fault. How much flak are you and your boss going to take for this?

5. Since the code can be linked, might a more popular language (that will be known by a wider community) with a slow porting plan be reasonable?

6. Python is commonly used with scientific computing. Why does this case preclude it? If you are doing mostly numeric processing, that gets directly passed to the hardware anyway!

You have been given a rare chance to pay down technical debt. From what I understand of your solution, I believe the bespoke transpiler and semi-known language will ultimately increase it. And I know you love D, but if I were brought in as a consultant, I'd be recommending the .dll/.so solution with Python. If something is really time sensitive, use Python binding to work with other languages (avoiding premature optimization).

Even if myself or my fellow posters made a point that resonated, it might be too late for such discussions. I can't weigh the political costs for changing strategy now. So I'll wish you good luck, and hope that Extended Python doesn't have too many sharp edges for you to contend with. I hope to see a postmortem a few years from now detailing the outcome of this plan.

Re:How an Engineering Company Chose to Migrate to D by _veelo on Thursday June 21, 2018 @05:39PM (#17369523)
1. Unconsidered edge cases? We'll have to find out... We can always change the _source_ code to eliminate known unhandled edge cases.

2. We ourselves are heavy users of our software, and are likely to be the first to discover "oddities". More serious are subtle numeric differences, and we'll have to create tests against that. One approach to validating the transpiler is instrumenting the code. We could write a Pascal-to-Pascal transpiler that inserts extra code, for example logging the return value of every function. If we do the same for the Pascal-to-D transpiler, and do an identical run, we can compare the logs. And variations of that approach.

3. If a small percentage is unproportionally hard to translate mechanically, we can isolate that and translate manually.

4. I fail to see what you are getting at.

5. Of course we can link code. We think the community is wide enough for us.

6. You mean it gets passed to C.

Thanks for the suggestion. We have a working dual language situation with C++, we don't see that as an attractive option for our other tools. Why would Python be better than D?

Re:How an Engineering Company Chose to Migrate to D by scj on Friday June 22, 2018 @11:10AM (#17374534)
I think point one is the concern of most people on this page. The most I've ever transpiled is 40kloc (this was for an R&D project, I'd think twice before doing it in production). ~500kloc is a different matter.

What % of the codebase are you familiar with? What % of the code is known by your team? If you had multiple, conflicting errors pop up at once, how much effort would it take to isolate them (not fix, just identify). What about in a section where no one has worked in a long time (assuming such a thing exists)?

Like any old codebase, I'm sure there are functions that have "just worked" for years (or in this case, decades). With a single action, every piece of code that's been proven solid over time is about to be suspect.

For point two, I think you have a lot more confidence in your ability to detect problems than I would in your shoes.

For point three, I'd much rather manually port necessary code piece by piece over a period of years. Unit testing like crazy while doing so. Thanks to linking, this is an option... One I'd recommend.

Point four is similar to majormajor's comment about the aftermath of the switch. I'm attempting to project beyond the immediate... This port could become a whipping boy... That could bleed into political fallout. No matter what technology you introduce, people will complain. Doubly so if problems arise. Adding a custom transpiler on top of that increases the risk significantly. The easiest transition path to a ${NEW_LANGUAGE} is through linking.

I'm not sure about Python vs. D. My instincts are towards the former, especially if I'm supporting SEM (STEM minus the T) grads as programmers. I also wouldn't easily write off interpreted languages (I'd rather work with them when possible).

I think you have your heart set on this path. But losing the binary safety net in favour of a bespoke transpiler is not a gamble I'd make with large amounts of production code...

Good luck!

Re:How an Engineering Company Chose to Migrate to D by blub on Wednesday June 20, 2018 @05:36PM (#17360012)
Python has two big issues: performance and dynamic typing.

The solution of using a HLL and dropping down to C for performance strikes me as overly optimistic: the only language where one can legitimately claim that it's pleasant to use C for extra performance is Objective-C. Anything else will be different degrees of painful.

I didn't get the solution of using a dynamic lib and calling/extending that from Python. One would end up with 500kloc of Pascal and a Python one liner. All the work still happens in Pascal.

Re:How an Engineering Company Chose to Migrate to D by scj on Wednesday June 20, 2018 @07:50PM (#17360945)
I think there is an understanding that the whole situation is less than ideal. I'm proposing a low risk method to transition from the current situation to a healthy one over the long term.

Having binary compatibility with the old version would be a great safety net while transitioning to another language. The main weakness of the author's plan, as the article explains it, is that they will be dealing with a lot of newly generated code at once (as well as an unknown number of unknowns). The plan would be fine if it was only ~10kloc, but ~500kloc is a very different beast!

Come to think about it... It would be wise to have a "Plan B" still written in D, but linked to the binary rather than transpiled. That way if anything goes wrong after deployment, users can temporarily use that rather than revert to Extended Pascal.

There probably isn't an easy solution for this problem. But maybe the author has found a silver bullet.

I brought up Python because it sounds like SARC is adjacent to scientific computing, and it is likely they'd be able to pick up physics/math/engineering majors that are already familiar with Python. Plus, I bet they'd be able to use some really good Python libraries (possibly replacing some of that 500kloc custom code with open source libraries).

The article makes it clear that naval architects (who are not expected to learn C++) are programming, so I doubt high performance computing is required in 100% of the code (at least I hope not). If there are genuine performance issues, tools alone won't save you, you need to hire programmers that know how to optimize (and they'll be fine writing C/C++ libraries with interfaces to Python).

I strongly suspect the justification that interpreted languages don't meet performance requirements is more ideological than empirical.

Besides, it's likely the existing binary will run faster than its transpiled descendant!

Re:How an Engineering Company Chose to Migrate to D by pjmlp on Thursday June 21, 2018 @01:59AM (#17362502)
> I strongly suspect the justification that interpreted languages don't meet performance requirements is more ideological than empirical.

Nope, it is based on production code life experience and seeing everything crumble with high CPU usage for little work being delivered.

Any programming language without a JIT or AOT as part of their default toolchain is not worth using for anything besides scripting.

> Besides, it's likely the existing binary will run faster than its transpiled descendant!

Given how old Extended Pascal compilers are and that D has three backends, two of them based on GCC and LLVM respectively, I pretty much doubt it.

Re:How an Engineering Company Chose to Migrate to D by Skunkleton on Wednesday June 20, 2018 @01:06PM (#17357236)
This approach has always been the one that makes the most sense to me, but yet it also seems to be rare. I couldn't explain why.
Re:How an Engineering Company Chose to Migrate to D by walshemj on Wednesday June 20, 2018 @12:53PM (#17357081)
Very strange in a hardcore technical programming context, I would have thought they would have used Fortran which is still being actively developed.

I have never seen a reasoned argument why C++ vs Fortran is better for technical programming.

Re:How an Engineering Company Chose to Migrate to D by noir_lord on Wednesday June 20, 2018 @01:02PM (#17357174)
Given they started in the 80's Pascal probably has fewer corners to paint oneself into then many languages then (and now probably).
Re:How an Engineering Company Chose to Migrate to D by _veelo on Wednesday June 20, 2018 @02:10PM (#17358013)
Indeed!
Re:How an Engineering Company Chose to Migrate to D by 52-6F-62 on Wednesday June 20, 2018 @03:21PM (#17358794)
To be fair, I work with a large number of formally trained engineers who commit far worse in terms of anti-pattern and data hygiene infractions on the regular and I’ve had the fortune of refactoring their messes.

I don’t think it’s solely dependent on having afforded formal training.

Knowing enough to know that you might not know and just might need to measure or look something up and caring enough to do so is more of the core of it.

Re:How an Engineering Company Chose to Migrate to D by fsloth on Wednesday June 20, 2018 @12:28PM (#17356863)
I have a hunch the majority of domain specific engineering products are at least initially implemented by engineers of the domain and not software engineers.
Re:How an Engineering Company Chose to Migrate to D by Cyph0n on Wednesday June 20, 2018 @11:58AM (#17356563)
> If it's just for the sake of one-to-one transpilation, then I can see the point, but a refactoring exercise seems like a better effort to make than language migration.

I think the author makes it clear that direct conversion from Pascal is the primary goal. I'm guessing that once the codebase is fully transpiled to D, refactoring would be the logical next step.

Re:How an Engineering Company Chose to Migrate to D by _veelo on Wednesday June 20, 2018 @02:11PM (#17358021)
Confirmed.
Re:How an Engineering Company Chose to Migrate to D by burntsushi on Wednesday June 20, 2018 @12:22PM (#17356802)
> (Also, don't Rust and Go have closures? Surely that would satisfy this requirement.)

Indeed they do. It's completely unclear why they don't satisfy the OP's requirement.

Re:How an Engineering Company Chose to Migrate to D by _veelo on Wednesday June 20, 2018 @02:20PM (#17358095)
To be frank: I have never used Rust nor Go. Nevertheless, I am quite sure closures and goroutines would complicate the translation due to different syntax from ordinary functions. The same argument is being discussed at reddit https://www.reddit.com/r/programming/comments/8si75b/how_an_...
Re:How an Engineering Company Chose to Migrate to D by jerf on Wednesday June 20, 2018 @02:30PM (#17358231)
Speaking at least for Go, the "different syntax" between closures and functions is that for closures, you don't give a function name. The only way they could be any more similar is if closures did take a function name, which is generally a bad idea because there's no single behavior I've seen that captures what programmers expect to happen in that case. (In general, for the code

    x = func blah() { ... }
there is a conflict between "x is the only new binding we should have as a result of executing that line" and "the function name 'blah' should do some sort of binding".)

If that's enough to throw your translation process, you've got bigger problems....

(Cards on the table, D is probably a good choice and I'm not advocating for Go here.)

Re:How an Engineering Company Chose to Migrate to D by kibwen on Wednesday June 20, 2018 @02:40PM (#17358344)
> I am quite sure closures and goroutines would complicate the translation due to different syntax from ordinary functions.

It's unclear where the root of that confidence lies. The translation is just as mechanical in either language as it would be otherwise: see an inner function, replace it with the one thing that can capture variables. Speaking for Rust, it would actually be even easier to do the translation using closures, because Rust closures can have their signatures inferred whereas Rust functions cannot.

Re:How an Engineering Company Chose to Migrate to D by comex on Wednesday June 20, 2018 @04:59PM (#17359708)
I can see at least two issues. I'm sure you're aware of these, but:

- Rust closures don't really support recursion, at least without serious hacks.

- Rust closures borrow the variables they reference as soon as the closure is created; you can never write to those variables again as long as the closure is alive, and if the closure mutates the variable (resulting in a mutable borrow), you can't read from them either, outside the closure itself.

The latter isn't as a big a deal for some other use cases for closures, but if you want to use them to emulate nested functions, you're probably creating the closure at the beginning of the outer function and keeping it in scope for the whole function; this means that what you can do with mutable variables is severely limited.

Both issues could be worked around if the mechanical translator liberally sprinkled the code with Cell/RefCell – which would also be necessary to deal with pointers in the source language. But the result would be highly unidiomatic and verbose Rust code.

(In any case, I'm not sure I'd have recommended Rust to OP as they claim to put a high priority on fast compile times, but that's a separate issue.)

Re:How an Engineering Company Chose to Migrate to D by robocat on Wednesday June 20, 2018 @02:55PM (#17358531)
From: https://www.reddit.com/r/programming/comments/8si75b/comment...

"In Rust, only lambdas (unnamed functions) can be closures".

The OP's post seems to show they didn't spend much time understanding whether Go closures could serve their need. Although from my own superficial understanding, D is "closer" to Pascal than Go.

Re:How an Engineering Company Chose to Migrate to D by pmarin on Wednesday June 20, 2018 @02:05PM (#17357932)
>The need for nested functions bugged me as well. That seems like an odd deal-breaker and hints at code smell

Nested functions were a very common pattern on languages like Pascal, Modula or oberon. They are equivalent to code blocks inside a function in C.

Re:How an Engineering Company Chose to Migrate to D by WalterBright on Wednesday June 20, 2018 @02:19PM (#17358094)
The equivalent in C is code blocks connected with gotos. In my conversions of C code to D, I'm able to replace these gotos with nested functions, which makes the code significantly easier to read.
Re:How an Engineering Company Chose to Migrate to D by _veelo on Wednesday June 20, 2018 @02:08PM (#17357979)
Indeed, it serves encapsulation.
Re:How an Engineering Company Chose to Migrate to D by mratsim on Wednesday June 20, 2018 @05:05PM (#17359770)
Given the Pascal history and even consideration of Ada, with the focus on expressiveness and ergonomics I'm surprised that Nim didn't make the shortlist. Nim even has an official Pascal-->Nim converter (called pas2nim) as the very early versions of Nim before bootstrapping were in Delphi.
Re:How an Engineering Company Chose to Migrate to D by closeparen on Wednesday June 20, 2018 @12:33PM (#17356910)
Framing closures as a “requirement” is pretty strange. Depending on the context they can be an ergonomic nice-to-have, but it’s not like you can’t express a program without them.
Re:How an Engineering Company Chose to Migrate to D by setr on Wednesday June 20, 2018 @12:58PM (#17357133)
>Depending on the context they can be an ergonomic nice-to-have, but it’s not like you can’t express a program without them.

When talking about turing complete languages, everything is an ergonomic nice-to-have. All language features aspire to be so nice to have, that you come back around and call it a necessity. But you can still express a program without them, unless you strip out so much as to lose turing completeness.

Re:How an Engineering Company Chose to Migrate to D by closeparen on Wednesday June 20, 2018 @01:09PM (#17357265)
Right, which is why "requirement" is a silly framing that ascribes a sort of objective engineering necessity embedded in the problem to what is actually an subjective aesthetic choice between solutions.

(I'm generally pretty skeptical of the whole "write down your requirements with no awareness of available solutions and then choose a solution that meets them" approach to decision-making).

Re:How an Engineering Company Chose to Migrate to D by lomnakkus on Wednesday June 20, 2018 @04:28PM (#17359453)
Why do you find it strange? To me, "requirement" signals that there's some sort of pain threshold for writing/maintaining code that the writer isn't willing to go above. Is there anything weird in that?

> (I'm generally pretty skeptical of the whole "write down your requirements with no awareness of available solutions and then choose a solution that meets them" approach to decision-making).

I also don't understand this. If there's a solution that meets all of the requirements what does it matter what there are other solutions? I mean, yeah, you be doing a local vs. global optimization, but as long it meets the requirements it's probably not a big deal. (The only exception is if the requirements are so broad as to be meaningless, but as long as they're reasonably specific, I don't see the problem.)

Re:How an Engineering Company Chose to Migrate to D by WalterBright on Wednesday June 20, 2018 @02:21PM (#17358109)
A language with only goto and call statements can express any program, too. It's not unreasonable to require higher level programming constructs, because such make programming faster and less prone to error.
Re:How an Engineering Company Chose to Migrate to D by zombinedev on Thursday June 21, 2018 @02:12AM (#17362558)
If you have a half million codebase that you need to migrate, I would say that every heavily used Extended Pascal feature is required to be easily translatable. If it's simply possible but the translation is not direct or easy, then the maintainers may be better off staying with Ext Pascal than maintaing a half million uglified code base.
Re:How an Engineering Company Chose to Migrate to D by pjmlp on Wednesday June 20, 2018 @12:22PM (#17356811)
Well Microsoft deemed they are still relevant enough to add them to C# 7.