News for hackers. Stuff that matters.
Re:Symbian Won by derefr on Thursday June 25, 2020 @10:59AM (#23641510)
> It had its own dialect of C++ which looks nothing like modern C++

Was this just a "using different elements of C++" kind of dialect, or was this an "early Win32 when you had to use pretend-C++ (ATL) together with your real C++, bridging the two with C" kind of dialect?

I feel like a lot of application frameworks developed in the 90s ended up in the latter style, as C++ was just becoming popular around then, and many frameworks chose to "merge into" C++ support from C support, rather than creating a ground-up C++ SDK.

Re:Symbian Won by secondcoming on Thursday June 25, 2020 @12:15PM (#23642334)
No STL

No std::string

Custom exceptions (no explicit try...catch, I think only ints could be 'thrown')

2-phase construction for C-classes.

Explicit lifetime management (to be fair RAII wasn't a thing in 'normal' C++ at the time either)

Link by ordinal

One interesting thing was that there were mandated, and strictly enforced, naming conventions and coding style. For example, above I mentioned C-classes. You had to use these in certain circumstances by inheriting from a CBase class. This gave you a virtual destructor and zero-initialised the memory. R-classes were resources classes mainly for things that needed Open and Close functionality.

I joined straight out of university and probably learned more about softare development in my first 6 months at Symbian than in 4 years of uni. There were some incredibly clever people there.

Re:Symbian Won by kllrnohj on Thursday June 25, 2020 @12:29PM (#23642466)
> (to be fair RAII wasn't a thing in 'normal' C++ at the time either)

RAII in C++ dates back to 1984-1989, and Strousop wrote about it in his 1994 book Design and Evolution of C++. And C++98 had auto_ptr<>. Symbian's release in 1997 means it had a weird timing relationship with C++ standardization, but RAII was still enough of a thing at the time to be in that very first standardized STL release.

Re:Symbian Won by pjmlp on Friday June 26, 2020 @03:18AM (#23649570)
Turbo Vision, OWL and MFC also made liberal use of RAII.
Re:Symbian Won by app4soft on Thursday June 25, 2020 @12:27PM (#23642448)
There is Alexander Trufanov's free book (in Russian) on programming for Symbian 9.x with many code samples.[0]

Also, as example of complex apps, there is code of Lonely Cat Games' X-plore[1] & ProfiMail[2] apps, released to Public Domain by LCG devs in 2015-2016.

Another one Symbian open-source app that I like: `fshell` — Symbian equivalent of bash + telnet + a posix-like set of command-line tools.[3]

And the latest app in development: S60Maps — OpenStreetMap & GPS tracker.[4]

FTR, Actually there is an experimental Symbian OS emulator for Linux & Windows.[5]

P.S.: And off course there are tons of useful stuff collected by "Symbian Archive" wiki.[6,7]

[0] https://github.com/trufanov-nok/SymbianBook_ru

[1] https://github.com/Symbian9/X-plore_free

[2] https://github.com/Symbian9/ProfiMail_free

[3] https://sourceforge.net/p/fshell/code/

[4] https://github.com/artem78/s60-maps

[5] https://github.com/EKA2L1/EKA2L1

[6] https://mrrosset.github.io/Symbian-Archive/

[7] https://github.com/mrRosset/Symbian-Archive

Re:Symbian Won by defen on Thursday June 25, 2020 @11:09AM (#23641606)
I was responsible for porting a fairly large C++ app to Symbian (this was like 15 years ago, so memory is hazy). The big problems were that exceptions were weird and non-standard, and you couldn't throw them from constructors, so anything using RAII had to be rewritten.
Re:Symbian Won by avereveard on Thursday June 25, 2020 @12:12PM (#23642297)
and it used their own proprietary toolchain, as a layer on top of visual studio iirc, that kind of worked in debug but actually no, I remember we had to purchase a specific nokia to run in dev mode, as not every nokia supported it or was actually supported by the toolchain at the time.

and I remember another pain point was feature detection, but can't recall the specifics.

Re:Symbian Won by secondcoming on Thursday June 25, 2020 @12:24PM (#23642421)
I think VS was used before my time (2005), but then it used CodeWarrior and then after that Nokia's own IDE called Carbide.

It had MMP files which described the project and the files in it, a then a tool called 'abld' which was a perl script that did the compiling, which actually had two commands to clean... 'abld clean' and 'abld reallyclean' :)

Re:Symbian Won by jfkebwjsbx on Thursday June 25, 2020 @02:28PM (#23643873)
RAII can be used without constructors and without exceptions. The acronym is misleading.
Re:Symbian Won by defen on Thursday June 25, 2020 @09:15PM (#23647733)
Yes, but if you have a large existing codebase that throws exceptions from constructors you can't just use it unchanged.
Re:Symbian Won by secondcoming on Thursday June 25, 2020 @06:12PM (#23646353)
This documentation is for a very old version of the OS (I think it got up to 9.4 by the time it was sunsetted?).

Here is how it did its version of std::string:

http://n-gage.org/symbian-sdk-doc/6.1/developerlibrary/Commo...

It actually wasn't too bad once it was beaten into you by the compiler and code reviews. Non-embedded C++ devs can count their lucky stars.