8 ms·
C#88: The Original C# (2018)
- tomcam 8y agoFascinating. I worked in the developer tools division when the .net of C# was released and had no idea this was part of it is true.
- hestefisk 8y agoNever heard of this. Very interesting. Fun fact: C# was originally called ‘Cool’ internally in MS before the MS marketing took over and rebranded everything Visual X this or X .Net that. Who doesn’t remember Windows Server .Net (later rebranded to 2003), which did not have a single line of CLR code in it apart from the standard runtime?
- ToFab123 8y agoThe first book I bought about. Net was from wrox and called "Professional asp plus". First later everything got labeled x.Net
- ToFab123 8y agoLooks like .NET was called "cool" during early development. "somethinng+" e.g. "asp+" during beta, and ".NET" when released in 1.0
- MarkSweep 8y agoSome of files open-sourced as part of CoreCLR still have a .cool file extension: https://github.com/dotnet/coreclr/blob/release/1.0.0/tests/src/baseservices/regression/v1/assembly/vos/cool/helloworld/first.cool https://github.com/dotnet/coreclr/blob/release/1.0.0/tests/s...
- mschaef 8y agoA lot of this line of work also originated from efforts to solve problems in COM, which was becoming central to Microsoft's approach to platforms. The idea was to make it easier to produce objects in different languages and then let them interoperate at runtime. In that regard, Microsoft's notion of a common runtime environment for objects was a natural follow on to COM's concept of objects abstracted behind interfaces. There was also a great deal of confusion around the way Microsoft originally introduced COM. When Windows 3.1 came out, one of its marquee features was something called OLE 1.0 - Object Linking and Embedding. This was a composite document approach built on an early technology called DDE, Dynamic Data Exchange. (Which was brittle, and based on Windows messaging.) A few years later, they introduced OLE 2.0, which added a bunch of features, but mainly completely replaced DDE with COM. For a while, there was a lot of conflation of COM as something OLE 2.0 specific.
- sebazzz 8y agoWasn't the framework itself originally called COM+? The environment variable tweak knobs still carry the prefix "ComPlus_"
- dblohm7 8y agoCOM+ is an enhancement over regular distributed COM that was released with Windows 2000.
- mschaef 8y agoYou may be thinking of COR, for "Common Object Runtime", which was formerly known as COM 3.0. http://www.danielmoth.com/Blog/mscorlibdll.aspx http://www.danielmoth.com/Blog/mscorlibdll.aspx
- james_s_tayler 8y agoIs this related to C# having this structure where everything is split into hundreds of csproj files and multiple solutions? And this must be related to needing to have pdb file or being unable to debug. I wish those two things were not the case. And nuget. I find C# wonderful except those particular decisions give me pain on a daily basis.
- JamesBarney 8y ago> Is this related to C# having this structure where everything is split into hundreds of csproj files and multiple solutions? I agree that having lots of projects is a pain in the ass, and projects should be used for organizing code into deployment units not for logical separation. But this isn't a feature of the language just a decision(I believe a poor one) a previous developer on your project made.
- scarface74 8y agoProjects should be used for logical separation. I think of having domain specific projects as “microservices” that are isolated and where you only interface with the module via well defined interfaces. You get the logical separation of microservices without the needless complications. If you need to share a module between teams, it’s easy to package it up as a versioned Nuget package. If you need to separate it out into its own http based microservice. It’s easy to put a Controller on top of it and create an auto generated proxy class if you are describing the API with Swagger. On the client side, have the proxy class implement the interface. Of course all this is made easier if you are using a DI framework.
- JamesBarney 8y agoSure but most of the gains for microservices are splitting up large teams into independent teams responsible for sub modules which is much larger scale than most C# applications.
- scarface74 8y ago
- estomagordo 8y agoI had no idea C#88 was a thing. Thanks for sharing.
- misterman0 8y agoIn 1988 a Commodore 64 was still a thing. It ran Microsoft Basic. And .Net was slowly being built. Bill Gates has some wild ideas.
- nurettin 8y agoI had a C= 64, but didn't know it ran Microsoft Basic. All I saw was "all rights reserved" and "32kb ram ready".
- nurettin 8y agoapparently you can run the following on a commodore shell for a Microsoft easter egg: WAIT 6502,0
- mschaef 8y agoCute, but it would be super annoying these days if a platform vendor picked some otherwise completely legitimate value out of an API's parameter domain and used it for an easter egg... (Yes, you can wait for a value in any of 65,535 memory locations... but not this one, because we needed an easter egg...)
- misterman0 8y agoUnfortunately that command is not supported in [0]. What does it do? [0] https://virtualconsoles.com/online-emulators/c64/ https://virtualconsoles.com/online-emulators/c64/
- dangerbird2 8y agoIt seems like it was only in Commodore PET Basic. It would print `MICROSOFT!` https://www.c64-wiki.com/wiki/Microsoft#Easter_Egg_.28Microsoft.21.29 https://www.c64-wiki.com/wiki/Microsoft#Easter_Egg_.28Micros...
- msla 8y agoThis seems like an April Fool's joke. The complete lack of any other information is suspicious.
- dang 8y agoI hope not. The article is dated April 25, 2018, which seems way out of band for that.
- golergka 8y agohttps://en.wikipedia.org/wiki/C_Sharp_(programming_language)#Name https://en.wikipedia.org/wiki/C_Sharp_(programming_language)... > Microsoft first used the name C# in 1988 for a variant of the C language designed for incremental compilation. That project was not completed but the name lives on.
- nmeofthestate 8y agoInterestingly, all sources lead back to Rico Mariani.
- rmariani 8y agoTotally not a joke. Also totally not related to C# from .net :-) Super fun stuff!
- Zanni 8y agoIt's real. I was at Microsoft from 1986-1991, working on Windows (2 and 3). We heard frequent stories of this C#, exactly as described, but never got our hands on it.
- mschaef 8y ago> I was at Microsoft from 1986-1991, working on Windows (2 and 3) What was that like? What parts did you work on? (And thank you... I cut my teeth on Windows 3 in particular and learned a lot, I am sure, from code you helped contribute to.)
- adzm 8y agoThis appears to have mostly the # in common with C#, since this is mostly an extension of C, like C++ or Objective-C etc.
- mhd 8y ago> The compiler produced hybrid PCode and native x86 assembly, traditional for MS applications at the time. P-Code? As in UCSD Pascal?
- Kirth 8y agoP-code (portable machine code) as a term is also used for generic virtual machines (JVM, CLR).
- reacweb 8y agoYes, Microsoft basic is very fundamental in understanding the growth of Microsoft. Visual basic was generating pcode and I was told that many office applications (on windows 3.1) were 90% pcode and 10% assembly. The developers were writing pcode directly.
- mschaef 8y agoMicrosoft's use of pcode in BASIC predates even Visual Basic. I believe the first use of it was in QuickBASIC 4.0 (~87-88), which had an adversing campaign built around the fact it could compile at some ridiculously high rate. What was happening, however, was that part of the compilation process was built into the editor and run incrementally. When you typed in and completed a line of code, it would be shipped off to the compiler, analyzed for errors, and then represented in the editor. This was easiest to see in the fact that the editor would automatically capitalize keywords, but also visible in the fact it would immediately report certain kinds of errors and make other minor code corrections. Heady stuff in 1988 when running at 4.77MHz. (The same was true for the interactive debugging tools built into the IDE.) In any event, this was the precursor for similar functionality in later products, ranging from MS BASIC 7.0 to the Visual BASIC series. BASIC 7.0 was also interesting in that it was at the tail end of Microsoft's BASCOM product line for DOS. For years, they'd offered a BASIC compiler product in parallel with the interpreted products that got most of the press ant attention. The compiler product was what you used if your interpreted BASIC program needed more execution speed or better packaging. It was BASIC 7 where the QuickBASIC IDE officially converged with the full machine code compiler. BASIC 7 included the IDE, a full compiler that could also target OS/2, and an ISAM database library. It was really a precursor to all the uses of VB to build line of business apps, etc. > I was told that many office applications (on windows 3.1) were 90% pcode and 10% assembly. The C compiler (at least) had options for compiling C into pCode that would be interpreted at runtime. I've forgotten most of the details other than that it was mainly sold as a code compression scheme of sorts. This was on the observation that pCode was more compact, but slower. (The pCode and the interpreter itself were all bundled into an x86-specific binary file, so there was no pretense of any of the cross-platform aspirations commonly associated with pCode.)
- garganzol 8y agoAlways wondered why .PDB is such a strange format. Several interlaced streams of data, all going in parallel. Now I know. By the way, .XBF (XAML Binary Format, used in UWP apps) has a similar skeleton. So the heritage of C#88 lives on.
- rmariani 8y agoThe interleaved page strategy has lots of benefits...
- register 8y ago> a variant of the C language designed for incremental compilation This is extremely interesting per se and I wonder why it didn't catch up. Is there anything similar available today? It would be interesting to know more about the original syntax of C#88.
- rmariani 8y agoNote this nothing to do with C# of the .net world except the name. C#88 inspired thoughts but its code basically died in 88.