Microsoft abandons the C language

J

jacob navia

This is a long story. It starts years ago since windows 3.1 and it ends
now, with "Metro".

SO, I downloaded windows 8, and installed it. That went fairly smoothly
but I forgot that windows doesn't come with the remote desktop
connection. I tried by all means to allow it, but couldn't. There is a
client app that lets you connect to OTHER machines, but no server. A few
hours wasted but well, that's OK.

Then, I tried installing the compiler. This small and fast software
takes only 5GB when installed, and the installation process is quite
fast, it took me just half a day.

The problem is that it kept crashing when installing, but (eventually) I
discover the right procedure: When it crashes do as you always have done
under windows:

REBOOT.

That solves many things. I discover that if you try to restart the
installer without rebooting it will crash in a few seconds. I tried for
hours until I discovered that you have just to reboot and when you do
that, the installer goes on automatically, skipping the problem
apparently.

Great! after hours of waiting I started Visual studio 2012. The
interface is great. It has a very similar flat look like in the old days
of windows 3.0. Everything is flat, the "buttons" the window borders,
everything, even lcc-win...

I remember all those interface guidelines that recommended us to use the
3D controls, avoid a "flat" look, whatever, fad is fad and the current
fad is the best, of course.

Then, I started looking at the documentation of the SDK. And then I
noticed that C is no longer mentioned ANYWHERE. The only reference is to
"managed C++" That is the Microsoft version of C++ stock full with
__gc_class, ref class etc.

In the reference to C++ I found this:

) The concept of a current working directory doesn't apply to Metro
style apps and there is no current drive.

Also, corresponding APIs such as GetCurrentDirectory and
SetCurrentDirectory are not available in the MSDK.

Say goodbye to:
chdir chdir chdrive wchdir getcwd getcwd getdcwd getdcwd_nolock
wgetcwd _wgetdcwd wgetdcwd_nolock

2) Say goodbye to the console. Metro style apps are GUI only; they don't
support console. Goodbye stdin, stderr, stdout.

3) Pipe functionality is not available to Metro style apps.

4) Environment variables are not available to Metro style apps. Goodbye
to getenv, putenv, etc.

5) A Metro style app cannot invoke another Metro style app or a
desktop app. Goodbye to system, spawnxxx execxxx etc.

6) C strings are out. Goodbye strcpy strlwr strlen, etc.

7) Low level I/O functions: fopen fwrite etc. These functions are
synchronous, which is not recommended for Metro style apps. In your
Metro style apps, use asynchronous APIs to open, read from, and
write to files to prevent locking of the UI thread. Examples of such
APIs are the ones in the Windows::Storage::FileIO class.

Great. Welcome to the future. This means that lcc-win will never be able
to generate any "Metro" applications since all interfaces with the
system go through a COM interface that would be feasible to adapt but
what a pain!

I just do not have the resources nor the will to follow Microsoft any
more in that direction.

The controls we are used to since windows 3.0 have disappeared (the
famous group box, for instance)... Many others are different, anyway
you have to rewrite absolutely EVERYTHING AGAIN, as well as you have to
learn windows again. The famous "start" button has disappeared, the
interface is completely different, all the reflexes are now WRONG,
you have to look for a few minutes after you find how to TURN OFF windows


But I eventually find that button.

Phew!
 
J

Jens Gustedt

Am 23.08.2012 20:05, schrieb jacob navia:
This is a long story. It starts years ago since windows 3.1 and it ends
now, with "Metro".

[snip]

They never supported any of the newer versions of the C standard with
their own compilers. So this only makes things official so to say.

Hopefully this will free the C language from this burden that the
non-support from MS has been all the years.

Jens
 
M

Malcolm McLean

בת×ריך ×™×•× ×—×ž×™×©×™, 23 ב×וגוסט 2012 19:05:20 UTC+1, מ×ת jacob navia:
This is a long story. It starts years ago since windows 3.1 and it ends
now, with "Metro".
Yes, I've been with Microsoft since my first DOS machine, which also
ran Windows, slowly and unsatisfactorily. Any serious program ran under DOS..
I played with PCs before then, but I never had one of my own.
If you go onto my website you'll find some brand new DOS console style
routines, in the Binary Image Processing library. A rasterising font is still
a very quick way of building up an image.
SO, I downloaded windows 8, and installed it.
Then, I started looking at the documentation of the SDK. And then I
noticed that C is no longer mentioned ANYWHERE. The only reference is to
"managed C++" That is the Microsoft version of C++ stock full with
__gc_class, ref class etc.
Evil evil evil. My Visual Stdio insists on trying to add #include "stdafx.h"
to perfectly innocuous, portable files.
2) Say goodbye to the console. Metro style apps are GUI only; they don't
support console. Goodbye stdin, stderr, stdout.
I can't debug easily without a printf.
6) C strings are out. Goodbye strcpy strlwr strlen, etc.
Everyone always attacks the C standard library. You can implement more
efficient strings by storing the length, but actually most strings are short
and the added complexity isn't worth it, except maybe for a few very
intensive text processing applications. You can support Unicode. But you can't
enter foreign glyphs at the keyboard, and you can't easily display them. You
can't understand what they mean unless you happen to speak that language. So
really Unicode is an end-user character set. The great thign about a C string
is that you can just type it into your soruce file, and you have it.
7) Low level I/O functions: fopen fwrite etc. These functions are
synchronous, which is not recommended for Metro style apps. In your
Metro style apps, use asynchronous APIs to open, read from, and
write to files to prevent locking of the UI thread. Examples of such
APIs are the ones in the Windows::Storage::FileIO class.
I've got some sympathy here. If you're writing massive files, that will
lock up the application. But the synchronicity vs events problem needs to be
sorted, not hacked.

I've got huge sympathy with you. All this change destroys past investments,
and the benfits are dubious. But historically Microsoft has never made things
easyt for developers. All the APIs are fiddly to use, and the obvious ways
of doingthigns are quickly deprecated.
 
R

Rui Maciel

Jens said:
They never supported any of the newer versions of the C standard with
their own compilers. So this only makes things official so to say.

Wasn't it due to Microsoft that pthreads weren't added to the C11 standard,
instead replacing it with a kluge of a wrapper?


Rui Maciel
 
M

Melzzzzz

The controls we are used to since windows 3.0 have disappeared (the
famous group box, for instance)... Many others are different, anyway
you have to rewrite absolutely EVERYTHING AGAIN, as well as you have
to learn windows again. The famous "start" button has disappeared,
the interface is completely different, all the reflexes are now WRONG,
you have to look for a few minutes after you find how to TURN OFF
windows


But I eventually find that button.

Phew!
Perhaps that's a good thing. Windows is getting better and better ;)
 
J

jacob navia

Le 23/08/12 21:44, Malcolm McLean a écrit :
If you're writing massive files, that will
lock up the application. But the synchronicity vs events problem needs to be
sorted, not hacked.

But everyone solved that years ago by starting a new thread that did the
lenghty operations!

Wedit starts a thread periodically to recompile the file you are
editing. Any syntax errors are flagged with underscore red.

All that without slowing down the UI since it is done in a separate
thread!

There is no need to suppress stdio!
 
P

Paul

jacob navia wrote:

The famous "start" button has disappeared, the
interface is completely different, all the reflexes are now WRONG,
you have to look for a few minutes after you find how to TURN OFF windows

If you install Windows 8, like Release Preview, you can
try this as an add-on. You'll find it makes things
look a little more familiar.

http://classicshell.sourceforge.net/features.html

Conventional applications still run under Windows 8 desktop.
I tried Firefox and Thunderbird in there, and a four
year old game, and all installed properly and run OK.

Where the interface likely goes awry, is on Win8 RT,
the ARM version for portable devices. That's likely
to be entirely different. X86 apps won't run there
(although if Microsoft had wanted, they could have
found a way - they're not Apple after all).

http://en.wikipedia.org/wiki/Windows_RT

Paul
 
J

jacob navia

Le 23/08/12 22:20, Paul a écrit :
Conventional applications still run under Windows 8 desktop.
I tried Firefox and Thunderbird in there, and a four
year old game, and all installed properly and run OK.

Of course. But the new interface is no longer available, and the C
interface is no longer maintained so in a few years those application
will be as obsolete as MSDOS is today since all NEW features will not be
ported to the C interface you see?
 
J

James Kuyper

On 08/23/2012 05:57 PM, CRNG wrote:
....
Next step: Uninstall Win 8 and stick with WinXP until something
reasonable comes along.

If you don't consider any of your currently available alternatives
reasonable, you could be waiting a very long time - probably the entire
rest of your life.
 
M

Malcolm McLean

בת×ריך ×™×•× ×—×ž×™×©×™, 23 ב×וגוסט 2012 23:01:28 UTC+1, מ×ת James Kuyper:
On 08/23/2012 05:57 PM, CRNG wrote:


If you don't consider any of your currently available alternatives
reasonable, you could be waiting a very long time - probably the entire
rest of your life.
The Microsoft monopoly is no more. The mobile phone ate it away, together
with allied devices such as e-readers and tablet computers. Apple's desktop
computer business and Linux were also irritants, and have been growing.

Though everyone moaned about the Microsoft offering, having one standard had
some huge advantages. Now the industry is fragmented.
 
J

James Kuyper

בת×ריך ×™×•× ×—×ž×™×©×™, 23 ב×וגוסט 2012 23:01:28 UTC+1, מ×ת James Kuyper:
The Microsoft monopoly is no more. The mobile phone ate it away, together
with allied devices such as e-readers and tablet computers. Apple's desktop
computer business and Linux were also irritants, and have been growing.

Those are the alternatives I was referring to. It's a fairly good
selection. If someone doesn't consider any of them acceptable, it may be
a very long time before an alternative that they would consider
acceptable shows up.
 
L

Leo Havmøller

SO, I downloaded windows 8, and installed it. That went fairly smoothly
but I forgot that windows doesn't come with the remote desktop connection.

Remote desktop is included from W8 pro and up (I'm using W8 enterprise,
since i'm on a domain).
Google "windows 8 editions" for comparsion.

<snip a lot about VS2012 and metro>

It seems that you downloaded VS2012 express for metro.
What you want is VS2012 expess for desktop, which will be released later.
Any of the VS2012 paid versions include both, and also the corresponding
docs.

Leo Havmøller.
 
A

Ansel

What is your confusion? A console app, a desktop app, a metro app, services,
are separate paradigms. They are all available on Windows 8. Pick your
poison. You seem to be flailing wildly for no apparent reason. Every
whiz-bang UI paradigm is not obligated to support the C programming model.
Separate UI code from application (reuseable) code. The serious stuff gets
done in modules separate from the UI (in any significant, well-designed
application program).
 
A

Ansel

CRNG said:
Next step: Uninstall Win 8 and stick with WinXP until something
reasonable comes along.

Win 7 (with Aero turned off). I've been using virtually the same desktop
style since Win 95, so I don't see any value in major GUI changes on the
desktop. I do admit that I hate the Win 7 Explorer (file manager) and search
integration. I think they really f'd up with the emphasis on search over
organization. Overall though, I find Win 7 a worthwhile improvement over Win
XP for reasons other than the GUI.
 
J

jacob navia

Le 24/08/12 06:52, Leo Havmøller a écrit :
Remote desktop is included from W8 pro and up (I'm using W8 enterprise,
since i'm on a domain).
Google "windows 8 editions" for comparsion.

I know but when I downloaded it, I got my product key ( I have bought an
expensive MSDN subscription) it would not be recognized.

No way out. MSDN France didn't know what to do either.
<snip a lot about VS2012 and metro>

It seems that you downloaded VS2012 express for metro.

No, I downloaded VS Professional.
What you want is VS2012 expess for desktop, which will be released later.
Any of the VS2012 paid versions include both, and also the corresponding
docs.

Leo Havmøller.

Visual Studio 2012 does allow to compile applications for C with the
same limitations as for VS 2010.
 
J

jacob navia

Le 24/08/12 09:06, Don't make my brown eyes China Blue a écrit :
(MacOSX unfortunately distinguishes loginwindow descended from launchd descended
and blocks the GPU and some other MacOSX functionality from daemons. That's one
advantage of Linux.)

Look, I develop in a Mac (0S X 10.8) and you can OF COURSE develop GUI
applications that use the full Unix/Mac libraries. Of course you have to
sandbox them to be able to put them into an iPhone but for the Mac
Desktop there are no such restrictions.

That is the problem here. Microsoft doesn't make the distinction between
a sandboxed application and a desktop application apparently and the
whole Metro sdk is designed for a subset of languages all
exclusively running in a Microsoft platform: Managed C++, C#, Java
script, and all .net languages.

C doesn't fit there.

This is the end of a development that was announced with the refusal to
support C99 at all, the marking of the whole C library as obsolete by
Visual Studio, and other developments: the last SDK released was several
years ago, all develoment of the C interfaces stopped, etc.
 
L

Leo Havmøller

That is the problem here. Microsoft doesn't make the distinction between a
sandboxed application and a desktop application apparently and the whole
Metro sdk is designed for a subset of languages all
exclusively running in a Microsoft platform: Managed C++, C#, Java script,
and all .net languages.
C doesn't fit there.

The real question is: Why would you want to develop a metro style
application at all?

Leo Havmøller.
 
D

Daniel Weber

Am 23.08.2012 22:51, schrieb jacob navia:
Of course. But the new interface is no longer available, and the C
interface is no longer maintained

Of course it is available and still maintained. The server editions of
windows require those features, the business customers require those
features, ...

Maybe you just downloaded the wrong Visual Studio Express Edition?

Bye,
Daniel
 
N

Nick Keighley

This is a long story. It starts years ago since windows 3.1 and it ends
now, with "Metro".

Then, I started looking at the documentation of the SDK. And then I
noticed that C is no longer mentioned ANYWHERE. The only reference is to
"managed C++" That is the Microsoft version of C++ stock full with
__gc_class, ref class etc.

:-(

[to be honest i could live without C (my C usuallly goes through a C++
compiler without much hassle). But no C++ either!]
In the reference to C++ I found this:

) The concept of a current working directory doesn't apply to Metro
    style apps and there is no current drive.

    Also, corresponding APIs such as GetCurrentDirectory and
    SetCurrentDirectory are not available in the MSDK.

    Say goodbye to:
    chdir chdir chdrive wchdir getcwd getcwd getdcwd getdcwd_nolock
    wgetcwd _wgetdcwd wgetdcwd_nolock

2) Say goodbye to the console. Metro style apps are GUI only; they don't
    support console. Goodbye stdin, stderr, stdout.

;-( :-(

I write console applications all the time to try things out! Little
utilities launched from the desktop etc.
3) Pipe functionality is not available to Metro style apps.

4) Environment variables are not available to Metro style apps. Goodbye
    to getenv, putenv, etc.

5)  A Metro style app cannot invoke another Metro style app or a
    desktop app. Goodbye to system, spawnxxx execxxx etc.

6) C strings are out. Goodbye strcpy strlwr strlen, etc.

7) Low level I/O  functions: fopen fwrite etc. These functions are
    synchronous, which is not recommended for Metro style apps. In your
    Metro style apps, use asynchronous APIs to open, read from, and
    write to files to prevent locking of the UI thread. Examples of such
    APIs are the ones in the Windows::Storage::FileIO class.

Great. Welcome to the future. This means that lcc-win will never be able
to generate any "Metro" applications since all interfaces with the
system go through a COM interface that would be feasible to adapt but
what a pain!

I just do not have the resources nor the will to follow Microsoft any
more in that direction.

The controls we are used to since windows 3.0 have disappeared (the
famous group box, for instance)... Many others are different, anyway
you have to rewrite absolutely EVERYTHING AGAIN, as well as you have to
learn windows again. The famous "start" button has disappeared, the
interface is completely different, all the reflexes are now WRONG,
you have to look for a few minutes after you find how to TURN OFF windows

But I eventually find that button.

Phew!

no Win32 interface at all? Maybe I will have to switch to Linux after
all.
 
J

jacob navia

Le 24/08/12 09:33, Daniel Weber a écrit :
Am 23.08.2012 22:51, schrieb jacob navia:

Of course it is available and still maintained. The server editions of
windows require those features, the business customers require those
features, ...

Maybe you just downloaded the wrong Visual Studio Express Edition?

Bye,
Daniel

1) I downloaded Visual studio Pro, (not express), and visual studio
has nothing to do with the new SDK as you (may) know. I am quoting
from the official SDK DOCUMENTATION, not from any visual studio
documentation.

2) The business customers will program in Java/Visual Basic, or managed
C++, and they will be able to use the system apparently. Since there
is no C interface you can't use C for any task interfacing with the
OS.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,535
Members
45,007
Latest member
obedient dusk

Latest Threads

Top