Settings

Theme

Heteroglot: Project Euler problem #16 in Pascal, #17 in Inform 7

eev.ee

30 points by hoverbear 10 years ago · 15 comments

Reader

to3m 10 years ago

"How on earth did C win out over this?" - here's some guy's take on, if not exactly this question, matters that may be related: https://www.lysator.liu.se/c/bwk-on-pascal.html

My own memory is similar - Pascal was just generally annoying to use, in various little ways, that added up over time. On the face of it, it seems like it should be a lot better than C, but in practice... it just wasn't.

  • vessenes 10 years ago

    That's such an interesting essay -- some of the complaints seem so egregious, it's no wonder Pascal didn't take off. All of the complaints seem (to my eyes) very reasonable. The high points:

    No closures, so global vars everywhere

    No breaks in flow control, it's goto (deprecated) or nothing

    Strongly typed, but arrays of different lengths are different types.

    Casting types is not possible

    A number of annoying order-of-code requirements

    "and" and "or" have no guaranteed precedence or order of operation..(!)

    Those are enough to make me want to hurl the compiler against a wall.

    • munificent 10 years ago

          > No breaks in flow control, it's goto (deprecated) or nothing
          > Strongly typed, but arrays of different lengths are different types.
          > Casting types is not possible
      
      Those are real frustrations, but, at the same time, they help avoid many of the security and safety issues that have plagued C for decades.

      It's not clear if there's a language somewhere between Pascal that's less annoying but more safe while still being simple. But I think it is pretty clear that there is a real trade-off in either direction.

      C doesn't get in your way when you know you're doing like Pascal does. But it also doesn't get in the way when you don't know what you're doing.

      • vessenes 10 years ago

        I think Go has a reasonably good story about each of those three items actually; you can create an array of specific length as a type (and name it if you like), or you can create a slice, which does not have length requirements.

        Flow control is significantly better, and supports goto style semantics when you need them.

        Casting is liberally warned against (unsafe.*), but available when needed.

      • Avshalom 10 years ago

        Well I mean, there's Pascal, which solves all three of those gripes.

  • qewrffewqwfqew 10 years ago

    Bear in mind that this was written in 1981, at the beginning of a decade that saw enormous progress for Pascal, rendering most of "some guy"'s objections invalid. ANSI C only happened towards the end of that decade.

    I think when an essay from 20 (or 35) years ago claiming "X sucks" is referenced, it's kinda foolish not to draw attention to the history that followed.

    • AnimalMuppet 10 years ago

      Well, I was using Pascal professionally from 1986 to 1988, and many of those objections were still valid. (Granted, on an embedded system rather than a PC, so the improvements in Pascal were slower in coming to us.)

      • GFK_of_xmaspast 10 years ago

        I was using pascal in the early 90s, and the compilers to which I had access most certainly still had "Strongly typed, but arrays of different lengths are different types", which was incredibly annoying. (And for fun, consider the arguments against pascal's length-typed arrays and against go's lack of generics)

  • TimJYoung 10 years ago

    Those arguments are very old. Modern Object Pascal, (around since the mid 90's) has dynamic arrays that are used now instead of the old static arrays with hard-coded bounds. The only time that you use static arrays now is if you truly need a bounded array, such as when calling into an API call that has MAX_PATH or something similar as the bounds and you need a character buffer for a return argument. This also applies to strings, which are now also dynamic and reference-counted, and not some fixed buffer that is 255 bytes in length. You can still use most of the old stuff because the language is very backwards-compatible, but most people don't.

    • to3m 10 years ago

      Pascal had already failed to take off by the mid 90s, as I recall, so the damage had been done.

      • TimJYoung 10 years ago

        No, Turbo Pascal was very successful, and its successor, Delphi, was wildly successful on Windows (Delphi was first released in 1996). It only started to falter in 2003-04 when Borland decided it wanted to be an enterprise Java company (???) and Anders Hejlsberg, the chief Delphi architect, left to go to Microsoft, where he was the chief architect for C# for .Net, and now works on TypeScript.

asQuirreL 10 years ago

> Cool. I’m glad to see Pascal has adopted Rust’s approach of putting the type last, so you can actually see at a glance what the variable names are.

I'm guessing (hoping) this is irony...

AnimalMuppet 10 years ago

> I have a hard time even thinking of it as a systems language, since systems languages tend to be full of punctuation, whereas Pascal makes pretty heavy use of keywords.

Judging whether it's a systems language by keywords vs punctuations? Seriously?

> does this seriously predate C and share the same problem space?

Some people thought it could share the same problem space, but it was primarily intended to be a teaching language. It turned out that it wasn't as suited for real work as some people thought.

> Granted, I don’t know enough about Pascal from one toy program to fairly compare it to C. Kind of curious what the story is, though.

The story is, when you quit having toy problems, Pascal's limitations got in your way much more than C's limitations did.

  • nickpsecurity 10 years ago

    So Jurg and Wirth designed Modula-2 as a replacement, then built a computer, then wrote an OS, wrote some apps, and lived happily ever after. Until their urge to build new languages was overpowering. Rinse, repeat.

    Yet, Modula-2 had a nice combo of readability, safety, compiler efficiency, and runtime-efficiency. Proven in OS development. Such safe, systems languages helped once I got past toy problems C could handle without crashing my stuff. ;)

  • TimJYoung 10 years ago

    I don't know which Pascal you're referring to, but with the modern Object Pascal (that's been around since the mid-90's), I've written two SQL database engines and a web development IDE/compiler.

    AFAIK, this was also written in Object Pascal:

    https://www.image-line.com/flstudio/

    These products are hardly "toys".

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection