CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Page 2 of 2 FirstFirst 12
Results 16 to 27 of 27
  1. #16
    Join Date
    Jun 1999
    Posts
    153

    C++ is recommended by Microsoft

    Which .NET language should you use?

    Well, here's a surprise answer from Herb Sutter of Microsoft, it's not C#!

    Herb Sutter - Is C++ Relevant on Modern Environments?
    http://www.accu.org/conference/presentations/

    Herb's answer...

    Q: Which .NET language should you use?
    Microsoft’s answer, in our Whidbey release:
    • C++ is the recommended path to .NET and Longhorn.
    • If you have an existing C++ code base:
    Keep using C++.
    • If you want to make frequent use of native code/libs:
    Use C++. It’s far simpler (seamless) and faster.
    • If you want to write brand-new pure-.NET apps that
    rarely or never interop with native code:
    Use whatever language you’re already comfortable with,
    and pick based on language features. The .NET features
    and Frameworks library are available equally through all
    languages.
    Kevin

  2. #17
    Join Date
    Nov 2002
    Location
    Foggy California
    Posts
    1,245
    Originally posted by Kheun
    Beside that, as C# is still not an international standard, it is not likely to be used for writing software that is platform independent.
    A few things to remember...

    * C++ was developed between 1983 and 1985. It was finally standardized in 1998 -- 15 years after Bjarne Stroustrup finished the initial C++.

    * C# has been standardized already by EMCA. Granted, its not ANSI nor ISO, but it's a start.

    * The Mono project has developed a C# compiler for *nix and Windows systems that is independent of Microsoft. Thus C# can start to be used as a platform independent solution.

    * It took a long time for industry to grab hold of C++. Java was the "hot technology" just a few years ago, but has seemed to take a back seat again to C++ and now the .NET languages. (Granted, Java is still very popular in select environments, but it is nowhere as popular as some people predicted it would be.) C# is quite new and it is premature to predict what the future holds for it.

    Because of this, I think that the statements that C++ will rule are quite ignorant. Likewise, I believe that the statements that C# and .NET are the future are equally ignorant.

    Arguments against C# / .NET:

    The .NET framework, like Java, has automatic garbage collection and as a consequence can have unpredictable threading behavior. For this reason, .NET (and consequently C#) will not be used when real-time responses are needed (unless there's a fundamental change to the framework).

    It is a limited language:
    * No multiple inheritance
    * No true templates
    * Inline assembly is not allowed (to my knowledge)
    * ...

    Arguments for C# / .NET:

    C# / .NET is not the first language of it type. It's been developed with the experience obtained from Java, C++, COM/DCOM/ActiveX, Visual Basic, and others. As such it has learned from the pitfalls of those languages. For reference C++ is a culmination of the experience that came out of SmallTalk and the BCPL-family of languages (C++ is the 4th incarnation of the BCPL-family: BCPL, B, C, and C++).

    Language interoperability. It's done this so much better than DLL importing and COM/DCOM.

    Platform independence / portable bytecode -- .NET and C# were designed to be platform independent (see Mono project) and compilable to a bytecode that will be compatible on different platforms.

    In summary:

    Ultimately, I believe that:

    * C++ and C# are best suited for different markets. As such one cannot say "such and such language is king".

    * C++ and C# will both someday be replaced by other languages. (Let's face it, C++ has it's problems too: no standard support for threading, graphics, GUI's, etc.... Just because a particular platform won't support a particular feature doesn't mean that the feature can't be standardized -- C99 has standardized the intn data types [int8, int16, ...], but does not require them be implemented; it only states that if such data types are implemented, they must follow that form [for portablity])

    My 2 cents...

    - Kevin

  3. #18
    Join Date
    Nov 2002
    Location
    Foggy California
    Posts
    1,245
    Here's some interesting excerpts from The Pragmatic Programmer (a book I recommend everyone read!) Chapter 1, Your Knowledge Portfolio:

    Your knowledge and experience are your most important professional assets.

    Unfortunately, they're expiring assets. your knowledge becomes out of date as new techniques, languages, and environments are developed. Changing market forces may render your experience obsolete or irrelevant. Given the speed at which Web-years fuly by, this can happen pretty quickly.

    ...

    * Learn at least one new language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the Internet.

    ...

    It doesn't matter whether you ever use any of these technologies on a project, or even whether you put them on your resume. The process of learning will expand your thinking, opening you to new possibilities and new ways of doing things. The cross-pollination of ideas is important: try to apply the lessons you've learned to your current project. Even if your project doesn't use that technology, perhaps you can borrow some ideas. Get familiar with object orientation, for instance, and you'll write plain C programs differently.

    ...

    Challenge
    Start learning a new language this week. Always programmed in C++? Try Smalltalk or Squeak. Doing Java? Try Eiffel or TOM.
    So why don't we have a Squeak forum?

    Seriously though, it's a good thing to learn new languages -- even if they don't become the most popular thing ever.

    - Kevin

  4. #19
    Join Date
    Nov 2002
    Location
    Foggy California
    Posts
    1,245
    Originally posted by KevinHall
    * C# has been standardized already by EMCA. Granted, its not ANSI nor ISO, but it's a start.
    I just found out that the CLI was standardized by ISO in April 2003. C# is also in the process of being standardized by ISO (see here).

  5. #20
    Join Date
    Oct 2002
    Location
    Singapore
    Posts
    3,128
    Thanks Kevin. That's really food for thought.

    Talking about languages replacement, I have a friend who recently found a few interesting articles on Eiffel used for embedded application.

    http://archive.eiffel.com/eiffel/projects/hp/creel.html
    http://archive.eiffel.com/doc/manual.../embedded.html
    http://archive.eiffel.com/doc/manual...oo_comparison/
    http://www.adtmag.com/joop/crarticle.asp?ID=1565

  6. #21
    Join Date
    Nov 2002
    Location
    Foggy California
    Posts
    1,245
    Check out ENViSioN -- a.k.a. Eiffel.NET

  7. #22
    Join Date
    Mar 2002
    Location
    St. Petersburg, Florida, USA
    Posts
    12,125
    KevinHall's post points out one true advantage of the .Net framework. You can mix and match C++,C#,VB,Cobol, Fortan, Eiffel, Pascal even APL.

    Since different sitations are often best suited for expression in a different language. The .Net environment [or non-Ms equivilants] allows non-trival solutions to be divided into different domains and then operate in a highly integrated manner.
    TheCPUWizard is a registered trademark, all rights reserved. (If this post was helpful, please RATE it!)
    2008, 2009,2010
    In theory, there is no difference between theory and practice; in practice there is.

    * Join the fight, refuse to respond to posts that contain code outside of [code] ... [/code] tags. See here for instructions
    * How NOT to post a question here
    * Of course you read this carefully before you posted
    * Need homework help? Read this first

  8. #23
    Join Date
    Sep 2003
    Location
    Canada
    Posts
    292
    Tell me one thing, how can i live tomorrow without learning today? I do not remember a single day of my long career without learning somthing new. I learn when starting a new project new business conceptions and problem solvings; I learn from every pages I browse on internet; this is our challenge in being an IT professional. Neither C++ nor C# will be sufficient for me to master, but every beam of light that come across my eyes to add a color to my dark mind corners.

    I agree with learning each year a language, but I add some more: learn everyday that you need more to learn nomatter if you learn history or future.

    Rob

  9. #24
    Join Date
    Jun 2004
    Posts
    1,352
    Well C# is just Microsoft's answer to Java. Java definatly deserved an answer since it had some very interesting features and many universities are using it now.

    MFC, Java(awt & swing), C#(.net framework) all have on thing in common.

    Programing languages have evolved from procedural to Object-Oriented and in the future programers are going to have to learn framworks.


    Granted in my opinion MFC broke/bended many of the rules of C++(too many macros)) and the DOC/VIEW approache was extremely confusing, but it emphisized that in the future FRAMEWORK and objects(methods and properties) is what programers are going to have to learn.

    With that said, the .NET framework is just another framework that you will have to learn if you want to develope WINDOWS managed code in the future. Programers of the future are going to have to know OOP and frameworks. So if you want to consider your self contemporary you should know the following frame-works.

    1) MFC

    2) JFC swing

    3) .NET

    and in my opinion VB is a great language to learn if you already know MFC because there is some correspondence to the messaging sequences in the WINDOWS OS that every developer should be aware of if they want to develope for WINDOWS OS environment.

    So .NET is just another framework to learn, OOP FRAMEWORK programing is the future and C# is just another player, not an exclusive substitute for C++, JAVA or any other language. So the question is not C# VS. C++ , but how long does it take to learn C# and the .NET framework while accepting that it is just another tool to develope applications in a different environment.


    .. the debate that I want to read about is VC++ .NET vs. C# AND VC++ .NET VS MFC w/Managed extensions!!!

  10. #25
    Join Date
    Mar 2001
    Posts
    2,529
    I dont know if the choice of the words "turn from c++" are very good. There are still alot of C++ based products out there. The embedded processor market is full of them. Java is also coming out pretty nicely in that market. The point is everyone is saying "oh I gotta go this way" or that way. Dont be afraid to crosstrain a bit. Should one technology be left in the dust for the next one over? Dont be fooled by hype of one companys' marketing.

    ahoodin

  11. #26
    Join Date
    Mar 2001
    Posts
    2,529
    The following talks about usability of .NET in realtime systems. Many of which are embedded systems. It goes into the question of weather .Net is deterministic. Can I assure that this piece of code will be completed at the exact second It should be?

    C# / .NET for RTOSes?

    ahoodin

  12. #27
    Join Date
    Jun 2004
    Location
    bucharest, ro
    Posts
    53
    Joe Nellis
    Microsoft marketing is like the Cosmic Background Radiation, it's always there
    LOL! nice...

    Mr. Tomaszek
    Switch with no fear to C# - this is the future...I estimate that you can write your code about 30% faster than in C++
    could u give a practical example to sustain ure theory, please?
    the doer alone learneth. (nietzsche)

Page 2 of 2 FirstFirst 12

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured