3

It seems like the majority of Arduino applications are written without using classes / objects. Is there a reason for this? Does is slow down the Arduino or somehow present undesirable behavior?

3
  • 1
    Please note that "functional programming" is not what you think it is, I guess you wanted to say "procedural programming". Commented Aug 21, 2016 at 16:13
  • Functional programming usually involves the use of closures, in languages that support them. C++ doesn't, and you would probably use functors instead. Commented Aug 21, 2016 at 16:59
  • 1
    Check out this article. It explains the neglegable performance effect of using classes. Commented Aug 21, 2016 at 17:16

1 Answer 1

10

Your assumption is quite wrong:

  • The majority of libraries use OOP.
  • The majority of in-built device drivers use OOP.
  • The core is filled with many OOP helper objects and classes.
  • 99.99% of all sketches use those OOP objects.

The sketches themselves may not be written as a class or set of classes for a number of reasons:

  1. There is no point
  2. The programmer doesn't know how

When a sketch is just stitching together calls to objects defined through libraries and making a few decisions there is little point in making the sketch itself an object. It's just a waste of time. In general if the sketch gets too complex to manage it gets broken down into smaller units - i.e., libraries - which are very often written as classes.

The moment you do Serial.begin(9600); you are using OOP.

5
  • 1
    Is there more than one Serial object? If not, what's the difference between Serial.begin and (hypothetically) Serial_begin? Commented Aug 22, 2016 at 0:14
  • 1
    On some boards yes there are multiple Serial objects. Commented Aug 22, 2016 at 0:15
  • 1
    If OOP is using C++ classes for implementation then this answer is fine. A more detailed answer may be found by first reading Peter Wegner's paper; cse.msu.edu/~stire/cse891/wegner.pdf. Arduino would be OOP if interfaces/classes would be more encapsulated, reused and extended. Commented Aug 23, 2016 at 10:57
  • You mean like Cosa? ;) Commented Aug 23, 2016 at 10:57
  • Hard to miss :) Commented Aug 23, 2016 at 10:59

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.