Hacker News new | past | comments | ask | show | jobs | submit login
Object Pascal Handbook (marcocantu.com)
14 points by alekq on May 4, 2015 | hide | past | favorite | 9 comments



So does anyone on HN use Free Pascal? How do you find it. I heard some comparisons of Nim to Pascal as its veiled resurgence.

I am novice, so be gentle. I know this might seem dumb.


At least in the commercial world, the current legacy of Pascal is really in the C# community. See Anders Hejlsberg [1]. He was the author of Turbo Pascal and the chief architect of Delphi before becoming the architect of C#. There is a lot of consistency between the three language environments, especially between Delphi and C#.

[1] https://en.wikipedia.org/wiki/Anders_Hejlsberg


> I heard some comparisons of Nim to Pascal as its veiled resurgence.

I don't know that much about Nim, but there are a few things about it...

1. The Nim compiler was originally written in Pascal.

2. Nim uses Pascal-style type syntax (i.e. "name: type" rather than the C-style "type name").

3. Nim syntax was inspired by Python, which in turn was heavily inspired by Modula-3, which in turn is a descendant of Pascal.


There are tons of influences from ObjectPascal:

* Range-based subtyping: You can declare a type as being an int of 1..5. Many Pascal-derived languages (Modula, Oberon, Ada) have this.

* Ranges are first-class values and can be used in loops and case statements: "for i in 0..10".

* Arrays: "array[1..5] of integer" becomes "array[1..5, int]". Nim also has open arrays, just like ObjectPascal.

* Enums. Almost exactly like Pascal.

* Sets, eg. "set[char]", which can then assign things like {"a".."z"}, almost exactly like Pascal.

* Functions like ord() and prec().

* For a long time Nim used Borland-influenced naming conventions (mainly three: TFoo for classes, PFoo for pointers to objects, FFoo for fields). Fortunately this has been deprecated.

* "var", "type" etc. being block-oriented and used to declare multiple things on separate lines.

* Functions/methods are called "procedures". (The Nim manual insists this is more correct. I'm not so sure.)

* Case insensitive identifiers.


I used to, quite heavily. It was my go-to systems language when I didn't have any particular reason to use C or C++. But I think its time has likely gone at this point. It honestly just doesn't offer anything that interesting compared to other languages. As others have pointed out, C# is in many ways its spiritual successor. Go offers a much richer library collection, is similarly lightweight, but has a better resource cleanup story (both defer and garbage collection). Rust offers an even lighter weight runtime and throws in rich concurrency and safety guarantees. FreePascal offers...safer strings than C, I guess?

I honestly prefer FreePascal to C, but I just think that ship has sailed at this point.


The page says "The ebook (in PDF) is currently available at part of a promotion by Embarcadero Technologies.", but I don't see a link to a PDF file.


http://cc.embarcadero.com/item/30018

Object Pascal Handbook by Marco Cantu

Available to registered users of Delphi XE8, RAD Studio XE8, C++Builder XE8, and Embarcadero All-Access XE This promotional item are available on XE7 purchases made after January 1, 2015 and for XE8 purchases made after April 7, 2015.

That's the link, I guess.


Where is the actual download link here? I feel as if I must be missing something.


Love the cover art




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: