Programming: a Book or Practicing Only?

  • Thread starter Thread starter CDTOE
  • Start date Start date
  • Tags Tags
    Book Programming
AI Thread Summary
The discussion centers on the importance of understanding Object-Oriented Programming (OOP) for electrical engineering students who are also learning programming. A participant reflects on their experience of learning OOP through practice and acknowledges the limitations of this approach without theoretical knowledge. Key concepts such as inheritance and encapsulation are highlighted as essential for effectively utilizing OOP. The conversation suggests that while practical coding experience is valuable, reading books and studying foundational concepts can significantly enhance understanding and proficiency. Recommendations include exploring resources like Marshall Cline's work on C++ and the original articles on OOP to grasp its fundamental ideas. The consensus is that combining both theoretical study and practical coding is the most effective way to become a proficient programmer.
CDTOE
Messages
46
Reaction score
0
Hi, Everybody

I'm an electrical engineering student who has been doing Java programming for a while. I have started learning OOP directly from practicing, mostly using youtube tutorials, without getting into theories or concepts before. Lately, I have thought to start reading a book about OOP in an attempt to get a deeper understanding of the concepts behind programming and especially OOP.

I'm not learning OOP and programming, in general, only to contribute to my discipline, but also as a hobby. I have a vision to learn other languages, such as HTML, CSS, php... so on. For this I want to ask, is it really necessary to read a book abut OOP, or any programming paradigm/language, to be a good programmer? or is practicing more important and enough to do well?

Thanks.
 
Technology news on Phys.org
Well...I don't know about you, but I had been a programmer for a while BEFORE I wanted to learn OOP...not being a CS major but an EE (me too) I was able to follow OOP examples and write an entire OOP program...but I had the feeling and wasn't really getting, so, I audit an OOP class and realized I REALLY wasn't getting it.

So, I think there are quite a few important concepts you REALLY need to study to fully understand and effectively use OOP...inheritance, encapsulation, etc.

Other than that, as an engineer, I would recommend learning Python...it's got a lot of modules and tools for engineering/scientific work...I have no use for HTML, CSS, PHP...that's web development stuff...

my 2cents
 
For me, I didn't need any assistance about changing languages.
The concept is the same everywhere...
 
In my opinion, you are unlikely to learn object oriented programming practices simply by writing code. People who do that merely learn the syntax of an object oriented programming language and they continue to write in a procedural programming style. (The fact that you use classes in your program doesn't mean that you are using object oriented programming.)

If you think you are an exception to this, verify it by looking at some heavy duty discussions of object oriented programming on the web. Look for some of Marshall Cline's posts. If you know C++, look at his C++ FAQ book.
 
CDTOE said:
Lately, I have thought to start reading a book about OOP in an attempt to get a deeper understanding of the concepts behind programming and especially OOP.

I would recommend going to your university library and reading this
http://dl.acm.org/citation.cfm?id=624721
or perhaps you can find the original on the net somewhere, I tried and failed.

This is a revised version he wrote years later
www.research.att.com/~bs/whatis.pdf
but I think the original was better.

I would read the original several times and think about it until I was confident I really understood it.

He is the C++ guy, but I'm not trying to sell C++. The original was trying to communicate some very fundamental ideas about exactly what object oriented programming was. It was trying to get across the core ideas of what this was and how it had evolved from prior ideas.

At the end of the original article there were a couple of sentences, roughly "and there is still this problem and this problem and this problem with object oriented programming. Nobody today knows what the answer to those problems are, but in ten years someone will probably figure that out." I have always wondered whether someone did and what the answer was.
 
CDTOE said:
Hi, Everybody

I'm an electrical engineering student who has been doing Java programming for a while. I have started learning OOP directly from practicing, mostly using youtube tutorials, without getting into theories or concepts before. Lately, I have thought to start reading a book about OOP in an attempt to get a deeper understanding of the concepts behind programming and especially OOP.

I'm not learning OOP and programming, in general, only to contribute to my discipline, but also as a hobby. I have a vision to learn other languages, such as HTML, CSS, php... so on. For this I want to ask, is it really necessary to read a book abut OOP, or any programming paradigm/language, to be a good programmer? or is practicing more important and enough to do well?

Thanks.

Hey CDTOE and welcome to the forums.

I would recommend you do both: read books and write your own code.

The thing is, that if you can learn a lesson from someone else just by reading or hearing their story, you can forgo a lot of the trial and error that they had to go through. Even if this is a little superficial, it still helps you advance to a point that would otherwise take a chunk of your time.

You don't really have to a C++ programmer to program in an OOP kind of style. If you ever look at John Carmacks code, you'll see that he wrote very good code in C that was in the same kind of vein as an object oriented implementation, before he ended up writing things in C++ (which he did for Doom 3).

You can, if you really wanted to, implement most of the stuff in C++ for OOP in C with a lot of meta-data and some clever design, but it's probably easier to just use C++.

In fact if you ever end up getting a repository for a complex platform like a game engine, or something like say Adobe photoshop, or anything with support for complex plugins, scripting interfaces and so on, you will see that the design has tonnes and tonnes of metadata that is used to add all the functionality that makes this possible.

So the main point I'm trying to say is that you can extend one environment to something a lot more rich and flexible by writing your own code to do this, but most people won't want to do this and instead just get something that someone has already created, and also if it is has been tested and is widely used (and some kind of standard).

The benefits for doing it yourself is that you have control over everything including the design and the implementation itself and for highly specific custom applications, you need this.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
What percentage of programmers have learned to touch type? Have you? Do you think it's important, not just for programming, but for more-than-casual computer users generally? ChatGPT didn't have much on it ("Research indicates that less than 20% of people can touch type fluently, with many relying on the hunt-and-peck method for typing ."). 'Hunt-and-peck method' made me smile. It added, "For programmers, touch typing is a valuable skill that can enhance speed, accuracy, and focus. While...
I had a Microsoft Technical interview this past Friday, the question I was asked was this : How do you find the middle value for a dataset that is too big to fit in RAM? I was not able to figure this out during the interview, but I have been look in this all weekend and I read something online that said it can be done at O(N) using something called the counting sort histogram algorithm ( I did not learn that in my advanced data structures and algorithms class). I have watched some youtube...
Back
Top