I guess people dont learn Pascal anymore. I still remember Turbo Pascal was what brought me into programming. It took me a very very long time to get used to C style programming.
I guess people dont learn Pascal anymore. I still remember Turbo Pascal was what brought me into programming. It took me a very very long time to get used to C style programming.
I haven't touched Ada in like 20 years and now that it seems to be having a small resurgence it looks like a good time to relearn it. It has potential to become one of my favourite languages.
But I can relate that Ada feels like you should be writing it one a flickering green terminal in ALL CAPS and debugged with a daisy wheel printer.
https://en.wikipedia.org/wiki/Rational_R1000
http://datamuseum.dk/wiki/Rational/R1000s400
Think Lisp Machine experience, with Ada instead.
In a way, the reason for such a limited character set and clunky syntax (including, e.g. case insensitivity) was precisely to maintain backward compatibility with those earlier machines.
Trying to learn Haskell after C++, on the other side, was difficult for me.
Character'Val
I literally failed an exam because I couldn't locate the right function in the online manual for 2 hours. And I'm pretty liberal .. I like lisp, forth and APL but still to this day, it trips me up.You can submit language rfcs here: https://github.com/AdaCore/ada-spark-rfcs
For an example of the latest additions : https://blog.adacore.com/ada-202x-support-in-gnat
As to the developer experience, I find the tooling to be quite satisfactory (IDE, build system, memory/stack analyzers, provers, etc) , the main pain point being the lack of a decent package manager (there is one now, but there are few packages).
Edit: almost all the standard c/c++ tools work out of the box as well (profilers, debuggers, etc), so it's no different from c/c++ on this regard.
By that do you mean the GNU ones, or…?
Is this commonly accepted? I thought it came off the better-C camp, plus GC.
https://www.youtube.com/watch?v=0ReKdcpNyQg
https://go.dev/talks/2015/gophercon-goevolution.slide
> In 1960, language experts from America and Europe teamed up to create Algol 60.
> In 1970, the Algol tree split into the C and the Pascal branch.
> ~40 years later, the two branches join again in Go.
Then you merge that with Limbo's syntax and channels, and you more or less get Go.
(C begat a bunch of research languages, those begat Alef, a conflict about whether to add GC led to Alef dying and its features reimplemented as Plan9 libraries with side effect of Limbo, years later Go is built on top of Plan9 C compiler & runtime with syntax sugar for Alef-derived libraries).
Plan 9 compiler was used as means to quickly get a prototype running, and naturally Rob Pike knows the toolchain quite well.
I also agree with the Alef remark.
If you removed the c pre-processor and translated (the syntax of) a Pascal program to C, I imagine it might look a bit like go if you squint?
I'd say go is to Pascal and C as Javascript is to Scheme/Self and Java.
Ada actually did in Ada 2012 and moreso in Ada 202x.
- Expression functions, and expression forms of if/else and case statements
- more natural "aspect" versions of a lot of pragmas
- iterator syntax for containers which can be user-defined
- user-defined indexing into containers (Variable_Indexing and Constant_Indexing)
- user-defined aggregate initialization (such as for containers, the Yeison library exploits this to provide JSON-like initialization)
Overall though, the language syntax is coherently put together with orthogonal elements, despite the various pieces coming together over decades. The language designers have done a superb job ensuring that Ada 2012 felt uniform, and not like a collection of bolted on parts.
https://en.wikipedia.org/wiki/Rational_R1000
Now you can complain that none of them exist as free beer, and that GNAT Studio came too late, but that is another matter.
I also prefer the C++/modern C approach to declarations, where local variable declarations can be freely intermixed with other statements. Ada uses a noisier declare/begin/end syntax. [0][1]
[0] https://stackoverflow.com/a/59192530/
[1] https://www.radford.edu/~nokie/classes/320/declareblocks.htm...