Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Popularity Of C among developer

Popularity Of C among developer

Scheduled Pinned Locked Moved C / C++ / MFC
question
31 Posts 11 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Aakashdata

    Why C is not popular among developers?

    V Offline
    V Offline
    Victor Nijegorodov
    wrote on last edited by
    #3

    And what is popular among developers?

    L 1 Reply Last reply
    0
    • V Victor Nijegorodov

      And what is popular among developers?

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #4

      Wine, women and song.

      CPalliniC D V 3 Replies Last reply
      0
      • L Lost User

        Wine, women and song.

        CPalliniC Offline
        CPalliniC Offline
        CPallini
        wrote on last edited by
        #5

        You, politically incorrect! :-D :thumbsup:

        In testa che avete, signor di Ceprano?

        L 1 Reply Last reply
        0
        • A Aakashdata

          Why C is not popular among developers?

          CPalliniC Offline
          CPalliniC Offline
          CPallini
          wrote on last edited by
          #6

          I do like 'C' because my name is Carlo. Richard, for instance, likes more 'R'.

          In testa che avete, signor di Ceprano?

          M 1 Reply Last reply
          0
          • CPalliniC CPallini

            I do like 'C' because my name is Carlo. Richard, for instance, likes more 'R'.

            M Offline
            M Offline
            Maciej Los
            wrote on last edited by
            #7

            And i really do like 'M'... :laugh:

            CPalliniC 1 Reply Last reply
            0
            • CPalliniC CPallini

              You, politically incorrect! :-D :thumbsup:

              L Offline
              L Offline
              Lost User
              wrote on last edited by
              #8

              :-O

              1 Reply Last reply
              0
              • L Lost User

                Wine, women and song.

                D Offline
                D Offline
                Daniel Pfeffer
                wrote on last edited by
                #9

                Richard MacCutchan wrote:

                Wine, women and song.

                <looks around> Where?

                Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.

                1 Reply Last reply
                0
                • L Lost User

                  Wine, women and song.

                  V Offline
                  V Offline
                  Victor Nijegorodov
                  wrote on last edited by
                  #10

                  Richard MacCutchan wrote:

                  Wine, women and song.

                  :-D :thumbsup:

                  1 Reply Last reply
                  0
                  • M Maciej Los

                    And i really do like 'M'... :laugh:

                    CPalliniC Offline
                    CPalliniC Offline
                    CPallini
                    wrote on last edited by
                    #11

                    Of course. :thumbsup:

                    In testa che avete, signor di Ceprano?

                    1 Reply Last reply
                    0
                    • A Aakashdata

                      Why C is not popular among developers?

                      A Offline
                      A Offline
                      Abhays01
                      wrote on last edited by
                      #12

                      C is highly portable and simple language. But, because of some limitation of C, it is loosing fame. The main reason behind is, it doesn't support object-oriented programming features. Means- Inheritance Encapsulation Polymorphism etc. are not suported by C programming language, that's why C++ is developed. Even C doesn't perform run time type checking.

                      D 1 Reply Last reply
                      0
                      • A Abhays01

                        C is highly portable and simple language. But, because of some limitation of C, it is loosing fame. The main reason behind is, it doesn't support object-oriented programming features. Means- Inheritance Encapsulation Polymorphism etc. are not suported by C programming language, that's why C++ is developed. Even C doesn't perform run time type checking.

                        D Offline
                        D Offline
                        David Crow
                        wrote on last edited by
                        #13

                        Abhays01 wrote:

                        The main reason behind is, it doesn't support object-oriented programming features … Inheritance Encapsulation

                        Inheritance (structs inheriting from other structs), and encapsulation (struct name in the H file, and struct implementation in the C file) are certainly possible with C.

                        "One man's wage rise is another man's price increase." - Harold Wilson

                        "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                        "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                        L 1 Reply Last reply
                        0
                        • D David Crow

                          Abhays01 wrote:

                          The main reason behind is, it doesn't support object-oriented programming features … Inheritance Encapsulation

                          Inheritance (structs inheriting from other structs), and encapsulation (struct name in the H file, and struct implementation in the C file) are certainly possible with C.

                          "One man's wage rise is another man's price increase." - Harold Wilson

                          "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                          "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                          L Offline
                          L Offline
                          Lost User
                          wrote on last edited by
                          #14

                          David Crow wrote:

                          struct name in the H file, and struct implementation in the C file

                          That's not encapsulation, in any sense.

                          D D 2 Replies Last reply
                          0
                          • L Lost User

                            David Crow wrote:

                            struct name in the H file, and struct implementation in the C file

                            That's not encapsulation, in any sense.

                            D Offline
                            D Offline
                            Dar Brett 0
                            wrote on last edited by
                            #15

                            Wikipedia:

                            In object oriented programming languages, encapsulation is used to refer to one of two related but distinct notions, and sometimes to the combination thereof: - A language mechanism for restricting direct access to some of the object's components. - A language construct that facilitates the bundling of data with the methods (or other functions) operating on that data.

                            Opaque structs in C fit at least one of those definitions for abstraction. You could probably make the case that since you'd need to bundle the opaque struct with some subroutines to manipulate it that you're basically writing methods - the only difference is the class keyword and the lack of an implicit *this* pointer.

                            L 1 Reply Last reply
                            0
                            • L Lost User

                              David Crow wrote:

                              struct name in the H file, and struct implementation in the C file

                              That's not encapsulation, in any sense.

                              D Offline
                              D Offline
                              David Crow
                              wrote on last edited by
                              #16

                              How about something like: car.h

                              struct car;

                              car.c

                              struct car
                              {
                              private:
                              char make[10];
                              char model[10];
                              int year;

                              public:
                              char *getMake();
                              char *getModel();
                              char *getYear();
                              };

                              • Direct access to the object's components has been restricted.

                              • The data and the methods that operate on that data are bundled together.

                                "One man's wage rise is another man's price increase." - Harold Wilson

                                "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                                "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                              L 1 Reply Last reply
                              0
                              • D David Crow

                                How about something like: car.h

                                struct car;

                                car.c

                                struct car
                                {
                                private:
                                char make[10];
                                char model[10];
                                int year;

                                public:
                                char *getMake();
                                char *getModel();
                                char *getYear();
                                };

                                • Direct access to the object's components has been restricted.

                                • The data and the methods that operate on that data are bundled together.

                                  "One man's wage rise is another man's price increase." - Harold Wilson

                                  "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                                  "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                                L Offline
                                L Offline
                                Lost User
                                wrote on last edited by
                                #17

                                The keywords private and public do not exist in the C language.

                                D 1 Reply Last reply
                                0
                                • D Dar Brett 0

                                  Wikipedia:

                                  In object oriented programming languages, encapsulation is used to refer to one of two related but distinct notions, and sometimes to the combination thereof: - A language mechanism for restricting direct access to some of the object's components. - A language construct that facilitates the bundling of data with the methods (or other functions) operating on that data.

                                  Opaque structs in C fit at least one of those definitions for abstraction. You could probably make the case that since you'd need to bundle the opaque struct with some subroutines to manipulate it that you're basically writing methods - the only difference is the class keyword and the lack of an implicit *this* pointer.

                                  L Offline
                                  L Offline
                                  Lost User
                                  wrote on last edited by
                                  #18

                                  But you cannot do any form of abstraction or encapsulation in C. There is no mechanism for hiding members of a struct.

                                  D 1 Reply Last reply
                                  0
                                  • L Lost User

                                    The keywords private and public do not exist in the C language.

                                    D Offline
                                    D Offline
                                    David Crow
                                    wrote on last edited by
                                    #19

                                    Indeed (too many years away from it), but that does not change my point. If you had something like this in the H file:

                                    struct CarPrivate;

                                    struct Car
                                    {
                                    struct CarPrivate* priv;
                                    };

                                    extern char* GetYear(struct Car* car);

                                    And had something like this in the C file:

                                    struct CarPrivate
                                    {
                                    int year;
                                    };

                                    int GetYear(struct Car* car)
                                    {
                                    return car->priv->year;
                                    }

                                    You would not be able to access members of CarPrivate like:

                                    void main( void )
                                    {
                                    struct Car* car = some_method_to_create_car();
                                    int year = car->priv->year; // error
                                    }

                                    "One man's wage rise is another man's price increase." - Harold Wilson

                                    "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                                    "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                                    L 1 Reply Last reply
                                    0
                                    • D David Crow

                                      Indeed (too many years away from it), but that does not change my point. If you had something like this in the H file:

                                      struct CarPrivate;

                                      struct Car
                                      {
                                      struct CarPrivate* priv;
                                      };

                                      extern char* GetYear(struct Car* car);

                                      And had something like this in the C file:

                                      struct CarPrivate
                                      {
                                      int year;
                                      };

                                      int GetYear(struct Car* car)
                                      {
                                      return car->priv->year;
                                      }

                                      You would not be able to access members of CarPrivate like:

                                      void main( void )
                                      {
                                      struct Car* car = some_method_to_create_car();
                                      int year = car->priv->year; // error
                                      }

                                      "One man's wage rise is another man's price increase." - Harold Wilson

                                      "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                                      "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                                      L Offline
                                      L Offline
                                      Lost User
                                      wrote on last edited by
                                      #20

                                      Putting the definition in a header file only matters if you are trying to access the struct in separate source modules; and that has nothing to do with encapsulation. And yes, of course you could do what you suggest above, but it serves little purpose since you can still access the data directly, and thus break the pseudo encapsulation. In OOP languages the data can actually be hidden from the users of the class, in C it cannot.

                                      D 1 Reply Last reply
                                      0
                                      • L Lost User

                                        Putting the definition in a header file only matters if you are trying to access the struct in separate source modules; and that has nothing to do with encapsulation. And yes, of course you could do what you suggest above, but it serves little purpose since you can still access the data directly, and thus break the pseudo encapsulation. In OOP languages the data can actually be hidden from the users of the class, in C it cannot.

                                        D Offline
                                        D Offline
                                        David Crow
                                        wrote on last edited by
                                        #21

                                        Richard MacCutchan wrote:

                                        ...since you can still access the data directly...

                                        What if the structs were compiled into a LIB file? The user of that LIB file only has access to what is in the corresponding H file, correct?

                                        "One man's wage rise is another man's price increase." - Harold Wilson

                                        "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                                        "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                                        L 1 Reply Last reply
                                        0
                                        • D David Crow

                                          Richard MacCutchan wrote:

                                          ...since you can still access the data directly...

                                          What if the structs were compiled into a LIB file? The user of that LIB file only has access to what is in the corresponding H file, correct?

                                          "One man's wage rise is another man's price increase." - Harold Wilson

                                          "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                                          "You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles

                                          L Offline
                                          L Offline
                                          Lost User
                                          wrote on last edited by
                                          #22

                                          How would that work? If you have the definitions in a header that you include in your source, then you have access to all members of the struct. Whether the actual struct is allocated on the stack, the heap or via a pointer to an external piece of memory, you can still see all the members.

                                          D 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups