Looking back on what programming used to be like can be a fascinatingly entertaining thing, which is why [Tough Developer] decided to download and try using Turbo C and C++, from version 1.0 to the more recent releases. Borland Turbo C 1.0 is a doozy as it was released in 1987 — two years before the C89 standardization that brought us the much beloved ANSI C that so many of us spent the 90s with. Turbo C++ 1.0 is from 1991, which precedes the standardization of C++ in 1998. This means that both integrated development environments (IDEs) provide a fascinating look at what was on the cutting edge in the late 80s and early 90s.
It wasn’t until version 3.0 that syntax highlighting was added, with the IDE’s focus being mostly on features such as auto-indentation and tool integration. Version 2.0 added breakpoints and further integration with the debugger and other tools, as well as libraries such as the Borland Graphics Interface (BGI). Although even editors like Notepad++ and Vim probably give these old IDEs a run for their money nowadays, they were totally worth the money asked.
Those of us that have been around long enough to have gotten their start in C++ by using the free Turbo command line tools in the 1990s, or lived through the rough, early days of GCC 2.x+ on Linux, will remember that a development environment that Just Worked© was hard to obtain without shelling out some cash. Within that environment Turbo C and C++ and later Visual Studio and others served a very grateful market indeed.
Beyond the IDE itself, these also came with language documentation, as in the absence of constant internet access, referencing APIs and syntax was done using dead-tree reference books or online documentation. Here “online” meaning digital documentation that came provided on a CD and which could be referenced from within the IDE.
[Tough Developer] walks the reader through many features of the IDE, which includes running various demos to show off what the environment was capable of and how that in turn influenced contemporary software and games such as Commander Keen in Keen Dreams. While we can’t say that a return to Turbo C is terribly likely for the average Hackaday reader, we do appreciate taking a look back at older languages and development environments — if for no other reason than to appreciate how far things have come since then.
72 thoughts on “Revisiting Borland Turbo C And C++”
I learned C++ using Borland, somewhere on Win 3.1 early 90’s. Not that much later I gave a talk to my development group at the #2 computer company of the time about C++ and object oriented programming, because I was the only one who knew it. Still writing C++, but using gcc and Linux.
However, I moved off Borland to Visual C++ with a competitive upgrade; OWL (I think that is what their Windows class library was called) was not as good as MFC.
(My first computer experience involved FORTRAN and punched cards – I have thought that I should retire to the Living Computer History museum as an exhibit)
When I read the second sentence, I thought we were more or less the same agev(55 give or take). Then at the end, you started talking that punch card ish. I was left behind. Haha!
I’m pushing 70. Admittedly, my first experience was in high school (public school) with an IBM 1130 in the basement.
The software industry wants cheap people instead of experienced workers, and then they wonder why the same mistakes are made over and over again. (HINT – hire people who learned how not to make those mistakes)
But where I am fortunate to work now (as a contractor) wants good people and can’t hire H1B. And the new guy is a great person who thanks me and gives me credit for helping him. As I say, I made all these mistakes and learned from them, so I’m glad to pass on my experience.
Greetings, fellow Boomer!
I got to experience IBM’s unit record equipment (402 accounting machine) in HS, then we got an 1130 in my senior year. I was surprised to find the machine was so crippled that it couldn’t compile its own programs.
On to college, where I was present when they installed a CDC Cyber 74, on which I took my assembly language programming class. I worked a couple summers at DEC where I got my intro to the PDP-11, and then on to work as an EE for their arch-rival, Data General, working on communications designs with Motorola 6800 and later 68000. All programmed in assembly at first.
I bought a copy of Borland C and though it was pretty well designed. Then I discovered Unix, and not much later, Linux. Have recently “retired” from an embedded design position and still go back occasionally as a contractor to my former employer. I have been pretty impressed with my younger coworkers, but I realise their skills are at a higher level than the gates and flops I learned. They have the advantage of all that foundational knowledge that we created. Hardly anyone I know can program in assembly now…it’s all C++
Another boomer here –
Senior year in high school we had remote access to the Dartmouth Time Sharing System (DTSS). On to college where the engineering school had an RCA Spectra 70 and two(!) state-of-the-art PDP-8 “minicomputers”, one with the DEC 338 display and a 32K word hard disk (and left-over ENIAC cabinets in various storage rooms). On to grad school and an IBM 370 and 029 punches. Then to a DOE National Lab and CDC 6600s, later Vax and Crays and …
Yet another boomer – sigh- and now retired (though this new AI stuff makes me want to be back in…). I transitioned to programming just before my 40s.
Turbo C & C++ – the first pro coding tools like that were like being shown the cockpit of an F18, after learning on a Cessna. Remember when the introductory versions were CDs in the back of those 2″ thick “Teach Yourself…” computer books? I’ve pitched about a ton of those now.
I wish there were more of your company. Ageism and India as turn key solution drove me out of the industry
Ahhh, we’re similar in age and experience. Strange none of the old timers mentioned the other languages like Modula-2, Snobol, Algol, Ada, Wirth’s asm, original Basic (and its derivatives). Of course there’s still the niche group of Lisp users (I’m told). I’m sure anyone who’s used any of these languages has most definitely used the Turbo products and was, at the time, amazed at the speed (especially those of us who went to CS graduate school and had to write assemblers and compilers using the Dragon book). My real job in that era required Fortran and assembler on Vax, PDP11, HP1000 hardware. I recall the days of using computer terminals to access a mainframe/mini computer, then evolving into independent desktop computers, now digressing to the unfortunate world of Citrix applications and using my laptop as a remote terminal.
Yes, we old timers could go on and on about computer history. I started in the mid 70s and listened to the old timers of that era drone on about computers from the 60s. COBOL anyone?
Cobol is still in use lol. Too much code from your generation in too many critical roles to ignore.
According to nameless friends in the financial sector, COBOL is still the language of choice for banking and related interests. And on the IBM Mainframe.
Punched cards went on for quite awhile depending upon where one lived. I remember a utility bill coming with a “do not punch, spindle, or mutilate” card enclosed.
Probably my first real programming experiences were with Turbo Pascal (anyone else remember that) with my first C++ experiences being I believe Borland C++ on Windows.
I remember Pascal. A language lacking features (like initialization) that was needed for real work. I did use it in my first real job (other than a summer job).
All y algorithms and data structures courses were taught in Pascal. I never liked it…i/o was painful…the language was TOO structured. C was much more fun when I learned it years later.
Turbo Pascal was a massive extension to plain Pascal, though. It addressed most if not all shortcomings of Pascal.
I used turbo pascal 5 to write a dynamic simulator for chemical reactors in 1992.
Nothing wrong with Pascal that using a different language wouldn’t fix
I was a die-hard Turbo Pascal user all through college and into my early post-grad years, starting out running it on an IBM PC Portable (https://en.wikipedia.org/wiki/IBM_Portable_Personal_Computer). I’d started with Pascal in high school on a DEC PDP 11/44, Turbo Pascal definitely took it up a level. Alas, I don’t have any of the code I’d written back then, although I do still have one compiled executable (a membership system I’d written for our local arts council) which still runs fine in DOSBox.
While I was anticipating Borland coming out with Turbo C they came out with Turbo Prolog – a language I hadn’t heard of. I still use Prolog (SWI) today.
It’s a bitter sweet story since I started on Turbo Pascal and later moved to Turbo C and C++. Borland was a real ‘tech’ company where they put their efforts into product over marketing. Their class libraries were well written and cross platform following OOP methodologies new and hot at the time. They also had apps like Quatro Pro spreadsheet which ran circles around Lotus 123 and Microsoft Excel spreadsheet apps.
The bitter part is how Microsoft attacked all compiler vendors shipping cross platform GUI frameworks like Borland’s OWL, IBMs IOC, etc. Once Microsoft forced MFC onto the market, it was easy for them to render compiler vendors like Watcom. Then Microsoft raided Borland of its top engineers and architects as they spent hundreds of millions to try to kill off Sun Microsystem’s Java language/platforms(also cross platform).
Thank you for reminding me of Watcom. Watcom with DOS extender, straight into 32 bit C code, good bye 8086 assembler.
I am 45 and I earned the money for my first “mountain bike” by writing additional Turbo Vision components for Borland Pascal and Borland C++ in the 3rd grade at secondary school. I learned object oriented programming with these tools. Those were really great tools.
Oh yes…. I remember.
In the 80s, Pascal was the CS language of choice at college on the VAX. I got a DEC Rainbow while in college and along came Borland Pascal to run on it! I was able to program projects at home and upload to the VAX. Didn’t have to via for a terminal in the lab. Worked out great. Then of course came Object Pascal, Turbo C, Turbo C++, and then Delphi. Used Delphi and Borland C++ at work too for GUI apps. Kicked around Turbo Prolog, Quatro Pro, too. I enjoyed all the Borland products, but have a real soft spot for Pascal, Object Pascal and the RAD Delphi. Glad we have Lazarus and FreePascal today for use on Linux to keep the language alive.
Thanks for bringing back memories!
Funny thing, at work we never did use M$ compilers. By that time minGW was out so went straight to that for our control system programming in C using make as the builder. To this day I don’t do much with Visual Studio if I can help it (at work). At home, there are no Windows systems present except one Win 7 VM which is rarely used.
Cool, I knew someone who had worked with Kylix on Linux. 🙂
Too bad it wasn’t more open. I suppose Lazarus took its place meanwhile ?
Never used Kylix. Lazarus was pretty buggy though if I remember right back when. Today though Lazarus seems to work great on my KUbuntu systems. Ultibo for the RPI uses the framework for their excellent tool. As the documentation states, Lazarus supports many of libraries Delphi uses. Of course you don’t need to use Lazarus for (object) Pascal code generation. One can simply use the FreePascal compiler stand-a-lone. Since I am a Linux user/programmer at home now, this is the route for me when doing anything with Pascal.
In 1995, I began using Delphi, which was a breath of fresh air compared to dealing with the nuances of C and C++ STL. Even today, I continue to utilize Delphi and Freepascal’s Pas2js, and I must say that Delphi still rocks.
Oh yes, and there was TASM too when going the assembly route.
OMG that is fugly! One thing I never quite got over was the insane choice of the serif-ed font in Windows and DOS. It is such a horrible thing to have inflicted on so many people in the days of low resolution displays that I have never trusted that organization. That and the reverse Hungarian function naming scheme or whatever it was. Painful to read listings! First impressions can really last :-)
Blasphemy. This was the peak IDE and I’m still looking for a viable TUI for modern languages. We had our Borland up on a CRT, a couple of hardcopy reference books, and a problem to solve…everything else is a distraction.
That’s a trip down memory lane for sure. I started real programming on Turbo Pascal 4.5, before the whole C++ and OOP stuff.
Then came Turbo Vision, which was great. At the time I wrote a version of Turbo Vision with TASM, using the OOP features of it. The “this” pointer was stored in EDI.
I was lucky enough to work for Borland for about 6 years, which was probably the best job I ever had.
Shame the company went to crap after the fight with Microsoft tho.
I started out on Borland Pascal, but when TurboC came out, it really changed the face of programming.
It wasn’t fancy, but it worked.
Borland rocked. I don’t remember which version (I’ve used every Borland compiler starting with Turbo Pascal 2.0) – but when working on Win 3.11, you could hook up a monochrome monitor and run the debugger on a second screen. Really important because you wouldn’t get extra WIN Messages when moving on the App.
I held on to the same monochrome monitor (and ISA card) until it finally became practical to run two normal monitors. Dual screen debugging felt like a superpower back then.
As we oldies seem to have been let out today… the introduction of CD-ROMs mentioned in the article was also a game changer… all that information available from your keyboard, and searchable too, was almost mind blowing! Prior to that, it was large bookshelves and thumbing through manuals. A CD-ROM drive was too expensive for me to have at home though.
Absolutely. Shrank down my Intel library tremendously.
Microsoft must’ve been the worst offender. I recall the SDK and MFC manuals taking a full shelf by themselves.
Not just a Microsoft issue. I remember DEC VAX/VMS documentation sets occupying 2 to 3 full shelf’s.
How many people remember getting a patching package for documentation that had steps like “remove page N and replace it with …”
I used to get those for the IBM mainframes (VM and MVS, both had sets of manuals in binders that were about 2-3 meters long, not to mention all the hardware manuals which were these huge oversized things). “Patch day” for the documentation took a full day or two and a good-sized conference room.
I remember Turbo Pascal. They used it to teach programming on the GNVQ course I took at sixth form (not sure what the equivalent is for you left-pondians). They never did explain it properly though.
I was fortunate enough to bag a copy of TC++ at a car boot sale (in the original box and everything!) for very little money, and later a copy of VC6 at the same boot sale years later!
Turbo C++ had a nice IDE for the time and, I remember OWL, which S5K mentioned.
Don’t get me started about MS’s MFC… ugh! *mutters into beard*
Borland wrote some really nice tools back then.
Cool! OWL was also used by Turbo Pascal for Windows.
Delphi 1.0 could use it, too, although it used a different technology by default.
TPW was the stand-alone product that got later integrated as the Windows compiler into Borland Pascal 7.
TPW was nice, because it could create Windows applications that could run on Windows 3.0, still. Similar to Microsoft Quick C for Windows.
The resulting applications could be run in Real-Mode and on 8086/8088 processors, even. Optionally, the compiler options would allow to use 80286 opcodes, too.
And like Quick C, TPW allowed porting of DOS-based applications (WinCRT?). Both could similar a DOS text-mode environment.
That’s an important little detail, because Windows 3.x did have a text-mode API. There was no native command line yet, as it was in 32-Bit Windows. Windows 3.x had to use DOS prompt for such things, or users could use fake command lines like WinCLI.
That’s why Win32 CLI programs being run via Win32s have no text-output.
They still work just fine, just no output. Small utilities and compilers/linkers can be run “blind”.
^Windows 3.x did NOT have a text-mode API
Unfortunately I havent moved on from Turbo pascal or turbo C – still have them on my dev laptop. Still fiddle with it on and off; only updated one of my many 16bit utils for retro stuff only during the week with TC.
I want to plug lemonspawn.org : TRSE : Turbo Rascal ; kinda like pascal for heaps of 8bit retro systems.
I still have them too on my server…. But since all my machines (laptops included) run Linux, they don’t see the light of day. But Lazarus and FreePascal fill the bill for any Pascal programming. gcc and clang take care of any c/c++ programming.
Looking in my compilers folder I see I have:
BC4, BC502, BC551, Delphi 6, Turbo C 2.0, Turbo C 3.1, Borland C Builder 5, Prolog, TASM, Turbo Pascal 4, and Turbo Pascal 7.. Plus a bunch of Delphi components.
Really? No-one mentioning Borland’s manual’s index? “Infinite loops”: “see loops, infinite”
“Loops, infinite”: “see infinite loops”
There were a few other joke index entries in there. I moved to the (Microsoft) C Bible from that for a more detailed and cross-platform reference. 2 editions, disintegrated with use 😂
I fell out of love with Borland when they bought and destroyed my favourite editor, Brief (by Underware). It was at least 5 years ahead of its time, even had vertical block cut and paste.
Ah, yes, Brief — by Underware!
Wow. It took three decades, but I finally recognized the pun.
I still use brief keybindings via Slickedit.
We were not happy when Borland C was released. They had bought out Wizard C to create V1.0 , a compiler suitable for embedded systems work, and they removed the embeded system goodies.
I learned to programm on Turbo Pascal 7.0 (from Borland). It looked exactly like in the pictures, but of course it was Pascal. I had it running on a 486. My father had converted an old Siemens SPS to “something” that could be controlled via parallel port. The monstrousity was almost as big as the full pc tower. All relais,… the noise ^^. It was pretty much like an Arduino minus the ADC.
It was glourious! I still have it.
I also had a try with Borland C. Again i had access through my father. He acctually paied something around 3000 Mark for a licence. He was a free developer for hard- and software at the time.
Oh man. This was high school for me. I was, and remain, in love with those blocky Screen 13 GUIs.
my first exposure to C was TC++ v3 in 1993 or 1994. it was love at first sight. i’m very grateful borland made that possible. but then around 1996, when i had both linux and DOS in my daily life, i was writing a little program on linux and i realized i could malloc(n) where n is bigger than 64kB. and it would just work, i wouldn’t need no stinkin __far or paged EMS or anything! and i developed an immediate antipathy to 16-bit (DOS) programming and i never looked back
it’s nice today to be able to malloc(8GB) and not wonder if it’ll work but that first step over 64kB was the real magic
so i guess i was lucky borland was there when i needed it, and then lucky also to be young enough that i didn’t really have to wait long for affordable 32-bit unix on my desktop
Borland’s C had an an amazingly low cost debugger if you had a Hercules board and an old IBM display lying around. You could have two video boards, one for Windows and the Herc for debugging. Very cool at the time. I stunk at programming in C back then (as opposed to now…:( ) but with the debugger I could make anything work fairly well.
I bought DeSmet C at the time and thought of the IDE using turbo C users as being part of the weak minded consumerati class ;-)
It was Windows 3.1 times and I wanted to program DOS games. But Windows programming was all the rage with Visual C++ and store people couldn’t help this newbie make the right choice. So I started with Borland’s C/C++ 4.0 (they dropped the “Turbo” by then) because of Turbo C/C++’s well known legacy. It cost me a fortune at the time ($500 CAD) with tons of books that I hardly read and got acquainted with OWL programming. It also became my biggest dust collector. When I learned that Watcom’s DOS4GW, and its “flat programming model” were all the rage in “Tips and Tricks” books – obviously because DOOM was using it – I quickly switched to it.
I still use Turbo products, TASM on DOS6.22 is easier to use than MASM, heck even the guy from collection of packet drivers thought so and indicated it in his make file. I’m more fond of Turbo Pascal 5.5 than their C programming products. But still trying to grok Turbo C for the utilities that the packet driver community needs.
I dabbled in Pascal on the MSX around 1988 I think, got a full compiler with libraries for MSX specific calls etc. There was also a C compiler but as a kid of around 10-12 years I didn’t really understand it. I did do some things in basic and assembly though.
I was blissfully ignorant of most of the dos era since I used an Amiga (A500 and A1200). I recently deep dived into my old code that was build for Workbench 3.0 and built with SAS/C 6.3. Integrated IDE with debugger, though no syntax highlighting but it did feature library documentation using the Amiga Guide system, which was searchable and sort of a html kind of experience before html was really taking off. I’m still impressed how well the system worked and all with windows and icons, very little in the AmigaDOS CLI system. Still, I like the Amiga CLI system better than the DOS system. Powershell is getting there though but still no labels for paths etc like you had with Amiga:
assign pix: sys:paint/pics
assign whateveryoulike: sys:what/ever/folder/you/want
Then you just type in pix: and bam you’re in that directory, and works in Workbench file requesters as well. It was such an elegant system to organize your files and the way you work.
Whenever in powershell or dos I just copy paste long long path strings to get where I need to be. Assigning a drive letter to paths is not really a solution either. Abusing the network share system isn’t great either.
I think I used Turbo C during programming classes back in 1994 or so. Around 1995 I switched to PC, windows 3.11 at first then Win 95 and used the borland C++ programming suite. Then transitioned to BCBuilder. And since 2015 I’m using C# mostly.
Amiga was without doubt the BEST system of that era. Flat memory organization, full preemptive multitasking when Windows and MacOS didn’t even know what is was, powerful CLI system, clean and elegant filesystem organization. If Commodore had invested in R&D, Windows would be in museums today.
Hello from Ukraine. I am very happy to read this article. Thanks to everyone who works in this area. It has become a part of my life from the moment I saw computers. It was Fortran and BASIC and of course Turbo C and Pascal. And BGI, Turbo Vision. Then it’s RAD . Borland C++ Builder with VCL, Paradox db, Interbase. And who remembers FoxPro, Clipper? I have worked with them as well. Auto Cad and Mat Cad are great systems. I’m still on the line. These are Angular and C#. We continue this exciting adventure of life.
I used Foxpro and Clipper, loved both. Being able to compile dBase code into stuff that ran FAST! suited my customers just fine.
Wasn’t the Turbo C 1.0 UI inspired by THINK Lightspeed Pascal and THINK Lightspeed C for the Macintosh in the late 80s?
Actually, at my Uni (UEA in the UK), our first contact with ‘C’ was Aztec C for the Mac in 1987 and perhaps an Aztec (or Lattice) C cross-compiler for the 68000 embedded boards we could squirt object code to over the serial port. It was K&R ‘C’ and not friendly at all! It was several years before I had a chance to play with the THINK environment (and even later before I did some work with Turbo C).
I started with the Microsoft C compiler (actually relabeled Lattice compiler) on my original IBM PC, with dual floppy disk drives and no hard disk. I had one diskette with the compiler and a second diskette with the linker, so every time I wanted to do a build I had to swap floppies. Eventually I got a 10MB hard drive, which was large enough to hold every program and data file I had at the time.
Ah, the Good Ol’ Days.
I cut my teeth on Borland C++ coding for my WWIV BBS (aside from the childhood LOGO and BASIC experiences).
A long time ago (1980 ish) I contracted with Microsoft to provide a test bench for a messaging system. A file of messages needed to be sent on one millisecond time stamps (0.001 sec). I quoted the job but informed them that I needed to use the TurboC compiler to meet their requirement. They said OK.
Fond memories looking at that UI!
Launched space sats using Borland C++ back in in the 90s, so it definitely was top tier.
I wrote my first ‘real’ software (a UI that tuned a remote satellite receiver with scheduling for the local college PBS station) in Turbo C.
It was great at the time.
Made my own simple DOS windowing system, captured keypresses, sent serial through a modem to the remote end, good times.
My first contact with Borland IDEs was in mid 90s with Turbo Pascal, I used it in high school and in college. After that, I jumped directly to Borland C++ 4.5 with it’s behemoth 22 floppies installation. Great IDE. But I used Turbo C++ later anyway, as an IDE example for a C++ class I held in mid 2000s.
It’s not the true Turbo C/C++ experience until you install it from 25 3.5″ floppies.
Pretty sure Turbo C was first released on 5″ floppies. I was “in” from Day 1.
I started using C++ really early on .. and I’m reasonably sure that our company (Moore Products) was one of the first to use C++ for embedded development.
We initially used the Glockenspiel “C++ to C” transpiler, and a Microtec C to 680×0 compiler to generate embedded code. Since we were early adopters, we actually found a number of bugs in the tool-chain .. so several of our devs ended up knowing the Microtec devs pretty well ;).
The Borland C++ implementation was clean, and the documentation was well written, and pretty easy to understand. As a result, the book that went with the compiler was pretty much my Bible for all things C++.
And, speaking of Borland .. How about Philippe Kahn? Is there a more iconic O.G. character from the wild-n-wooly days when PCs rose up to take over the world?
You just must love Borand TC, it is just one step away from ASM and just two steps to away the hardware, with great IDE … for that time very clean and simple to get into it. I dedicated one Pentium 4 machine with DOS 6.22 just to play with Borlan TC and TC++.
And I’m still under 50, lol.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)