Is learning the C programming language representative of the learning that is required of software engineering as a whole?
-
I'm learning C right now because I want to build a solid foundation for learning more programming languages. However, I do find it somewhat tedious and stressful; I'm the sort of person who likes to build a foundation or framework in my head, and work to refine my grasp/understanding. Should I be concerned that this is a sign that software engineering or programming doesn't fit my personality? Does the learning process get "easier" from C?
-
Answer:
Even though I've spent most of my programming career using C, I wouldn't recommend it as a "first language". I'd probably go with something more like Python to get started, with C after you've developed some confidence in handling data structures, figuring out how to debug, how I/O and system accesses work, etc - and only if you intend to do something in C's "sweet spot" such as systems, HPC, or embedded-device work. C is low-level enough and therefore unforgiving enough that it can cause you to flail painfully if you are still new to programming. But if you're going that route, some stuff I'd recommend learning about quite quickly: 1. Get good at debugging. By that, I mean Really Good. For some reason, schools don't teach debugging, and it seems to be something that you're somehow expected to pick up on your own, even though debugging is a complex skill by itself. Note that debugging isn't just knowing how to handle your favorite debugger - it is doing stuff like writing debugging libraries, writing additional debugger-only functions (many debuggers let you call functions in the debugger itself; this is very powerful for debugging complex data structures that may be hard to examine in the debugger), and figuring out good test and debug scenarios. (If I was moved to write a book on programming, it would focus on debugging...) 2. As a corollary to general debugging, learn how to use a memory debugger and tracing tool like Valgrind. One of C's "unforgiving" aspects is that it does no memory management for you, so you will have to get used to the fact that you have to allocate and free things on your own. Also, you will walk off the end of arrays and mis-sized data structures and corrupt memory, leading to seemingly random and impossible results, and figuring this out is pretty hard without a memory tracing tool. As for "software engineering", yes, everything you confront in C is stuff you'll run into using other programming languages, but it will be more painful in C if you aren't at least somewhat prepared for it. Also, you should learn an OO language and a functional language early on as well, as these introduce concepts that you may not encounter much in C.
Greg Kemnitz at Quora Visit the source
Other answers
Absolutely not. While C is a good representative language, it's a well-used and well-loved programming language, it's not a good first language to teach the basics. I would recommend Python or Ruby, though it still does need to be taught well. If you want to learn Software Engineering, your end goal is to take and pass https://www.edx.org/course/uc-berkeleyx/uc-berkeleyx-cs169-1x-engineering-1377 Parts I & II from http://www.edx.org/, a free course. This requires Introduction to Computer Science, Data Structures, Algorithms, Discrete Mathematics, and probably a Programming Languages course. Sorry to be overbearing, but it's always good to keep the end in mind. The easiest way to figure out if it's a good language to start with is if it's part of an highly-regarded Intro to Computer Science course, and second of interest is if you have a complete, integrated system of study. Here's some free systems of study for Computer Science http://www.saylor.org/majors/computer-science/ http://www.scotthyoung.com/blog/mit-challenge/
Kevin Larsen
If you are really really good in C, you can read and understand any language. That makes it to universal reader of any language in Computer.
Pankaj Saraf
Related Q & A:
- What is a "modern" programming language?Best solution by Quora
- What are some good colleges for programming/software engineering?Best solution by colleges.usnews.rankingsandreviews.com
- Should I pursue a degree in computer science for software engineering?Best solution by Quora
- Is java or visual basic a machine level, low level, high level or binary level programming language?Best solution by Quora
- Is C a good language to start out learning programming?Best solution by Yahoo! Answers
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.