This is a discussion on As a Computer Science Engineering Major, is C the best language to start with? within the General Discussions forums, part of the Community Boards category; Originally Posted by sellers04 Trolling you? I don't see why this is a strange question. I know i will be ...
If you want to be pretty functional in C you only need to read those pages and you have a pretty solid foundation to solve a lot of problems. Everything else you learn is more specialized and icing on the cake. That doesn't mean learning ends with those pages. Likewise, if you want to be functional in C++ you need to go home and read those 1400 pages.
I think it is a matter of pedagogical approach. If we take your numbers literally, Accelerated C++ is only about 350 pages, and the learner would "have a pretty solid foundation to solve a lot of problems" even before finishing that book. On the other hand, an introductory text for C++ that starts by first introducing C++ as merely a superset of C will always have to do more work to provide the same foundation for problem solving than a introductory text for C.Originally Posted by \007
Yes, I ball parked those numbers but they are generally the truth. If we look at books like The C++ Programming Language compared to The C Programming Language, or other books that go through the language from the ground up. Accelerated C++ works but it's accelerated for a reason-- because most people have a hard time going through the typical 1200ish page books-- especially if they are experienced programmers. That is the beauty of Accelerated C++!
I also think the "In a Nut Shell" book series is a good compromise between speed and depth.
However, I have been thinking of the typical language books. The kind you would find in a university or as a general beginner book. I don't think a whole lot of beginners grab Accelerated C++ as their first programming book unless they are ultra intuitive and incredibly logic savvy.
Last edited by \007; 07-20-2011 at 01:28 AM.
If you are in an engineering program at OSU, I feel pretty strongly that they have your entire 4 years planned out for you in a rigid schedule. Whatever programming languages you need to complete the degree will be listed in the university catalog. When I was in engineering school, Fortran was the language everyone on campus used and it was a required course within the first two years of study. All the engineering departments communicated in Fortran, even the math department which taught us courses in numerical analysis, all in fortran.
If you are new to programming, you might want to learn the old Microsoft Basic, not Visiual Basic, but like maybe Quick Basic. Its not a robust nor powerful language but its good for getting started. My understanding is that all programmers, regardless of their specialty know and can understand Basic. Moreover, Basic, though limited, can take you a long way even if thats your only language. I have solved some pretty tough math problems using Basic before I got into linux. Now with linux I am back to fortran since the compiler is free, and learning C since the compiler is also free.
Last edited by Linux Trojan; 07-20-2011 at 04:23 AM. Reason: typos
There is no question that C is a smaller language than C++ - that fact is fairly obvious, given that C++ is (approximately) a superset of C, and the set of C++ features that are not in C is fairly large (including another Turing-complete programming language).
There are much smaller programming languages than C around, and also much larger programming languages than C++. As a rough generalisation, C is recognised as a large language and C++ is recognised as a larger one.
The size of C++ textbooks is actually a reflection of the authors: C++ seems to have more than it's share of authors who write in a style that tends to consume pages. For example, Stroustrup writes in a philosophical style and Meyers in a conversational style - both of these authors seem to write pretty large books that could - depending on one's preferences - be made much more concise. [I personally enjoy reading books by those authors, but brevity is not necessary for my enjoyment].
If you want a small language, look up FALSE. A complete compiler for that language can be written in about 1024 bytes (of 68000 assembler), and the complete language can be described in a couple of pages. However, becoming fully functional in FALSE is arguably harder than most other languages (admittedly, FALSE was designed to be inherently obfuscated).
From now on a large part of your life will be spent finding and correcting your own mistakes.
And if you are lucky and land yourself a good job, a whole lot more time will be spent finding and correcting other people's mistakes.
That has to be good, no?
Originally Posted by brewbuck:
Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.
Don't start with Python, you won't ever want to use anything else.
I'm learning C++ now, will I need to learn some C in the future? I was hoping to move onto C# or Java next.
That depends on what you will be doing for a job / school. As I mentioned very early on in this thread the best thing you can possibly do is learn how to program . Once you have that down any competent person will be able to move between languages relatively easily.
At my previous job, I had to do a significant amount of C# programming. I walked into the interview telling them I don't know anything about C#, and have never used Visual Studio, but demonstrated good programming knowledge and problem solving skills. They hired me anyways, and on the first day, gave me an afternoon to learn C#.
Languages really don't matter much.
Learn whatever you want, it spoils down to the syntax. Once you get the concept down on one language, it's easier to pick up other languages. My company has their own proprietary language to do their own report generation. The syntax is different, but structured programing is still structured programming.
"All that we see or seem
Is but a dream within a dream." - Poe